From 39ffeee9d8f9f2d27899311d06591a7ffaba3b26 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 1 Jul 2020 17:41:15 +0200 Subject: pkg/bisect: improve config minimization tests Change a test to actually produce a new config as it is supposed to do during config minimization and check the resulting config. Add a regression test for the bug where we committed a broken config. --- pkg/bisect/bisect_test.go | 15 ++++++++++++--- pkg/vcs/testos.go | 10 ++++++++-- 2 files changed, 20 insertions(+), 5 deletions(-) (limited to 'pkg') diff --git a/pkg/bisect/bisect_test.go b/pkg/bisect/bisect_test.go index 32d11af13..6815c1ab8 100644 --- a/pkg/bisect/bisect_test.go +++ b/pkg/bisect/bisect_test.go @@ -39,7 +39,7 @@ func (env *testEnv) BuildKernel(compilerBin, userspaceDir, cmdlineFile, sysctlFi kernelSign = "same-sign" } env.config = string(kernelConfig) - if env.config == "baseline-fails" { + if env.config == "baseline-fails" || env.config == "broken-build" { return "", kernelSign, fmt.Errorf("Failure") } return "", kernelSign, nil @@ -51,7 +51,7 @@ func (env *testEnv) Test(numVMs int, reproSyz, reproOpts, reproC []byte) ([]erro env.config == "baseline-skip" { return nil, fmt.Errorf("broken build") } - if (env.config == "baseline-repro" || env.config == "original config") && + if (env.config == "baseline-repro" || env.config == "new-minimized-config" || env.config == "original config") && (!env.test.fix && commit >= env.test.culprit || env.test.fix && commit < env.test.culprit) { return crashErrors(numVMs, "crash occurs"), nil @@ -182,6 +182,15 @@ var bisectionTests = []BisectionTest{ baselineConfig: "baseline-repro", resultingConfig: "baseline-repro", }, + { + name: "cause-finds-cause-baseline-broken-build", + startCommit: 905, + commitLen: 1, + expectRep: true, + culprit: 602, + baselineConfig: "baseline-broken-build", + resultingConfig: "original config", + }, { name: "cause-finds-cause-baseline-does-not-repro", startCommit: 905, @@ -216,7 +225,7 @@ var bisectionTests = []BisectionTest{ expectRep: true, culprit: 602, baselineConfig: "minimize-succeeds", - resultingConfig: "original config", + resultingConfig: "new-minimized-config", }, { name: "cause-finds-cause-minimize-fails", diff --git a/pkg/vcs/testos.go b/pkg/vcs/testos.go index c8746a684..ea369f529 100644 --- a/pkg/vcs/testos.go +++ b/pkg/vcs/testos.go @@ -30,8 +30,14 @@ func (ctx *testos) EnvForCommit(binDir, commit string, kernelConfig []byte) (*Bi func (ctx *testos) Minimize(original, baseline []byte, trace io.Writer, pred func(test []byte) (BisectResult, error)) ([]byte, error) { - if string(baseline) == "minimize-fails" { + switch string(baseline) { + case "minimize-fails": return nil, fmt.Errorf("minimization failure") + case "minimize-succeeds": + return []byte("new-minimized-config"), nil + case "baseline-broken-build": + return []byte("broken-build"), nil + default: + return original, nil } - return original, nil } -- cgit mrf-deployment