AfterEach(func() { saturationThreshold := time.Duration((totalPods / MinPodsPerSecondThroughput)) * time.Second if saturationThreshold < MinSaturationThreshold { saturationThreshold = MinSaturationThreshold } Expect(e2eStartupTime).NotTo(BeNumerically(">", saturationThreshold)) saturationData := framework.SaturationTime{ TimeToSaturate: e2eStartupTime, NumberOfNodes: nodeCount, NumberOfPods: totalPods, Throughput: float32(totalPods) / float32(e2eStartupTime/time.Second), } framework.Logf("Cluster saturation time: %s", framework.PrettyPrintJSON(saturationData)) // Verify latency metrics. highLatencyRequests, err := framework.HighLatencyRequests(c) framework.ExpectNoError(err) Expect(highLatencyRequests).NotTo(BeNumerically(">", 0), "There should be no high-latency requests") // Verify scheduler metrics. // TODO: Reset metrics at the beginning of the test. // We should do something similar to how we do it for APIserver. framework.ExpectNoError(framework.VerifySchedulerLatency(c)) }) // Explicitly put here, to delete namespace at the end of the test // (after measuring latency metrics, etc.). f := framework.NewDefaultFramework("density") f.NamespaceDeletionTimeout = time.Hour BeforeEach(func() {
// This test suite can take a long time to run, so by default it is added to // the ginkgo.skip list (see driver.go). // To run this suite you must explicitly ask for it by setting the // -t/--test flag or ginkgo.focus flag. var _ = framework.KubeDescribe("Load capacity", func() { var clientset internalclientset.Interface var nodeCount int var ns string var configs []*testutils.RCConfig var namespaces []*api.Namespace // Gathers metrics before teardown // TODO add flag that allows to skip cleanup on failure AfterEach(func() { // Verify latency metrics highLatencyRequests, err := framework.HighLatencyRequests(clientset) framework.ExpectNoError(err, "Too many instances metrics above the threshold") Expect(highLatencyRequests).NotTo(BeNumerically(">", 0)) }) // We assume a default throughput of 10 pods/second throughput. // We may want to revisit it in the future. // However, this can be overriden by LOAD_TEST_THROUGHPUT env var. throughput := 10 if throughputEnv := os.Getenv("LOAD_TEST_THROUGHPUT"); throughputEnv != "" { if newThroughput, err := strconv.Atoi(throughputEnv); err == nil { throughput = newThroughput } } // Explicitly put here, to delete namespace at the end of the test