Skip to content

Commit 46d66e1

Browse files
pedjakclaude
andauthored
Add e2e test for installing bundle with large (~1MB) CRD (#2602)
Adds a new large-crd-operator test bundle containing a ~1MB CRD to verify that the Boxcutter runtime correctly handles large bundle installations. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 7145047 commit 46d66e1

File tree

6 files changed

+1008
-0
lines changed

6 files changed

+1008
-0
lines changed

test/e2e/features/install.feature

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,32 @@ Feature: Install ClusterExtension
565565
kubernetes.io/os: linux
566566
"""
567567

568+
@BoxcutterRuntime
569+
Scenario: Install bundle with large CRD
570+
When ClusterExtension is applied
571+
"""
572+
apiVersion: olm.operatorframework.io/v1
573+
kind: ClusterExtension
574+
metadata:
575+
name: ${NAME}
576+
spec:
577+
namespace: ${TEST_NAMESPACE}
578+
serviceAccount:
579+
name: olm-sa
580+
source:
581+
sourceType: Catalog
582+
catalog:
583+
packageName: large-crd-operator
584+
selector:
585+
matchLabels:
586+
"olm.operatorframework.io/metadata.name": test-catalog
587+
"""
588+
Then ClusterExtension is rolled out
589+
And ClusterExtension is available
590+
And bundle "large-crd-operator.1.0.0" is installed in version "1.0.0"
591+
And resource "customresourcedefinition/largecrdtests.largecrd.operatorframework.io" is installed
592+
And resource "deployment/large-crd-operator" is installed
593+
568594
@BoxcutterRuntime
569595
@PreflightPermissions
570596
Scenario: Boxcutter preflight check detects missing CREATE permissions

testdata/images/bundles/large-crd-operator/v1.0.0/manifests/largecrd.operatorframework.io_largecrdtests.yaml

Lines changed: 775 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
apiVersion: operators.coreos.com/v1alpha1
2+
kind: ClusterServiceVersion
3+
metadata:
4+
annotations:
5+
alm-examples: |-
6+
[
7+
{
8+
"apiVersion": "largecrd.operatorframework.io/v1",
9+
"kind": "LargeCrdTest",
10+
"metadata": {
11+
"labels": {
12+
"app.kubernetes.io/managed-by": "kustomize",
13+
"app.kubernetes.io/name": "large-crd-operator"
14+
},
15+
"name": "largecrdtest-sample"
16+
},
17+
"spec": null
18+
}
19+
]
20+
capabilities: Basic Install
21+
createdAt: "2024-10-24T19:21:40Z"
22+
operators.operatorframework.io/builder: operator-sdk-v1.34.1
23+
operators.operatorframework.io/project_layout: go.kubebuilder.io/v4
24+
name: large-crd-operator.v1.0.0
25+
namespace: placeholder
26+
spec:
27+
apiservicedefinitions: {}
28+
customresourcedefinitions:
29+
owned:
30+
- description: LargeCrdTest is a test CRD with a large schema
31+
displayName: LargeCrdTest
32+
kind: LargeCrdTest
33+
name: largecrdtests.largecrd.operatorframework.io
34+
version: v1
35+
description: OLM E2E Large CRD Testing Operator
36+
displayName: large-crd-operator
37+
icon:
38+
- base64data: ""
39+
mediatype: ""
40+
install:
41+
spec:
42+
deployments:
43+
- label:
44+
app.kubernetes.io/component: controller
45+
app.kubernetes.io/name: large-crd-operator
46+
app.kubernetes.io/version: 1.0.0
47+
name: large-crd-operator
48+
spec:
49+
replicas: 1
50+
selector:
51+
matchLabels:
52+
app: largecrdtest
53+
template:
54+
metadata:
55+
labels:
56+
app: largecrdtest
57+
spec:
58+
terminationGracePeriodSeconds: 0
59+
volumes:
60+
- name: scripts
61+
configMap:
62+
name: httpd-script
63+
defaultMode: 0755
64+
containers:
65+
- name: busybox-httpd-container
66+
image: busybox:1.37
67+
command: ["/scripts/httpd.sh"]
68+
ports:
69+
- containerPort: 80
70+
volumeMounts:
71+
- name: scripts
72+
mountPath: /scripts
73+
readOnly: true
74+
startupProbe:
75+
httpGet:
76+
path: /started
77+
port: 80
78+
failureThreshold: 30
79+
periodSeconds: 10
80+
livenessProbe:
81+
httpGet:
82+
path: /live
83+
port: 80
84+
failureThreshold: 1
85+
periodSeconds: 2
86+
readinessProbe:
87+
httpGet:
88+
path: /ready
89+
port: 80
90+
initialDelaySeconds: 1
91+
periodSeconds: 1
92+
serviceAccountName: simple-bundle-manager
93+
clusterPermissions:
94+
- rules:
95+
- apiGroups:
96+
- authentication.k8s.io
97+
resources:
98+
- tokenreviews
99+
verbs:
100+
- create
101+
- apiGroups:
102+
- authorization.k8s.io
103+
resources:
104+
- subjectaccessreviews
105+
verbs:
106+
- create
107+
serviceAccountName: simple-bundle-manager
108+
permissions:
109+
- rules:
110+
- apiGroups:
111+
- ""
112+
resources:
113+
- configmaps
114+
- serviceaccounts
115+
verbs:
116+
- get
117+
- list
118+
- watch
119+
- create
120+
- update
121+
- patch
122+
- delete
123+
- apiGroups:
124+
- coordination.k8s.io
125+
resources:
126+
- leases
127+
verbs:
128+
- get
129+
- list
130+
- watch
131+
- create
132+
- update
133+
- patch
134+
- delete
135+
- apiGroups:
136+
- ""
137+
resources:
138+
- events
139+
verbs:
140+
- create
141+
- patch
142+
serviceAccountName: simple-bundle-manager
143+
strategy: deployment
144+
installModes:
145+
- supported: false
146+
type: OwnNamespace
147+
- supported: true
148+
type: SingleNamespace
149+
- supported: false
150+
type: MultiNamespace
151+
- supported: true
152+
type: AllNamespaces
153+
keywords:
154+
- registry
155+
links:
156+
- name: large-crd-operator
157+
url: https://large-crd-operator.domain
158+
maintainers:
159+
- email: main#large-crd-operator.domain
160+
name: Large CRD Operator
161+
maturity: beta
162+
provider:
163+
name: Large CRD Operator
164+
url: https://large-crd-operator.domain
165+
version: 1.0.0
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: httpd-script
5+
data:
6+
httpd.sh: |
7+
#!/bin/sh
8+
echo "Version 1.0.0"
9+
echo true > /var/www/started
10+
echo true > /var/www/ready
11+
echo true > /var/www/live
12+
exec httpd -f -h /var/www -p 80
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
annotations:
2+
# Core bundle annotations.
3+
operators.operatorframework.io.bundle.mediatype.v1: registry+v1
4+
operators.operatorframework.io.bundle.manifests.v1: manifests/
5+
operators.operatorframework.io.bundle.metadata.v1: metadata/
6+
operators.operatorframework.io.bundle.package.v1: large-crd-operator
7+
operators.operatorframework.io.bundle.channels.v1: beta
8+
operators.operatorframework.io.metrics.builder: operator-sdk-v1.28.0
9+
operators.operatorframework.io.metrics.mediatype.v1: metrics+v1
10+
operators.operatorframework.io.metrics.project_layout: unknown

testdata/images/catalogs/test-catalog/v1/configs/catalog.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,3 +185,23 @@ properties:
185185
value:
186186
packageName: single-namespace-operator
187187
version: 1.0.0
188+
---
189+
schema: olm.package
190+
name: large-crd-operator
191+
defaultChannel: beta
192+
---
193+
schema: olm.channel
194+
name: beta
195+
package: large-crd-operator
196+
entries:
197+
- name: large-crd-operator.1.0.0
198+
---
199+
schema: olm.bundle
200+
name: large-crd-operator.1.0.0
201+
package: large-crd-operator
202+
image: docker-registry.operator-controller-e2e.svc.cluster.local:5000/bundles/registry-v1/large-crd-operator:v1.0.0
203+
properties:
204+
- type: olm.package
205+
value:
206+
packageName: large-crd-operator
207+
version: 1.0.0

0 commit comments

Comments
 (0)