Merge pull request #4392 from zmerlynn/error_helper

Add expectNoError helper, minor cleanups
This commit is contained in:
Brendan Burns 2015-02-12 16:20:28 -08:00
commit 18c1dfd61b
2 changed files with 16 additions and 21 deletions

View File

@ -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) {
// '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) {
// 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() {
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() {
// 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() {
} }
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() {
} }
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() {
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() {
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() {
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)

View File

@ -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{}) {
} }
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 {
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...)
}