On the small dev VMs, 4 concurrent heavy tests (KubeVirt CDI + Longhorn) spiked embedded-etcd into leader-changes/apiserver-ServiceUnavailable; with fail-closed Kyverno admission this cascaded into mass test aborts. 2 lets the full L2/L3 suite complete in a single clean pass. Co-Authored-By: Claude Opus 4.8 <[email protected]>
56 lines
2.5 KiB
YAML
56 lines
2.5 KiB
YAML
# Chainsaw Configuration for the home-k3s conformance suite (ADR-0011).
|
|
# Passed to every invocation via `chainsaw test --config config/chainsaw-config.yaml`
|
|
# so local runs and the in-cluster CI Job behave identically (R-TEST-02).
|
|
#
|
|
# Reproducibility knobs live here, NOT in individual tests, so the whole suite shares
|
|
# one deterministic execution contract:
|
|
# * bounded timeouts (no sleep-and-hope; eventual consistency via polled assert/error)
|
|
# * per-test ephemeral namespace, auto-created and auto-deleted (hermetic, isolated)
|
|
# * a leaked fixture is a failure: del/cleanup timeouts are enforced, skipDelete=false
|
|
apiVersion: chainsaw.kyverno.io/v1alpha2
|
|
kind: Configuration
|
|
metadata:
|
|
name: home-k3s-conformance
|
|
spec:
|
|
# -- Deterministic bounded waits. Eventual consistency is handled by polling within
|
|
# these windows (assert/error retry until deadline), never by fixed sleeps.
|
|
timeouts:
|
|
apply: 90s
|
|
assert: 180s
|
|
error: 60s
|
|
delete: 120s
|
|
cleanup: 120s
|
|
exec: 180s
|
|
|
|
# -- Isolation & parallel-safety: each test gets its own generated namespace so tests
|
|
# never collide and can run concurrently.
|
|
namespace:
|
|
# Unique per test run; prefix makes leaked namespaces obvious in `kubectl get ns`.
|
|
template:
|
|
metadata:
|
|
generateName: chainsaw-conf-
|
|
|
|
# -- Concurrency. Tests are hermetic, so they parallelize safely; keep modest to bound
|
|
# cluster load and keep fault-injection tests from contending. Lowered 4->2: on the
|
|
# small dev VMs, 4 concurrent heavy tests (KubeVirt CDI imports + Longhorn ops + many
|
|
# namespaces) spiked embedded-etcd I/O into leader-changes/apiserver-ServiceUnavailable,
|
|
# and because Kyverno admission is fail-closed each blip cascaded into mass test aborts.
|
|
# 2 keeps the suite completable in a single clean pass. Bump back up on prod-class hw.
|
|
execution:
|
|
parallel: 2
|
|
# Fail the whole run if any test leaks a namespace/fixture (reproducibility contract).
|
|
failFast: false
|
|
|
|
# -- Self-cleaning: never skip delete; deletion is part of the pass criteria.
|
|
cleanup:
|
|
skipDelete: false
|
|
|
|
# -- Machine-readable output. run.sh normalizes the emitted file to
|
|
# _artifacts/report.junit.xml and layers the requirement-coverage report on top.
|
|
report:
|
|
format: JUNIT-TEST
|
|
name: chainsaw-report
|
|
# relative to run.sh's CWD (conformance/), which creates this dir; ../_artifacts
|
|
# wrongly resolved to repo-root/_artifacts and made chainsaw exit 1 on report write.
|
|
path: _artifacts
|