aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/bisect/bisect_test.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-12-02 16:28:50 +0100
committerAleksandr Nogikh <nogikh@google.com>2024-12-03 09:29:37 +0000
commitdb79ee42aa4ce246143fd292e083ad85441de20d (patch)
tree8ef94927e33c3d38aeed15e876375e6d2b476a64 /pkg/bisect/bisect_test.go
parent0706496528cdecd6a01ca847e3deb0a223c425d8 (diff)
pkg/bisect: ignore irrelevant lost connection crashes
These have been the cause of too many invalid bisection results recently. This is the first step towards the more universal approach of #5414.
Diffstat (limited to 'pkg/bisect/bisect_test.go')
-rw-r--r--pkg/bisect/bisect_test.go42
1 files changed, 31 insertions, 11 deletions
diff --git a/pkg/bisect/bisect_test.go b/pkg/bisect/bisect_test.go
index 959d6640a..7d251c9e7 100644
--- a/pkg/bisect/bisect_test.go
+++ b/pkg/bisect/bisect_test.go
@@ -116,18 +116,27 @@ func (env *testEnv) Test(numVMs int, reproSyz, reproOpts, reproC []byte) ([]inst
}
return ret, nil
}
- ret = make([]instance.EnvTestResult, numVMs-1)
+ ret = make([]instance.EnvTestResult, numVMs)
if env.test.injectSyzFailure {
- ret = append(ret, instance.EnvTestResult{
- Error: &instance.TestError{
+ ret[0] = instance.EnvTestResult{
+ Error: &instance.CrashError{
Report: &report.Report{
Title: "SYZFATAL: test",
Type: crash.SyzFailure,
},
},
- })
- } else {
- ret = append(ret, instance.EnvTestResult{})
+ }
+ } else if env.test.injectLostConnection {
+ for i := 0; i < numVMs/3; i++ {
+ ret[i] = instance.EnvTestResult{
+ Error: &instance.CrashError{
+ Report: &report.Report{
+ Title: "lost connection to test machine",
+ Type: crash.LostConnection,
+ },
+ },
+ }
+ }
}
return ret, nil
}
@@ -312,11 +321,12 @@ type BisectionTest struct {
expectErr bool
expectErrType any
// Expect res.Report != nil.
- expectRep bool
- noopChange bool
- isRelease bool
- flaky bool
- injectSyzFailure bool
+ expectRep bool
+ noopChange bool
+ isRelease bool
+ flaky bool
+ injectSyzFailure bool
+ injectLostConnection bool
// Expected number of returned commits for inconclusive bisection.
commitLen int
// For cause bisection: Oldest commit returned by bisection.
@@ -496,6 +506,16 @@ var bisectionTests = []BisectionTest{
fixCommit: "500",
isRelease: true,
},
+ // Tests that bisection returns the correct fix commit despite `lost connection to test machine`.
+ {
+ name: "fix-finds-fix-despite-lost-connection",
+ fix: true,
+ startCommit: 400,
+ injectLostConnection: true,
+ commitLen: 1,
+ fixCommit: "500",
+ isRelease: true,
+ },
// Tests that bisection returns the correct fix commit in case of SYZFATAL.
{
name: "fix-finds-fix-for-syzfatal",