Skip to content

Commit 0384b09

Browse files
author
Vaughn Dice
authored
Merge pull request #335 from zinuzoid/limitsset-support-new-format
feat(limits-cmd): accept new limits:set value type
2 parents ba0d452 + 70797cb commit 0384b09

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

tests/limits_test.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
. "github.com/onsi/gomega"
1515
. "github.com/onsi/gomega/gbytes"
1616
. "github.com/onsi/gomega/gexec"
17+
18+
"strings"
1719
)
1820

1921
// TODO (bacongobbler): inspect kubectl for limits being applied to manifest
@@ -60,17 +62,83 @@ var _ = Describe("deis limits", func() {
6062
Eventually(sess).Should(Exit(0))
6163

6264
// Check that --memory also works
65+
// 128M
6366
sess, err = cmd.Start("deis limits:set --memory cmd=128M -a %s", &user, app.Name)
6467
Eventually(sess, settings.MaxEventuallyTimeout).Should(Say("--- Memory\ncmd 128M"))
6568
Expect(err).NotTo(HaveOccurred())
6669
Eventually(sess).Should(Exit(0))
70+
71+
// Check Kubernetes pods manifest
72+
sess, err = cmd.Start("HOME=%s kubectl get --all-namespaces pods -l app=%s --sort-by='.status.startTime' -o jsonpath={.items[*].spec.containers[0].resources}", nil, settings.ActualHome, app.Name)
73+
Eventually(sess).Should(Exit(0))
74+
Expect(err).NotTo(HaveOccurred())
75+
resource := string(sess.Out.Contents())
76+
// try to get test latest pod, in case cmd still see terminated pod.
77+
// Also as per bug in https://github.com/kubernetes/kubernetes/issues/16707
78+
if strings.Contains(resource, "] map[") {
79+
resource = resource[strings.Index(resource, "] map[")+len("] "):]
80+
}
81+
Expect(resource).Should(SatisfyAny(
82+
Equal("map[requests:map[memory:128Mi] limits:map[memory:128Mi]]"),
83+
Equal("map[limits:map[memory:128Mi] requests:map[memory:128Mi]]")))
84+
85+
// 0/100M
86+
sess, err = cmd.Start("deis limits:set cmd=0/100M -a %s", &user, app.Name)
87+
Eventually(sess, settings.MaxEventuallyTimeout).Should(Say("--- Memory\ncmd 0/100M"))
88+
Expect(err).NotTo(HaveOccurred())
89+
Eventually(sess).Should(Exit(0))
90+
91+
// Check Kubernetes pods manifest
92+
sess, err = cmd.Start("HOME=%s kubectl get --all-namespaces pods -l app=%s --sort-by='.status.startTime' -o jsonpath={.items[*].spec.containers[0].resources}", nil, settings.ActualHome, app.Name)
93+
Eventually(sess).Should(Exit(0))
94+
Expect(err).NotTo(HaveOccurred())
95+
resource = string(sess.Out.Contents())
96+
// try to get test latest pod, in case cmd still see terminated pod.
97+
if strings.Contains(resource, "] map[") {
98+
resource = resource[strings.Index(resource, "] map[")+len("] "):]
99+
}
100+
Expect(resource).Should(SatisfyAny(
101+
Equal("map[requests:map[memory:0] limits:map[memory:100Mi]]"),
102+
Equal("map[limits:map[memory:100Mi] requests:map[memory:0]]")))
103+
104+
// 50/100MB
105+
sess, err = cmd.Start("deis limits:set cmd=50M/100MB -a %s", &user, app.Name)
106+
Eventually(sess, settings.MaxEventuallyTimeout).Should(Say("--- Memory\ncmd 50M/100M"))
107+
Expect(err).NotTo(HaveOccurred())
108+
Eventually(sess).Should(Exit(0))
109+
110+
// Check Kubernetes pods manifest
111+
sess, err = cmd.Start("HOME=%s kubectl get --all-namespaces pods -l app=%s --sort-by='.status.startTime' -o jsonpath={.items[*].spec.containers[0].resources}", nil, settings.ActualHome, app.Name)
112+
Eventually(sess).Should(Exit(0))
113+
Expect(err).NotTo(HaveOccurred())
114+
resource = string(sess.Out.Contents())
115+
// try to get test latest pod, in case cmd still see terminated pod.
116+
if strings.Contains(resource, "] map[") {
117+
resource = resource[strings.Index(resource, "] map[")+len("] "):]
118+
}
119+
Expect(resource).Should(SatisfyAny(
120+
Equal("map[requests:map[memory:50Mi] limits:map[memory:100Mi]]"),
121+
Equal("map[limits:map[memory:100Mi] requests:map[memory:50Mi]]")))
67122
})
68123

69124
Specify("that user can set a CPU limit on that application", func() {
70125
sess, err := cmd.Start("deis limits:set --cpu cmd=500m -a %s", &user, app.Name)
71126
Eventually(sess, settings.MaxEventuallyTimeout).Should(Say("--- CPU\ncmd 500m"))
72127
Expect(err).NotTo(HaveOccurred())
73128
Eventually(sess).Should(Exit(0))
129+
130+
// Check Kubernetes pods manifest
131+
sess, err = cmd.Start("HOME=%s kubectl get --all-namespaces pods -l app=%s --sort-by='.status.startTime' -o jsonpath={.items[*].spec.containers[0].resources}", nil, settings.ActualHome, app.Name)
132+
Eventually(sess).Should(Exit(0))
133+
Expect(err).NotTo(HaveOccurred())
134+
resource := string(sess.Out.Contents())
135+
// try to get test latest pod, in case cmd still see terminated pod.
136+
if strings.Contains(resource, "] map[") {
137+
resource = resource[strings.Index(resource, "] map[")+len("] "):]
138+
}
139+
Expect(resource).Should(SatisfyAny(
140+
Equal("map[requests:map[cpu:500m] limits:map[cpu:500m]]"),
141+
Equal("map[limits:map[cpu:500m] requests:map[cpu:500m]]")))
74142
})
75143

76144
Specify("that user can unset a memory limit on that application", func() {
@@ -88,6 +156,13 @@ var _ = Describe("deis limits", func() {
88156
Eventually(sess, settings.MaxEventuallyTimeout).Should(Say("--- Memory\nUnlimited"))
89157
Expect(err).NotTo(HaveOccurred())
90158
Eventually(sess).Should(Exit(0))
159+
160+
// Check Kubernetes pods manifest
161+
sess, err = cmd.Start("HOME=%s kubectl get --all-namespaces pods -l app=%s -o jsonpath={.items[*].spec.containers[0].resources}", nil, settings.ActualHome, app.Name)
162+
Eventually(sess).Should(Exit(0))
163+
Expect(err).NotTo(HaveOccurred())
164+
// At least 1 pod have empty resources
165+
Expect(string(sess.Out.Contents())).Should(ContainSubstring("map[]"))
91166
})
92167

93168
Specify("that user can unset a CPU limit on that application", func() {

0 commit comments

Comments
 (0)