From 3600d4950461623f3ba79a315b5ab80893c943a8 Mon Sep 17 00:00:00 2001 From: Mike Danese Date: Fri, 28 Apr 2017 14:28:04 -0700 Subject: [PATCH] delete benchmark integration tests that don't work at all --- hack/benchmark-integration.sh | 50 ----- .../master/master_benchmark_test.go | 202 ------------------ 2 files changed, 252 deletions(-) delete mode 100755 hack/benchmark-integration.sh delete mode 100644 test/integration/master/master_benchmark_test.go diff --git a/hack/benchmark-integration.sh b/hack/benchmark-integration.sh deleted file mode 100755 index e08fdd04525..00000000000 --- a/hack/benchmark-integration.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -# Copyright 2014 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -o errexit -set -o nounset -set -o pipefail - -KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. -BENCHMARK_REGEX=${BENCHMARK_REGEX:-"."} - -source "${KUBE_ROOT}/hack/lib/init.sh" - -cleanup() { - kube::etcd::cleanup - kube::log::status "Benchmark cleanup complete" -} - -ARGS="-bench-pods 3000 -bench-tasks 100 -bench-tasks 10" - -runTests() { - kube::etcd::start - kube::log::status "Running benchmarks" - KUBE_GOFLAGS="-tags 'benchmark no-docker' -bench . -benchmem -benchtime 1s -cpu 4" \ - KUBE_RACE="-race" \ - KUBE_TEST_API_VERSIONS="v1" \ - KUBE_TIMEOUT="-timeout 10m" \ - KUBE_TEST_ETCD_PREFIXES="registry" \ - ETCD_CUSTOM_PREFIX="None" \ - KUBE_TEST_ARGS="${ARGS}" \ - make test WHAT=test/integration - cleanup -} - -# Run cleanup to stop etcd on interrupt or other kill signal. -trap cleanup EXIT - -runTests diff --git a/test/integration/master/master_benchmark_test.go b/test/integration/master/master_benchmark_test.go deleted file mode 100644 index 56b290dcc37..00000000000 --- a/test/integration/master/master_benchmark_test.go +++ /dev/null @@ -1,202 +0,0 @@ -// +build benchmark,!no-etcd,!integration - -/* -Copyright 2014 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package master - -import ( - "flag" - "fmt" - "os" - "testing" - "time" - - "github.com/golang/glog" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/fields" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/kubernetes/pkg/api" - clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" - "k8s.io/kubernetes/test/integration/framework" -) - -// Command line flag globals, parsed in init and used by the benchmarks: -// * pods && !tasks: Start -pods, scale number of parallel tasks with b.N -// * !pods && tasks: Start -tasks, scale pods with b.N -// * pods && tasks: Ignore b.N, benchmark behaves like a test constrained by -benchtime. -// * !pods && !tasks: scale pods and workers with b.N. -// -workers specifies the number of workers to shard tasks across. -// Eg: go test bench . -bench-pods 3000 -bench-tasks 100 -bench-tasks 10: -// Create 100 tasks each listing 3000 pods, and run them 10 at a time. -var ( - Workers int - Pods int - Tasks int -) - -const Glog_fatalf = 3 - -func init() { - q := flag.Int("bench-quiet", 3, "Quietness, don't glog severities <= given level during the benchmark.") - pods := flag.Int("bench-pods", -1, "Number of pods for the benchmark. If unspecified, uses b.N.") - workers := flag.Int("bench-workers", -1, "Number workers for the benchmark. If unspecified, uses tasks.") - tasks := flag.Int("bench-tasks", -1, "Number of tasks for the benchmark. These tasks are sharded across the workers. If unspecified, uses b.N.") - flag.Parse() - - // Unfortunately this v level goes in the opposite direction as stderrthreshold. - flag.Set("v", fmt.Sprintf("%d", *q)) - - // We need quiet logs to parse benchmark results, which includes Errorf. - flag.Set("logtostderr", "false") - flag.Set("stderrthreshold", fmt.Sprintf("%d", Glog_fatalf-*q)) - Pods = *pods - Workers = *workers - Tasks = *tasks -} - -// getPods returns the cmd line -pods or b.N if -pods wasn't specified. -// Benchmarks can call getPods to get the number of pods they need to -// create for a given benchmark. -func getPods(bN int) int { - if Pods < 0 { - return bN - } - return Pods -} - -// getTasks returns the cmd line -workers or b.N if -workers wasn't specified. -// Benchmarks would call getTasks to get the number of workers required to -// perform the benchmark in parallel. -func getTasks(bN int) int { - if Tasks < 0 { - return bN - } - return Tasks -} - -// getIterations returns the number of iterations required by each benchmark for -// go to produce reliable timing results. -func getIterations(bN int) int { - // Anything with constant pods is only linear if we iterate b.N times. - if Pods > 0 { - return bN - } - return 1 -} - -// startPodsOnNodes creates numPods sharded across numNodes -func startPodsOnNodes(ns string, numPods, numNodes int, restClient clientset.Interface) { - podsPerNode := numPods / numNodes - if podsPerNode < 1 { - podsPerNode = 1 - } - framework.RunParallel(func(id int) error { - return framework.StartPods(podsPerNode, fmt.Sprintf("host.%d", id), restClient) - }, numNodes, -1) -} - -// Benchmark pod listing by waiting on `Tasks` listers to list `Pods` pods via `Workers`. -func BenchmarkPodList(b *testing.B) { - b.StopTimer() - m := framework.NewMasterComponents(&framework.Config{nil, true, false, 250.0, 500}) - defer m.Stop(true, true) - - ns := framework.CreateTestingNamespace("benchmark-pod-list", s, t) - defer framework.DeleteTestingNamespace(ns, s, t) - - numPods, numTasks, iter := getPods(b.N), getTasks(b.N), getIterations(b.N) - podsPerNode := numPods / numTasks - if podsPerNode < 1 { - podsPerNode = 1 - } - glog.Infof("Starting benchmark: b.N %d, pods %d, workers %d, podsPerNode %d", - b.N, numPods, numTasks, podsPerNode) - - startPodsOnNodes(ns.Name, numPods, numTasks, m.RestClient) - // Stop the rc manager so it doesn't steal resources - m.Stop(false, true) - - b.StartTimer() - for i := 0; i < iter; i++ { - framework.RunParallel(func(id int) error { - host := fmt.Sprintf("host.%d", id) - now := time.Now() - defer func() { - glog.V(3).Infof("Worker %d: Node %v listing pods took %v", id, host, time.Since(now)) - }() - if pods, err := m.ClientSet.Core().Pods(ns.Name).List(metav1.ListOptions{ - LabelSelector: labels.Everything(), - FieldSelector: fields.OneTermEqualSelector(api.PodHostField, host), - }); err != nil { - return err - } else if len(pods.Items) < podsPerNode { - glog.Fatalf("List retrieved %d pods, which is less than %d", len(pods.Items), podsPerNode) - } - return nil - }, numTasks, Workers) - } - b.StopTimer() -} - -// Benchmark pod listing by waiting on `Tasks` listers to list `Pods` pods via `Workers`. -func BenchmarkPodListEtcd(b *testing.B) { - b.StopTimer() - m := framework.NewMasterComponents(&framework.Config{nil, true, false, 250.0, 500}) - defer m.Stop(true, true) - - ns := framework.CreateTestingNamespace("benchmark-pod-list-etcd", s, t) - defer framework.DeleteTestingNamespace(ns, s, t) - - numPods, numTasks, iter := getPods(b.N), getTasks(b.N), getIterations(b.N) - podsPerNode := numPods / numTasks - if podsPerNode < 1 { - podsPerNode = 1 - } - - startPodsOnNodes(ns.Name, numPods, numTasks, m.RestClient) - // Stop the rc manager so it doesn't steal resources - m.Stop(false, true) - - glog.Infof("Starting benchmark: b.N %d, pods %d, workers %d, podsPerNode %d", - b.N, numPods, numTasks, podsPerNode) - - b.StartTimer() - for i := 0; i < iter; i++ { - framework.RunParallel(func(id int) error { - now := time.Now() - defer func() { - glog.V(3).Infof("Worker %d: listing pods took %v", id, time.Since(now)) - }() - pods, err := m.ClientSet.Core().Pods(ns.Name).List(metav1.ListOptions{ - LabelSelector: labels.Everything(), - FieldSelector: fields.Everything(), - }) - if err != nil { - return err - } - if len(pods.Items) < numPods { - glog.Fatalf("List retrieved %d pods, which is less than %d", len(pods.Items), numPods) - } - return nil - }, numTasks, Workers) - } - b.StopTimer() -} - -func TestMain(m *testing.M) { - os.Exit(m.Run()) -}