Commit 18c1dfd6 authored by Brendan Burns's avatar Brendan Burns

Merge pull request #4392 from zmerlynn/error_helper

Add expectNoError helper, minor cleanups
parents e300d6c9 61175929
...@@ -31,12 +31,11 @@ import ( ...@@ -31,12 +31,11 @@ import (
) )
func runLivenessTest(c *client.Client, podDescr *api.Pod) { func runLivenessTest(c *client.Client, podDescr *api.Pod) {
defer GinkgoRecover()
ns := "e2e-test-" + string(util.NewUUID()) ns := "e2e-test-" + string(util.NewUUID())
By(fmt.Sprintf("Creating pod %s in namespace %s", podDescr.Name, ns)) By(fmt.Sprintf("Creating pod %s in namespace %s", podDescr.Name, ns))
_, err := c.Pods(ns).Create(podDescr) _, err := c.Pods(ns).Create(podDescr)
Expect(err).NotTo(HaveOccurred(), fmt.Sprintf("creating pod %s", podDescr.Name)) expectNoError(err, fmt.Sprintf("creating pod %s", podDescr.Name))
// At the end of the test, clean up by removing the pod. // At the end of the test, clean up by removing the pod.
defer func() { defer func() {
...@@ -48,14 +47,14 @@ func runLivenessTest(c *client.Client, podDescr *api.Pod) { ...@@ -48,14 +47,14 @@ func runLivenessTest(c *client.Client, podDescr *api.Pod) {
// 'Pending' other than checking for 'Running', since when failures occur, we go to // 'Pending' other than checking for 'Running', since when failures occur, we go to
// 'Terminated' which can cause indefinite blocking.) // 'Terminated' which can cause indefinite blocking.)
By("waiting for the pod to be something other than pending") By("waiting for the pod to be something other than pending")
err = waitForPodNotPending(c, ns, podDescr.Name, 60*time.Second) expectNoError(waitForPodNotPending(c, ns, podDescr.Name, 60*time.Second),
Expect(err).NotTo(HaveOccurred(), fmt.Sprintf("starting pod %s in namespace %s", podDescr.Name, ns)) fmt.Sprintf("starting pod %s in namespace %s", podDescr.Name, ns))
By(fmt.Sprintf("Started pod %s in namespace %s", podDescr.Name, ns)) By(fmt.Sprintf("Started pod %s in namespace %s", podDescr.Name, ns))
// Check the pod's current state and verify that restartCount is present. // Check the pod's current state and verify that restartCount is present.
By("checking the pod's current state and verifying that restartCount is present") By("checking the pod's current state and verifying that restartCount is present")
pod, err := c.Pods(ns).Get(podDescr.Name) pod, err := c.Pods(ns).Get(podDescr.Name)
Expect(err).NotTo(HaveOccurred(), fmt.Sprintf("getting pod %s in namespace %s", podDescr.Name, ns)) expectNoError(err, fmt.Sprintf("getting pod %s in namespace %s", podDescr.Name, ns))
initialRestartCount := pod.Status.Info["liveness"].RestartCount initialRestartCount := pod.Status.Info["liveness"].RestartCount
By(fmt.Sprintf("Initial restart count of pod %s is %d", podDescr.Name, initialRestartCount)) By(fmt.Sprintf("Initial restart count of pod %s is %d", podDescr.Name, initialRestartCount))
...@@ -65,7 +64,7 @@ func runLivenessTest(c *client.Client, podDescr *api.Pod) { ...@@ -65,7 +64,7 @@ func runLivenessTest(c *client.Client, podDescr *api.Pod) {
// Wait until restartCount is incremented. // Wait until restartCount is incremented.
time.Sleep(5 * time.Second) time.Sleep(5 * time.Second)
pod, err = c.Pods(ns).Get(podDescr.Name) pod, err = c.Pods(ns).Get(podDescr.Name)
Expect(err).NotTo(HaveOccurred(), fmt.Sprintf("getting pod %s", podDescr.Name)) expectNoError(err, fmt.Sprintf("getting pod %s", podDescr.Name))
restartCount := pod.Status.Info["liveness"].RestartCount restartCount := pod.Status.Info["liveness"].RestartCount
By(fmt.Sprintf("Restart count of pod %s in namespace %s is now %d", podDescr.Name, ns, restartCount)) By(fmt.Sprintf("Restart count of pod %s in namespace %s is now %d", podDescr.Name, ns, restartCount))
if restartCount > initialRestartCount { if restartCount > initialRestartCount {
...@@ -86,7 +85,7 @@ var _ = Describe("Pods", func() { ...@@ -86,7 +85,7 @@ var _ = Describe("Pods", func() {
BeforeEach(func() { BeforeEach(func() {
var err error var err error
c, err = loadClient() c, err = loadClient()
Expect(err).NotTo(HaveOccurred()) expectNoError(err)
}) })
It("should be submitted and removed", func() { It("should be submitted and removed", func() {
...@@ -132,7 +131,6 @@ var _ = Describe("Pods", func() { ...@@ -132,7 +131,6 @@ var _ = Describe("Pods", func() {
// We call defer here in case there is a problem with // We call defer here in case there is a problem with
// the test so we can ensure that we clean up after // the test so we can ensure that we clean up after
// ourselves // ourselves
defer GinkgoRecover()
podClient.Delete(pod.Name) podClient.Delete(pod.Name)
}() }()
...@@ -190,13 +188,11 @@ var _ = Describe("Pods", func() { ...@@ -190,13 +188,11 @@ var _ = Describe("Pods", func() {
} }
defer func() { defer func() {
By("deleting the pod") By("deleting the pod")
defer GinkgoRecover()
podClient.Delete(pod.Name) podClient.Delete(pod.Name)
}() }()
By("waiting for the pod to start running") By("waiting for the pod to start running")
err = waitForPodRunning(c, pod.Name, 300*time.Second) expectNoError(waitForPodRunning(c, pod.Name, 300*time.Second))
Expect(err).NotTo(HaveOccurred())
By("verifying the pod is in kubernetes") By("verifying the pod is in kubernetes")
pods, err := podClient.List(labels.SelectorFromSet(labels.Set(map[string]string{"time": value}))) pods, err := podClient.List(labels.SelectorFromSet(labels.Set(map[string]string{"time": value})))
...@@ -219,8 +215,7 @@ var _ = Describe("Pods", func() { ...@@ -219,8 +215,7 @@ var _ = Describe("Pods", func() {
} }
By("waiting for the updated pod to start running") By("waiting for the updated pod to start running")
err = waitForPodRunning(c, pod.Name, 300*time.Second) expectNoError(waitForPodRunning(c, pod.Name, 300*time.Second))
Expect(err).NotTo(HaveOccurred())
By("verifying the updated pod is in kubernetes") By("verifying the updated pod is in kubernetes")
pods, err = podClient.List(labels.SelectorFromSet(labels.Set(map[string]string{"time": value}))) pods, err = podClient.List(labels.SelectorFromSet(labels.Set(map[string]string{"time": value})))
...@@ -252,11 +247,9 @@ var _ = Describe("Pods", func() { ...@@ -252,11 +247,9 @@ var _ = Describe("Pods", func() {
Fail(fmt.Sprintf("Failed to create serverPod: %v", err)) Fail(fmt.Sprintf("Failed to create serverPod: %v", err))
} }
defer func() { defer func() {
defer GinkgoRecover()
c.Pods(api.NamespaceDefault).Delete(serverPod.Name) c.Pods(api.NamespaceDefault).Delete(serverPod.Name)
}() }()
err = waitForPodRunning(c, serverPod.Name, 300*time.Second) expectNoError(waitForPodRunning(c, serverPod.Name, 300*time.Second))
Expect(err).NotTo(HaveOccurred())
// This service exposes port 8080 of the test pod as a service on port 8765 // This service exposes port 8080 of the test pod as a service on port 8765
// TODO(filbranden): We would like to use a unique service name such as: // TODO(filbranden): We would like to use a unique service name such as:
...@@ -287,7 +280,6 @@ var _ = Describe("Pods", func() { ...@@ -287,7 +280,6 @@ var _ = Describe("Pods", func() {
Fail(fmt.Sprintf("Failed to create service: %v", err)) Fail(fmt.Sprintf("Failed to create service: %v", err))
} }
defer func() { defer func() {
defer GinkgoRecover()
c.Services(api.NamespaceDefault).Delete(svc.Name) c.Services(api.NamespaceDefault).Delete(svc.Name)
}() }()
...@@ -318,13 +310,11 @@ var _ = Describe("Pods", func() { ...@@ -318,13 +310,11 @@ var _ = Describe("Pods", func() {
Fail(fmt.Sprintf("Failed to create pod: %v", err)) Fail(fmt.Sprintf("Failed to create pod: %v", err))
} }
defer func() { defer func() {
defer GinkgoRecover()
c.Pods(api.NamespaceDefault).Delete(clientPod.Name) c.Pods(api.NamespaceDefault).Delete(clientPod.Name)
}() }()
// Wait for client pod to complete. // Wait for client pod to complete.
err = waitForPodSuccess(c, clientPod.Name, clientPod.Spec.Containers[0].Name, 60*time.Second) expectNoError(waitForPodSuccess(c, clientPod.Name, clientPod.Spec.Containers[0].Name, 60*time.Second))
Expect(err).NotTo(HaveOccurred())
// Grab its logs. Get host first. // Grab its logs. Get host first.
clientPodStatus, err := c.Pods(api.NamespaceDefault).Get(clientPod.Name) clientPodStatus, err := c.Pods(api.NamespaceDefault).Get(clientPod.Name)
......
...@@ -28,6 +28,7 @@ import ( ...@@ -28,6 +28,7 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/clientauth" "github.com/GoogleCloudPlatform/kubernetes/pkg/clientauth"
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
) )
type testContextType struct { type testContextType struct {
...@@ -45,7 +46,7 @@ func Logf(format string, a ...interface{}) { ...@@ -45,7 +46,7 @@ func Logf(format string, a ...interface{}) {
} }
func Failf(format string, a ...interface{}) { func Failf(format string, a ...interface{}) {
Fail(fmt.Sprintf(format, a...)) Fail(fmt.Sprintf(format, a...), 1)
} }
func waitForPodRunning(c *client.Client, id string, tryFor time.Duration) error { func waitForPodRunning(c *client.Client, id string, tryFor time.Duration) error {
...@@ -152,3 +153,7 @@ func randomSuffix() string { ...@@ -152,3 +153,7 @@ func randomSuffix() string {
r := rand.New(rand.NewSource(time.Now().UnixNano())) r := rand.New(rand.NewSource(time.Now().UnixNano()))
return strconv.Itoa(r.Int() % 10000) return strconv.Itoa(r.Int() % 10000)
} }
func expectNoError(err error, explain ...interface{}) {
ExpectWithOffset(1, err).NotTo(HaveOccurred(), explain...)
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment