diff --git a/test/integration/scheduler_perf/README.md b/test/integration/scheduler_perf/README.md index fd6baa58cb9..287ed486244 100644 --- a/test/integration/scheduler_perf/README.md +++ b/test/integration/scheduler_perf/README.md @@ -110,6 +110,22 @@ make test-integration WHAT=./test/integration/scheduler_perf KUBE_TEST_ARGS=-use ``` Integration testing uses the same `config/performance-config.yaml` as -benchmarking. By default, workloads labeled as `integration-test` are executed -as part of integration testing. `-test-scheduling-label-filter` can be used to -change that. +benchmarking. By default, workloads labeled as `integration-test` +are executed as part of integration testing (in ci-kubernetes-integration-master job). +`-test-scheduling-label-filter` can be used to change that. +All test cases should have at least one workload labeled as `integration-test`. + +Running the integration tests with command above will only execute the workloads labeled as `short`. +`SHORT=--short=false` variable added to the command can be used to disable this filtering. + +We should make each test case with `short` label very small, +so that all tests with the label should take less than 5 min to complete. +The test cases labeled as `short` are executed in pull-kubernetes-integration job. + +### Labels used by CI jobs + +| CI Job | Labels | +|----------------------------------|------------------------| +| ci-kubernetes-integration-master | integration-test | +| pull-kubernetes-integration | integration-test,short | +| ci-benchmark-scheduler-perf | performance | diff --git a/test/integration/scheduler_perf/config/performance-config.yaml b/test/integration/scheduler_perf/config/performance-config.yaml index 0e48e85b122..f41ebe34461 100644 --- a/test/integration/scheduler_perf/config/performance-config.yaml +++ b/test/integration/scheduler_perf/config/performance-config.yaml @@ -1,8 +1,13 @@ # The following labels are used in this file: # - fast: short execution time, ideally less than 30 seconds # - integration-test: used to select workloads that -# run in pull-kubernetes-integration. Choosing those tests +# run in ci-kubernetes-integration-master. Choosing those tests # is a tradeoff between code coverage and overall runtime. +# - short: used to select workloads that +# run in pull-kubernetes-integration. +# We should make each test case with short label very small, +# so that all tests with the label should take less than 5 min to complete. +# They can be run using --short=true flag. # - performance: used to select workloads that run # in ci-benchmark-scheduler-perf. Such workloads # must run long enough (ideally, longer than 10 seconds) @@ -23,6 +28,12 @@ countParam: $measurePods collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast, short] + params: + initNodes: 5 + initPods: 5 + measurePods: 10 - name: 500Nodes labels: [integration-test, fast] params: @@ -58,6 +69,12 @@ collectMetrics: true namespace: sched-1 workloads: + - name: 5Nodes + labels: [integration-test, fast, short] + params: + initNodes: 5 + initPods: 1 + measurePods: 4 - name: 500Nodes labels: [integration-test, fast] params: @@ -88,8 +105,14 @@ countParam: $measurePods collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast, short] + params: + initNodes: 5 + initPods: 5 + measurePods: 10 - name: 500Nodes - labels: [fast] + labels: [integration-test, fast] params: initNodes: 500 initPods: 500 @@ -121,13 +144,20 @@ persistentVolumeClaimTemplatePath: config/templates/pvc.yaml collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast] + params: + initNodes: 5 + initPods: 5 + measurePods: 10 - name: 500Nodes - labels: [fast] + labels: [integration-test, performance, fast] params: initNodes: 500 initPods: 500 measurePods: 1000 - name: 5000Nodes + labels: [performance] params: initNodes: 5000 initPods: 5000 @@ -162,13 +192,20 @@ persistentVolumeClaimTemplatePath: config/templates/pvc.yaml collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast] + params: + initNodes: 5 + initPods: 5 + measurePods: 10 - name: 500Nodes - labels: [fast] + labels: [integration-test, performance, fast] params: initNodes: 500 initPods: 500 measurePods: 1000 - name: 5000Nodes + labels: [performance] params: initNodes: 5000 initPods: 5000 @@ -201,13 +238,20 @@ persistentVolumeClaimTemplatePath: config/templates/pvc.yaml collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast, short] + params: + initNodes: 5 + initPods: 5 + measurePods: 10 - name: 500Nodes - labels: [integration-test, fast] + labels: [integration-test, performance, fast] params: initNodes: 500 initPods: 500 measurePods: 1000 - name: 5000Nodes + labels: [performance] params: initNodes: 5000 initPods: 5000 @@ -239,8 +283,14 @@ namespace: sched-1 collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast] + params: + initNodes: 5 + initPods: 5 + measurePods: 10 - name: 500Nodes - labels: [fast] + labels: [integration-test, fast] params: initNodes: 500 initPods: 500 @@ -274,13 +324,20 @@ namespace: sched-1 collectMetrics: true workloads: - - name: 500Nodes + - name: 5Nodes labels: [integration-test, fast] + params: + initNodes: 5 + initPods: 5 + measurePods: 10 + - name: 500Nodes + labels: [integration-test, performance, fast] params: initNodes: 500 initPods: 500 measurePods: 1000 - name: 5000Nodes + labels: [performance] params: initNodes: 5000 initPods: 5000 @@ -308,8 +365,14 @@ namespace: sched-1 collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast] + params: + initNodes: 5 + initPods: 5 + measurePods: 10 - name: 500Nodes - labels: [fast] + labels: [integration-test, fast] params: initNodes: 500 initPods: 500 @@ -348,6 +411,11 @@ countParam: $measurePods collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast] + params: + initNodes: 5 + measurePods: 10 - name: 15000Nodes labels: [performance, fast] params: @@ -369,8 +437,14 @@ countParam: $measurePods collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast, short] + params: + initNodes: 5 + initPods: 5 + measurePods: 10 - name: 500Nodes - labels: [fast] + labels: [integration-test, fast] params: initNodes: 500 initPods: 500 @@ -404,6 +478,12 @@ podTemplatePath: config/templates/pod-with-topology-spreading.yaml collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast, short] + params: + initNodes: 5 + initPods: 10 + measurePods: 10 - name: 500Nodes labels: [integration-test, fast] params: @@ -439,13 +519,20 @@ podTemplatePath: config/templates/pod-with-preferred-topology-spreading.yaml collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast] + params: + initNodes: 5 + initPods: 10 + measurePods: 10 - name: 500Nodes - labels: [fast] + labels: [integration-test, performance, fast] params: initNodes: 500 initPods: 1000 measurePods: 1000 - name: 5000Nodes + labels: [performance] params: initNodes: 5000 initPods: 5000 @@ -492,13 +579,20 @@ countParam: $measurePods collectMetrics: true workloads: - - name: 500Nodes + - name: 5Nodes labels: [integration-test, fast] + params: + initNodes: 5 + initPods: 2 + measurePods: 10 + - name: 500Nodes + labels: [integration-test, performance, fast] params: initNodes: 500 initPods: 200 measurePods: 1000 - name: 5000Nodes + labels: [performance] params: initNodes: 5000 initPods: 2000 @@ -511,7 +605,6 @@ measurePods: 5000 - name: PreemptionBasic - labels: [performance] workloadTemplate: - opcode: createNodes countParam: $initNodes @@ -523,8 +616,14 @@ podTemplatePath: config/templates/pod-high-priority.yaml collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast, short] + params: + initNodes: 5 + initPods: 20 + measurePods: 5 - name: 500Nodes - labels: [fast] + labels: [performance, fast] params: initNodes: 500 initPods: 2000 @@ -539,7 +638,6 @@ # measurePods: 5000 - name: PreemptionPVs - labels: [performance] workloadTemplate: - opcode: createNodes countParam: $initNodes @@ -553,8 +651,14 @@ persistentVolumeClaimTemplatePath: config/templates/pvc.yaml collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast] + params: + initNodes: 5 + initPods: 20 + measurePods: 5 - name: 500Nodes - labels: [fast] + labels: [performance, fast] params: initNodes: 500 initPods: 2000 @@ -581,8 +685,14 @@ podTemplatePath: config/templates/pod-default.yaml collectMetrics: true workloads: + - name: 5Nodes/2InitPods + labels: [integration-test, fast, short] + params: + initNodes: 5 + initPods: 2 + measurePods: 10 - name: 500Nodes/200InitPods - labels: [fast] + labels: [integration-test, fast] params: initNodes: 500 initPods: 200 @@ -622,6 +732,11 @@ podTemplatePath: config/templates//pod-default.yaml collectMetrics: true workloads: + - name: 10Nodes + labels: [integration-test, fast] + params: + initNodes: 10 + measurePods: 100 - name: 1000Nodes labels: [integration-test, fast] params: @@ -662,14 +777,22 @@ collectMetrics: true namespace: measure-ns-0 workloads: + - name: 10Nodes + labels: [integration-test, fast] + params: + initNodes: 10 + initPodsPerNamespace: 2 + initNamespaces: 2 + measurePods: 6 - name: 500Nodes - labels: [fast] + labels: [performance, fast] params: initNodes: 500 initPodsPerNamespace: 4 initNamespaces: 10 measurePods: 100 - name: 5000Nodes + labels: [performance] params: initNodes: 5000 initPodsPerNamespace: 40 @@ -707,14 +830,22 @@ collectMetrics: true namespace: measure-ns-0 workloads: + - name: 10Nodes + labels: [integration-test, fast] + params: + initNodes: 10 + initPodsPerNamespace: 2 + initNamespaces: 2 + measurePods: 10 - name: 500Nodes - labels: [fast] + labels: [performance, fast] params: initNodes: 500 initPodsPerNamespace: 4 initNamespaces: 10 measurePods: 100 - name: 5000Nodes + labels: [performance] params: initNodes: 5000 initPodsPerNamespace: 40 @@ -755,14 +886,22 @@ collectMetrics: true namespace: measure-ns-0 workloads: + - name: 10Nodes + labels: [integration-test, fast] + params: + initNodes: 10 + initPodsPerNamespace: 2 + initNamespaces: 2 + measurePods: 10 - name: 500Nodes - labels: [fast] + labels: [performance, fast] params: initNodes: 500 initPodsPerNamespace: 4 initNamespaces: 10 measurePods: 100 - name: 5000Nodes + labels: [performance] params: initNodes: 5000 initPodsPerNamespace: 50 @@ -800,14 +939,22 @@ collectMetrics: true namespace: measure-ns-0 workloads: + - name: 10Nodes + labels: [integration-test, fast] + params: + initNodes: 10 + initPodsPerNamespace: 2 + initNamespaces: 2 + measurePods: 10 - name: 500Nodes - labels: [fast] + labels: [performance, fast] params: initNodes: 500 initPodsPerNamespace: 4 initNamespaces: 10 measurePods: 100 - name: 5000Nodes + labels: [performance] params: initNodes: 5000 initPodsPerNamespace: 50 @@ -835,8 +982,14 @@ countParam: $measurePods collectMetrics: true workloads: + - name: 5Nodes + labels: [integration-test, fast] + params: + taintNodes: 1 + normalNodes: 4 + measurePods: 4 - name: 500Nodes - labels: [fast] + labels: [integration-test, fast] params: taintNodes: 100 normalNodes: 400 @@ -1028,7 +1181,7 @@ collectMetrics: true workloads: - name: fast - labels: [integration-test, fast] + labels: [integration-test, fast, short] params: # This testcase runs through all code paths without # taking too long overall. @@ -1165,7 +1318,13 @@ countParam: $measurePods collectMetrics: true workloads: - - name: 1Node + - name: 1Node_10GatedPods + labels: [integration-test, fast] + params: + gatedPods: 10 + deletingPods: 100 + measurePods: 100 + - name: 1Node_10000GatedPods labels: [performance, fast] params: gatedPods: 10000 @@ -1192,7 +1351,12 @@ countParam: $measurePods collectMetrics: true workloads: - - name: 1000Node + - name: 1Node_10GatedPods + labels: [integration-test, fast] + params: + gatedPods: 10 + measurePods: 10 + - name: 1Node_10000GatedPods labels: [performance, fast] params: gatedPods: 10000 diff --git a/test/integration/scheduler_perf/scheduler_test.go b/test/integration/scheduler_perf/scheduler_test.go index a0beb47a39f..fc1dd5cb89e 100644 --- a/test/integration/scheduler_perf/scheduler_test.go +++ b/test/integration/scheduler_perf/scheduler_test.go @@ -29,6 +29,10 @@ func TestScheduling(t *testing.T) { t.Fatal(err) } + if testing.Short() { + *testSchedulingLabelFilter += ",+short" + } + for _, tc := range testCases { t.Run(tc.Name, func(t *testing.T) { for _, w := range tc.Workloads {