cozystack/hack/e2e-apps
Myasnikov Daniil adc430e27c
test(e2e-apps): add existence backstops to all kubectl wait calls
`kubectl wait <kind> <name>` errors immediately with NotFound if the
resource doesn't exist yet — even with --for=condition or --for=jsonpath.
The redis test in CI run 25043350705 failed in 1 second for exactly this
reason: the redis-failover operator hadn't created the PVC by the time
the test waited for it. Previously the 3x retry on `Run E2E tests`
masked this race; with retry dropped, every such call is a flake risk.

Add a small `until kubectl get` existence backstop before each
kubectl wait, matching the pattern already established for HRs in
commit 66888c91.

33 backstops across 12 files:
  bucket.bats         — bucketclaims, bucketaccesses x2
  clickhouse.bats     — statefulset 0-0 (0-1 already covered)
  harbor.bats         — deploy x3, bucketclaims, bucketaccesses
  kafka.bats          — kafkas
  mariadb.bats        — statefulset, deployment
  mongodb.bats        — statefulset
  openbao.bats        — sts, pvc
  postgres.bats       — job.batch
  qdrant.bats         — sts, pvc
  redis.bats          — pvc, deploy, sts (the trigger)
  vminstance.bats     — dv, pvc, vm (with 120s for KubeVirt latency)
  e2e-install-cozystack.bats — apiservices, sts/etcd, vmalert,
                                vmalertmanager, vlclusters, vmcluster,
                                clusters.postgresql.cnpg.io,
                                deploy/grafana-deployment, namespace

Same pattern, same 60s default timeout for the existence wait (120s for
nested-virt resources). Once the resource exists, the original wait
timeout takes over.

Run-kubernetes.sh has the same race shape on several waits (nfs, kamaji,
machinedeployment, etc.) — out of scope here; flagged for follow-up.

Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
2026-04-28 15:52:39 +05:00
..
backup.bats.disabled [backups] Add templating of velero backups 2026-01-04 13:31:15 +03:00
bucket.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00
clickhouse.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00
external-dns.bats test(e2e-apps): replace fixed sleeps with HelmRelease existence backstop 2026-04-28 00:05:02 +05:00
foundationdb.bats test(e2e-apps): replace fixed sleeps with HelmRelease existence backstop 2026-04-28 00:05:02 +05:00
harbor.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00
kafka.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00
kubernetes-latest.bats [ci] Refactor testing logic 2025-07-23 14:00:24 +03:00
kubernetes-previous.bats [ci] Refactor testing logic 2025-07-23 14:00:24 +03:00
mariadb.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00
mongodb.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00
openbao.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00
postgres.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00
qdrant.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00
redis.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00
remediation-guard.sh fix(kubernetes): history guard non-empty check + nits from review 2026-04-16 21:50:10 +03:00
run-kubernetes.sh test(e2e): annotate genuine sleeps with TODO and rationale 2026-04-28 00:07:19 +05:00
vminstance.bats test(e2e-apps): add existence backstops to all kubectl wait calls 2026-04-28 15:52:39 +05:00