aboutsummaryrefslogtreecommitdiffstats
path: root/syz-verifier/main_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'syz-verifier/main_test.go')
-rw-r--r--syz-verifier/main_test.go78
1 files changed, 47 insertions, 31 deletions
diff --git a/syz-verifier/main_test.go b/syz-verifier/main_test.go
index 0eb502aeb..6bf7c3d7d 100644
--- a/syz-verifier/main_test.go
+++ b/syz-verifier/main_test.go
@@ -40,12 +40,12 @@ func TestNewProgram(t *testing.T) {
srv := createTestServer(t)
srv.pools = map[int]*poolInfo{
1: {
- vmRunners: map[int]runnerProgs{
+ runners: map[int]runnerProgs{
1: {1: {}},
},
progs: []*progInfo{{idx: 3}},
},
- 2: {vmRunners: map[int]runnerProgs{
+ 2: {runners: map[int]runnerProgs{
2: {1: {}}},
progs: []*progInfo{},
},
@@ -56,7 +56,7 @@ func TestNewProgram(t *testing.T) {
3: {idx: 3},
}
- _, gotProgIdx := srv.newProgram(test.pool, test.vm)
+ _, gotProgIdx, _ := srv.newProgram(test.pool, test.vm)
if gotProgIdx != test.retProgIdx {
t.Errorf("srv.newProgram returned idx: got %d, want %d", gotProgIdx, test.retProgIdx)
}
@@ -91,12 +91,17 @@ func TestNewResult(t *testing.T) {
srv.pools = map[int]*poolInfo{0: {}, 1: {}}
srv.progs = map[int]*progInfo{
1: {idx: 1,
- res: make([]*Result, 2),
+ res: func() [][]*Result {
+ res := make([][]*Result, 1)
+ res[0] = make([]*Result, 2)
+ return res
+ }(),
},
3: {idx: 3,
- res: func() []*Result {
- res := make([]*Result, 2)
- res[1] = &Result{Pool: 1}
+ res: func() [][]*Result {
+ res := make([][]*Result, 1)
+ res[0] = make([]*Result, 2)
+ res[0][1] = &Result{Pool: 1}
return res
}(),
received: 1,
@@ -114,7 +119,7 @@ func TestConnect(t *testing.T) {
srv := createTestServer(t)
srv.pools = map[int]*poolInfo{
1: {
- vmRunners: map[int]runnerProgs{
+ runners: map[int]runnerProgs{
0: {1: {idx: 1}},
},
progs: []*progInfo{{
@@ -134,7 +139,7 @@ func TestConnect(t *testing.T) {
want, got := map[int]runnerProgs{
0: {1: {idx: 1}},
1: {},
- }, srv.pools[a.Pool].vmRunners
+ }, srv.pools[a.Pool].runners
if diff := cmp.Diff(want, got, cmp.AllowUnexported(progInfo{})); diff != "" {
t.Errorf("srv.progs[a.Name] mismatch (-want +got):\n%s", diff)
}
@@ -282,8 +287,8 @@ func TestUpdateUnsupported(t *testing.T) {
func TestUpdateUnsupportedNotCalledTwice(t *testing.T) {
vrf := Verifier{
pools: map[int]*poolInfo{
- 0: {vmRunners: map[int]runnerProgs{0: nil, 1: nil}, checked: false},
- 1: {vmRunners: map[int]runnerProgs{}, checked: false},
+ 0: {runners: map[int]runnerProgs{0: nil, 1: nil}, checked: false},
+ 1: {runners: map[int]runnerProgs{}, checked: false},
},
}
srv, err := startRPCServer(&vrf)
@@ -307,8 +312,8 @@ func TestUpdateUnsupportedNotCalledTwice(t *testing.T) {
}
wantPools := map[int]*poolInfo{
- 0: {vmRunners: map[int]runnerProgs{0: nil, 1: nil}, checked: true},
- 1: {vmRunners: map[int]runnerProgs{}, checked: false},
+ 0: {runners: map[int]runnerProgs{0: nil, 1: nil}, checked: true},
+ 1: {runners: map[int]runnerProgs{}, checked: false},
}
if diff := cmp.Diff(wantPools, srv.pools, cmp.AllowUnexported(poolInfo{}, progInfo{})); diff != "" {
t.Errorf("srv.pools mismatch (-want +got):\n%s", diff)
@@ -332,7 +337,7 @@ func TestProcessResults(t *testing.T) {
wantExist: true,
wantStats: &Stats{
TotalMismatches: 1,
- Progs: 1,
+ TotalProgs: 1,
Calls: map[string]*CallStats{
"breaks_returns": makeCallStats("breaks_returns", 1, 0, map[ReturnState]bool{}),
"test$res0": makeCallStats("test$res0", 1, 1, map[ReturnState]bool{{Errno: 2}: true, {Errno: 5}: true}),
@@ -347,7 +352,7 @@ func TestProcessResults(t *testing.T) {
makeResult(1, []int{11, 33, 22}),
},
wantStats: &Stats{
- Progs: 1,
+ TotalProgs: 1,
Calls: map[string]*CallStats{
"breaks_returns": makeCallStats("breaks_returns", 1, 0, map[ReturnState]bool{}),
"minimize$0": makeCallStats("minimize$0", 1, 0, map[ReturnState]bool{}),
@@ -359,13 +364,20 @@ func TestProcessResults(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
prog := getTestProgram(t)
+ pi := &progInfo{
+ prog: prog,
+ res: func() [][]*Result {
+ res := make([][]*Result, 1)
+ res[0] = test.res
+ return res
+ }()}
vrf := Verifier{
resultsdir: makeTestResultDirectory(t),
stats: emptyTestStats(),
}
resultFile := filepath.Join(vrf.resultsdir, "result-0")
- vrf.processResults(test.res, prog)
+ vrf.processResults(pi)
if diff := cmp.Diff(test.wantStats, vrf.stats); diff != "" {
t.Errorf("vrf.stats mismatch (-want +got):\n%s", diff)
@@ -435,15 +447,16 @@ func TestCleanup(t *testing.T) {
4: {
idx: 4,
received: 0,
- res: func() []*Result {
- res := make([]*Result, 3)
+ res: func() [][]*Result {
+ res := make([][]*Result, 1)
+ res[0] = make([]*Result, 3)
return res
}(),
}},
wantProg: &progInfo{
idx: 4,
received: 1,
- res: []*Result{makeResultCrashed(0), nil, nil},
+ res: [][]*Result{{makeResultCrashed(0), nil, nil}},
},
wantStats: emptyTestStats(),
fileExists: false,
@@ -455,15 +468,16 @@ func TestCleanup(t *testing.T) {
idx: 4,
prog: prog,
received: 2,
- res: func() []*Result {
- res := make([]*Result, 3)
- res[1] = makeResultCrashed(1)
- res[2] = makeResultCrashed(2)
+ res: func() [][]*Result {
+ res := make([][]*Result, 1)
+ res[0] = make([]*Result, 3)
+ res[0][1] = makeResultCrashed(1)
+ res[0][2] = makeResultCrashed(2)
return res
}(),
}},
wantStats: &Stats{
- Progs: 1,
+ TotalProgs: 1,
Calls: map[string]*CallStats{
"breaks_returns": makeCallStats("breaks_returns", 1, 0, map[ReturnState]bool{}),
"minimize$0": makeCallStats("minimize$0", 1, 0, map[ReturnState]bool{}),
@@ -479,16 +493,18 @@ func TestCleanup(t *testing.T) {
idx: 4,
prog: prog,
received: 2,
- res: func() []*Result {
- res := make([]*Result, 3)
- res[1] = makeResult(1, []int{11, 33, 44})
- res[2] = makeResult(2, []int{11, 33, 22})
+ res: func() [][]*Result {
+ res := make([][]*Result, 1)
+ res[0] = make([]*Result, 3)
+ res[0][1] = makeResult(1, []int{11, 33, 44})
+ res[0][2] = makeResult(2, []int{11, 33, 22})
return res
}(),
}},
wantStats: &Stats{
- TotalMismatches: 3,
- Progs: 1,
+ TotalMismatches: 3,
+ TotalProgs: 1,
+ MismatchingProgs: 1,
Calls: map[string]*CallStats{
"breaks_returns": makeCallStats("breaks_returns", 1, 1,
map[ReturnState]bool{
@@ -513,7 +529,7 @@ func TestCleanup(t *testing.T) {
srv := createTestServer(t)
srv.progs = test.progs
srv.pools = map[int]*poolInfo{
- 0: {vmRunners: map[int]runnerProgs{
+ 0: {runners: map[int]runnerProgs{
0: {4: srv.progs[4]}},
}, 1: {}, 2: {}}
resultFile := filepath.Join(srv.vrf.resultsdir, "result-0")