func extinguish(c *client.Client, totalNS int, maxAllowedAfterDel int, maxSeconds int) { var err error for n := 0; n < totalNS; n += 1 { _, err = createTestingNS(fmt.Sprintf("nslifetest-%v", n), c) Expect(err).NotTo(HaveOccurred()) } //Wait 10 seconds, then SEND delete requests for all the namespaces. time.Sleep(time.Duration(10 * time.Second)) nsList, err := c.Namespaces().List(labels.Everything(), fields.Everything()) Expect(err).NotTo(HaveOccurred()) for _, item := range nsList.Items { if strings.Contains(item.Name, "nslifetest") { if err := c.Namespaces().Delete(item.Name); err != nil { Failf("Failed deleting error ::: --- %v ", err) } } Logf("namespace : %v api call to delete is complete ", item) } //Now POLL until all namespaces have been eradicated. expectNoError(wait.Poll(2*time.Second, time.Duration(maxSeconds)*time.Second, func() (bool, error) { if rem, err := countRemaining(c, "nslifetest"); err != nil || rem > maxAllowedAfterDel { Logf("Remaining namespaces : %v", rem) return false, err } else { return true, nil } })) }
// createNamespaceIfDoesNotExist ensures that the namespace with specified name exists, or returns an error func createNamespaceIfDoesNotExist(c *client.Client, name string) (*api.Namespace, error) { namespace, err := c.Namespaces().Get(name) if err != nil { namespace, err = c.Namespaces().Create(&api.Namespace{ObjectMeta: api.ObjectMeta{Name: name}}) } return namespace, err }
func countRemaining(c *client.Client, withName string) (int, error) { var cnt = 0 nsList, err := c.Namespaces().List(labels.Everything(), fields.Everything()) for _, item := range nsList.Items { if strings.Contains(item.Name, "nslifetest") { cnt++ } } return cnt, err }
BeforeEach(func() { var err error c, err = loadClient() Expect(err).NotTo(HaveOccurred()) By("Building a namespace api object") namespace, err = createTestingNS("hostdir", c) Expect(err).NotTo(HaveOccurred()) //cleanup before running the test. _ = os.Remove("/tmp/test-file") }) AfterEach(func() { By(fmt.Sprintf("Destroying namespace for this suite %v", namespace.Name)) if err := c.Namespaces().Delete(namespace.Name); err != nil { Failf("Couldn't delete ns %s", err) } }) It("should give a volume the correct mode", func() { volumePath := "/test-volume" source := &api.HostPathVolumeSource{ Path: "/tmp", } pod := testPodWithHostVol(volumePath, source) pod.Spec.Containers[0].Args = []string{ fmt.Sprintf("--fs_type=%v", volumePath), fmt.Sprintf("--file_mode=%v", volumePath), }
var ns string BeforeEach(func() { var err error c, err = loadClient() Expect(err).NotTo(HaveOccurred()) ns_, err := createTestingNS("downward-api", c) ns = ns_.Name Expect(err).NotTo(HaveOccurred()) }) AfterEach(func() { // Clean up the namespace if a non-default one was used if ns != api.NamespaceDefault { By("Cleaning up the namespace") err := c.Namespaces().Delete(ns) expectNoError(err) } }) It("should provide pod name and namespace as env vars", func() { podName := "downward-api-" + string(util.NewUUID()) pod := &api.Pod{ ObjectMeta: api.ObjectMeta{ Name: podName, Labels: map[string]string{"name": podName}, }, Spec: api.PodSpec{ Containers: []api.Container{ { Name: "dapi-container",