Skip to content

Commit a478e09

Browse files
committed
[sig-cli] oc ...
1 parent e5d212a commit a478e09

File tree

10 files changed

+311
-202
lines changed

10 files changed

+311
-202
lines changed

test/extended/cli/idle.go

+129
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1313
"k8s.io/apimachinery/pkg/util/wait"
1414
admissionapi "k8s.io/pod-security-admission/api"
15+
"k8s.io/klog/v2"
1516

1617
exutil "github.com/openshift/origin/test/extended/util"
1718
)
@@ -155,3 +156,131 @@ var _ = g.Describe("[sig-cli] oc idle [apigroup:apps.openshift.io][apigroup:rout
155156
o.Expect(out).To(o.Equal(scaledReplicaCount))
156157
})
157158
})
159+
160+
var _ = g.Describe("[sig-cli] oc idle Deployments [apigroup:route.openshift.io][apigroup:project.openshift.io][apigroup:image.openshift.io]", func() {
161+
defer g.GinkgoRecover()
162+
163+
var (
164+
oc = exutil.NewCLIWithPodSecurityLevel("oc-idle", admissionapi.LevelBaseline)
165+
cmdTestData = exutil.FixturePath("testdata", "cmd", "test", "cmd", "testdata")
166+
idleSVCRoute = filepath.Join(cmdTestData, "idling-svc-route.yaml")
167+
idleDeployment = filepath.Join(cmdTestData, "idling-deployment.yaml")
168+
idledTemplate = fmt.Sprintf("--template={{index .metadata.annotations \"%s\"}}", idledAnnotation)
169+
)
170+
171+
var deploymentName, expectedOutput string
172+
g.JustBeforeEach(func() {
173+
projectName, err := oc.Run("project").Args("-q").Output()
174+
o.Expect(err).NotTo(o.HaveOccurred())
175+
176+
g.By("create required service and routers")
177+
err = oc.Run("create").Args("-f", idleSVCRoute).Execute()
178+
o.Expect(err).NotTo(o.HaveOccurred())
179+
180+
g.By("create deployment and get deployment name")
181+
_, err = oc.Run("create").Args("-f", idleDeployment).Output()
182+
o.Expect(err).NotTo(o.HaveOccurred())
183+
184+
dcList, err := oc.AdminKubeClient().AppsV1().Deployments(projectName).List(context.TODO(), metav1.ListOptions{LabelSelector: "app=idling-echo,deployment=idling-echo"})
185+
o.Expect(dcList.Items).Should(o.HaveLen(1))
186+
deploymentName = dcList.Items[0].Name
187+
188+
expectedOutput = fmt.Sprintf("The service will unidle Deployment \"%s/%s\" to %s replicas once it receives traffic", projectName, deploymentName, scaledReplicaCount)
189+
190+
err = oc.Run("describe").Args("deployments", deploymentName).Execute()
191+
o.Expect(err).NotTo(o.HaveOccurred())
192+
193+
g.By("wait until idling-echo endpoint is ready")
194+
err = wait.PollImmediate(time.Second, 60*time.Second, func() (done bool, err error) {
195+
err = oc.Run("describe").Args("endpoints", "idling-echo").Execute()
196+
if err != nil {
197+
return false, nil
198+
}
199+
200+
return true, nil
201+
})
202+
o.Expect(err).NotTo(o.HaveOccurred())
203+
204+
g.By("wait until replicaset is ready")
205+
var rsName string
206+
err = wait.PollImmediate(time.Second, 60*time.Second, func() (done bool, err error) {
207+
rsList, err := oc.AdminKubeClient().AppsV1().ReplicaSets(projectName).List(context.TODO(), metav1.ListOptions{LabelSelector: "app=idling-echo,deployment=idling-echo"})
208+
o.Expect(err).NotTo(o.HaveOccurred())
209+
if len(rsList.Items) != 1 {
210+
klog.Infof("Expected only a single replicaset, got %d instead", len(rsList.Items))
211+
return false, nil
212+
}
213+
rsName = rsList.Items[0].Name
214+
err = oc.Run("get").Args("replicaset", rsName).Execute()
215+
if err != nil {
216+
return false, nil
217+
}
218+
219+
return true, nil
220+
})
221+
o.Expect(err).NotTo(o.HaveOccurred())
222+
223+
g.By(fmt.Sprintf("scale deployment to %s replicas", scaledReplicaCount))
224+
err = oc.Run("scale").Args("replicaset", rsName, fmt.Sprintf("--replicas=%s", scaledReplicaCount)).Execute()
225+
o.Expect(err).NotTo(o.HaveOccurred())
226+
227+
g.By(fmt.Sprintf("wait until pod is scaled to %s", scaledReplicaCount))
228+
err = wait.PollImmediate(time.Second, 60*time.Second, func() (done bool, err error) {
229+
out, err := oc.Run("get").Args("pods", "-l", "app=idling-echo", "--template={{ len .items }}", "--output=go-template").Output()
230+
if err != nil {
231+
return false, err
232+
}
233+
234+
if out != scaledReplicaCount {
235+
return false, nil
236+
}
237+
238+
return true, nil
239+
})
240+
o.Expect(err).NotTo(o.HaveOccurred())
241+
242+
g.By(fmt.Sprintf("wait until endpoint addresses are scaled to %s", scaledReplicaCount))
243+
err = wait.PollImmediate(time.Second, 60*time.Second, func() (done bool, err error) {
244+
out, err := oc.Run("get").Args("endpoints", "idling-echo", "--template={{ len (index .subsets 0).addresses }}", "--output=go-template").Output()
245+
if err != nil || out != scaledReplicaCount {
246+
return false, nil
247+
}
248+
249+
return true, nil
250+
})
251+
o.Expect(err).NotTo(o.HaveOccurred())
252+
})
253+
254+
g.It("by name", func() {
255+
err := oc.Run("idle").Args(fmt.Sprintf("deployment/%s", deploymentName)).Execute()
256+
o.Expect(err).To(o.HaveOccurred())
257+
258+
out, err := oc.Run("idle").Args("idling-echo").Output()
259+
o.Expect(err).NotTo(o.HaveOccurred())
260+
o.Expect(out).To(o.ContainSubstring(expectedOutput))
261+
262+
out, err = oc.Run("get").Args("service", "idling-echo", idledTemplate, "--output=go-template").Output()
263+
o.Expect(err).NotTo(o.HaveOccurred())
264+
o.Expect(out).NotTo(o.BeEmpty())
265+
})
266+
267+
g.It("by label", func() {
268+
out, err := oc.Run("idle").Args("-l", "app=idling-echo").Output()
269+
o.Expect(err).NotTo(o.HaveOccurred())
270+
o.Expect(out).To(o.ContainSubstring(expectedOutput))
271+
272+
out, err = oc.Run("get").Args("service", "idling-echo", idledTemplate, "--output=go-template").Output()
273+
o.Expect(err).NotTo(o.HaveOccurred())
274+
o.Expect(out).NotTo(o.BeEmpty())
275+
})
276+
277+
g.It("by all", func() {
278+
out, err := oc.Run("idle").Args("--all").Output()
279+
o.Expect(err).NotTo(o.HaveOccurred())
280+
o.Expect(out).To(o.ContainSubstring(expectedOutput))
281+
282+
out, err = oc.Run("get").Args("service", "idling-echo", idledTemplate, "--output=go-template").Output()
283+
o.Expect(err).NotTo(o.HaveOccurred())
284+
o.Expect(out).NotTo(o.BeEmpty())
285+
})
286+
})

test/extended/cli/run.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ var _ = g.Describe("[sig-cli] oc run", func() {
1414

1515
var oc = exutil.NewCLIWithPodSecurityLevel("oc-run", admissionapi.LevelBaseline)
1616

17-
g.It("can use --image flag correctly [apigroup:apps.openshift.io]", func() {
18-
_, err := oc.Run("create").Args("deploymentconfig", "newdcforimage", "--image=validimagevalue").Output()
17+
g.It("can use --image flag correctly", func() {
18+
_, err := oc.Run("create").Args("deployment", "newdcforimage", "--image=validimagevalue").Output()
1919
o.Expect(err).NotTo(o.HaveOccurred())
2020

2121
_, err = oc.Run("run").Args("newdcforimage2", "--image=\"InvalidImageValue0192\"").Output()

test/extended/cli/setimage.go

+21-21
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ var _ = g.Describe("[sig-cli] oc set image", func() {
1818
defer g.GinkgoRecover()
1919

2020
var (
21-
deploymentConfig = exutil.FixturePath("testdata", "cmd", "test", "cmd", "testdata", "test-deployment-config.yaml")
22-
imageStream = exutil.FixturePath("testdata", "cmd", "test", "cmd", "testdata", "image-streams", "image-streams-centos7.json")
23-
oc = exutil.NewCLIWithPodSecurityLevel("oc-set-image", admissionapi.LevelBaseline)
21+
deployment = exutil.FixturePath("testdata", "cmd", "test", "cmd", "testdata", "test-deployment.yaml")
22+
imageStream = exutil.FixturePath("testdata", "cmd", "test", "cmd", "testdata", "image-streams", "image-streams-centos7.json")
23+
oc = exutil.NewCLIWithPodSecurityLevel("oc-set-image", admissionapi.LevelBaseline)
2424
)
2525

26-
g.It("can set images for pods and deployments [apigroup:image.openshift.io][apigroup:apps.openshift.io][Skipped:Disconnected]", func() {
26+
g.It("can set images for pods and deployments [apigroup:image.openshift.io][Skipped:Disconnected]", func() {
2727
g.By("creating test deployment, pod, and image stream")
28-
err := oc.Run("create").Args("-f", deploymentConfig).Execute()
28+
err := oc.Run("create").Args("-f", deployment).Execute()
2929
o.Expect(err).NotTo(o.HaveOccurred())
3030

3131
file, err := writeObjectToFile(newHelloPod())
@@ -45,49 +45,49 @@ var _ = g.Describe("[sig-cli] oc set image", func() {
4545
o.Expect(err).NotTo(o.HaveOccurred())
4646

4747
g.By("testing --local flag validation")
48-
out, err := oc.Run("set").Args("image", "dc/test-deployment-config", "ruby-helloworld=ruby:3.0-ubi8", "--local").Output()
48+
out, err := oc.Run("set").Args("image", "deployment/test-deployment", "ruby-helloworld=ruby:3.0-ubi8", "--local").Output()
4949
o.Expect(err).To(o.HaveOccurred())
5050
o.Expect(out).To(o.ContainSubstring("you must specify resources by --filename when --local is set."))
5151

5252
g.By("testing --dry-run=client with -o flags")
53-
out, err = oc.Run("set").Args("image", "dc/test-deployment-config", "ruby-helloworld=ruby:3.0-ubi8", "--source=istag", "--dry-run=client").Output()
53+
out, err = oc.Run("set").Args("image", "deployment/test-deployment", "ruby-helloworld=ruby:3.0-ubi8", "--source=istag", "--dry-run=client").Output()
5454
o.Expect(err).NotTo(o.HaveOccurred())
55-
o.Expect(out).To(o.ContainSubstring("test-deployment-config"))
56-
o.Expect(out).To(o.ContainSubstring("deploymentconfig.apps.openshift.io/test-deployment-config image updated (dry run)"))
55+
o.Expect(out).To(o.ContainSubstring("test-deployment"))
56+
o.Expect(out).To(o.ContainSubstring("deployment.apps/test-deployment image updated (dry run)"))
5757

58-
out, err = oc.Run("set").Args("image", "dc/test-deployment-config", "ruby-helloworld=ruby:3.0-ubi8", "--source=istag", "--dry-run=client", "-o", "name").Output()
58+
out, err = oc.Run("set").Args("image", "deployment/test-deployment", "ruby-helloworld=ruby:3.0-ubi8", "--source=istag", "--dry-run=client", "-o", "name").Output()
5959
o.Expect(err).NotTo(o.HaveOccurred())
60-
o.Expect(out).To(o.ContainSubstring("deploymentconfig.apps.openshift.io/test-deployment-config"))
60+
o.Expect(out).To(o.ContainSubstring("deployment.apps/test-deployment"))
6161

6262
g.By("testing basic image updates")
63-
err = oc.Run("set").Args("image", "dc/test-deployment-config", "ruby-helloworld=ruby:3.0-ubi8", "--source=istag").Execute()
63+
err = oc.Run("set").Args("image", "deployment/test-deployment", "ruby-helloworld=ruby:3.0-ubi8", "--source=istag").Execute()
6464
o.Expect(err).NotTo(o.HaveOccurred())
6565

66-
out, err = oc.Run("get").Args("dc/test-deployment-config", "-o", "jsonpath='{.spec.template.spec.containers[0].image}'").Output()
66+
out, err = oc.Run("get").Args("deployment/test-deployment", "-o", "jsonpath='{.spec.template.spec.containers[0].image}'").Output()
6767
o.Expect(err).NotTo(o.HaveOccurred())
6868
o.Expect(out).To(o.ContainSubstring("image-registry.openshift-image-registry.svc:5000/e2e-test-oc-set-image-"))
6969
o.Expect(out).To(o.ContainSubstring("/ruby@sha256:"))
7070

7171
g.By("repeating basic image updates to ensure nothing changed")
72-
err = oc.Run("set").Args("image", "dc/test-deployment-config", "ruby-helloworld=ruby:3.0-ubi8", "--source=istag").Execute()
72+
err = oc.Run("set").Args("image", "deployment/test-deployment", "ruby-helloworld=ruby:3.0-ubi8", "--source=istag").Execute()
7373
o.Expect(err).NotTo(o.HaveOccurred())
7474

75-
out, err = oc.Run("get").Args("dc/test-deployment-config", "-o", "jsonpath='{.spec.template.spec.containers[0].image}'").Output()
75+
out, err = oc.Run("get").Args("deployment/test-deployment", "-o", "jsonpath='{.spec.template.spec.containers[0].image}'").Output()
7676
o.Expect(err).NotTo(o.HaveOccurred())
7777
o.Expect(out).To(o.ContainSubstring("image-registry.openshift-image-registry.svc:5000/e2e-test-oc-set-image-"))
7878
o.Expect(out).To(o.ContainSubstring("/ruby@sha256:"))
7979

8080
g.By("testing invalid image tags")
81-
err = oc.Run("set").Args("image", "dc/test-deployment-config", "ruby-helloworld=ruby:XYZ", "--source=istag").Execute()
81+
err = oc.Run("set").Args("image", "deployment/test-deployment", "ruby-helloworld=ruby:XYZ", "--source=istag").Execute()
8282
o.Expect(err).To(o.HaveOccurred())
8383

84-
err = oc.Run("set").Args("image", "dc/test-deployment-config", "ruby-helloworld=ruby:XYZ", "--source=isimage").Execute()
84+
err = oc.Run("set").Args("image", "deployment/test-deployment", "ruby-helloworld=ruby:XYZ", "--source=isimage").Execute()
8585
o.Expect(err).To(o.HaveOccurred())
8686

8787
g.By("setting a different, valid image on deployment config")
88-
err = oc.Run("set").Args("image", "dc/test-deployment-config", "ruby-helloworld=nginx").Execute()
88+
err = oc.Run("set").Args("image", "deployment/test-deployment", "ruby-helloworld=nginx").Execute()
8989
o.Expect(err).NotTo(o.HaveOccurred())
90-
out, err = oc.Run("get").Args("dc/test-deployment-config", "-o", "jsonpath='{.spec.template.spec.containers[0].image}'").Output()
90+
out, err = oc.Run("get").Args("deployment/test-deployment", "-o", "jsonpath='{.spec.template.spec.containers[0].image}'").Output()
9191
o.Expect(err).NotTo(o.HaveOccurred())
9292
o.Expect(out).To(o.ContainSubstring("nginx"))
9393

@@ -109,7 +109,7 @@ var _ = g.Describe("[sig-cli] oc set image", func() {
109109

110110
g.By("setting a different, valid image on multiple resources")
111111
err = wait.PollImmediate(time.Second, 2*time.Minute, func() (bool, error) {
112-
err := oc.Run("set").Args("image", "pods,dc", "*=ruby:3.0-ubi8", "--all", "--source=imagestreamtag").Execute()
112+
err := oc.Run("set").Args("image", "pods,deployments", "*=ruby:3.0-ubi8", "--all", "--source=imagestreamtag").Execute()
113113
if err != nil {
114114
klog.Warningf("one of pods failed when setting image %v", err)
115115
return false, nil
@@ -123,7 +123,7 @@ var _ = g.Describe("[sig-cli] oc set image", func() {
123123
o.Expect(out).To(o.ContainSubstring("image-registry.openshift-image-registry.svc:5000/e2e-test-oc-set-image-"))
124124
o.Expect(out).To(o.ContainSubstring("/ruby@sha256:"))
125125

126-
out, err = oc.Run("get").Args("dc/test-deployment-config", "-o", "jsonpath='{.spec.template.spec.containers[0].image}'").Output()
126+
out, err = oc.Run("get").Args("deployment/test-deployment", "-o", "jsonpath='{.spec.template.spec.containers[0].image}'").Output()
127127
o.Expect(err).NotTo(o.HaveOccurred())
128128
o.Expect(out).To(o.ContainSubstring("image-registry.openshift-image-registry.svc:5000/e2e-test-oc-set-image-"))
129129
o.Expect(out).To(o.ContainSubstring("/ruby@sha256:"))

test/extended/cli/status.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ var _ = g.Describe("[sig-cli] oc status", func() {
1919

2020
var oc = exutil.NewCLI("oc-status")
2121

22-
g.It("returns expected help messages [apigroup:project.openshift.io][apigroup:build.openshift.io][apigroup:image.openshift.io][apigroup:apps.openshift.io][apigroup:route.openshift.io]", func() {
22+
g.It("returns expected help messages [apigroup:project.openshift.io][apigroup:build.openshift.io][apigroup:image.openshift.io][apigroup:route.openshift.io]", func() {
2323
out, err := oc.Run("status").Args("-h").Output()
2424
o.Expect(err).NotTo(o.HaveOccurred())
2525
o.Expect(out).To(o.ContainSubstring("oc describe buildconfig"))
2626

27-
out, err = oc.Run("status").Output()
27+
out, err = oc.Run("status").Args("--suggest").Output()
2828
o.Expect(err).NotTo(o.HaveOccurred())
2929
o.Expect(out).To(o.ContainSubstring("oc new-app"))
3030
})

test/extended/cli/template.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ var _ = g.Describe("[sig-cli] templates", func() {
3333
multilinePath = filepath.Join(testDataPath, "templates", "multiline.txt")
3434
)
3535

36-
g.It("process [apigroup:apps.openshift.io][apigroup:template.openshift.io][Skipped:Disconnected]", func() {
36+
g.It("process [apigroup:template.openshift.io][Skipped:Disconnected]", func() {
3737
err := oc.Run("get").Args("templates").Execute()
3838
o.Expect(err).NotTo(o.HaveOccurred())
3939
err = oc.Run("create").Args("-f", appTemplatePath).Execute()

0 commit comments

Comments
 (0)