Skip to content

Commit c0dc83f

Browse files
joelanfordclaude
andauthored
✨ e2e: isolate tests with per-scenario dynamic catalogs (#2651)
* e2e: add design spec for test isolation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * e2e: move bundle test builders to internal/testing/bundle/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * e2e: add catalog builder library and registry deployment Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * e2e: convert all tests to per-scenario dynamic catalogs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * e2e: update extension-developer-e2e to use registry library Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * e2e: remove old static test infrastructure and clean up * e2e: use port-forward instead of hostPort for registry access Replace the localhost:30000 hostPort-based registry access with Kubernetes port-forwarding. This makes the test runner work regardless of the cluster network topology (not just kind with extraPortMappings). - Remove port 30000 extraPortMappings from kind configs - Add PortForward() to the registry package using SPDY - Use port-forward in e2e steps and extension-developer-e2e - Remove LOCAL_REGISTRY_HOST env var (no longer needed) - Keep NodePort service for containerd on kind nodes (hosts.toml) * e2e: bump experimental e2e timeout to 20m --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c92a607 commit c0dc83f

84 files changed

Lines changed: 2254 additions & 4025 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -259,21 +259,14 @@ E2E_TIMEOUT ?= 10m
259259
e2e: #EXHELP Run the e2e tests.
260260
go test -count=1 -v ./test/e2e/features_test.go -timeout=$(E2E_TIMEOUT)
261261

262-
E2E_REGISTRY_NAME := docker-registry
263-
E2E_REGISTRY_NAMESPACE := operator-controller-e2e
264-
265-
export REG_PKG_NAME := registry-operator
266-
export CLUSTER_REGISTRY_HOST := $(E2E_REGISTRY_NAME).$(E2E_REGISTRY_NAMESPACE).svc:5000
267-
export LOCAL_REGISTRY_HOST := localhost:30000
268-
export E2E_TEST_CATALOG_V1 := e2e/test-catalog:v1
269-
export E2E_TEST_CATALOG_V2 := e2e/test-catalog:v2
270-
export CATALOG_IMG := $(CLUSTER_REGISTRY_HOST)/$(E2E_TEST_CATALOG_V1)
262+
export CLUSTER_REGISTRY_HOST := docker-registry.operator-controller-e2e.svc:5000
271263
.PHONY: extension-developer-e2e
272-
extension-developer-e2e: $(OPERATOR_SDK) $(KUSTOMIZE) #EXHELP Run extension create, upgrade and delete tests.
273-
test/extension-developer-e2e/setup.sh $(OPERATOR_SDK) $(CONTAINER_RUNTIME) $(KUSTOMIZE) ${LOCAL_REGISTRY_HOST} ${CLUSTER_REGISTRY_HOST}
264+
extension-developer-e2e: export OPERATOR_SDK := $(OPERATOR_SDK)
265+
extension-developer-e2e: export CONTAINER_RUNTIME := $(CONTAINER_RUNTIME)
266+
extension-developer-e2e: $(OPERATOR_SDK) #EXHELP Run extension create, upgrade and delete tests.
274267
go test -count=1 -v ./test/extension-developer-e2e/...
275268

276-
UNIT_TEST_DIRS := $(shell go list ./... | grep -vE "/test/|/testutils")
269+
UNIT_TEST_DIRS := $(shell go list ./... | grep -vE "/test/|/testutils") $(shell go list ./test/internal/...)
277270
COVERAGE_UNIT_DIR := $(ROOT_DIR)/coverage/unit
278271

279272
.PHONY: envtest-k8s-bins #HELP Uses setup-envtest to download and install the binaries required to run ENVTEST-test based locally at the project/bin directory.
@@ -298,15 +291,6 @@ test-regression: #HELP Run regression test
298291
rm -rf $(COVERAGE_REGRESSION_DIR) && mkdir -p $(COVERAGE_REGRESSION_DIR)
299292
go test -count=1 -v ./test/regression/... -cover -coverprofile ${ROOT_DIR}/coverage/regression.out -test.gocoverdir=$(COVERAGE_REGRESSION_DIR)
300293

301-
.PHONY: image-registry
302-
E2E_REGISTRY_IMAGE=localhost/e2e-test-registry:devel
303-
image-registry: export GOOS=linux
304-
image-registry: export GOARCH=amd64
305-
image-registry: ## Build the testdata catalog used for e2e tests and push it to the image registry
306-
go build $(GO_BUILD_FLAGS) $(GO_BUILD_EXTRA_FLAGS) -tags '$(GO_BUILD_TAGS)' -ldflags '$(GO_BUILD_LDFLAGS)' -gcflags '$(GO_BUILD_GCFLAGS)' -asmflags '$(GO_BUILD_ASMFLAGS)' -o ./testdata/push/bin/push ./testdata/push/push.go
307-
$(CONTAINER_RUNTIME) build -f ./testdata/Dockerfile -t $(E2E_REGISTRY_IMAGE) ./testdata
308-
$(KIND) load docker-image $(E2E_REGISTRY_IMAGE) --name $(KIND_CLUSTER_NAME)
309-
./testdata/build-test-registry.sh $(E2E_REGISTRY_NAMESPACE) $(E2E_REGISTRY_NAME) $(E2E_REGISTRY_IMAGE)
310294

311295
# When running the e2e suite, you can set the ARTIFACT_PATH variable to the absolute path
312296
# of the directory for the operator-controller e2e tests to store the artifacts, which
@@ -320,7 +304,7 @@ test-e2e: GO_BUILD_EXTRA_FLAGS := -cover
320304
test-e2e: COVERAGE_NAME := e2e
321305
test-e2e: export MANIFEST := $(STANDARD_RELEASE_MANIFEST)
322306
test-e2e: export INSTALL_DEFAULT_CATALOGS := false
323-
test-e2e: run-internal image-registry prometheus e2e e2e-coverage kind-clean #HELP Run e2e test suite on local kind cluster
307+
test-e2e: run-internal prometheus e2e e2e-coverage kind-clean #HELP Run e2e test suite on local kind cluster
324308

325309
.PHONY: test-experimental-e2e
326310
test-experimental-e2e: SOURCE_MANIFEST := $(EXPERIMENTAL_E2E_MANIFEST)
@@ -331,8 +315,8 @@ test-experimental-e2e: COVERAGE_NAME := experimental-e2e
331315
test-experimental-e2e: export MANIFEST := $(EXPERIMENTAL_RELEASE_MANIFEST)
332316
test-experimental-e2e: export INSTALL_DEFAULT_CATALOGS := false
333317
test-experimental-e2e: PROMETHEUS_VALUES := helm/prom_experimental.yaml
334-
test-experimental-e2e: E2E_TIMEOUT := 15m
335-
test-experimental-e2e: run-internal image-registry prometheus e2e e2e-coverage kind-clean #HELP Run experimental e2e test suite on local kind cluster
318+
test-experimental-e2e: E2E_TIMEOUT := 20m
319+
test-experimental-e2e: run-internal prometheus e2e e2e-coverage kind-clean #HELP Run experimental e2e test suite on local kind cluster
336320

337321
.PHONY: prometheus
338322
prometheus: PROMETHEUS_NAMESPACE := olmv1-system
@@ -349,7 +333,7 @@ test-extension-developer-e2e: SOURCE_MANIFEST := $(STANDARD_E2E_MANIFEST)
349333
test-extension-developer-e2e: KIND_CLUSTER_NAME := operator-controller-ext-dev-e2e
350334
test-extension-developer-e2e: export INSTALL_DEFAULT_CATALOGS := false
351335
test-extension-developer-e2e: export MANIFEST := $(STANDARD_RELEASE_MANIFEST)
352-
test-extension-developer-e2e: run-internal image-registry extension-developer-e2e kind-clean #HELP Run extension-developer e2e on local kind cluster
336+
test-extension-developer-e2e: run-internal extension-developer-e2e kind-clean #HELP Run extension-developer e2e on local kind cluster
353337

354338
.PHONY: run-latest-release
355339
run-latest-release:
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
# E2E Test Isolation: Per-Scenario Catalogs via Dynamic OCI Image Building
2+
3+
## Problem
4+
5+
E2E test scenarios previously shared cluster-scoped resources (ClusterCatalogs, CRDs, packages),
6+
causing cascading failures when one scenario left state behind. Parallelism was impossible because
7+
scenarios conflicted on shared resource names.
8+
9+
## Solution
10+
11+
Each scenario dynamically builds and pushes its own bundle and catalog OCI images at test time,
12+
parameterized by scenario ID. All cluster-scoped resource names include the scenario ID, making
13+
conflicts structurally impossible.
14+
15+
```
16+
Scenario starts
17+
-> Generate parameterized bundle manifests (CRD names, deployments, etc. include scenario ID)
18+
-> Build + push bundle OCI images to e2e registry via go-containerregistry
19+
-> Generate FBC catalog config referencing those bundle image refs
20+
-> Build + push catalog OCI image to e2e registry
21+
-> Create ClusterCatalog pointing at the catalog image
22+
-> Run scenario steps
23+
-> Cleanup all resources (including catalog)
24+
```
25+
26+
### Key Properties
27+
28+
- Every cluster-scoped resource name includes the scenario ID -- no conflicts by construction.
29+
- Failed scenario state is preserved for debugging without affecting other scenarios.
30+
- Parallelism (`Concurrency > 1`) is safe without further changes.
31+
- Adding new scenarios requires zero coordination with existing ones.
32+
33+
## Builder API (`test/internal/catalog/`)
34+
35+
Bundles are defined as components of a catalog. A single `Build()` call builds and pushes
36+
all bundle images, generates the FBC, and pushes the catalog image:
37+
38+
```go
39+
cat := catalog.NewCatalog("test", scenarioID,
40+
catalog.WithPackage("test",
41+
catalog.Bundle("1.0.0", catalog.WithCRD(), catalog.WithDeployment(), catalog.WithConfigMap()),
42+
catalog.Bundle("1.2.0", catalog.WithCRD(), catalog.WithDeployment()),
43+
catalog.Channel("beta", catalog.Entry("1.0.0"), catalog.Entry("1.2.0")),
44+
),
45+
)
46+
result, err := cat.Build(ctx, "v1", localRegistry, clusterRegistry)
47+
// result.CatalogName = "test-catalog-{scenarioID}"
48+
// result.CatalogImageRef = "{clusterRegistry}/e2e/test-catalog-{scenarioID}:v1"
49+
// result.PackageNames = {"test": "test-{scenarioID}"}
50+
```
51+
52+
### Bundle Options
53+
54+
- `WithCRD()` -- CRD with group `e2e-{id}.e2e.operatorframework.io`
55+
- `WithDeployment()` -- Deployment named `test-operator-{id}` (includes CSV, script ConfigMap, NetworkPolicy)
56+
- `WithConfigMap()` -- additional test ConfigMap
57+
- `WithInstallMode(modes...)` -- sets supported install modes on the CSV
58+
- `WithLargeCRD(fieldCount)` -- CRD with many fields for large bundle testing
59+
- `WithClusterRegistry(host)` -- overrides the cluster-side registry host (for mirror testing)
60+
- `StaticBundleDir(dir)` -- reads pre-built bundle manifests without parameterization (e.g. webhook-operator)
61+
- `BadImage()` -- uses an invalid container image to trigger ImagePullBackOff
62+
- `WithBundleProperty(type, value)` -- adds a property to bundle metadata
63+
64+
## Feature File Conventions
65+
66+
Feature files define catalogs inline via data tables:
67+
68+
```gherkin
69+
Background:
70+
Given OLM is available
71+
And an image registry is available
72+
And a catalog "test" with packages:
73+
| package | version | channel | replaces | contents |
74+
| test | 1.0.0 | alpha | | CRD, Deployment, ConfigMap |
75+
| test | 1.0.1 | alpha | 1.0.0 | CRD, Deployment, ConfigMap |
76+
| test | 1.2.0 | beta | | CRD, Deployment |
77+
```
78+
79+
### Variable Substitution
80+
81+
Templates in feature file YAML use these variables:
82+
83+
| Variable | Expansion | Example |
84+
|----------|-----------|---------|
85+
| `${NAME}` | ClusterExtension name | `ce-abc123` |
86+
| `${TEST_NAMESPACE}` | Scenario namespace | `ns-abc123` |
87+
| `${SCENARIO_ID}` | Unique scenario identifier | `abc123` |
88+
| `${PACKAGE:<name>}` | Parameterized package name | `test-abc123` |
89+
| `${CATALOG:<name>}` | ClusterCatalog resource name | `test-catalog-abc123` |
90+
| `${COS_NAME}` | ClusterObjectSet name | `cos-abc123` |
91+
92+
### Naming Conventions
93+
94+
| Resource | Pattern |
95+
|----------|---------|
96+
| CRD group | `e2e-{id}.e2e.operatorframework.io` |
97+
| Deployment | `test-operator-{id}` |
98+
| Package name (FBC) | `{package}-{id}` |
99+
| Bundle image | `{registry}/bundles/{package}-{id}:v{version}` |
100+
| Catalog image | `{registry}/e2e/{name}-catalog-{id}:{tag}` |
101+
| ClusterCatalog | `{name}-catalog-{id}` |
102+
| Namespace | `ns-{id}` |
103+
| ClusterExtension | `ce-{id}` |
104+
105+
## Registry Access
106+
107+
An in-cluster OCI registry (`test/internal/registry/`) stores bundle and catalog images.
108+
The registry runs as a ClusterIP Service; there is no NodePort or kind `extraPortMappings`.
109+
110+
The test runner reaches the registry via **Kubernetes port-forward** (SPDY through the API
111+
server), which works regardless of the cluster's network topology. A `sync.OnceValues` in the
112+
step definitions starts the port-forward once and returns the dynamically assigned
113+
`localhost:<port>` address used for all `crane.Push` / `crane.Tag` calls.
114+
115+
In-cluster components (e.g. the catalog unpacker) pull images using the Service DNS name
116+
(`docker-registry.operator-controller-e2e.svc.cluster.local:5000`), resolved by CoreDNS.
117+
Containerd on the node is never involved because the registry only holds OCI artifacts
118+
consumed by Go code, not container images for pods.

go.mod

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ require (
9090
github.com/containerd/typeurl/v2 v2.2.3 // indirect
9191
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect
9292
github.com/containers/ocicrypt v1.2.1 // indirect
93+
github.com/creack/pty v1.1.24 // indirect
9394
github.com/cucumber/gherkin/go/v26 v26.2.0 // indirect
9495
github.com/cucumber/messages/go/v21 v21.0.1 // indirect
9596
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect
@@ -141,6 +142,7 @@ require (
141142
github.com/google/gnostic-models v0.7.1 // indirect
142143
github.com/google/uuid v1.6.0 // indirect
143144
github.com/gorilla/mux v1.8.1 // indirect
145+
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
144146
github.com/gosuri/uitable v0.0.4 // indirect
145147
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
146148
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect
@@ -172,6 +174,7 @@ require (
172174
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
173175
github.com/mitchellh/reflectwalk v1.0.2 // indirect
174176
github.com/moby/locker v1.0.1 // indirect
177+
github.com/moby/spdystream v0.5.0 // indirect
175178
github.com/moby/sys/capability v0.4.0 // indirect
176179
github.com/moby/sys/mountinfo v0.7.2 // indirect
177180
github.com/moby/sys/sequential v0.6.0 // indirect
@@ -182,6 +185,7 @@ require (
182185
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
183186
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
184187
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
188+
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
185189
github.com/nxadm/tail v1.4.11 // indirect
186190
github.com/onsi/gomega v1.39.1 // indirect
187191
github.com/opencontainers/runtime-spec v1.3.0 // indirect

go.sum

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpH
3434
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
3535
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
3636
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
37+
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
38+
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
3739
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
3840
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
3941
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
@@ -87,8 +89,8 @@ github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5z
8789
github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU=
8890
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
8991
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
90-
github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
91-
github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
92+
github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=
93+
github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=
9294
github.com/cucumber/gherkin/go/v26 v26.2.0 h1:EgIjePLWiPeslwIWmNQ3XHcypPsWAHoMCz/YEBKP4GI=
9395
github.com/cucumber/gherkin/go/v26 v26.2.0/go.mod h1:t2GAPnB8maCT4lkHL99BDCVNzCh1d7dBhCLt150Nr/0=
9496
github.com/cucumber/godog v0.15.1 h1:rb/6oHDdvVZKS66hrhpjFQFHjthFSrQBCOI1LwshNTI=
@@ -274,6 +276,8 @@ github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyE
274276
github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w=
275277
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
276278
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
279+
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo=
280+
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA=
277281
github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY=
278282
github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo=
279283
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
@@ -369,6 +373,8 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx
369373
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
370374
github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=
371375
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
376+
github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU=
377+
github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
372378
github.com/moby/sys/capability v0.4.0 h1:4D4mI6KlNtWMCM1Z/K0i7RV1FkX+DBDHKVJpCndZoHk=
373379
github.com/moby/sys/capability v0.4.0/go.mod h1:4g9IK291rVkms3LKCDOoYlnV8xKwoDTpIrNEE35Wq0I=
374380
github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg=
@@ -393,6 +399,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
393399
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
394400
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
395401
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
402+
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=
403+
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
396404
github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
397405
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
398406
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=

hack/kind-config/containerd/certs.d/docker-registry.operator-controller-e2e.svc.cluster.local:5000/hosts.toml

Lines changed: 0 additions & 3 deletions
This file was deleted.

hack/kind-config/containerd/certs.d/go.mod

Lines changed: 0 additions & 5 deletions
This file was deleted.

internal/operator-controller/applier/boxcutter_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ import (
3737
"github.com/operator-framework/operator-controller/internal/operator-controller/applier"
3838
"github.com/operator-framework/operator-controller/internal/operator-controller/authorization"
3939
"github.com/operator-framework/operator-controller/internal/operator-controller/labels"
40-
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/util/testing/bundlefs"
41-
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/util/testing/clusterserviceversion"
40+
bundlecsv "github.com/operator-framework/operator-controller/internal/testing/bundle/csv"
41+
bundlefs "github.com/operator-framework/operator-controller/internal/testing/bundle/fs"
4242
)
4343

4444
var (
4545
dummyBundle = bundlefs.Builder().
4646
WithPackageName("test-package").
47-
WithCSV(clusterserviceversion.Builder().WithName("test-csv").Build()).
47+
WithCSV(bundlecsv.Builder().WithName("test-csv").Build()).
4848
Build()
4949
)
5050

@@ -313,7 +313,7 @@ func Test_SimpleRevisionGenerator_GenerateRevision_BundleAnnotations(t *testing.
313313
WithPackageName("test-package").
314314
WithBundleProperty("olm.bundle.property", "some-value").
315315
WithBundleProperty("olm.another.bundle.property", "some-other-value").
316-
WithCSV(clusterserviceversion.Builder().WithName("test-csv").Build()).
316+
WithCSV(bundlecsv.Builder().WithName("test-csv").Build()).
317317
Build()
318318

319319
rev, err := b.GenerateRevision(t.Context(), bundleFS, ext, map[string]string{}, map[string]string{})
@@ -327,7 +327,7 @@ func Test_SimpleRevisionGenerator_GenerateRevision_BundleAnnotations(t *testing.
327327
t.Run("olm.properties should not be present if there are no bundle properties", func(t *testing.T) {
328328
bundleFS := bundlefs.Builder().
329329
WithPackageName("test-package").
330-
WithCSV(clusterserviceversion.Builder().WithName("test-csv").Build()).
330+
WithCSV(bundlecsv.Builder().WithName("test-csv").Build()).
331331
Build()
332332

333333
rev, err := b.GenerateRevision(t.Context(), bundleFS, ext, map[string]string{}, map[string]string{})
@@ -342,7 +342,7 @@ func Test_SimpleRevisionGenerator_GenerateRevision_BundleAnnotations(t *testing.
342342
bundleFS := bundlefs.Builder().
343343
WithPackageName("test-package").
344344
WithBundleProperty("olm.bundle.property", "some-value").
345-
WithCSV(clusterserviceversion.Builder().
345+
WithCSV(bundlecsv.Builder().
346346
WithName("test-csv").
347347
WithAnnotations(map[string]string{
348348
"some.csv.annotation": "some-other-value",

0 commit comments

Comments
 (0)