mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-06 10:43:56 +00:00
E2E tests for kubectl run command
This commit is contained in:
parent
de6d870569
commit
565a13e8db
@ -482,6 +482,49 @@ var _ = Describe("Kubectl client", func() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Describe("Kubectl run", func() {
|
||||||
|
var nsFlag string
|
||||||
|
var rcName string
|
||||||
|
|
||||||
|
BeforeEach(func() {
|
||||||
|
nsFlag = fmt.Sprintf("--namespace=%v", ns)
|
||||||
|
rcName = "e2e-test-nginx-rc"
|
||||||
|
})
|
||||||
|
|
||||||
|
AfterEach(func() {
|
||||||
|
runKubectl("stop", "rc", rcName, nsFlag)
|
||||||
|
})
|
||||||
|
|
||||||
|
It("should create an rc from an image", func() {
|
||||||
|
image := "nginx"
|
||||||
|
|
||||||
|
By("running the image " + image)
|
||||||
|
runKubectl("run", rcName, "--image="+image, nsFlag)
|
||||||
|
By("verifying the rc " + rcName + " was created")
|
||||||
|
rc, err := c.ReplicationControllers(ns).Get(rcName)
|
||||||
|
if err != nil {
|
||||||
|
Failf("Failed getting rc %s: %v", rcName, err)
|
||||||
|
}
|
||||||
|
containers := rc.Spec.Template.Spec.Containers
|
||||||
|
if containers == nil || len(containers) != 1 || containers[0].Image != image {
|
||||||
|
Failf("Failed creating rc %s for 1 pod with expected image %s", rcName, image)
|
||||||
|
}
|
||||||
|
|
||||||
|
By("verifying the pod controlled by rc " + rcName + " was created")
|
||||||
|
label := labels.SelectorFromSet(labels.Set(map[string]string{"run": rcName}))
|
||||||
|
podlist, err := waitForPodsWithLabel(c, ns, label)
|
||||||
|
if err != nil {
|
||||||
|
Failf("Failed getting pod controlled by rc %s: %v", rcName, err)
|
||||||
|
}
|
||||||
|
pods := podlist.Items
|
||||||
|
if pods == nil || len(pods) != 1 || len(pods[0].Spec.Containers) != 1 || pods[0].Spec.Containers[0].Image != image {
|
||||||
|
runKubectl("get", "pods", "-L", "run", nsFlag)
|
||||||
|
Failf("Failed creating 1 pod with expected image %s. Number of pods = %v", image, len(pods))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// Checks whether the output split by line contains the required elements.
|
// Checks whether the output split by line contains the required elements.
|
||||||
|
@ -1274,6 +1274,21 @@ waitLoop:
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wait up to 10 minutes for getting pods with certain label
|
||||||
|
func waitForPodsWithLabel(c *client.Client, ns string, label labels.Selector) (pods *api.PodList, err error) {
|
||||||
|
for t := time.Now(); time.Since(t) < podListTimeout; time.Sleep(poll) {
|
||||||
|
pods, err = c.Pods(ns).List(label, fields.Everything())
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
if len(pods.Items) > 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if pods == nil || len(pods.Items) == 0 {
|
||||||
|
err = fmt.Errorf("Timeout while waiting for pods with label %v", label)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Delete a Replication Controller and all pods it spawned
|
// Delete a Replication Controller and all pods it spawned
|
||||||
func DeleteRC(c *client.Client, ns, name string) error {
|
func DeleteRC(c *client.Client, ns, name string) error {
|
||||||
By(fmt.Sprintf("%v Deleting replication controller %s in namespace %s", time.Now(), name, ns))
|
By(fmt.Sprintf("%v Deleting replication controller %s in namespace %s", time.Now(), name, ns))
|
||||||
|
Loading…
Reference in New Issue
Block a user