var _ = ginkgo.SynchronizedBeforeSuite(func() []byte { // Run only on Ginkgo node 1 // Delete any namespaces except default and kube-system. This ensures no // lingering resources are left over from a previous test run. if testContext.CleanStart { c, err := loadClient() if err != nil { glog.Fatal("Error loading client: ", err) } deleted, err := deleteNamespaces(c, nil /* deleteFilter */, []string{api.NamespaceSystem, api.NamespaceDefault}) if err != nil { Failf("Error deleting orphaned namespaces: %v", err) } glog.Infof("Waiting for deletion of the following namespaces: %v", deleted) if err := waitForNamespacesDeleted(c, deleted, namespaceCleanupTimeout); err != nil { Failf("Failed to delete orphaned namespaces %v: %v", deleted, err) } } // Ensure all pods are running and ready before starting tests (otherwise, // cluster infrastructure pods that are being pulled or started can block // test pods from running, and tests that ensure all pods are running and // ready will fail). if err := waitForPodsRunningReady(api.NamespaceSystem, testContext.MinStartupPods, podStartupTimeout); err != nil { c, err := loadClient() Expect(err).NotTo(HaveOccurred()) dumpAllNamespaceInfo(c, api.NamespaceSystem) Failf("Error waiting for all pods to be running and ready: %v", err) } return nil }, func(data []byte) { // Run on all Ginkgo nodes })
var _ = ginkgo.SynchronizedBeforeSuite(func() []byte { // Run only on Ginkgo node 1 if err := setupProviderConfig(); err != nil { framework.Failf("Failed to setup provider config: %v", err) } c, err := framework.LoadClient() if err != nil { glog.Fatal("Error loading client: ", err) } // Delete any namespaces except default and kube-system. This ensures no // lingering resources are left over from a previous test run. if framework.TestContext.CleanStart { deleted, err := framework.DeleteNamespaces(c, nil /* deleteFilter */, []string{api.NamespaceSystem, api.NamespaceDefault}) if err != nil { framework.Failf("Error deleting orphaned namespaces: %v", err) } glog.Infof("Waiting for deletion of the following namespaces: %v", deleted) if err := framework.WaitForNamespacesDeleted(c, deleted, framework.NamespaceCleanupTimeout); err != nil { framework.Failf("Failed to delete orphaned namespaces %v: %v", deleted, err) } } // Ensure all pods are running and ready before starting tests (otherwise, // cluster infrastructure pods that are being pulled or started can block // test pods from running, and tests that ensure all pods are running and // ready will fail). podStartupTimeout := framework.TestContext.SystemPodsStartupTimeout if err := framework.WaitForPodsRunningReady(c, api.NamespaceSystem, int32(framework.TestContext.MinStartupPods), podStartupTimeout, framework.ImagePullerLabels); err != nil { framework.DumpAllNamespaceInfo(c, api.NamespaceSystem) framework.LogFailedContainers(c, api.NamespaceSystem) framework.RunKubernetesServiceTestContainer(c, framework.TestContext.RepoRoot, api.NamespaceDefault) framework.Failf("Error waiting for all pods to be running and ready: %v", err) } if err := framework.WaitForPodsSuccess(c, api.NamespaceSystem, framework.ImagePullerLabels, imagePrePullingTimeout); err != nil { // There is no guarantee that the image pulling will succeed in 3 minutes // and we don't even run the image puller on all platforms (including GKE). // We wait for it so we get an indication of failures in the logs, and to // maximize benefit of image pre-pulling. framework.Logf("WARNING: Image pulling pods failed to enter success in %v: %v", imagePrePullingTimeout, err) } // Dump the output of the nethealth containers only once per run if framework.TestContext.DumpLogsOnFailure { framework.Logf("Dumping network health container logs from all nodes") framework.LogContainersInPodsWithLabels(c, api.NamespaceSystem, framework.ImagePullerLabels, "nethealth") } // Reference common test to make the import valid. commontest.CurrentSuite = commontest.E2E return nil }, func(data []byte) { // Run on all Ginkgo nodes if cloudConfig.Provider == nil { if err := setupProviderConfig(); err != nil { framework.Failf("Failed to setup provider config: %v", err) } } })
var _ = ginkgo.SynchronizedBeforeSuite(func() []byte { // Run only on Ginkgo node 1 // Delete any namespaces except default and kube-system. This ensures no // lingering resources are left over from a previous test run. if framework.TestContext.CleanStart { c, err := framework.LoadClient() if err != nil { glog.Fatal("Error loading client: ", err) } deleted, err := framework.DeleteNamespaces(c, nil /* deleteFilter */, []string{api.NamespaceSystem, api.NamespaceDefault}) if err != nil { framework.Failf("Error deleting orphaned namespaces: %v", err) } glog.Infof("Waiting for deletion of the following namespaces: %v", deleted) if err := framework.WaitForNamespacesDeleted(c, deleted, framework.NamespaceCleanupTimeout); err != nil { framework.Failf("Failed to delete orphaned namespaces %v: %v", deleted, err) } } // Ensure all pods are running and ready before starting tests (otherwise, // cluster infrastructure pods that are being pulled or started can block // test pods from running, and tests that ensure all pods are running and // ready will fail). if err := framework.WaitForPodsRunningReady(api.NamespaceSystem, int32(framework.TestContext.MinStartupPods), podStartupTimeout); err != nil { if c, errClient := framework.LoadClient(); errClient != nil { framework.Logf("Unable to dump cluster information because: %v", errClient) } else { framework.DumpAllNamespaceInfo(c, api.NamespaceSystem) } framework.LogFailedContainers(api.NamespaceSystem) framework.RunKubernetesServiceTestContainer(framework.TestContext.RepoRoot, api.NamespaceDefault) framework.Failf("Error waiting for all pods to be running and ready: %v", err) } return nil }, func(data []byte) { // Run on all Ginkgo nodes })