framework.SkipUnlessProviderIs("gce", "gke") ps = testutils.NewPodStore(f.Client, api.NamespaceSystem, labels.Everything(), fields.Everything()) }) AfterEach(func() { if ps != nil { ps.Stop() } }) It("should restart all nodes and ensure all nodes and pods recover", func() { nn := framework.TestContext.CloudConfig.NumNodes By("ensuring all nodes are ready") nodeNamesBefore, err := framework.CheckNodesReady(f.Client, framework.NodeReadyInitialTimeout, nn) Expect(err).NotTo(HaveOccurred()) framework.Logf("Got the following nodes before restart: %v", nodeNamesBefore) By("ensuring all pods are running and ready") allPods := ps.List() pods := filterIrrelevantPods(allPods) podNamesBefore := make([]string, len(pods)) for i, p := range pods { podNamesBefore[i] = p.ObjectMeta.Name } ns := api.NamespaceSystem if !framework.CheckPodsRunningReadyOrSucceeded(f.Client, ns, podNamesBefore, framework.PodReadyBeforeTimeout) { framework.Failf("At least one pod wasn't running and ready or succeeded at test start.") }
} framework.Logf("Deleting all petset in ns %v", ns) deleteAllStatefulSets(c, ns) }) It("should come back up if node goes down [Slow] [Disruptive]", func() { petMounts := []api.VolumeMount{{Name: "datadir", MountPath: "/data/"}} podMounts := []api.VolumeMount{{Name: "home", MountPath: "/home"}} ps := newStatefulSet(psName, ns, headlessSvcName, 3, petMounts, podMounts, labels) _, err := c.Apps().StatefulSets(ns).Create(ps) Expect(err).NotTo(HaveOccurred()) pst := statefulSetTester{c: c} nn := framework.TestContext.CloudConfig.NumNodes nodeNames, err := framework.CheckNodesReady(f.ClientSet, framework.NodeReadyInitialTimeout, nn) framework.ExpectNoError(err) restartNodes(f, nodeNames) By("waiting for pods to be running again") pst.waitForRunningAndReady(ps.Spec.Replicas, ps) }) It("should not reschedule pets if there is a network partition [Slow] [Disruptive]", func() { ps := newStatefulSet(psName, ns, headlessSvcName, 3, []api.VolumeMount{}, []api.VolumeMount{}, labels) _, err := c.Apps().StatefulSets(ns).Create(ps) Expect(err).NotTo(HaveOccurred()) pst := statefulSetTester{c: c} pst.waitForRunningAndReady(ps.Spec.Replicas, ps)