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 newProjectAuthorizationCache(openshiftClient *osclient.Client, kubeClient *kclient.Client, policyClient policyclient.ReadOnlyPolicyClient) *projectauth.AuthorizationCache { return projectauth.NewAuthorizationCache( projectauth.NewReviewer(openshiftClient), kubeClient.Namespaces(), policyClient, ) }
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 }
// createNS should be used by every test, note that we append a common prefix to the provided test name. func createTestingNS(baseName string, c *client.Client) (*api.Namespace, error) { namespaceObj := &api.Namespace{ ObjectMeta: api.ObjectMeta{ Name: fmt.Sprintf("e2e-tests-%v-%v", baseName, uuid.New()), Namespace: "", }, Status: api.NamespaceStatus{}, } _, err := c.Namespaces().Create(namespaceObj) return namespaceObj, err }
func extinguish(c *client.Client, totalNS int, maxAllowedAfterDel int, maxSeconds int) { var err error By("Creating testing namespaces") wg := &sync.WaitGroup{} for n := 0; n < totalNS; n += 1 { wg.Add(1) go func(n int) { defer wg.Done() defer GinkgoRecover() _, err = createTestingNS(fmt.Sprintf("nslifetest-%v", n), c) Expect(err).NotTo(HaveOccurred()) }(n) } wg.Wait() By("Waiting 10 seconds") //Wait 10 seconds, then SEND delete requests for all the namespaces. time.Sleep(time.Duration(10 * time.Second)) By("Deleting namespaces") nsList, err := c.Namespaces().List(labels.Everything(), fields.Everything()) Expect(err).NotTo(HaveOccurred()) var nsCount = 0 for _, item := range nsList.Items { if strings.Contains(item.Name, "nslifetest") { wg.Add(1) nsCount++ go func(nsName string) { defer wg.Done() defer GinkgoRecover() Expect(c.Namespaces().Delete(nsName)).To(Succeed()) Logf("namespace : %v api call to delete is complete ", nsName) }(item.Name) } } Expect(nsCount).To(Equal(totalNS)) wg.Wait() By("Waiting for namespaces to vanish") //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 } })) }
func watchProxyTest(cluster1AdminKubeClient, cluster2AdminKubeClient *kclient.Client, t *testing.T) { // list namespaces in order to determine correct resourceVersion namespaces, err := cluster1AdminKubeClient.Namespaces().List(labels.Everything(), fields.Everything()) // open a watch on Cluster 2 for namespaces starting with latest resourceVersion namespaceWatch, err := cluster2AdminKubeClient.Namespaces().Watch(labels.Everything(), fields.Everything(), namespaces.ResourceVersion) if err != nil { t.Fatalf("unexpected error: %v", err) } defer namespaceWatch.Stop() // add namespace in Cluster 2 namespace := &kapi.Namespace{ ObjectMeta: kapi.ObjectMeta{Name: "test-namespace"}, } createdNamespace, err := cluster2AdminKubeClient.Namespaces().Create(namespace) if err != nil { t.Fatalf("unexpected error: %v", err) } // consume watch output and record it if it's the event we want to see select { case e := <-namespaceWatch.ResultChan(): // check that the watch shows the new namespace if e.Type != watch.Added { t.Fatalf("expected an Added event but got: %v", e) } addedNamespace, ok := e.Object.(*kapi.Namespace) if !ok { t.Fatalf("unexpected cast error from event Object to Namespace") } if addedNamespace.ObjectMeta.Name != createdNamespace.Name { t.Fatalf("namespace returned from Watch is not the same ast that created: got %v, wanted %v", createdNamespace, addedNamespace) } case <-time.After(10 * time.Second): t.Fatal("Timed out waiting for watch") } }
var _ = Describe("[Skipped] persistentVolumes", func() { var c *client.Client var ns string BeforeEach(func() { var err error c, err = loadClient() Expect(err).NotTo(HaveOccurred()) ns_, err := createTestingNS("pv", c) ns = ns_.Name Expect(err).NotTo(HaveOccurred()) }) AfterEach(func() { By(fmt.Sprintf("Destroying namespace for this suite %v", ns)) if err := c.Namespaces().Delete(ns); err != nil { Failf("Couldn't delete ns %s", err) } }) It("PersistentVolume", func() { config := VolumeTestConfig{ namespace: ns, prefix: "nfs", serverImage: "gcr.io/google_containers/volume-nfs", serverPorts: []int{2049}, } defer func() { volumeTestCleanup(c, config) }()
var _ = Describe("Examples e2e", func() { var c *client.Client var ns string var testingNs *api.Namespace BeforeEach(func() { var err error c, err = loadClient() expectNoError(err) testingNs, err = createTestingNS("examples", c) ns = testingNs.Name Expect(err).NotTo(HaveOccurred()) }) AfterEach(func() { By(fmt.Sprintf("Destroying namespace for this suite %v", ns)) if err := c.Namespaces().Delete(ns); err != nil { Failf("Couldn't delete ns %s", err) } }) Describe("[Skipped][Example]Redis", func() { It("should create and stop redis servers", func() { mkpath := func(file string) string { return filepath.Join(testContext.RepoRoot, "examples/redis", file) } bootstrapYaml := mkpath("redis-master.yaml") sentinelServiceYaml := mkpath("redis-sentinel-service.yaml") sentinelControllerYaml := mkpath("redis-sentinel-controller.yaml") controllerYaml := mkpath("redis-controller.yaml") bootstrapPodName := "redis-master"
AfterEach(func() { // Remove any remaining pods from this test if the // replication controller still exists and the replica count // isn't 0. This means the controller wasn't cleaned up // during the test so clean it up here rc, err := c.ReplicationControllers(ns).Get(RCName) if err == nil && rc.Spec.Replicas != 0 { By("Cleaning up the replication controller") err := DeleteRC(c, ns, RCName) expectNoError(err) } // 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) } }) // Tests with "Skipped" substring in their name will be skipped when running // e2e test suite without --ginkgo.focus & --ginkgo.skip flags. type Density struct { skip bool podsPerMinion int } densityTests := []Density{ // This test should always run, even if larger densities are skipped. {podsPerMinion: 3, skip: false}, {podsPerMinion: 30, skip: false},