Skip to content

HYPERFLEET-1132 - feat: enable parallel E2E execution in CI#82238

Open
kuudori wants to merge 2 commits into
openshift:mainfrom
kuudori:HYPERFLEET-1132-parallel-e2e-ci
Open

HYPERFLEET-1132 - feat: enable parallel E2E execution in CI#82238
kuudori wants to merge 2 commits into
openshift:mainfrom
kuudori:HYPERFLEET-1132-parallel-e2e-ci

Conversation

@kuudori

@kuudori kuudori commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Switch hyperfleet-e2e test step from serial binary runner to ginkgo CLI with --procs=4
  • Add PROCS env var to step ref (default 4, configurable per job)
  • When E2E_REF override is set, also build ginkgo CLI and e2e.test from cloned source

Context

The hyperfleet-e2e Docker image already ships both ginkgo and e2e.test binaries (added in hyperfleet-e2e PR #150). This change wires the CI step to use them.

Expected improvement: tier0 suite runtime from ~2h (serial) to ~20-30min (4 parallel processes).

Test plan

  • Verify deployment-validation presubmit passes on this PR
  • Check JUnit artifacts are produced in ${ARTIFACT_DIR}
  • Confirm ginkgo reports "Running in parallel across 4 processes" in build log

Summary by CodeRabbit

Updates the OpenShift Hyperfleet CI E2E test step to run via the Ginkgo CLI with parallel execution (default PROCS=4) instead of the serial hyperfleet-e2e binary runner. When MULTISTAGE_PARAM_OVERRIDE_E2E_REF (i.e., E2E_REF) is set, the step clones that ref into a temporary directory, builds the suite, additionally compiles the ginkgo CLI and e2e.test binary for parallel runs, and copies the generated env/configs plus matching testdata into /tmp/e2e. Test execution now uses configurable --timeout (default SUITE_TIMEOUT=2h), label filtering, and retries, while emitting JUnit results to the artifact output directory.

Switch the hyperfleet-e2e test step from the serial binary runner to
the ginkgo CLI with --procs=4 for parallel multi-process execution.

The hyperfleet-e2e Docker image already ships both the ginkgo CLI and
the compiled e2e.test binary. This change wires the test step to use
them instead of the monolithic hyperfleet-e2e binary.

When E2E_REF override is set, the step now also builds the ginkgo CLI
and e2e.test binary from the cloned source.

Adds PROCS env var (default 4) to the step ref for configurability.
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: b8abaafb-df3b-4a83-94be-93622a930aaa

📥 Commits

Reviewing files that changed from the base of the PR and between e57a463 and e25a9fc.

📒 Files selected for processing (1)
  • ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.sh

Walkthrough

The HyperFleet E2E step now builds Ginkgo and a standalone test binary for ref-based runs, then executes tests through Ginkgo with configurable parallelism, filtering, retries, and JUnit reporting.

Changes

HyperFleet E2E execution

Layer / File(s) Summary
Build and configure E2E binaries
ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.sh
Ref-based runs build the Ginkgo CLI and standalone e2e.test binary, update their paths, and select test data from the cloned ref.
Run the configured Ginkgo suite
ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.sh, ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-ref.yaml
The suite runs through Ginkgo with configurable processes, timeout, label filtering, flake retries, and JUnit output. PROCS defaults to 4.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested reviewers: ciaranroche, aredenba-rh

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: enabling parallel E2E execution in CI with Ginkgo.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PR only changes the CI runner script; no It/Describe/Context titles were added or modified, so no dynamic test names to flag.
Test Structure And Quality ✅ Passed No Ginkgo test code changed; this PR only rewires the CI step and env docs, so the test-structure checks are not applicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo test cases were added; this PR only changes the CI runner for the existing hyperfleet-e2e suite.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PASS: The PR only changes CI step wiring and env docs; no new Ginkgo It/Describe/Context tests were added, so SNO compatibility review is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed Changes are limited to a CI test step and env docs; no deployment manifests, node selectors, affinities, tolerations, PDBs, or topology-based scheduling logic were added.
Ote Binary Stdout Contract ✅ Passed PASS: PR only changes a CI step shell script; no Go process-level code or suite hooks were modified, so the stdout contract isn’t implicated.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo test bodies were added; only the CI step wrapper and ref config changed, so the IPv6/disconnected test check is not applicable.
No-Weak-Crypto ✅ Passed Changed files only adjust Ginkgo execution and env vars; no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or secret comparison code appears.
Container-Privileges ✅ Passed Only a step script and ref YAML changed; neither contains privileged, hostPID/network/IPC, SYS_ADMIN, allowPrivilegeEscalation, or root settings.
No-Sensitive-Data-In-Logs ✅ Passed New logs only print build status and the requested E2E ref; no passwords, tokens, PII, hostnames, or customer data are logged.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: kuudori

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

The pull request process is described 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

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 21, 2026

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.sh`:
- Around line 87-95: Update the Ginkgo invocation in the e2e test command to
pass the configured SUITE_TIMEOUT value through the --timeout flag, preserving
the existing default or configuration behavior documented for the suite. Keep
the remaining execution options and E2E_TEST_BIN invocation unchanged.
- Around line 23-35: Update the E2E_REF clone flow to create a unique temporary
directory with mktemp -d, use that directory consistently for cloning and binary
outputs, and set TESTDATA to its testdata subdirectory. Replace the stateful “cd
.bingo”/“cd ..” traversal around the Ginkgo build with a subshell, anchoring the
changes to the E2E_REF block and GINKGO_BIN/E2E_TEST_BIN assignments.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: f11c8c4d-d0b8-49be-98cf-179a69348cec

📥 Commits

Reviewing files that changed from the base of the PR and between 8a18bbb and e57a463.

📒 Files selected for processing (2)
  • ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.sh
  • ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-ref.yaml

- Use mktemp -d instead of hardcoded /tmp/e2e-src path
- Wrap .bingo build in subshell to avoid cd state leaks
- Pass --timeout=${SUITE_TIMEOUT:-2h} to ginkgo CLI to preserve
  the existing 2h default and prevent premature kills on combined
  tier0+tier1 runs
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@kuudori: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
pull-ci-openshift-hyperfleet-hyperfleet-e2e-main-e2e-deployment-validation openshift-hyperfleet/hyperfleet-e2e presubmit Registry content changed
periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-e2e-tier0-nightly N/A periodic Registry content changed
periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-e2e-tier1-nightly N/A periodic Registry content changed
periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-e2e-tier2-nightly N/A periodic Registry content changed
periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-rc-e2e-rc-e2e N/A periodic Registry content changed
Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

@kuudori: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant