Skip to content

openstack_test: serial-coda egressIP FIP and prometheus resize - #45

Closed
tusharjadhav3302 wants to merge 5 commits into
mainfrom
osp-verification-serial-coda-extra-flakes
Closed

tusharjadhav3302 wants to merge 5 commits into
mainfrom
osp-verification-serial-coda-extra-flakes

Conversation

@tusharjadhav3302

@tusharjadhav3302 tusharjadhav3302 commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Builds on PR openstack_test: serial coda for Machine leak, suite flakes, and topology #44 Option B serial coda.
  • Pulls two suite-load flakes out of the randomized batch into the same ordered serial coda after the Machine leak cluster:
    • egressIP attached to FIP kept after node failover (Neutron AAP 10s wait)
    • prometheus PVC resize (3m pod-ready wait)
  • Expected split summary becomes leak_cluster=6 when both matchers are present.

Related: #44

Why

Warm serval71 TP c7b8384e35d94b939986644db5e5ca6e (MR !2734 / PR #44) had Machine coda PASS but those two FAIL. Manual serial run-test of each alone on the same guest PASSed. Same isolation pattern as the Machine leak cluster.

Test plan

  • Manual warm serval71: stages=[prepare, openstack_test] with this branch
  • Confirm split shows leak_cluster=6 and serial list order (Machine quartet, then egressIP, then prometheus)
  • Confirm serial coda passes; no false UNSTABLE from expected-count mismatch
  • Confirm batch suite no longer includes those two names
  • Testproject warm run-tests (prepare + openstack_test) pinning refs/pull/<this>/head

Made with Cursor

tusharjadhav3302 and others added 4 commits September 26, 2026 21:20
Keep the main openstack_test OTE suite in batch for wall time, but split
bz_2073398 and the Machine trio into an ordered serial coda so DeferCleanup
from openstack-test#321 can finish before Machine Running / MachineSet
replica / ProviderSpec. No-ops when those tests are absent (lb allowlists).

Co-authored-by: Cursor <cursoragent@cursor.com>
Shell-splitting multi-word matcher argv pulled accidental tests into the
serial coda (leak_cluster=7). Write one matcher per line and invoke the
splitter with a matchers file path instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
Pre-count expected tests from the serial list file instead of incrementing
in the while loop. The in-loop counter stayed at 1 after four successful
runs (passed=4 expected=1), falsely marking the coda UNSTABLE.

Co-authored-by: Cursor <cursoragent@cursor.com>
Extend Option B (PR #44) so egressIP FIP failover and prometheus PVC
resize leave the randomized batch and run one-by-one after the Machine
leak cluster. Both passed alone on warm serval71 but timed out under
suite load (10s AAP wait / 3m pod-ready wait).

Related: #44
Co-authored-by: Cursor <cursoragent@cursor.com>
@openshift-ci

openshift-ci Bot commented Sep 27, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign stephenfin for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

continue
if matcher not in ln:
continue
# Avoid ControlPlane MachineSet when matching worker MachineSet replica.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we validate that each matcher selects exactly one test, instead of silently taking the first match? pick() returns the first matching line, so if a matcher matches multiple variants (for example a ControlPlane and worker test), the wrong test may be moved to the serial coda while the intended test remains in the randomized batch. If a matcher matches nothing because a test name changed, the split also continues silently. Please either use exact test identifiers or fail/report when a matcher does not resolve uniquely, while preserving the intentional no-op behavior for allowlists that do not contain these tests.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed on #44 (d900268): pick() now collects all candidates; when any matcher hits, every matcher must resolve to exactly one test (fail hard on 0 or >1, with matcher + candidates on stderr). Empty matchers / zero hits remain allowlist no-ops.

Pull the topology AZ check and the enable_topology=false mutator out of
the randomized batch into the Option B serial coda. Order AZ check first
so it still sees enable_topology=true, then the mutator. Avoids the race
seen on warm serval71 TP (Expected false to equal true at topology.go:89).

Related: #45
Co-authored-by: Cursor <cursoragent@cursor.com>
@tusharjadhav3302

Copy link
Copy Markdown
Contributor Author

Update

Added both topology tests to the Option B serial coda (expected `leak_cluster=8`):

  1. Machine leak cluster (4)
  2. egressIP FIP failover
  3. prometheus PVC resize
  4. topology AZ check (`…AZs are identical`) — first
  5. `enable_topology to false [Serial]` — second

Order keeps the AZ check from racing the mutator in the batch (TP `9578dc9b` failure: Expected `false` to equal `true` at `topology.go:89`).

Next: manual warm `openstack_test` on serval71 with this tip.

@tusharjadhav3302

Copy link
Copy Markdown
Contributor Author

Manual full openstack_test (serval71, tip e3c4a47)

  • Split: `leak_cluster=8 batch_remaining=21`
  • Serial list order confirmed: Machine quartet, egressIP, prometheus, topology AZ, then enable_topology=false
  • Final junit: 29 / 0 failures / 5 skipped — all 8 coda tests PASS (including both topology tests)
  • `enable_topology` left at `true` after suite

Note: ansible still wrote `test_stage_unstable_flag` because OTE stdin batch exited with `Error: 21 tests failed` (batch size) even though ginkgo reported SUCCESS and junit has 0 failures. Treat as OTE exit-code false positive for this run, not a real suite failure.

tusharjadhav3302 added a commit that referenced this pull request Sep 28, 2026
Pull the topology AZ check and the enable_topology=false mutator out of
the randomized batch into the Option B serial coda. Order AZ check first
so it still sees enable_topology=true, then the mutator. Avoids the race
seen on warm serval71 TP (Expected false to equal true at topology.go:89).

Related: #45
Co-authored-by: Cursor <cursoragent@cursor.com>
@tusharjadhav3302

Copy link
Copy Markdown
Contributor Author

Superseded by #44, which now includes the extra coda matchers and review fixes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants