mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-16 15:20:17 +00:00
scheduler_perf: simplify flags, fix output
The "disabled by label filter" message for benchmarks printed the pointer to the filter string, not the filter string itself. This mistake gets avoided and the code becomes simpler when not using pointers.
This commit is contained in:
parent
cf480a3a1a
commit
369a18a3a1
@ -207,9 +207,9 @@ var (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
var UseTestingLog *bool
|
var UseTestingLog bool
|
||||||
var PerfSchedulingLabelFilter *string
|
var PerfSchedulingLabelFilter string
|
||||||
var TestSchedulingLabelFilter *string
|
var TestSchedulingLabelFilter string
|
||||||
|
|
||||||
// InitTests should be called in a TestMain in each config subdirectory.
|
// InitTests should be called in a TestMain in each config subdirectory.
|
||||||
func InitTests() error {
|
func InitTests() error {
|
||||||
@ -235,9 +235,9 @@ func InitTests() error {
|
|||||||
"A set of key=value pairs that describe feature gates for alpha/experimental features. "+
|
"A set of key=value pairs that describe feature gates for alpha/experimental features. "+
|
||||||
"Options are:\n"+strings.Join(LoggingFeatureGate.KnownFeatures(), "\n"))
|
"Options are:\n"+strings.Join(LoggingFeatureGate.KnownFeatures(), "\n"))
|
||||||
|
|
||||||
UseTestingLog = flag.Bool("use-testing-log", false, "Write log entries with testing.TB.Log. This is more suitable for unit testing and debugging, but less realistic in real benchmarks.")
|
flag.BoolVar(&UseTestingLog, "use-testing-log", false, "Write log entries with testing.TB.Log. This is more suitable for unit testing and debugging, but less realistic in real benchmarks.")
|
||||||
PerfSchedulingLabelFilter = flag.String("perf-scheduling-label-filter", "performance", "comma-separated list of labels which a testcase must have (no prefix or +) or must not have (-), used by BenchmarkPerfScheduling")
|
flag.StringVar(&PerfSchedulingLabelFilter, "perf-scheduling-label-filter", "performance", "comma-separated list of labels which a testcase must have (no prefix or +) or must not have (-), used by BenchmarkPerfScheduling")
|
||||||
TestSchedulingLabelFilter = flag.String("test-scheduling-label-filter", "integration-test,-performance", "comma-separated list of labels which a testcase must have (no prefix or +) or must not have (-), used by TestScheduling")
|
flag.StringVar(&TestSchedulingLabelFilter, "test-scheduling-label-filter", "integration-test,-performance", "comma-separated list of labels which a testcase must have (no prefix or +) or must not have (-), used by TestScheduling")
|
||||||
|
|
||||||
// This would fail if we hadn't removed the logging flags above.
|
// This would fail if we hadn't removed the logging flags above.
|
||||||
logsapi.AddGoFlags(LoggingConfig, flag.CommandLine)
|
logsapi.AddGoFlags(LoggingConfig, flag.CommandLine)
|
||||||
@ -988,7 +988,7 @@ func (scm stopCollectingMetricsOp) patchParams(_ *workload) (realOp, error) {
|
|||||||
|
|
||||||
func initTestOutput(tb testing.TB) io.Writer {
|
func initTestOutput(tb testing.TB) io.Writer {
|
||||||
var output io.Writer
|
var output io.Writer
|
||||||
if *UseTestingLog {
|
if UseTestingLog {
|
||||||
output = framework.NewTBWriter(tb)
|
output = framework.NewTBWriter(tb)
|
||||||
} else {
|
} else {
|
||||||
tmpDir := tb.TempDir()
|
tmpDir := tb.TempDir()
|
||||||
@ -1020,9 +1020,9 @@ func initTestOutput(tb testing.TB) io.Writer {
|
|||||||
var specialFilenameChars = regexp.MustCompile(`[^a-zA-Z0-9-_]`)
|
var specialFilenameChars = regexp.MustCompile(`[^a-zA-Z0-9-_]`)
|
||||||
|
|
||||||
func setupTestCase(t testing.TB, tc *testCase, featureGates map[featuregate.Feature]bool, output io.Writer, outOfTreePluginRegistry frameworkruntime.Registry) (informers.SharedInformerFactory, ktesting.TContext) {
|
func setupTestCase(t testing.TB, tc *testCase, featureGates map[featuregate.Feature]bool, output io.Writer, outOfTreePluginRegistry frameworkruntime.Registry) (informers.SharedInformerFactory, ktesting.TContext) {
|
||||||
tCtx := ktesting.Init(t, initoption.PerTestOutput(*UseTestingLog))
|
tCtx := ktesting.Init(t, initoption.PerTestOutput(UseTestingLog))
|
||||||
artifacts, doArtifacts := os.LookupEnv("ARTIFACTS")
|
artifacts, doArtifacts := os.LookupEnv("ARTIFACTS")
|
||||||
if !*UseTestingLog && doArtifacts {
|
if !UseTestingLog && doArtifacts {
|
||||||
// Reconfigure logging so that it goes to a separate file per
|
// Reconfigure logging so that it goes to a separate file per
|
||||||
// test instead of stderr. If the test passes, the file gets
|
// test instead of stderr. If the test passes, the file gets
|
||||||
// deleted. The overall output can be very large (> 200 MB for
|
// deleted. The overall output can be very large (> 200 MB for
|
||||||
@ -1130,9 +1130,9 @@ func RunBenchmarkPerfScheduling(b *testing.B, configFile string, topicName strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
*PerfSchedulingLabelFilter += ",+short"
|
PerfSchedulingLabelFilter += ",+short"
|
||||||
}
|
}
|
||||||
testcaseLabelSelectors := strings.Split(*PerfSchedulingLabelFilter, ",")
|
testcaseLabelSelectors := strings.Split(PerfSchedulingLabelFilter, ",")
|
||||||
|
|
||||||
output := initTestOutput(b)
|
output := initTestOutput(b)
|
||||||
|
|
||||||
@ -1150,7 +1150,7 @@ func RunBenchmarkPerfScheduling(b *testing.B, configFile string, topicName strin
|
|||||||
for _, w := range tc.Workloads {
|
for _, w := range tc.Workloads {
|
||||||
b.Run(w.Name, func(b *testing.B) {
|
b.Run(w.Name, func(b *testing.B) {
|
||||||
if !enabled(testcaseLabelSelectors, append(tc.Labels, w.Labels...)...) {
|
if !enabled(testcaseLabelSelectors, append(tc.Labels, w.Labels...)...) {
|
||||||
b.Skipf("disabled by label filter %v", PerfSchedulingLabelFilter)
|
b.Skipf("disabled by label filter %q", PerfSchedulingLabelFilter)
|
||||||
}
|
}
|
||||||
|
|
||||||
featureGates := featureGatesMerge(tc.FeatureGates, w.FeatureGates)
|
featureGates := featureGatesMerge(tc.FeatureGates, w.FeatureGates)
|
||||||
@ -1244,16 +1244,16 @@ func RunIntegrationPerfScheduling(t *testing.T, configFile string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
*TestSchedulingLabelFilter += ",+short"
|
TestSchedulingLabelFilter += ",+short"
|
||||||
}
|
}
|
||||||
testcaseLabelSelectors := strings.Split(*TestSchedulingLabelFilter, ",")
|
testcaseLabelSelectors := strings.Split(TestSchedulingLabelFilter, ",")
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
t.Run(tc.Name, func(t *testing.T) {
|
t.Run(tc.Name, func(t *testing.T) {
|
||||||
for _, w := range tc.Workloads {
|
for _, w := range tc.Workloads {
|
||||||
t.Run(w.Name, func(t *testing.T) {
|
t.Run(w.Name, func(t *testing.T) {
|
||||||
if !enabled(testcaseLabelSelectors, append(tc.Labels, w.Labels...)...) {
|
if !enabled(testcaseLabelSelectors, append(tc.Labels, w.Labels...)...) {
|
||||||
t.Skipf("disabled by label filter %q", *TestSchedulingLabelFilter)
|
t.Skipf("disabled by label filter %q", TestSchedulingLabelFilter)
|
||||||
}
|
}
|
||||||
featureGates := featureGatesMerge(tc.FeatureGates, w.FeatureGates)
|
featureGates := featureGatesMerge(tc.FeatureGates, w.FeatureGates)
|
||||||
informerFactory, tCtx := setupTestCase(t, tc, featureGates, nil, nil)
|
informerFactory, tCtx := setupTestCase(t, tc, featureGates, nil, nil)
|
||||||
|
Loading…
Reference in New Issue
Block a user