Skip to content

Commit 9c248f9

Browse files
Merge pull request #611 from dottorblaster/opensuse-bci-e2e
test(e2e): switch from Ubuntu to openSUSE BCI images
2 parents eab64f1 + 723b9b2 commit 9c248f9

17 files changed

Lines changed: 144 additions & 144 deletions
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
apiVersion: apps/v1
22
kind: Deployment
33
metadata:
4-
name: ubuntu-deployment
4+
name: opensuse-deployment
55
labels:
6-
app: ubuntu-deployment
6+
app: opensuse-deployment
77
spec:
88
replicas: 1
99
selector:
1010
matchLabels:
11-
app: ubuntu-deployment
11+
app: opensuse-deployment
1212
template:
1313
metadata:
1414
labels:
15-
app: ubuntu-deployment
15+
app: opensuse-deployment
1616
spec:
1717
containers:
18-
- name: ubuntu
19-
image: ubuntu:24.04
18+
- name: opensuse
19+
image: registry.opensuse.org/opensuse/bci/bci-ci:latest
2020
# We create a while loop to continually run sleep and ls.
2121
# This way we can detect two groups of processes in our test:
2222
# - process snapshot (bash)

test/e2e/enforcement_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func getEnforcementOnNewPodsTest() types.Feature {
2828
Spec: v1alpha1.WorkloadPolicySpec{
2929
Mode: policymode.ProtectString,
3030
RulesByContainer: map[string]*v1alpha1.WorkloadPolicyRules{
31-
"ubuntu": {
31+
"opensuse": {
3232
Executables: v1alpha1.WorkloadPolicyExecutables{
3333
Allowed: []string{
3434
"/usr/bin/ls",
@@ -44,10 +44,10 @@ func getEnforcementOnNewPodsTest() types.Feature {
4444
// 1. Create the resource and wait for it to be deployed.
4545
createAndWaitWP(ctx, t, policy.DeepCopy())
4646
// 2. Deploy test pods
47-
createAndWaitUbuntuDeployment(ctx, t, withPolicy("test-policy"))
47+
createAndWaitOpensuseDeployment(ctx, t, withPolicy("test-policy"))
4848

4949
// 3. Run command in the pod and verify the result.
50-
podName, err := findUbuntuDeploymentPod(ctx)
50+
podName, err := findOpensuseDeploymentPod(ctx)
5151
require.NoError(t, err)
5252

5353
expectedResults := []struct {
@@ -59,7 +59,7 @@ func getEnforcementOnNewPodsTest() types.Feature {
5959
Allowed: true,
6060
},
6161
{
62-
Commands: []string{"/usr/bin/apt", "update"},
62+
Commands: []string{"/usr/bin/zypper", "refresh"},
6363
Allowed: false,
6464
},
6565
}
@@ -68,14 +68,14 @@ func getEnforcementOnNewPodsTest() types.Feature {
6868
t.Log("running:", expectedResult.Commands)
6969

7070
if expectedResult.Allowed {
71-
requireExecAllowedInCurrentNamespace(ctx, t, podName, "ubuntu", expectedResult.Commands)
71+
requireExecAllowedInCurrentNamespace(ctx, t, podName, "opensuse", expectedResult.Commands)
7272
} else {
73-
requireExecBlockedInCurrentNamespace(ctx, t, podName, "ubuntu", expectedResult.Commands)
73+
requireExecBlockedInCurrentNamespace(ctx, t, podName, "opensuse", expectedResult.Commands)
7474
}
7575
}
7676

7777
// 4. Delete test Deployment
78-
deleteUbuntuDeployment(ctx, t)
78+
deleteOpensuseDeployment(ctx, t)
7979

8080
// 5. Delete WorkloadPolicy and wait for it to be gone.
8181
deleteAndWaitWP(ctx, t, &policy)

test/e2e/helpers_test.go

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ import (
2424
)
2525

2626
const (
27-
defaultHelmTimeout = time.Minute * 5
28-
defaultOperationTimeout = time.Minute
29-
testFolder = "./testdata"
30-
ubuntuDeploymentManifest = "ubuntu-deployment.yaml"
31-
ubuntuDeploymentName = "ubuntu-deployment"
32-
operationNotPermittedMsg = "operation not permitted"
27+
defaultHelmTimeout = time.Minute * 5
28+
defaultOperationTimeout = time.Minute
29+
testFolder = "./testdata"
30+
opensuseDeploymentManifest = "opensuse-deployment.yaml"
31+
opensuseDeploymentName = "opensuse-deployment"
32+
operationNotPermittedMsg = "operation not permitted"
3333
)
3434

3535
type key string
@@ -150,7 +150,7 @@ func waitForWorkloadPolicyStatusToBeUpdated(
150150
}
151151

152152
////////////////////
153-
// Ubuntu deployment helpers
153+
// Opensuse deployment helpers
154154
////////////////////
155155

156156
//nolint:unparam // we want to keep the flexibility to support different policy name.
@@ -162,67 +162,67 @@ func withPolicy(policyName string) decoder.DecodeOption {
162162
})
163163
}
164164

165-
func createAndWaitUbuntuDeployment(
165+
func createAndWaitOpensuseDeployment(
166166
ctx context.Context,
167167
t *testing.T,
168168
options ...decoder.DecodeOption,
169169
) {
170170
t.Helper()
171-
t.Log("installing test Ubuntu deployment")
171+
t.Log("installing test Opensuse deployment")
172172
namespace := getNamespace(ctx)
173173
decodeOptions := append([]decoder.DecodeOption{decoder.MutateNamespace(namespace)}, options...)
174174
err := decoder.ApplyWithManifestDir(
175175
ctx,
176176
getClient(ctx),
177177
testFolder,
178-
ubuntuDeploymentManifest,
178+
opensuseDeploymentManifest,
179179
[]resources.CreateOption{},
180180
decodeOptions...,
181181
)
182-
require.NoError(t, err, "failed to create ubuntu deployment")
182+
require.NoError(t, err, "failed to create opensuse deployment")
183183

184-
// Wait for ubuntu deployment to become available
184+
// Wait for opensuse deployment to become available
185185
err = wait.For(
186-
conditions.New(getClient(ctx)).DeploymentAvailable(ubuntuDeploymentName, namespace),
186+
conditions.New(getClient(ctx)).DeploymentAvailable(opensuseDeploymentName, namespace),
187187
wait.WithTimeout(defaultOperationTimeout),
188188
)
189-
require.NoError(t, err, "ubuntu deployment should become available")
189+
require.NoError(t, err, "opensuse deployment should become available")
190190
}
191191

192-
func deleteUbuntuDeployment(ctx context.Context, t *testing.T) {
192+
func deleteOpensuseDeployment(ctx context.Context, t *testing.T) {
193193
t.Helper()
194-
t.Log("deleting test Ubuntu deployment")
194+
t.Log("deleting test Opensuse deployment")
195195
// With foreground cascading deletion the Deployment resource is only removed
196196
// once all its owned pods have been terminated, so a single wait on the deployment is enough.
197197
err := decoder.DeleteWithManifestDir(
198198
ctx,
199199
getClient(ctx),
200200
testFolder,
201-
ubuntuDeploymentManifest,
201+
opensuseDeploymentManifest,
202202
[]resources.DeleteOption{
203203
resources.WithDeletePropagation("Foreground"),
204204
},
205205
decoder.MutateNamespace(getNamespace(ctx)),
206206
)
207207
require.NoError(t, err, "failed to delete test data")
208208

209-
waitForUbuntuDeploymentDeleted(ctx, t)
209+
waitForOpensuseDeploymentDeleted(ctx, t)
210210
}
211211

212-
func waitForUbuntuDeploymentDeleted(ctx context.Context, t *testing.T) {
212+
func waitForOpensuseDeploymentDeleted(ctx context.Context, t *testing.T) {
213213
t.Helper()
214-
t.Log("waiting for Ubuntu deployment to be deleted")
214+
t.Log("waiting for Opensuse deployment to be deleted")
215215
deployment := &appsv1.Deployment{
216216
ObjectMeta: metav1.ObjectMeta{
217-
Name: ubuntuDeploymentName,
217+
Name: opensuseDeploymentName,
218218
Namespace: getNamespace(ctx),
219219
},
220220
}
221221
err := wait.For(
222222
conditions.New(getClient(ctx)).ResourceDeleted(deployment),
223223
wait.WithTimeout(defaultOperationTimeout),
224224
)
225-
require.NoError(t, err, "ubuntu deployment should be deleted")
225+
require.NoError(t, err, "opensuse deployment should be deleted")
226226
}
227227

228228
func findPodByPrefix(ctx context.Context, namespace string, prefix string) (string, error) {
@@ -242,8 +242,8 @@ func findPodByPrefix(ctx context.Context, namespace string, prefix string) (stri
242242
return "", fmt.Errorf("pod with prefix %q not found in namespace %q", prefix, namespace)
243243
}
244244

245-
func findUbuntuDeploymentPod(ctx context.Context) (string, error) {
246-
return findPodByPrefix(ctx, getNamespace(ctx), ubuntuDeploymentName)
245+
func findOpensuseDeploymentPod(ctx context.Context) (string, error) {
246+
return findPodByPrefix(ctx, getNamespace(ctx), opensuseDeploymentName)
247247
}
248248

249249
func execInCurrentNamespace(
@@ -293,7 +293,7 @@ func requireExecBlockedInCurrentNamespace(
293293
require.Contains(t, stderr, operationNotPermittedMsg)
294294
}
295295

296-
func verifyUbuntuLearnedProcesses(values []string) bool {
296+
func verifyOpensuseLearnedProcesses(values []string) bool {
297297
return slices.Contains(values, "/usr/bin/bash") &&
298298
slices.Contains(values, "/usr/bin/ls") &&
299299
slices.Contains(values, "/usr/bin/sleep")

test/e2e/learning_mode_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,39 +60,39 @@ func getLearningModeTest() types.Feature {
6060
"DaemonSet": {
6161
ParseFunc: func() k8s.Object {
6262
var daemonset appsv1.DaemonSet
63-
err := decoder.DecodeFile(testdata, "ubuntu-daemonset.yaml", &daemonset)
63+
err := decoder.DecodeFile(testdata, "opensuse-daemonset.yaml", &daemonset)
6464
require.NoError(t, err)
6565
return &daemonset
6666
},
6767
},
6868
"Deployment": {
6969
ParseFunc: func() k8s.Object {
7070
var deployment appsv1.Deployment
71-
err := decoder.DecodeFile(testdata, "ubuntu-deployment.yaml", &deployment)
71+
err := decoder.DecodeFile(testdata, "opensuse-deployment.yaml", &deployment)
7272
require.NoError(t, err)
7373
return &deployment
7474
},
7575
},
7676
"StatefulSet": {
7777
ParseFunc: func() k8s.Object {
7878
var statefulset appsv1.StatefulSet
79-
err := decoder.DecodeFile(testdata, "ubuntu-statefulset.yaml", &statefulset)
79+
err := decoder.DecodeFile(testdata, "opensuse-statefulset.yaml", &statefulset)
8080
require.NoError(t, err)
8181
return &statefulset
8282
},
8383
},
8484
"Job": {
8585
ParseFunc: func() k8s.Object {
8686
var job batchv1.Job
87-
err := decoder.DecodeFile(testdata, "ubuntu-job.yaml", &job)
87+
err := decoder.DecodeFile(testdata, "opensuse-job.yaml", &job)
8888
require.NoError(t, err)
8989
return &job
9090
},
9191
},
9292
"CronJob": {
9393
ParseFunc: func() k8s.Object {
9494
var cronjob batchv1.CronJob
95-
err := decoder.DecodeFile(testdata, "ubuntu-cronjob.yaml", &cronjob)
95+
err := decoder.DecodeFile(testdata, "opensuse-cronjob.yaml", &cronjob)
9696
require.NoError(t, err)
9797
return &cronjob
9898
},
@@ -134,12 +134,12 @@ func getLearningModeTest() types.Feature {
134134

135135
t.Log("proposal: ", proposal)
136136

137-
rules, ok := proposal.Spec.RulesByContainer["ubuntu"]
137+
rules, ok := proposal.Spec.RulesByContainer["opensuse"]
138138
if !ok {
139139
return false
140140
}
141141

142-
return verifyUbuntuLearnedProcesses(rules.Executables.Allowed)
142+
return verifyOpensuseLearnedProcesses(rules.Executables.Allowed)
143143
}),
144144
wait.WithTimeout(defaultOperationTimeout),
145145
)
@@ -185,12 +185,12 @@ func getNoLearningModeTest() types.Feature {
185185
return context.WithValue(ctx, key("namespace"), disabledNS)
186186
}).
187187
Assess("required resources become available", IfRequiredResourcesAreCreated).
188-
Assess("install ubuntu deployment in disabled namespace", func(ctx context.Context, t *testing.T, _ *envconf.Config) context.Context {
189-
createAndWaitUbuntuDeployment(ctx, t)
188+
Assess("install opensuse deployment in disabled namespace", func(ctx context.Context, t *testing.T, _ *envconf.Config) context.Context {
189+
createAndWaitOpensuseDeployment(ctx, t)
190190
return ctx
191191
}).
192-
Assess("no proposal for ubuntu deployment", func(ctx context.Context, t *testing.T, _ *envconf.Config) context.Context {
193-
proposalName, err := proposalutils.GetWorkloadPolicyProposalName("Deployment", ubuntuDeploymentName)
192+
Assess("no proposal for opensuse deployment", func(ctx context.Context, t *testing.T, _ *envconf.Config) context.Context {
193+
proposalName, err := proposalutils.GetWorkloadPolicyProposalName("Deployment", opensuseDeploymentName)
194194
require.NoError(t, err)
195195

196196
proposal := v1alpha1.WorkloadPolicyProposal{
@@ -222,7 +222,7 @@ func getNoLearningModeTest() types.Feature {
222222
return ctx
223223
}).
224224
Teardown(func(ctx context.Context, t *testing.T, _ *envconf.Config) context.Context {
225-
deleteUbuntuDeployment(ctx, t)
225+
deleteOpensuseDeployment(ctx, t)
226226
return ctx
227227
}).Feature()
228228
}

0 commit comments

Comments
 (0)