-
Notifications
You must be signed in to change notification settings - Fork 0
Kind Val Runners
Standalone end-to-end validation scripts under
scripts/ that
drive a fixture through the live runtime on a local kind
cluster and assert on the resulting event log / metrics. They are
the cheap regression gate before a GKE rollout
(deployment-validation).
Each runner is self-contained bash: preflight → register → exec →
wait for terminal status → assert. They talk to the NoETL server
over localhost:8082 (port-forward) and to the cluster over
kubectl --context kind-noetl.
| Script | Proves |
|---|---|
kind_validate_fanout_reduce.sh |
The orchestrator's fan-in / reduce barrier gates dispatch until both upstream branches finish — exactly one step.enter for reduce_customer, and its command.completed lands after both upstreams. |
kind_validate_container_callback.sh |
The noetl-k8s-watcher observes a Tool::Container Job's terminal state and POSTs the container-callback, bumping the server's noetl_container_callback_total{state=…} counter. |
The runners drive the current noetl CLI command surface,
stable from CLI v2.17.0 through the v4.x line (the
repos/cli submodule). Each runner
preflights this surface and fails fast with a clear message if
the installed binary doesn't expose it.
| Operation | Verb |
|---|---|
| Register a playbook | noetl register playbook --file <F> |
| Execute (distributed) | noetl exec <catalog-path> --runtime distributed --json |
| Terminal status | noetl status <ID> --json |
| Event log | noetl query "SELECT … FROM noetl.event WHERE execution_id = <ID> ORDER BY event_id" --format json |
Notes that bite:
-
Exec by the catalog path (
metadata.path, e.g.tests/fixtures/fanout_reduce_phase6), not the bare playbook name — distributed runtime resolves the path against the catalog. - There is no CLI
eventsverb today. Pull the event log over the Postgres query API; rows are wrapped under.result. Order byevent_id(monotonic, commit-ordered) —noetl.eventhas notimestampcolumn; the time field isevent_time.
The pre-v2.17.0 verbs (noetl playbook register/execute,
noetl execution status/events) were removed. Runners pinned to
them abort on error: unrecognized subcommand 'playbook'.
# Port-forward the server first (or have it on :8082 already):
kubectl --context kind-noetl -n noetl port-forward svc/noetl-server-rust 8082:8082 &
./scripts/kind_validate_fanout_reduce.sh
./scripts/kind_validate_container_callback.sh --context kind-noetlBoth exit 0 on PASS, non-zero on any failed assertion (dumping
server / worker / watcher logs on the unhappy path). Knobs are env
vars / flags: --context, --namespace, --server-url,
--timeout, and the NOETL_*_DEPLOY overrides (default server
deploy is noetl-server-rust).
- Home — the e2e repo overview.
-
ops wiki — the kind cluster
- the development playbook.
- noetl wiki — the runtime under test (event taxonomy, DSL semantics).