Files
home-network-k3s-impl/conformance/config/chainsaw-config.yaml
T
jakman85andClaude Opus 4.8 9f52f195a7 test(conformance): lower chainsaw parallelism 4->2 to avoid dev etcd overload cascades
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]>
2026-08-25 17:21:48 -05:00

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