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
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")
})
})