CNTRLPLANE-3330: ci: improve unit test speed with sharding and parallelism#8330
Conversation
|
Pipeline controller notification For optional jobs, comment This repository is configured in: LGTM mode |
|
Skipping CI for Draft Pull Request. |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: bryan-cox The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThis PR adds a new Sequence Diagram(s)sequenceDiagram
participant GH as GitHub Actions
participant Setup as setup Job
participant Git as Git (diff)
participant Artifact as upload-artifact
participant Matrix as test Job (sharded matrix)
participant Make as make test-shard
participant Codecov as Codecov
GH->>Setup: workflow triggered
Setup->>Git: run git diff (exclude docs/, use before..sha)
Git-->>Setup: changed_files (true|false)
alt changed_files == true
Setup->>Setup: run make generate
Setup->>Artifact: upload generated files
Setup-->>GH: set run_tests = 'true'
GH->>Matrix: start sharded test matrix (run_tests == 'true')
par shards
Matrix->>Make: make test-shard (TEST_PACKAGES, COVER_PROFILE=cover-<shard>.out)
Make-->>Matrix: produce cover-<shard>.out
end
Matrix->>Codecov: upload cover-<shard>.out with flags=<shard>
Codecov-->>GH: report results
else changed_files == false
Setup-->>GH: set run_tests = 'false'
GH-->>Matrix: skip tests
end
🚥 Pre-merge checks | ✅ 11 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (11 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/test.yaml (1)
29-41:⚠️ Potential issue | 🟠 Major
HEAD~1misses commits in multi-commit pushes; usegithub.event.before...github.shabut handle new branches.On
pushandworkflow_dispatch, usingHEAD~1only inspects the last commit. A multi-commit push can therefore setrun_tests=falseeven when earlier commits changed Go code. The suggested fix using${{ github.event.before }}...${{ github.sha }}is the correct approach, but it has an unhandled edge case: when pushing to a new branch,github.event.beforeis set to the zero SHA (0000000000000000000000000000000000000000), whichgit diffcannot resolve as a valid object. The fix should either replace the zero SHA with the empty tree SHA (4b825dc642cb6eb9a060e54bf8d69288fbee4904) or add explicit handling for new branches. Additionally, consider forcingrun_tests=trueforworkflow_dispatchsince manual triggers should reliably run tests.Suggested change
- name: Check for non-contrib changes id: changes run: | + BEFORE="${{ github.event.before }}" + if [ "$BEFORE" = "0000000000000000000000000000000000000000" ]; then + BEFORE="4b825dc642cb6eb9a060e54bf8d69288fbee4904" + fi + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + echo "run_tests=true" >> "$GITHUB_OUTPUT" + exit 0 + elif [ "${{ github.event_name }}" = "pull_request" ]; then FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) else - FILES=$(git diff --name-only HEAD~1) + FILES=$(git diff --name-only "$BEFORE"...${{ github.sha }}) fi if echo "$FILES" | grep -qvE '^(contrib|\.github)/'; then echo "run_tests=true" >> "$GITHUB_OUTPUT" else echo "run_tests=false" >> "$GITHUB_OUTPUT" fi🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/test.yaml around lines 29 - 41, The "Check for non-contrib changes" step uses HEAD~1 and misses multi-commit pushes; change the git diff invocation to use the range github.event.before...github.sha and handle the new-branch zero SHA by mapping github.event.before == "0000000000000000000000000000000000000000" to the empty-tree SHA (4b825dc642cb6eb9a060e54bf8d69288fbee4904) before running git diff on FILES, and also force run_tests=true when github.event_name == "workflow_dispatch" so manual triggers always run tests; update the FILES variable assignment logic and preserve the existing contrib/.github filter and run_tests output behavior.
🧹 Nitpick comments (2)
control-plane-operator/hostedclusterconfigoperator/controllers/resources/resources_test.go (1)
231-342: Isolate subtest state inTestReconcileOLMto avoid order-coupled behavior.
errs,hcp, and reconciler/client state are shared across table rows. Even without subtest parallelism, this makes cases interdependent and harder to debug. Create fresh state pert.Run.Refactor sketch
func TestReconcileOLM(t *testing.T) { t.Parallel() - var errs []error - hcp := fakeHCP() - hcp.Namespace = "openshift-operator-lifecycle-manager" + baseHCP := fakeHCP() + baseHCP.Namespace = "openshift-operator-lifecycle-manager" fakeCPService := manifests.OLMPackageServerControlPlaneService(hcp.Namespace) ... for _, tc := range testCases { + tc := tc t.Run(tc.name, func(t *testing.T) { g := NewWithT(t) - errs = append(errs, r.reconcileOLM(ctx, hcp, pullSecret)...) + errs := []error{} + hcp := baseHCP.DeepCopy() + cpClient := fake.NewClientBuilder().WithScheme(api.Scheme).WithObjects(rootCA, fakeCPService, hcp).Build() + hcClient := fake.NewClientBuilder().WithScheme(api.Scheme).WithObjects(rootCA, pullSecret).Build() + r := &reconciler{client: hcClient, cpClient: cpClient, CreateOrUpdateProvider: &simpleCreateOrUpdater{}, rootCA: "fake", ImageMetaDataProvider: &imageMetaDataProvider} + errs = append(errs, r.reconcileOLM(ctx, hcp, pullSecret)...) hcp.Spec.Configuration = tc.hcpClusterConfig hcp.Spec.OLMCatalogPlacement = tc.olmCatalogPlacement errs = append(errs, r.reconcileOLM(ctx, hcp, pullSecret)...) g.Expect(errs).To(BeEmpty(), "unexpected errors") ... }) } }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@control-plane-operator/hostedclusterconfigoperator/controllers/resources/resources_test.go` around lines 231 - 342, The test shares mutable state across table rows (errs, hcp, cpClient/hcCLient and the reconciler r) causing order-dependent failures; fix by creating fresh state inside each t.Run: initialize errs (or use a local slice), clone or recreate hcp (use fakeHCP()), build new fake clients (cpClient and hcCLient) and a new reconciler (r) and imageMetaDataProvider per subtest before calling r.reconcileOLM; ensure you set hcp.Spec.Configuration and hcp.Spec.OLMCatalogPlacement on the subtest-local hcp and use the subtest-local r.client for the Get() assertion so each case is fully isolated.Makefile (1)
363-370:test-shardno longer matchestest's prerequisites.
testrunsgeneratefirst, while the new CI entrypoint skips it. If sharded CI is supposed to preserve the oldmake testbehavior, add the same prerequisite here so both paths validate the same source tree.Suggested change
.PHONY: test-shard -test-shard: +test-shard: generate `@echo` "Running shard tests for packages: $(TEST_PACKAGES)" $(GO) test -race -parallel=$(NUM_CORES) -count=1 -timeout=30m $(TEST_PACKAGES) -coverprofile $(COVER_PROFILE)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Makefile` around lines 363 - 370, The test-shard Makefile target skips the generate prerequisite that test runs, causing inconsistent source validation; update the test-shard target to depend on the same generate prerequisite (i.e., make test-shard depend on the generate target) so that the generate step runs before invoking the test-shard recipe (ensure the target name test-shard and the prerequisite generate are used exactly as in the Makefile).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/test.yaml:
- Around line 49-60: The shard matrix omits packages (e.g., ./api/... and the
module root .) so some packages no longer build/test; update the matrix in the
strategy.include to add missing package groups (for example add entries like
shard: api with packages: ./api/... and shard: root with packages: .) or replace
the static include with a dynamic generation mechanism that derives shards from
go list ./... (invoke go list ./... and partition results into jobs) so the
matrix becomes exhaustive; update references in the matrix configuration (the
existing "matrix: include:" block and shard names such as
control-plane-operator, hypershift-operator, cmd-support, other) accordingly.
- Around line 70-79: The workflow now emits shard-specific coverage files
(cover-${{ matrix.shard }}.out) but .testcoverage.yml still expects cover.out;
to restore compatibility, add a step after the "Run tests" job that copies or
symlinks cover-${{ matrix.shard }}.out to cover.out (or alternatively
produce/merge a cover.out file) so tools reading .testcoverage.yml:8 find the
expected file; update the "Run tests" -> produced artifact handling (or the
"Upload to Codecov" step inputs) to continue using cover-${{ matrix.shard }}.out
while ensuring cover.out is created for local/go-test-coverage validation.
---
Outside diff comments:
In @.github/workflows/test.yaml:
- Around line 29-41: The "Check for non-contrib changes" step uses HEAD~1 and
misses multi-commit pushes; change the git diff invocation to use the range
github.event.before...github.sha and handle the new-branch zero SHA by mapping
github.event.before == "0000000000000000000000000000000000000000" to the
empty-tree SHA (4b825dc642cb6eb9a060e54bf8d69288fbee4904) before running git
diff on FILES, and also force run_tests=true when github.event_name ==
"workflow_dispatch" so manual triggers always run tests; update the FILES
variable assignment logic and preserve the existing contrib/.github filter and
run_tests output behavior.
---
Nitpick comments:
In
`@control-plane-operator/hostedclusterconfigoperator/controllers/resources/resources_test.go`:
- Around line 231-342: The test shares mutable state across table rows (errs,
hcp, cpClient/hcCLient and the reconciler r) causing order-dependent failures;
fix by creating fresh state inside each t.Run: initialize errs (or use a local
slice), clone or recreate hcp (use fakeHCP()), build new fake clients (cpClient
and hcCLient) and a new reconciler (r) and imageMetaDataProvider per subtest
before calling r.reconcileOLM; ensure you set hcp.Spec.Configuration and
hcp.Spec.OLMCatalogPlacement on the subtest-local hcp and use the subtest-local
r.client for the Get() assertion so each case is fully isolated.
In `@Makefile`:
- Around line 363-370: The test-shard Makefile target skips the generate
prerequisite that test runs, causing inconsistent source validation; update the
test-shard target to depend on the same generate prerequisite (i.e., make
test-shard depend on the generate target) so that the generate step runs before
invoking the test-shard recipe (ensure the target name test-shard and the
prerequisite generate are used exactly as in the Makefile).
🪄 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: c91a4fed-ae4d-4d72-af3d-38ceb5c47f70
📒 Files selected for processing (8)
.github/workflows/test.yamlMakefilecontrol-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.gocontrol-plane-operator/controllers/hostedcontrolplane/infra/infra_test.gocontrol-plane-operator/hostedclusterconfigoperator/controllers/resources/resources_test.gohypershift-operator/controllers/hostedcluster/hostedcluster_controller_test.gohypershift-operator/controllers/nodepool/capi_test.gohypershift-operator/controllers/nodepool/nodepool_controller_test.go
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
.github/workflows/test.yaml (1)
52-60:⚠️ Potential issue | 🟠 MajorShard package partition still looks non-exhaustive.
The matrix package groups still don’t include some scopes (notably
./api/...and module root.), so this job no longer fully mirrors priorgo test ./...coverage.Minimal fix while keeping 4 shards
- shard: other - packages: ./karpenter-operator/... ./control-plane-pki-operator/... ./contrib/... ./ignition-server/... ./pkg/... ./dnsresolver/... ./product-cli/... ./client/... ./test/integration/... ./availability-prober/... ./konnectivity-socks5-proxy/... ./kubernetes-default-proxy/... ./kubevirtexternalinfra/... ./etcd-defrag/... + packages: ./karpenter-operator/... ./control-plane-pki-operator/... ./contrib/... ./ignition-server/... ./pkg/... ./dnsresolver/... ./product-cli/... ./client/... ./test/integration/... ./availability-prober/... ./konnectivity-socks5-proxy/... ./kubernetes-default-proxy/... ./kubevirtexternalinfra/... ./etcd-defrag/... ./api/... .🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/test.yaml around lines 52 - 60, The matrix shards are missing the module root and api packages, so update the package lists (e.g., in the "other" shard or an appropriate shard like "cmd-support") to include both ./api/... and ./ (module root) so the matrix mirrors go test ./...; modify the include entry that lists packages (such as the "other" shard's packages) to add ./api/... and ./ so tests cover those scopes.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/test.yaml:
- Around line 35-36: The FILES assignment currently uses a single-commit diff
via "git diff --name-only HEAD~1" which misses changes on multi-commit pushes;
update the command that sets FILES (the line using git diff) to use the push SHA
range instead (use the GitHub push range variables such as
github.event.before..github.sha) so all commits in the push are compared; keep
the rest of the logic intact and ensure the variable name FILES and the git diff
invocation are the only parts changed.
---
Duplicate comments:
In @.github/workflows/test.yaml:
- Around line 52-60: The matrix shards are missing the module root and api
packages, so update the package lists (e.g., in the "other" shard or an
appropriate shard like "cmd-support") to include both ./api/... and ./ (module
root) so the matrix mirrors go test ./...; modify the include entry that lists
packages (such as the "other" shard's packages) to add ./api/... and ./ so tests
cover those scopes.
🪄 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: 97e102ab-aafb-4ad6-a12e-96d95e56efc3
📒 Files selected for processing (1)
.github/workflows/test.yaml
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
.github/workflows/test.yaml (1)
32-36:⚠️ Potential issue | 🟠 MajorUse the push SHA range instead of
HEAD~1.Line 35 still only diffs the last commit on
push, so a multi-commit push can incorrectly skip the whole test matrix when earlier commits changed code.Suggested fix
if [ "${{ github.event_name }}" = "pull_request" ]; then FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) else - FILES=$(git diff --name-only HEAD~1) + FILES=$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}") fi🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/test.yaml around lines 32 - 36, The push branch diff uses HEAD~1 which only checks the last commit; update the push branch case so FILES is computed from the push SHA range instead: replace the FILES assignment in the else branch (where it currently sets FILES=$(git diff --name-only HEAD~1)) with a diff between ${{ github.before }} and ${{ github.sha }} (e.g. FILES=$(git diff --name-only ${{ github.before }}...${{ github.sha }})), preserving the existing if on github.event_name and handling the pull_request branch as-is.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/test.yaml:
- Line 37: The workflow guard currently skips the whole job when only files
matching the grep pattern '^(contrib|\.github|docs)/' changed, which allows
contrib package changes to bypass tests; update the conditional that checks
FILES (the if echo "$FILES" | grep -qvE '...') to remove "contrib" from the
exclusion (i.e., stop excluding contrib from the grep -qvE test) so changes
under contrib will cause this workflow to run; keep the rest of the regex for
.github and docs intact and ensure the other shard’s invocation of ./contrib/...
(around the call at line 60) remains compatible.
---
Duplicate comments:
In @.github/workflows/test.yaml:
- Around line 32-36: The push branch diff uses HEAD~1 which only checks the last
commit; update the push branch case so FILES is computed from the push SHA range
instead: replace the FILES assignment in the else branch (where it currently
sets FILES=$(git diff --name-only HEAD~1)) with a diff between ${{ github.before
}} and ${{ github.sha }} (e.g. FILES=$(git diff --name-only ${{ github.before
}}...${{ github.sha }})), preserving the existing if on github.event_name and
handling the pull_request branch as-is.
🪄 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: a6a4044d-bad9-4aef-b7a2-8c2d83432cbc
📒 Files selected for processing (1)
.github/workflows/test.yaml
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8330 +/- ##
==========================================
+ Coverage 36.08% 36.32% +0.23%
==========================================
Files 767 764 -3
Lines 93486 92886 -600
==========================================
Hits 33737 33737
+ Misses 57042 56442 -600
Partials 2707 2707 see 3 files with indirect coverage changes
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (1)
.github/workflows/test.yaml (1)
37-37:⚠️ Potential issue | 🟠 MajorDon't exclude
contrib/from the trigger guard.Line 60 still runs
./contrib/..., so a contrib-only change can currently skip the entire unit-test workflow.Suggested fix
- if echo "$FILES" | grep -qvE '^(contrib|\.github|docs)/'; then + if echo "$FILES" | grep -qvE '^(\.github|docs)/'; then🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/test.yaml at line 37, The guard currently excludes contrib/ by matching the pattern in the if statement that checks FILES with grep -qvE; update that grep pattern (the line using if echo "$FILES" | grep -qvE '^(contrib|\.github|docs)/') to stop excluding contrib — e.g., remove "contrib" from the alternation so the pattern becomes '^(\\.github|docs)/' (or otherwise ensure contrib/ changes are treated as non-skippable) so contrib-only changes will not skip the unit-test workflow.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/test.yaml:
- Around line 61-70: The workflow sets GOCACHE and GOMODCACHE but never
restores/saves them, so caches are lost each run; add cache restore and save
steps (using actions/cache) surrounding the test step for the directories
pointed to by GOCACHE and GOMODCACHE (or switch to actions/setup-go with caching
enabled) so subsequent runs reuse Go build/module caches; specifically update
the job that contains the actions/checkout and the "Run tests" step and add
actions/cache steps that key on go-version and module checksum and target the
/tmp/go-build-cache and /tmp/go-mod-cache paths used by the env variables,
ensuring caches are restored before running make test-shard and saved after
tests complete.
- Around line 32-35: The workflow misses handling for workflow_dispatch which
leaves github.event.before undefined and yields an empty FILES; add an explicit
branch for when github.event_name == "workflow_dispatch" and set FILES there
instead of falling through to the else: compute the diff against a sensible
default base (for example origin/main or origin/${{ github.base_ref }} if
present) or fetch the default branch and compare origin/<default>...HEAD so
FILES gets a valid list; update the conditional block that sets FILES (the
existing if/else using github.event_name and the FILES variable) to include this
new branch.
---
Duplicate comments:
In @.github/workflows/test.yaml:
- Line 37: The guard currently excludes contrib/ by matching the pattern in the
if statement that checks FILES with grep -qvE; update that grep pattern (the
line using if echo "$FILES" | grep -qvE '^(contrib|\.github|docs)/') to stop
excluding contrib — e.g., remove "contrib" from the alternation so the pattern
becomes '^(\\.github|docs)/' (or otherwise ensure contrib/ changes are treated
as non-skippable) so contrib-only changes will not skip the unit-test workflow.
🪄 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: dcf0aabf-72bd-4c3f-b1df-4b1e1f316e86
📒 Files selected for processing (2)
.github/workflows/test.yamlMakefile
🚧 Files skipped from review as they are similar to previous changes (1)
- Makefile
75b93bf to
47dd2ab
Compare
|
@bryan-cox: This pull request references CNTRLPLANE-3330 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set. DetailsIn response to this:
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 openshift-eng/jira-lifecycle-plugin repository. |
6e3982c to
9130d14
Compare
|
/verified by @bryan-cox |
|
@bryan-cox: This PR has been marked as verified by DetailsIn response to this:
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 openshift-eng/jira-lifecycle-plugin repository. |
|
/lgtm |
AI Test Failure AnalysisJob: Generated by hypershift-analyze-e2e-failure post-step using Claude claude-opus-4-6 |
AI Test Failure AnalysisJob: Generated by hypershift-analyze-e2e-failure post-step using Claude claude-opus-4-6 |
|
I now have all the evidence needed to produce the final report. The failure is clear: a single test ( Test Failure Analysis CompleteJob Information
Test Failure AnalysisErrorSummaryThe Root CauseAWS EC2 API rate limiting on the shared CI account. The This is a transient infrastructure issue:
Why this is unrelated to PR #8330:
Recommendations
Evidence
|
|
/override "ci/prow/e2e-aws" Not related to this PR; no need to keep wasting resources since its not related. |
|
@bryan-cox: Overrode contexts on behalf of bryan-cox: ci/prow/e2e-aws DetailsIn response to this:
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. |
Split unit tests into 5 parallel GitHub Actions matrix shards (cpo-hostedcontrolplane, cpo-other, hypershift-operator, cmd-support, other) to reduce CI wall time from ~14 min to ~6 min. Add a test-shard Makefile target that runs tests for a specified set of packages with coverage output. Persist the Go build cache across runs using actions/cache to speed up warm cache builds. Add change detection to skip test jobs when only contrib, .github, or docs files are modified. Handle workflow_dispatch events by always running tests since there is no base commit to diff against. Upload per-shard coverage profiles to Codecov with shard-specific flags for proper coverage merging. JIRA: CNTRLPLANE-3330 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add t.Parallel() to tests in the heaviest test files to improve test execution speed within each shard. Tests that use t.Setenv or modify global state are left sequential. Files modified: - hostedcluster_controller_test.go (39 tests parallelized) - hostedcontrolplane_controller_test.go (8 tests parallelized) - infra_test.go (7 tests parallelized) - nodepool_controller_test.go (15 tests parallelized) - capi_test.go (13 tests parallelized) - resources_test.go (19 tests parallelized) JIRA: CNTRLPLANE-3330 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9130d14 to
a4b3600
Compare
|
/lgtm |
|
Scheduling tests matching the |
|
/verified by ut |
|
@bryan-cox: This PR has been marked as verified by DetailsIn response to this:
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 openshift-eng/jira-lifecycle-plugin repository. |
|
/override ci/prow/e2e-aks-4-22 |
|
Overriding, this is just UT changes and I only had to rebase because of |
|
@bryan-cox: Overrode contexts on behalf of bryan-cox: ci/prow/e2e-aks, ci/prow/e2e-aks-4-22, ci/prow/e2e-aws, ci/prow/e2e-aws-4-22, ci/prow/e2e-aws-upgrade-hypershift-operator, ci/prow/e2e-azure-self-managed, ci/prow/e2e-kubevirt-aws-ovn-reduced, ci/prow/e2e-v2-aws DetailsIn response to this:
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. |
|
/override ci/prow/e2e-aks-4-22 |
|
@bryan-cox: Overrode contexts on behalf of bryan-cox: ci/prow/e2e-aks, ci/prow/e2e-aks-4-22, ci/prow/e2e-aws, ci/prow/e2e-aws-4-22, ci/prow/e2e-aws-upgrade-hypershift-operator, ci/prow/e2e-azure-self-managed, ci/prow/e2e-kubevirt-aws-ovn-reduced, ci/prow/e2e-v2-aws DetailsIn response to this:
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. |
|
/override "Red Hat Konflux / enterprise-contract-mce-50 / hypershift-release-mce-50" |
|
@bryan-cox: Overrode contexts on behalf of bryan-cox: Red Hat Konflux / enterprise-contract-mce-50 / hypershift-release-mce-50 DetailsIn response to this:
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. |
e7e828e
into
openshift:main
|
@bryan-cox: all tests passed! Full PR test history. Your PR dashboard. DetailsInstructions 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. |
AI Test Failure AnalysisJob: Generated by hypershift-analyze-e2e-failure post-step using Claude claude-opus-4-6 |
AI Test Failure AnalysisJob: Generated by hypershift-analyze-e2e-failure post-step using Claude claude-opus-4-6 |
What this PR does / why we need it:
Reduces CI unit test wall time from ~14 minutes to ~6 minutes by:
t.Parallel()to the heaviest test files (101 tests parallelized across 6 files)actions/cachefor warm cache speedupPerformance Results
Follow-up work to eliminate cache upload/download overhead (~2-3 min/shard) via EFS PV: CNTRLPLANE-3329
Which issue(s) this PR fixes:
Fixes CNTRLPLANE-3330
Special notes for your reviewer:
t.Setenvor global state mutation were intentionally left sequentialtest-shardMakefile target depends ongeneratebecause mock files (*_mock.go) are gitignoredworkflow_dispatchevents always run tests since there is no base commit to diff againstChecklist: