diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml new file mode 100644 index 0000000..e56abb6 --- /dev/null +++ b/.github/workflows/python-package.yml @@ -0,0 +1,40 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: Python package + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.9", "3.10", "3.11"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install flake8 pytest + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + pytest diff --git a/README.md b/README.md new file mode 100644 index 0000000..2a45104 --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +┌───────────────┐ + │ Admin Panel │ + │ Global Map │ + │ Farm Layers │ + └───────┬───────┘ + │ + │ API / Monitoring + │ + ┌───────────────┴───────────────┐ + │ Server / Docker │ + │ Plugin Repository / LSPs │ + │ Farm Aggregation / Logging │ + └───────────────┬───────────────┘ + │ + ┌─────────────────────────┴─────────────────────────┐ + │ │ + │ Base Pi Zero Cluster │ + │ │ +┌───────┴───────┐ ┌───────┴───────┐ ┌───────┴───────┐ +│ Node 1 (API) │ │ Node 2 (API) │ │ Nodes 3-10 │ +│ Dual-Process │ │ Dual-Process │ │ Compute Nodes │ +│ Worker 0-? │ │ Worker 0-? │ │ Dual-Process │ +└──────────────┘ └──────────────┘ └───────────────┘ + │ + │ Relay Nodes / Worker Coordination + │ + ┌───────┴───────┐ + │ Nodes 11-12 │ + │ Relay / Mirror│ + └───────┬───────┘ + │ + ┌────────────────────┴────────────────────┐ + │ Worker Pools │ + │ 36 workers distributed across nodes │ + │ 6 per dual-process, synchronized via │ + │ Redux / Lodash │ + └────────────────────┬────────────────────┘ + │ + │ Aggregated Data for + │ Farm Layer / Global Map + ┌───────────────┴────────────────┐ + │ Farm Layer │ + │ University / State Centroids │ + │ Obfuscated GPS per node │ + │ Client Count Aggregation │ + └───────────────┬────────────────┘ + │ + │ Up to 4 billion simulated clients + │ (via Simulator Module) + │ + ┌─────────┴─────────┐ + │ Global Client Map│ + │ Visualized in │ + │ Admin Panel │ + └───────────────────┘ diff --git a/workload.py b/workload.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/workload.py @@ -0,0 +1 @@ +