-
Notifications
You must be signed in to change notification settings - Fork 47
NO-ISSUE: Synchronize From Upstream Repositories #707
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
openshift-bot
wants to merge
96
commits into
openshift:main
Choose a base branch
from
openshift-bot:synchronize-upstream
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
96 commits
Select commit
Hold shift + click to select a range
c0dc83f
✨ e2e: isolate tests with per-scenario dynamic catalogs (#2651)
joelanford a47a0b4
:seedling: Bump github.com/moby/spdystream from 0.5.0 to 0.5.1 (#2669)
dependabot[bot] 6415a1c
:seedling: Bump golang.org/x/mod from 0.34.0 to 0.35.0 (#2670)
dependabot[bot] c8585e9
:seedling: Bump platformdirs from 4.9.4 to 4.9.6 (#2671)
dependabot[bot] 967be14
tests: add unit and e2e tests for HTTPS_PROXY support (#2654)
tmshort 7277a46
:seedling: Bump golang.org/x/tools from 0.43.0 to 0.44.0 (#2673)
dependabot[bot] d512ce4
Merge branch 'main' into synchronize
72d170e
UPSTREAM: <carry>: Add OpenShift specific files
dtfranz aa49577
UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
camilamacedo86 926246a
UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
camilamacedo86 2e1874b
UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp …
camilamacedo86 2421df4
UPSTREAM: <carry>: Update OCP catalogs to v4.21
tmshort 20e7961
UPSTREAM: <carry>: support singleown cases in disconnected
kuiwang02 1a265fa
UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
kuiwang02 d824b9a
UPSTREAM: <carry>: Define Default timeouts and apply their usage accr…
camilamacedo86 136f9c6
UPSTREAM: <carry>: Update to new feature-gate options in helm
tmshort 02ced2b
UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniq…
camilamacedo86 3ac827f
UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comme…
camilamacedo86 5b7249d
UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inlin…
kuiwang02 bc0feaa
UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension…
camilamacedo86 0c40bae
UPSTREAM: <carry>: Add [OTP] to migrated cases
kuiwang02 dc794dd
UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
camilamacedo86 c72aad8
UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version…
camilamacedo86 d0a28d4
UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and depe…
camilamacedo86 be6d702
UPSTREAM: <carry>: add disconnected environment support with custom p…
kuiwang02 f67c44b
UPSTREAM: <carry>: migrate jiazha test cases to OTE
jianzhangbjz 89a5485
UPSTREAM: <carry>: migrate clustercatalog case to ote
Xia-Zhao-rh aee7acf
UPSTREAM: <carry>: migrate olmv1 QE stress cases
kuiwang02 e269c16
UPSTREAM: <carry>: Use busybox/httpd to simulate probes
tmshort 8bb9566
UPSTREAM: <carry>: migrate olmv1 QE cases
Xia-Zhao-rh a7241ac
UPSTREAM: <carry>: add agent for olmv1 qe cases
kuiwang02 db49514
UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
tmshort e80fb27
UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
rashmigottipati 80c4756
UPSTREAM: <carry>: address review comments through addl prompts
rashmigottipati f5e7fa3
UPSTREAM: <carry>: addressing some more review comments
rashmigottipati 532ffad
UPSTREAM: <carry>: remove DCO line
rashmigottipati bb9a114
UPSTREAM: <carry>: migrate bandrade test cases to OTE
bandrade 07d0016
UPSTREAM: <carry>: update metadata
bandrade d80d420
UPSTREAM: <carry>: remove originalName
bandrade 1fb14d8
UPSTREAM: <carry>: update 80458's timeout to 180s
jianzhangbjz 2395bb6
UPSTREAM: <carry>: update 83026 to specify the clustercatalog
jianzhangbjz 3ad1935
UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
oceanc80 c128759
UPSTREAM: <carry>: Use oc client for running e2e tests
pedjak a00fa87
UPSTREAM: <carry>: Run upstream e2e tests tagged with `@catalogd-update`
pedjak 1543805
UPSTREAM: <carry>: enhance case to make it more stable
kuiwang02 1fefe62
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat 743d864
UPSTREAM: <carry>: move sa creation out of buildCurlJob()
ehearne-redhat a242ec2
UPSTREAM: <carry>: comment out delete service account
ehearne-redhat 73f863e
UPSTREAM: <carry>: move defercleanup for sa for LIFO
ehearne-redhat 4109fce
UPSTREAM: <carry>: add polling so job fully deleted before proceed
ehearne-redhat b7037e9
UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redha…
sosiouxme 8aebb3a
UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
camilamacedo86 f9e32bc
UPSTREAM: <carry>: config watchnamespace cases
kuiwang02 20de626
UPSTREAM: <carry>: enhance ocp-79770
Xia-Zhao-rh cdbc54a
UPSTREAM: <carry>: upgrade version support case
kuiwang02 90cc6ca
UPSTREAM: <carry>: Remove installed condition check from auth preflig…
cd03270
UPSTREAM: <carry>: Add openshift/api dependency
edce0c9
UPSTREAM: <carry>: Add boxcutter specific preflight auth test
4f598c0
UPSTREAM: <carry>: adjust watchnamespace case based on change
kuiwang02 3ab2f72
UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root…
camilamacedo86 3b21713
UPSTREAM: <carry>: add 83979 automation
bandrade 94688e8
UPSTREAM: <carry>: add 85889 automation
bandrade cb822e1
UPSTREAM: <carry>: Update test-operator startup script to fix pod pro…
2442669
UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
456c4c1
UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles…
camilamacedo86 606241e
UPSTREAM: <carry>: adjust sa and permission test cases per new change…
kuiwang02 52e371a
UPSTREAM: <carry>: Update OCP catalogs to v4.22
camilamacedo86 74e674d
UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and…
camilamacedo86 12fc92f
UPSTREAM: <carry>: fix 83026 for TP cluster
jianzhangbjz 982d2c4
UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
kuiwang02 ac78b9d
UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
stbenjam 8950c35
UPSTREAM: <carry>: Increase install timeout and add diagnostic loggin…
camilamacedo86 b4f88e5
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat 933442a
UPSTREAM: <carry>: update OCP-75441 to support multi-arch
jianzhangbjz aaf8d72
UPSTREAM: <carry>: deployment config cases
kuiwang02 df9b501
UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
tmshort aaf855d
UPSTREAM: <carry>: Update openshift/api and client-go
tmshort 42be46f
UPSTREAM: <carry>: Add boxcutter tests
camilamacedo86 12e4f6a
UPSTREAM: <carry>: enhance QE cases
Xia-Zhao-rh a0d118d
UPSTREAM: <carry>: Update quay-operator version to one containing arm…
dtfranz 72d24ac
UPSTREAM: <carry>: verify volume/volumeMount override
kuiwang02 ee59c40
UPSTREAM: <carry>: Add long-duration test script and documents
jianzhangbjz 05a9404
UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests
tmshort f629f59
UPSTREAM: <carry>: Rename ClusterExtensionRevision to ClusterObjectSe…
camilamacedo86 45fccb0
UPSTREAM: <carry>: Skip incompatible operator test when Boxcutter use…
camilamacedo86 ff06084
UPSTREAM: <carry>: add ocp-87557
bandrade aa41fd0
UPSTREAM: <carry>: Add fgiudici as reviewer
fgiudici f4b6295
UPSTREAM: <carry>: Remove skip for incompatible operator check after …
camilamacedo86 bb65ed4
UPSTREAM: <carry>: Test empty affinity erasure and cleanup
kuiwang02 5e305a7
UPSTREAM: <carry>: Fix boxcutter finalizer ResourceNames in prefligh…
camilamacedo86 70e4fc9
UPSTREAM: <carry>: Expand OTE docs with more comprehensive details
camilamacedo86 fe95e8f
UPSTREAM: <carry>: Disable upstream TLSProfile tests
tmshort 7db582a
UPSTREAM: <carry>: OTE: Simplify by remove option to configure tests …
camilamacedo86 e15e8ce
UPSTREAM: <drop>: go mod vendor
5791a2a
UPSTREAM: <drop>: remove upstream GitHub configuration
6362918
UPSTREAM: <drop>: configure the commit-checker
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
118 changes: 118 additions & 0 deletions
118
docs/designs/testing/2026-04-13-e2e-isolation/design.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,118 @@ | ||
| # E2E Test Isolation: Per-Scenario Catalogs via Dynamic OCI Image Building | ||
|
|
||
| ## Problem | ||
|
|
||
| E2E test scenarios previously shared cluster-scoped resources (ClusterCatalogs, CRDs, packages), | ||
| causing cascading failures when one scenario left state behind. Parallelism was impossible because | ||
| scenarios conflicted on shared resource names. | ||
|
|
||
| ## Solution | ||
|
|
||
| Each scenario dynamically builds and pushes its own bundle and catalog OCI images at test time, | ||
| parameterized by scenario ID. All cluster-scoped resource names include the scenario ID, making | ||
| conflicts structurally impossible. | ||
|
|
||
| ``` | ||
| Scenario starts | ||
| -> Generate parameterized bundle manifests (CRD names, deployments, etc. include scenario ID) | ||
| -> Build + push bundle OCI images to e2e registry via go-containerregistry | ||
| -> Generate FBC catalog config referencing those bundle image refs | ||
| -> Build + push catalog OCI image to e2e registry | ||
| -> Create ClusterCatalog pointing at the catalog image | ||
| -> Run scenario steps | ||
| -> Cleanup all resources (including catalog) | ||
| ``` | ||
|
|
||
| ### Key Properties | ||
|
|
||
| - Every cluster-scoped resource name includes the scenario ID -- no conflicts by construction. | ||
| - Failed scenario state is preserved for debugging without affecting other scenarios. | ||
| - Parallelism (`Concurrency > 1`) is safe without further changes. | ||
| - Adding new scenarios requires zero coordination with existing ones. | ||
|
|
||
| ## Builder API (`test/internal/catalog/`) | ||
|
|
||
| Bundles are defined as components of a catalog. A single `Build()` call builds and pushes | ||
| all bundle images, generates the FBC, and pushes the catalog image: | ||
|
|
||
| ```go | ||
| cat := catalog.NewCatalog("test", scenarioID, | ||
| catalog.WithPackage("test", | ||
| catalog.Bundle("1.0.0", catalog.WithCRD(), catalog.WithDeployment(), catalog.WithConfigMap()), | ||
| catalog.Bundle("1.2.0", catalog.WithCRD(), catalog.WithDeployment()), | ||
| catalog.Channel("beta", catalog.Entry("1.0.0"), catalog.Entry("1.2.0")), | ||
| ), | ||
| ) | ||
| result, err := cat.Build(ctx, "v1", localRegistry, clusterRegistry) | ||
| // result.CatalogName = "test-catalog-{scenarioID}" | ||
| // result.CatalogImageRef = "{clusterRegistry}/e2e/test-catalog-{scenarioID}:v1" | ||
| // result.PackageNames = {"test": "test-{scenarioID}"} | ||
| ``` | ||
|
|
||
| ### Bundle Options | ||
|
|
||
| - `WithCRD()` -- CRD with group `e2e-{id}.e2e.operatorframework.io` | ||
| - `WithDeployment()` -- Deployment named `test-operator-{id}` (includes CSV, script ConfigMap, NetworkPolicy) | ||
| - `WithConfigMap()` -- additional test ConfigMap | ||
| - `WithInstallMode(modes...)` -- sets supported install modes on the CSV | ||
| - `WithLargeCRD(fieldCount)` -- CRD with many fields for large bundle testing | ||
| - `WithClusterRegistry(host)` -- overrides the cluster-side registry host (for mirror testing) | ||
| - `StaticBundleDir(dir)` -- reads pre-built bundle manifests without parameterization (e.g. webhook-operator) | ||
| - `BadImage()` -- uses an invalid container image to trigger ImagePullBackOff | ||
| - `WithBundleProperty(type, value)` -- adds a property to bundle metadata | ||
|
|
||
| ## Feature File Conventions | ||
|
|
||
| Feature files define catalogs inline via data tables: | ||
|
|
||
| ```gherkin | ||
| Background: | ||
| Given OLM is available | ||
| And an image registry is available | ||
| And a catalog "test" with packages: | ||
| | package | version | channel | replaces | contents | | ||
| | test | 1.0.0 | alpha | | CRD, Deployment, ConfigMap | | ||
| | test | 1.0.1 | alpha | 1.0.0 | CRD, Deployment, ConfigMap | | ||
| | test | 1.2.0 | beta | | CRD, Deployment | | ||
| ``` | ||
|
|
||
| ### Variable Substitution | ||
|
|
||
| Templates in feature file YAML use these variables: | ||
|
|
||
| | Variable | Expansion | Example | | ||
| |----------|-----------|---------| | ||
| | `${NAME}` | ClusterExtension name | `ce-abc123` | | ||
| | `${TEST_NAMESPACE}` | Scenario namespace | `ns-abc123` | | ||
| | `${SCENARIO_ID}` | Unique scenario identifier | `abc123` | | ||
| | `${PACKAGE:<name>}` | Parameterized package name | `test-abc123` | | ||
| | `${CATALOG:<name>}` | ClusterCatalog resource name | `test-catalog-abc123` | | ||
| | `${COS_NAME}` | ClusterObjectSet name | `cos-abc123` | | ||
|
|
||
| ### Naming Conventions | ||
|
|
||
| | Resource | Pattern | | ||
| |----------|---------| | ||
| | CRD group | `e2e-{id}.e2e.operatorframework.io` | | ||
| | Deployment | `test-operator-{id}` | | ||
| | Package name (FBC) | `{package}-{id}` | | ||
| | Bundle image | `{registry}/bundles/{package}-{id}:v{version}` | | ||
| | Catalog image | `{registry}/e2e/{name}-catalog-{id}:{tag}` | | ||
| | ClusterCatalog | `{name}-catalog-{id}` | | ||
| | Namespace | `ns-{id}` | | ||
| | ClusterExtension | `ce-{id}` | | ||
|
|
||
| ## Registry Access | ||
|
|
||
| An in-cluster OCI registry (`test/internal/registry/`) stores bundle and catalog images. | ||
| The registry runs as a ClusterIP Service; there is no NodePort or kind `extraPortMappings`. | ||
|
|
||
| The test runner reaches the registry via **Kubernetes port-forward** (SPDY through the API | ||
| server), which works regardless of the cluster's network topology. A `sync.OnceValues` in the | ||
| step definitions starts the port-forward once and returns the dynamically assigned | ||
| `localhost:<port>` address used for all `crane.Push` / `crane.Tag` calls. | ||
|
|
||
| In-cluster components (e.g. the catalog unpacker) pull images using the Service DNS name | ||
| (`docker-registry.operator-controller-e2e.svc.cluster.local:5000`), resolved by CoreDNS. | ||
| Containerd on the node is never involved because the registry only holds OCI artifacts | ||
| consumed by Go code, not container images for pods. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.