@@ -13,25 +13,24 @@ pip install pre-commit && pre-commit install
1313
1414---
1515
16- ## What to run
16+ ## What to run locally vs in CI
1717
1818```
1919unit tests → core-local → open PR → CI handles the rest
2020```
2121
22- | Suite | Command | Needs | Time |
23- | -------| ---------| -------| ------|
24- | Unit | ` tox ` | nothing | ~ 2 min |
25- | Core — local | ` tox -c test/core/tox.ini -e core-local ` | nothing | ~ 1 hr |
26- | Core — GCS | ` tox -c test/core/tox.ini -e core-gcs ` | devtools ` fake-gcs-server ` | ~ 1 hr |
27- | Core — Azure | ` tox -c test/core/tox.ini -e core-azure ` | devtools ` azurite ` | ~ 1 hr |
28- | Core — Batch/K8s/Argo/SFN | ` tox -c test/core/tox.ini -e core-<name> ` | full devstack | 2–3 hr |
29- | UX — local | ` tox -e ux-local ` | nothing | ~ 30 min |
30- | UX — cloud | ` tox -e ux-<name> ` | full devstack | ~ 1 hr |
22+ | Suite | Command | Needs | Run where |
23+ | -------| ---------| -------| -----------|
24+ | Unit | ` tox ` | nothing | locally + CI |
25+ | Core — local | ` tox -c test/core/tox.ini -e core-local ` | nothing | locally + CI |
26+ | Core — GCS / Azure | ` tox -c test/core/tox.ini -e core-{gcs,azure} ` | emulator at known port | ** CI** |
27+ | Core — Batch/K8s/Argo/SFN | ` tox -c test/core/tox.ini -e core-<name> ` | full devstack | ** CI** |
28+ | UX — local | ` tox -e ux-local ` | nothing | locally + CI |
29+ | UX — cloud | ` tox -e ux-<name> ` | full devstack | ** CI** |
3130
32- Run ** unit + core-local** before every PR. Cloud -backend tests ( ` core-gcs ` ,
33- ` core-batch ` , …) are only needed if you changed that backend's storage code —
34- otherwise let CI run them.
31+ Run ** unit + core-local** before every PR. All cloud -backend tests require
32+ infrastructure that CI provisions — there is no need to set up emulators or
33+ Docker containers locally. Open your PR and let CI handle them.
3534
3635---
3736
@@ -54,7 +53,7 @@ flow definition (~64 classes), runs it as a subprocess, and verifies results
5453in-process. This yields ~ 470 parametrised items per backend, identified as
5554` backend/graph/FlowDefinition/executor ` .
5655
57- ### core-local
56+ ### core-local — run this locally
5857
5958``` bash
6059tox -c test/core/tox.ini -e core-local
@@ -65,40 +64,22 @@ tox -c test/core/tox.ini -e core-local -- --core-graphs simple-foreach
6564tox -c test/core/tox.ini -e core-local -- -n auto # parallel
6665```
6766
68- ### core-gcs / core-azure (cloud storage emulators)
67+ ### core-gcs / core-azure / core-batch / core-k8s / core-argo / core-sfn — let CI run these
6968
70- Only needed when you changed GCS or Azure storage code. The emulators are
71- part of the devtools stack:
69+ These backends require external infrastructure (GCS emulator, Azure emulator,
70+ MinIO, Kubernetes, …). CI provisions all of it automatically. You do not need
71+ to install Docker or start any services to get these tests to pass.
7272
73- ``` bash
74- cd devtools
75- SERVICES_OVERRIDE=fake-gcs-server make up # GCS (port 4443)
76- SERVICES_OVERRIDE=azurite make up # Azure (port 10000)
77- ```
78-
79- Then:
80-
81- ``` bash
82- tox -c test/core/tox.ini -e core-gcs
83- tox -c test/core/tox.ini -e core-azure
84- ```
85-
86- ### core-batch / core-k8s / core-argo / core-sfn
87-
88- These require the full devstack. For most PRs, ** let CI run them** . If you
89- need to debug a scheduler-specific failure locally, start only the services
90- that backend needs, then run the env:
73+ If you are debugging a specific backend failure locally and already have the
74+ required infrastructure running, you can invoke the env directly:
9175
9276``` bash
93- # Required services per backend:
94- # core-batch: minio, postgresql, metadata-service, localbatch
95- # core-k8s: minio, postgresql, metadata-service
96- # core-argo: minio, postgresql, metadata-service, argo-workflows
97- # core-sfn: minio, postgresql, metadata-service, localbatch, ddb-local, sfn-local
98- cd devtools && SERVICES_OVERRIDE=minio,postgresql,metadata-service,localbatch make up
77+ tox -c test/core/tox.ini -e core-gcs # expects fake-gcs-server at localhost:4443
78+ tox -c test/core/tox.ini -e core-azure # expects azurite at localhost:10000
79+ tox -c test/core/tox.ini -e core-batch # expects devstack (see devtools/README.md)
9980```
10081
101- See ` devtools/README.md ` for the full devstack reference .
82+ For devstack setup see ` devtools/README.md ` .
10283
10384---
10485
@@ -118,7 +99,5 @@ pre-commit run --all-files # all checks
11899| ` tox: command not found ` | ` pip install tox ` |
119100| ` Username 'root' is not allowed ` | ` export METAFLOW_USER=tester ` |
120101| ` ModuleNotFoundError ` during collection | ` rm -rf .tox && tox -c test/core/tox.ini -e core-local ` |
121- | ` core-gcs ` — ` ConnectionRefusedError ` | ` cd devtools && SERVICES_OVERRIDE=fake-gcs-server make up ` |
122- | ` core-azure ` — Azure connection error | ` cd devtools && SERVICES_OVERRIDE=azurite make up ` |
123- | ` core-batch/k8s ` — metadata service error | Start devstack: ` cd devtools && make up ` |
124- | Tests run slowly | ` tox -c test/core/tox.ini -e core-local -- -n auto ` (don't use ` -n ` for cloud envs) |
102+ | ` core-local ` slow | ` tox -c test/core/tox.ini -e core-local -- -n auto ` |
103+ | Cloud env fails locally | Check that the required emulator/devstack is running — or just open a PR and let CI handle it |
0 commit comments