Skip to content

🌱 Add e2e regression test for cross-CE collision protection#2783

Open
perdasilva wants to merge 1 commit into
operator-framework:mainfrom
perdasilva:e2e-collision-regression-test
Open

🌱 Add e2e regression test for cross-CE collision protection#2783
perdasilva wants to merge 1 commit into
operator-framework:mainfrom
perdasilva:e2e-collision-regression-test

Conversation

@perdasilva

Copy link
Copy Markdown
Contributor

Summary

  • Add an e2e test verifying that a second ClusterExtension targeting an already-installed bundle cannot take over resources from the original owner, even with a higher-revision ClusterObjectSet.
  • Add ${PREV_NAME} template variable to reference the original CE after ResourceIsApplied overwrites ${NAME}, avoiding leaking the internal ce-${SCENARIO_ID} naming convention into feature files.
  • Add named CE condition steps (NamedClusterExtensionReportsCondition, NamedClusterExtensionReportsConditionWithMessageFragment) so step descriptions explicitly identify which CE is being asserted.
  • Add ClusterExtensionOwnsClusterObjectSets step to verify the number of ClusterObjectSets owned by a named CE.
  • Extract messageFragmentComparison helper to deduplicate the fragment-matching closure across ClusterExtensionReportsConditionWithMessageFragment, ClusterObjectSetReportsConditionWithMessageFragment, and the new named variant.
  • Guard TrackCurrentClusterExtensionForCleanup against accidental double-calls.
  • Preserve unresolved template variables as literal ${KEY} instead of silently substituting empty string.

Test plan

  • go vet passes
  • New scenario passes against a kind cluster with BoxcutterRuntime and DeploymentConfig enabled
  • CI e2e suite passes

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings June 25, 2026 10:06
@openshift-ci openshift-ci Bot requested review from oceanc80 and tmshort June 25, 2026 10:06
@netlify

netlify Bot commented Jun 25, 2026

Copy link
Copy Markdown

Deploy Preview for olmv1 ready!

Name Link
🔨 Latest commit a29cdef
🔍 Latest deploy log https://app.netlify.com/projects/olmv1/deploys/6a3cff9ddaa4d70008bb0f8e
😎 Deploy Preview https://deploy-preview-2783--olmv1.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

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

@openshift-ci

openshift-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown

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

Copilot AI 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.

Pull request overview

Adds an end-to-end regression scenario to ensure cross-ClusterExtension “collision protection” works (a second ClusterExtension targeting an already-installed bundle cannot take over resources), and extends the godog step library to make multi-CE assertions readable and robust.

Changes:

  • Adds a new e2e scenario covering duplicate ClusterExtension installs and verifies original ownership is retained.
  • Extends step definitions with named ClusterExtension condition assertions, a ClusterObjectSet ownership-count assertion, and a ${PREV_NAME} template variable to reference a previously-applied CE.
  • Refactors message-fragment matching into a shared helper and changes template expansion to preserve unknown ${KEY} variables literally.

Reviewed changes

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

File Description
test/e2e/steps/steps.go Adds named CE steps, COS ownership-count step, ${PREV_NAME} support, message-fragment helper, and preserves unresolved template variables.
test/e2e/steps/hooks.go Extends scenario context to track previousClusterExtensionName.
test/e2e/features/update.feature Adds a new regression scenario validating cross-CE collision protection behavior.

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

Comment thread test/e2e/steps/steps.go
Verify that a second ClusterExtension targeting an already-installed
bundle cannot take over resources from the original owner, even with a
higher-revision ClusterObjectSet.

Changes:
- Add ${PREV_NAME} template variable, populated by
  TrackCurrentClusterExtensionForCleanup, to reference the original CE
  after ResourceIsApplied overwrites ${NAME}.
- Add named CE condition steps (NamedClusterExtensionReportsCondition,
  NamedClusterExtensionReportsConditionWithMessageFragment) so step
  descriptions explicitly identify which CE is being asserted.
- Add ClusterExtensionOwnsClusterObjectSets step to verify the number
  of ClusterObjectSets owned by a named CE.
- Extract messageFragmentComparison helper to deduplicate the
  fragment-matching closure across three callers.
- Guard TrackCurrentClusterExtensionForCleanup against double-calls.
- Preserve unresolved template variables as literal ${KEY} instead of
  silently substituting empty string.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@perdasilva perdasilva force-pushed the e2e-collision-regression-test branch from 943273a to a29cdef Compare June 25, 2026 10:14
@codecov

codecov Bot commented Jun 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 70.46%. Comparing base (c66f3af) to head (a29cdef).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2783      +/-   ##
==========================================
+ Coverage   70.40%   70.46%   +0.05%     
==========================================
  Files         143      143              
  Lines       10617    10617              
==========================================
+ Hits         7475     7481       +6     
+ Misses       2580     2577       -3     
+ Partials      562      559       -3     
Flag Coverage Δ
e2e 35.29% <ø> (+0.12%) ⬆️
experimental-e2e 52.51% <ø> (+0.09%) ⬆️
unit 59.49% <ø> (ø)

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

☔ View full report in Codecov by Harness.
📢 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.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants