aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-07-01 17:41:15 +0200
committerDmitry Vyukov <dvyukov@google.com>2020-07-02 10:56:05 +0200
commit39ffeee9d8f9f2d27899311d06591a7ffaba3b26 (patch)
tree00980993d555840f2221a3e5e43a498285d4ac92 /pkg
parent85317734479539f614252c79b1e5c1445eedf8a7 (diff)
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.
Diffstat (limited to 'pkg')
-rw-r--r--pkg/bisect/bisect_test.go15
-rw-r--r--pkg/vcs/testos.go10
2 files changed, 20 insertions, 5 deletions
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
@@ -183,6 +183,15 @@ var bisectionTests = []BisectionTest{
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,
commitLen: 1,
@@ -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
}