From e47b98db29899cb096406df4753af0ddfa0623c9 Mon Sep 17 00:00:00 2001 From: Robert Rati Date: Fri, 30 Jan 2015 15:59:13 -0500 Subject: [PATCH] Converted TestPodUpdate to native ginkgo syntax #3941 --- test/e2e/pods.go | 142 +++++++++++++++++++++++++---------------------- 1 file changed, 76 insertions(+), 66 deletions(-) diff --git a/test/e2e/pods.go b/test/e2e/pods.go index 4b5666d4dd7..c7d2b28937b 100644 --- a/test/e2e/pods.go +++ b/test/e2e/pods.go @@ -17,6 +17,7 @@ limitations under the License. package e2e import ( + "fmt" "strconv" "time" @@ -24,85 +25,94 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/client" "github.com/GoogleCloudPlatform/kubernetes/pkg/labels" "github.com/GoogleCloudPlatform/kubernetes/pkg/util" - "github.com/golang/glog" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) -func TestPodUpdate(c *client.Client) bool { - podClient := c.Pods(api.NamespaceDefault) +var _ = Describe("Pods", func() { + var ( + c *client.Client + ) - name := "pod-update-" + string(util.NewUUID()) - value := strconv.Itoa(time.Now().Nanosecond()) - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{ - Name: name, - Labels: map[string]string{ - "name": "foo", - "time": value, + BeforeEach(func() { + c = loadClientOrDie() + }) + + It("should be updated", func() { + podClient := c.Pods(api.NamespaceDefault) + + By("creating the pod") + name := "pod-update-" + string(util.NewUUID()) + value := strconv.Itoa(time.Now().Nanosecond()) + pod := &api.Pod{ + ObjectMeta: api.ObjectMeta{ + Name: name, + Labels: map[string]string{ + "name": "foo", + "time": value, + }, }, - }, - Spec: api.PodSpec{ - Containers: []api.Container{ - { - Name: "nginx", - Image: "dockerfile/nginx", - Ports: []api.Port{{ContainerPort: 80, HostPort: 8080}}, - LivenessProbe: &api.Probe{ - Handler: api.Handler{ - HTTPGet: &api.HTTPGetAction{ - Path: "/index.html", - Port: util.NewIntOrStringFromInt(8080), + Spec: api.PodSpec{ + Containers: []api.Container{ + { + Name: "nginx", + Image: "dockerfile/nginx", + Ports: []api.Port{{ContainerPort: 80, HostPort: 8080}}, + LivenessProbe: &api.Probe{ + Handler: api.Handler{ + HTTPGet: &api.HTTPGetAction{ + Path: "/index.html", + Port: util.NewIntOrStringFromInt(8080), + }, }, + InitialDelaySeconds: 30, }, - InitialDelaySeconds: 30, }, }, }, - }, - } - _, err := podClient.Create(pod) - if err != nil { - glog.Errorf("Failed to create pod: %v", err) - return false - } - defer podClient.Delete(pod.Name) - waitForPodRunning(c, pod.Name) - pods, err := podClient.List(labels.SelectorFromSet(labels.Set(map[string]string{"time": value}))) - if len(pods.Items) != 1 { - glog.Errorf("Failed to find the correct pod") - return false - } + } - podOut, err := podClient.Get(pod.Name) - if err != nil { - glog.Errorf("Failed to get pod: %v", err) - return false - } - value = "time" + value - pod.Labels["time"] = value - pod.ResourceVersion = podOut.ResourceVersion - pod.UID = podOut.UID - pod, err = podClient.Update(pod) - if err != nil { - glog.Errorf("Failed to update pod: %v", err) - return false - } - waitForPodRunning(c, pod.Name) - pods, err = podClient.List(labels.SelectorFromSet(labels.Set(map[string]string{"time": value}))) - if len(pods.Items) != 1 { - glog.Errorf("Failed to find the correct pod after update.") - return false - } - glog.Infof("pod update OK") - return true -} + By("submitting the pod to kubernetes") + _, err := podClient.Create(pod) + if err != nil { + Fail(fmt.Sprintf("Failed to create pod: %v", err)) + } + defer func() { + By("deleting the pod") + defer GinkgoRecover() + podClient.Delete(pod.Name) + }() -var _ = Describe("TestPodUpdate", func() { - It("should pass", func() { - // TODO: Instead of OrDie, client should Fail the test if there's a problem. - // In general tests should Fail() instead of glog.Fatalf(). - Expect(TestPodUpdate(loadClientOrDie())).To(BeTrue()) + By("waiting for the pod to start running") + waitForPodRunning(c, pod.Name) + + By("verifying the pod is in kubernetes") + pods, err := podClient.List(labels.SelectorFromSet(labels.Set(map[string]string{"time": value}))) + Expect(len(pods.Items)).To(Equal(1)) + + By("retrieving the pod") + podOut, err := podClient.Get(pod.Name) + if err != nil { + Fail(fmt.Sprintf("Failed to get pod: %v", err)) + } + + By("updating the pod") + value = "time" + value + pod.Labels["time"] = value + pod.ResourceVersion = podOut.ResourceVersion + pod.UID = podOut.UID + pod, err = podClient.Update(pod) + if err != nil { + Fail(fmt.Sprintf("Failed to update pod: %v", err)) + } + + By("waiting for the updated pod to start running") + waitForPodRunning(c, pod.Name) + + By("verifying the updated pod is in kubernetes") + pods, err = podClient.List(labels.SelectorFromSet(labels.Set(map[string]string{"time": value}))) + Expect(len(pods.Items)).To(Equal(1)) + fmt.Println("pod update OK") }) })