Skip to content

✨ Concurrent E2E Test Execution#2675

Draft
dtfranz wants to merge 1 commit intooperator-framework:mainfrom
dtfranz:concurrent-e2e
Draft

✨ Concurrent E2E Test Execution#2675
dtfranz wants to merge 1 commit intooperator-framework:mainfrom
dtfranz:concurrent-e2e

Conversation

@dtfranz
Copy link
Copy Markdown
Contributor

@dtfranz dtfranz commented Apr 27, 2026

Description

Takes advantage of changes made to isolate test runs (#2651) to execute as many tests in parallel as possible. For tests that must be run serially, the @Serial tag has been added to the beginning of relevant feature file(s).

Tests are now executed in two steps: parallel followed by serial. Since this creates two distinct test outputs, the final output has been modified to combine any step failures into one smaller output at the end, while still maintaining live output to stdout. Ideally this could be formatted into a nicer looking markdown output in the test summary that we already output, but I'm saving that for a future PR.

Reviewer Checklist

  • API Go Documentation
  • Tests: Unit Tests (and E2E Tests, if appropriate)
  • Comprehensive Commit Messages
  • Links to related GitHub Issue(s)

Takes advantage of changes made to isolate test runs to execute as many tests in parallel as possible. For tests that must be run serially, the @serial tag has been added to the beginning of relevant feature file(s).

Signed-off-by: Daniel Franz <dfranz@redhat.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 27, 2026 05:55
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 27, 2026

Deploy Preview for olmv1 ready!

Name Link
🔨 Latest commit 0d47668
🔍 Latest deploy log https://app.netlify.com/projects/olmv1/deploys/69eefa5911d068000877fa1c
😎 Deploy Preview https://deploy-preview-2675--olmv1.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@openshift-ci openshift-ci Bot requested review from OchiengEd and oceanc80 April 27, 2026 05:55
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented Apr 27, 2026

[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 perdasilva 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

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the E2E Godog test runner to take advantage of scenario isolation (from #2651) by running most scenarios in parallel while reserving tagged scenarios for a serial pass, and then printing a combined failure summary.

Changes:

  • Split E2E execution into two Godog runs: parallel (excluding @Serial) followed by serial (@Serial only), with aggregated failure output.
  • Tag TLS E2E feature(s) with @Serial so they run only in the serial phase.
  • Reduce test-experimental-e2e timeout from 20m to 10m.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
test/e2e/features_test.go Runs E2E suite in parallel + serial phases and prints an aggregated failure summary.
test/e2e/features/tls.feature Marks TLS feature as @Serial to exclude it from the parallel phase.
Makefile Adjusts experimental E2E timeout setting.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread test/e2e/features_test.go
Comment on lines +39 to +57
parallelOpts := defaultOpts
parallelOpts.Concurrency = 100
parallelOpts.Tags = "~@Serial"
parallelOpts.Randomize = -1
// Write to both stdout (live) and buffer (for summary)
parallelOpts.Output = io.MultiWriter(os.Stdout, &parallelBuf)
// run tests concurrently
scParallel := godog.TestSuite{
TestSuiteInitializer: InitializeSuite,
ScenarioInitializer: InitializeScenario,
Options: &parallelOpts,
}.Run()

fmt.Println("End of parallel run - beginning serial tests")

serialOpts := defaultOpts
serialOpts.Concurrency = 1
serialOpts.Tags = "@Serial"
// Write to both stdout (live) and buffer (for summary)
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

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

parallelOpts.Tags and serialOpts.Tags overwrite any --godog.tags provided on the command line, which breaks the documented workflow for running a subset of scenarios by tag (see test/e2e/README.md). Consider combining the user-supplied tag expression (if any) with the Serial filter (e.g., "() && ~@serial" and "() && @serial"), rather than replacing it entirely.

Copilot uses AI. Check for mistakes.
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.

👍 Adding this

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.

Actually, I'll re-work this to instead explicitly use the tags provided by CLI when they are there and reduce the concurrency value to 1, unless also provided.

Comment thread test/e2e/features_test.go
Comment on lines +43 to +45
// Write to both stdout (live) and buffer (for summary)
parallelOpts.Output = io.MultiWriter(os.Stdout, &parallelBuf)
// run tests concurrently
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

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

The MultiWriter for live+buffer output writes to os.Stdout directly, which bypasses defaultOpts.Output (currently colors.Colored(os.Stdout)), so enabling colors via flags would no longer have any effect. Use defaultOpts.Output (or parallelOpts.Output before overriding) as the stdout writer to preserve configured formatting.

Copilot uses AI. Check for mistakes.
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.

Will fix 👍

Comment thread Makefile
test-experimental-e2e: export INSTALL_DEFAULT_CATALOGS := false
test-experimental-e2e: PROMETHEUS_VALUES := helm/prom_experimental.yaml
test-experimental-e2e: E2E_TIMEOUT := 20m
test-experimental-e2e: E2E_TIMEOUT := 10m
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

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

This PR reduces test-experimental-e2e timeout from 20m to 10m, but the PR description focuses on parallelizing execution rather than changing timeout expectations. Given earlier work increased this timeout to accommodate dynamic per-scenario registry/catalog setup, please confirm with CI timings (or keep 20m) to avoid reintroducing flaky timeouts.

Copilot uses AI. Check for mistakes.
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 27, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.11%. Comparing base (c8585e9) to head (0d47668).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2675      +/-   ##
==========================================
+ Coverage   67.99%   68.11%   +0.12%     
==========================================
  Files         144      144              
  Lines       10573    10573              
==========================================
+ Hits         7189     7202      +13     
+ Misses       2865     2854      -11     
+ Partials      519      517       -2     
Flag Coverage Δ
e2e 37.38% <ø> (+0.02%) ⬆️
experimental-e2e 52.79% <ø> (+0.20%) ⬆️
unit 53.64% <ø> (+0.09%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@dtfranz dtfranz marked this pull request as draft April 27, 2026 06:14
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Apr 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants