Skip to content

Commit 112ba08

Browse files
committed
integration: add pod tests
* Added Create and Delete integration tests for the pod resource. * Added an ExecCommand test too for the pod resource. Since we do not have any unit tests for this function (and rh-ecosystem-edge#602 to add them is a draft), it will be good to have some assurance it is working. The latter point is also motivated by a desire to use a FallbackExecutor to enable the websocket executor for Kubernetes 1.30+ (OpenShift 4.17+). This will be a future PR, however.
1 parent b656239 commit 112ba08

1 file changed

Lines changed: 142 additions & 0 deletions

File tree

integration/pod_test.go

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
//go:build integration
2+
// +build integration
3+
4+
package integration
5+
6+
import (
7+
"fmt"
8+
"testing"
9+
10+
"github.com/openshift-kni/eco-goinfra/pkg/clients"
11+
"github.com/openshift-kni/eco-goinfra/pkg/namespace"
12+
"github.com/openshift-kni/eco-goinfra/pkg/pod"
13+
"github.com/stretchr/testify/assert"
14+
)
15+
16+
func TestPodCreate(t *testing.T) {
17+
t.Parallel()
18+
client := clients.New("")
19+
assert.NotNil(t, client)
20+
21+
var (
22+
testNamespace = CreateRandomNamespace()
23+
podName = "create-test"
24+
)
25+
26+
// Create a namespace in the cluster using the namespaces package
27+
namespaceBuilder, err := namespace.NewBuilder(client, testNamespace).Create()
28+
assert.Nil(t, err)
29+
30+
// Defer the deletion of the namespace
31+
defer func() {
32+
// Delete the namespace
33+
err := namespaceBuilder.Delete()
34+
assert.Nil(t, err)
35+
}()
36+
37+
testContainerBuilder := pod.NewContainerBuilder("test", containerImage, []string{"sleep", "3600"})
38+
containerDefinition, err := testContainerBuilder.GetContainerCfg()
39+
assert.Nil(t, err)
40+
41+
podBuilder := pod.NewBuilder(client, podName, testNamespace, containerImage)
42+
podBuilder = podBuilder.RedefineDefaultContainer(*containerDefinition)
43+
44+
// Create a pod in the namespace
45+
_, err = podBuilder.CreateAndWaitUntilRunning(timeoutDuration)
46+
assert.Nil(t, err)
47+
48+
// Check if the pod was created
49+
podBuilder, err = pod.Pull(client, podName, testNamespace)
50+
assert.Nil(t, err)
51+
assert.NotNil(t, podBuilder.Object)
52+
}
53+
54+
func TestPodDelete(t *testing.T) {
55+
t.Parallel()
56+
client := clients.New("")
57+
assert.NotNil(t, client)
58+
59+
var (
60+
testNamespace = CreateRandomNamespace()
61+
podName = "delete-test"
62+
)
63+
64+
// Create a namespace in the cluster using the namespaces package
65+
namespaceBuilder, err := namespace.NewBuilder(client, testNamespace).Create()
66+
assert.Nil(t, err)
67+
68+
// Defer the deletion of the namespace
69+
defer func() {
70+
// Delete the namespace
71+
err := namespaceBuilder.Delete()
72+
assert.Nil(t, err)
73+
}()
74+
75+
testContainerBuilder := pod.NewContainerBuilder("test", containerImage, []string{"sleep", "3600"})
76+
containerDefinition, err := testContainerBuilder.GetContainerCfg()
77+
assert.Nil(t, err)
78+
79+
podBuilder := pod.NewBuilder(client, podName, testNamespace, containerImage)
80+
podBuilder = podBuilder.RedefineDefaultContainer(*containerDefinition)
81+
82+
// Create a pod in the namespace
83+
_, err = podBuilder.CreateAndWaitUntilRunning(timeoutDuration)
84+
assert.Nil(t, err)
85+
86+
defer func() {
87+
_, err = podBuilder.DeleteAndWait(timeoutDuration)
88+
assert.Nil(t, err)
89+
90+
// Check if the pod was deleted
91+
podBuilder, err = pod.Pull(client, podName, testNamespace)
92+
assert.EqualError(t, err, fmt.Sprintf("pod object %s does not exist in namespace %s", podName, testNamespace))
93+
}()
94+
95+
// Check if the pod was created
96+
podBuilder, err = pod.Pull(client, podName, testNamespace)
97+
assert.Nil(t, err)
98+
assert.NotNil(t, podBuilder.Object)
99+
}
100+
101+
func TestPodExecCommand(t *testing.T) {
102+
t.Parallel()
103+
client := clients.New("")
104+
assert.NotNil(t, client)
105+
106+
var (
107+
testNamespace = CreateRandomNamespace()
108+
podName = "exec-test"
109+
)
110+
111+
// Create a namespace in the cluster using the namespaces package
112+
namespaceBuilder, err := namespace.NewBuilder(client, testNamespace).Create()
113+
assert.Nil(t, err)
114+
115+
// Defer the deletion of the namespace
116+
defer func() {
117+
// Delete the namespace
118+
err := namespaceBuilder.Delete()
119+
assert.Nil(t, err)
120+
}()
121+
122+
testContainerBuilder := pod.NewContainerBuilder("test", containerImage, []string{"sleep", "3600"})
123+
containerDefinition, err := testContainerBuilder.GetContainerCfg()
124+
assert.Nil(t, err)
125+
126+
podBuilder := pod.NewBuilder(client, podName, testNamespace, containerImage)
127+
podBuilder = podBuilder.RedefineDefaultContainer(*containerDefinition)
128+
129+
// Create a pod in the namespace
130+
podBuilder, err = podBuilder.CreateAndWaitUntilRunning(timeoutDuration)
131+
assert.Nil(t, err)
132+
133+
// Check if the pod was created
134+
podBuilder, err = pod.Pull(client, podName, testNamespace)
135+
assert.Nil(t, err)
136+
assert.NotNil(t, podBuilder.Object)
137+
138+
// Execute a command in the pod
139+
buffer, err := podBuilder.ExecCommand([]string{"sh", "-c", "echo test | sha256sum"})
140+
assert.Nil(t, err)
141+
assert.Equal(t, "f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2 -\r\n", buffer.String())
142+
}

0 commit comments

Comments
 (0)