Why
Observability configuration now uses one explicit profile: disabled, control, compute, or all. The existing stack-level render tests validate profile resolution, but we need expensive local-k3d BDD coverage that proves each profile installs and behaves correctly in its target topology.
Scope
Add one live BDD feature file per observability profile under tests/bdd/features/. Each feature must use the strict BDD DSL, retain the required conflicting-topology precheck in its Background, and run against a fresh compatible topology selected with BDD_CLEANUP_MODE unless a render only test. Do not add profile-specific step handlers.
observability-disabled.feature PR1
- Use the single-cluster
ncp-local topology.
- Template the control plane and compute plane with
observability.profile: disabled.
- Assert that no shared observability releases, collector, monitors, or function-autoscaler release is rendered.
observability-control.feature PR2
- Use the single-cluster
ncp-local topology.
- Install with
observability.profile: control.
- Assert that the shared observability releases are ready: Prometheus Operator CRDs, OpenTelemetry Operator, VictoriaMetrics, one collector/Target Allocator, and default monitors.
- Assert control-plane monitor resources are present and compute monitor resources are absent by default.
Out of scope (Future)
- Assert exactly one function-autoscaler release is ready and uses the resolved metrics backend contract.
- Prove the local metrics path with a lightweight end-to-end signal or an equivalent observable collector-to-VictoriaMetrics assertion.
observability-compute.feature
- Use the multi-cluster topology:
ncp-local-cp plus ncp-local-compute-1.
- Install the control-plane prerequisites, then install the compute plane with
observability.profile: compute on the compute cluster.
- Assert the shared observability releases and compute monitor resources are ready in the compute cluster.
- Assert NVCA, DCGM, and worker monitor coverage.
- Assert the NVCA configuration enables its self-managed collector and the
BYOObservability feature gate.
- Assert no function-autoscaler release is installed for this profile.
observability-all.feature
- Use the single-cluster
ncp-local topology.
- Install the complete stack with
observability.profile: all.
- Assert the shared observability infrastructure is installed once, not once per plane.
- Assert both control-plane and compute monitor families are present.
- Assert NVCA self-managed collector and
BYOObservability are enabled.
Out of scope (Future)
- Assert exactly one ready function-autoscaler release and a working local metrics path.
Test wiring and safety
- Add matching fake-runner wiring coverage in
tests/bdd/godog_test.go.
- Run
cd tests/bdd && go test -short ./... and tests/bdd/scripts/lint.sh.
Acceptance criteria
- Each of the four profile files is a separately runnable BDD scenario.
- Single-cluster scenarios precheck that
ncp-local-cp is absent; the multi-cluster scenario prechecks that ncp-local is absent.
- Every profile validates its profile-specific installed and absent resources, rather than only Helmfile command success with exception of render only test (PR1)
- All four feature files preserve the CLI-versus-Helmfile path boundary and do not introduce a profile dependency into Helmfile-path features.
References
Why
Observability configuration now uses one explicit profile:
disabled,control,compute, orall. The existing stack-level render tests validate profile resolution, but we need expensive local-k3d BDD coverage that proves each profile installs and behaves correctly in its target topology.Scope
Add one live BDD feature file per observability profile under
tests/bdd/features/. Each feature must use the strict BDD DSL, retain the required conflicting-topology precheck in its Background, and run against a fresh compatible topology selected withBDD_CLEANUP_MODEunless a render only test. Do not add profile-specific step handlers.observability-disabled.featurePR1ncp-localtopology.observability.profile: disabled.observability-control.featurePR2ncp-localtopology.observability.profile: control.Out of scope (Future)
observability-compute.featurencp-local-cpplusncp-local-compute-1.observability.profile: computeon the compute cluster.BYOObservabilityfeature gate.observability-all.featurencp-localtopology.observability.profile: all.BYOObservabilityare enabled.Out of scope (Future)
Test wiring and safety
tests/bdd/godog_test.go.cd tests/bdd && go test -short ./...andtests/bdd/scripts/lint.sh.Acceptance criteria
ncp-local-cpis absent; the multi-cluster scenario prechecks thatncp-localis absent.References