Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
Signed-off-by: David Kwon <[email protected]>
  • Loading branch information
dkwon17 committed Jun 14, 2024
1 parent 583a59b commit e4ceb05
Show file tree
Hide file tree
Showing 5 changed files with 209 additions and 0 deletions.
3 changes: 3 additions & 0 deletions pkg/library/lifecycle/prestart_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ func TestGetInitContainers(t *testing.T) {
loadPreStartTestCaseOrPanic(t, "prestart_exec_command.yaml"),
loadPreStartTestCaseOrPanic(t, "prestart_apply_command.yaml"),
loadPreStartTestCaseOrPanic(t, "init_and_main_container.yaml"),
loadPreStartTestCaseOrPanic(t, "persistent_home_initcontainer_first_initcontainer.yaml"),
loadPreStartTestCaseOrPanic(t, "persistent_home_initcontainer_second_initcontainer.yaml"),
loadPreStartTestCaseOrPanic(t, "persistent_home_initcontainer_first_initcontainer.yaml"),
}

for _, tt := range tests {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: "Should set the init-persistent-home init container when init-persistent-home is the first preStart event"

input:
components:
- name: test-container1
container:
image: my-image
- name: test-container2
container:
image: my-image
- name: init-persistent-home
container:
image: my-image
commands:
- id: test_preStart_command
apply:
component: test-container1
- id: test_regular_command
exec:
component: test-container1
command: "test_command"
- id: init-persistent-home
apply:
component: init-persistent-home
events:
preStart:
- "init-persistent-home"
- "test_preStart_command"

output:
initContainers:
- name: init-persistent-home
container:
image: my-image
- name: test-container1
container:
image: my-image
mainContainers:
- name: test-container1
container:
image: my-image
- name: test-container2
container:
image: my-image
errRegexp:
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: "Should set the init-persistent-home init container when it is the only init container"

input:
components:
- name: test-container1
container:
image: my-image
- name: test-container2
container:
image: my-image
- name: init-persistent-home
container:
image: my-image
commands:
- id: test_regular_command
exec:
component: test-container1
command: "test_command"
- id: init-persistent-home
apply:
component: init-persistent-home
events:
preStart:
- "init-persistent-home"

output:
initContainers:
- name: init-persistent-home
container:
image: my-image
mainContainers:
- name: test-container1
container:
image: my-image
- name: test-container2
container:
image: my-image
errRegexp:
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: "Should set the init-persistent-home init container when init-persistent-home is the second preStart event"

input:
components:
- name: test-container1
container:
image: my-image
- name: test-container2
container:
image: my-image
- name: init-persistent-home
container:
image: my-image
commands:
- id: test_preStart_command
apply:
component: test-container1
- id: test_regular_command
exec:
component: test-container1
command: "test_command"
- id: init-persistent-home
apply:
component: init-persistent-home
events:
preStart:
- "test_preStart_command"
- "init-persistent-home"

output:
initContainers:
- name: init-persistent-home
container:
image: my-image
- name: test-container1
container:
image: my-image
mainContainers:
- name: test-container1
container:
image: my-image
- name: test-container2
container:
image: my-image
errRegexp:
78 changes: 78 additions & 0 deletions pkg/provision/automount/common_persistenthome_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package automount

import (
"fmt"
"testing"

"github.com/google/go-cmp/cmp"
"github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
"sigs.k8s.io/controller-runtime/pkg/client/fake"

"github.com/devfile/devworkspace-operator/apis/controller/v1alpha1"
"github.com/devfile/devworkspace-operator/pkg/provision/sync"
)

func TestProvisionAutomountResourcesIntoPersistentHomeEnabled(t *testing.T) {
tests := []testCase{
loadTestCaseOrPanic(t, "testdata/testProvisionsConfigmaps.yaml"),
loadTestCaseOrPanic(t, "testdata/testProvisionsProjectedVolumes.yaml"),
loadTestCaseOrPanic(t, "testdata/testProvisionsSecrets.yaml"),
}

testPodAdditions := &v1alpha1.PodAdditions{
Containers: []corev1.Container{{
Name: "test-container",
Image: "test-image",
}},
InitContainers: []corev1.Container{{
Name: "init-persistent-home",
Image: "test-image",
}, {
Name: "test-container",
Image: "test-image",
}},
}

for _, tt := range tests {
t.Run(fmt.Sprintf("%s (%s)", tt.Name, tt.TestPath), func(t *testing.T) {
podAdditions := testPodAdditions.DeepCopy()
testAPI := sync.ClusterAPI{
Client: fake.NewClientBuilder().WithObjects(tt.Input.allObjects...).Build(),
}

err := ProvisionAutoMountResourcesInto(podAdditions, testAPI, testNamespace, true)

if !assert.NoError(t, err, "Unexpected error") {
return
}
assert.Truef(t, cmp.Equal(tt.Output.Volumes, podAdditions.Volumes, testDiffOpts),
"Volumes should match expected output:\n%s",
cmp.Diff(tt.Output.Volumes, podAdditions.Volumes, testDiffOpts))

for _, container := range podAdditions.Containers {
assert.Truef(t, cmp.Equal(tt.Output.VolumeMounts, container.VolumeMounts, testDiffOpts),
"Container VolumeMounts should match expected output:\n%s",
cmp.Diff(tt.Output.VolumeMounts, container.VolumeMounts, testDiffOpts))
assert.Truef(t, cmp.Equal(tt.Output.EnvFrom, container.EnvFrom, testDiffOpts),
"Container EnvFrom should match expected output:\n%s",
cmp.Diff(tt.Output.EnvFrom, container.EnvFrom, testDiffOpts))
}

for _, container := range podAdditions.InitContainers {
if container.Name == "init-persistent-home" {
assert.Truef(t, container.VolumeMounts == nil || len(container.VolumeMounts) == 0,
"The init-persistent-home container should not have any volume mounts if persistent home is enabled")
} else {
assert.Truef(t, cmp.Equal(tt.Output.VolumeMounts, container.VolumeMounts, testDiffOpts),
"Container VolumeMounts should match expected output:\n%s",
cmp.Diff(tt.Output.VolumeMounts, container.VolumeMounts, testDiffOpts))
assert.Truef(t, cmp.Equal(tt.Output.EnvFrom, container.EnvFrom, testDiffOpts),
"Container EnvFrom should match expected output:\n%s",
cmp.Diff(tt.Output.EnvFrom, container.EnvFrom, testDiffOpts))
}
}

})
}
}

0 comments on commit e4ceb05

Please sign in to comment.