Converted TestPodUpdate to native ginkgo syntax #3941

This commit is contained in:
Robert Rati 2015-01-30 15:59:13 -05:00
parent 44510e11ac
commit e47b98db29

View File

@ -17,6 +17,7 @@ limitations under the License.
package e2e package e2e
import ( import (
"fmt"
"strconv" "strconv"
"time" "time"
@ -24,85 +25,94 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/client" "github.com/GoogleCloudPlatform/kubernetes/pkg/client"
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" "github.com/GoogleCloudPlatform/kubernetes/pkg/labels"
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" "github.com/GoogleCloudPlatform/kubernetes/pkg/util"
"github.com/golang/glog"
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
) )
func TestPodUpdate(c *client.Client) bool { var _ = Describe("Pods", func() {
podClient := c.Pods(api.NamespaceDefault) var (
c *client.Client
)
name := "pod-update-" + string(util.NewUUID()) BeforeEach(func() {
value := strconv.Itoa(time.Now().Nanosecond()) c = loadClientOrDie()
pod := &api.Pod{ })
ObjectMeta: api.ObjectMeta{
Name: name, It("should be updated", func() {
Labels: map[string]string{ podClient := c.Pods(api.NamespaceDefault)
"name": "foo",
"time": value, 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{
Spec: api.PodSpec{ Containers: []api.Container{
Containers: []api.Container{ {
{ Name: "nginx",
Name: "nginx", Image: "dockerfile/nginx",
Image: "dockerfile/nginx", Ports: []api.Port{{ContainerPort: 80, HostPort: 8080}},
Ports: []api.Port{{ContainerPort: 80, HostPort: 8080}}, LivenessProbe: &api.Probe{
LivenessProbe: &api.Probe{ Handler: api.Handler{
Handler: api.Handler{ HTTPGet: &api.HTTPGetAction{
HTTPGet: &api.HTTPGetAction{ Path: "/index.html",
Path: "/index.html", Port: util.NewIntOrStringFromInt(8080),
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) By("submitting the pod to kubernetes")
if err != nil { _, err := podClient.Create(pod)
glog.Errorf("Failed to get pod: %v", err) if err != nil {
return false Fail(fmt.Sprintf("Failed to create pod: %v", err))
} }
value = "time" + value defer func() {
pod.Labels["time"] = value By("deleting the pod")
pod.ResourceVersion = podOut.ResourceVersion defer GinkgoRecover()
pod.UID = podOut.UID podClient.Delete(pod.Name)
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
}
var _ = Describe("TestPodUpdate", func() { By("waiting for the pod to start running")
It("should pass", func() { waitForPodRunning(c, pod.Name)
// TODO: Instead of OrDie, client should Fail the test if there's a problem.
// In general tests should Fail() instead of glog.Fatalf(). By("verifying the pod is in kubernetes")
Expect(TestPodUpdate(loadClientOrDie())).To(BeTrue()) 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")
}) })
}) })