func deleteRC(wg *sync.WaitGroup, config *testutils.RCConfig, deletingTime time.Duration) { defer GinkgoRecover() defer wg.Done() sleepUpTo(deletingTime) if framework.TestContext.GarbageCollectorEnabled { framework.ExpectNoError(framework.DeleteRCAndWaitForGC(config.Client, config.Namespace, config.Name), fmt.Sprintf("deleting rc %s", config.Name)) } else { framework.ExpectNoError(framework.DeleteRCAndPods(config.Client, config.Namespace, config.Name), fmt.Sprintf("deleting rc %s", config.Name)) } }
func cleanupDensityTest(dtc DensityTestConfig) { defer GinkgoRecover() By("Deleting ReplicationController") // We explicitly delete all pods to have API calls necessary for deletion accounted in metrics. for i := range dtc.Configs { rcName := dtc.Configs[i].Name rc, err := dtc.Client.ReplicationControllers(dtc.Namespace).Get(rcName) if err == nil && rc.Spec.Replicas != 0 { if framework.TestContext.GarbageCollectorEnabled { By("Cleaning up only the replication controller, garbage collector will clean up the pods") err := framework.DeleteRCAndWaitForGC(dtc.Client, dtc.Namespace, rcName) framework.ExpectNoError(err) } else { By("Cleaning up the replication controller and pods") err := framework.DeleteRCAndPods(dtc.Client, dtc.ClientSet, dtc.Namespace, rcName) framework.ExpectNoError(err) } } } }
framework.PrintLatencies(scheduleLag, "worst schedule latencies") framework.PrintLatencies(startupLag, "worst run-after-schedule latencies") framework.PrintLatencies(watchLag, "worst watch latencies") framework.PrintLatencies(schedToWatchLag, "worst scheduled-to-end total latencies") framework.PrintLatencies(e2eLag, "worst e2e total latencies") // Test whether e2e pod startup time is acceptable. podStartupLatency := framework.PodStartupLatency{Latency: framework.ExtractLatencyMetrics(e2eLag)} framework.ExpectNoError(framework.VerifyPodStartupLatency(podStartupLatency)) framework.LogSuspiciousLatency(startupLag, e2eLag, nodeCount, c) By("Removing additional replication controllers") deleteRC := func(i int) { name := additionalPodsPrefix + "-" + strconv.Itoa(i+1) framework.ExpectNoError(framework.DeleteRCAndWaitForGC(c, ns, name)) } workqueue.Parallelize(16, nodeCount, deleteRC) } cleanupDensityTest(dConfig) }) } // Calculate total number of pods from each node's max-pod It("[Feature:ManualPerformance] should allow running maximum capacity pods on nodes", func() { totalPods = 0 for _, n := range nodes.Items { totalPods += int(n.Status.Capacity.Pods().Value()) } totalPods -= framework.WaitForStableCluster(c, masters)
framework.PrintLatencies(startupLag, "worst run-after-schedule latencies") framework.PrintLatencies(watchLag, "worst watch latencies") framework.PrintLatencies(schedToWatchLag, "worst scheduled-to-end total latencies") framework.PrintLatencies(e2eLag, "worst e2e total latencies") // Test whether e2e pod startup time is acceptable. podStartupLatency := framework.PodStartupLatency{Latency: framework.ExtractLatencyMetrics(e2eLag)} framework.ExpectNoError(framework.VerifyPodStartupLatency(podStartupLatency)) framework.LogSuspiciousLatency(startupLag, e2eLag, nodeCount, c) By("Removing additional replication controllers") deleteRC := func(i int) { defer GinkgoRecover() name := additionalPodsPrefix + "-" + strconv.Itoa(i+1) framework.ExpectNoError(framework.DeleteRCAndWaitForGC(c, rcNameToNsMap[name], name)) } workqueue.Parallelize(16, nodeCount, deleteRC) } cleanupDensityTest(dConfig) }) } // Calculate total number of pods from each node's max-pod It("[Feature:ManualPerformance] should allow running maximum capacity pods on nodes", func() { totalPods = 0 for _, n := range nodes.Items { totalPods += int(n.Status.Capacity.Pods().Value()) } totalPods -= framework.WaitForStableCluster(c, masters)