Skip to content

Commit 84c1ffe

Browse files
committed
Improve fuzz test to skip non-deterministic query
Signed-off-by: SungJin1212 <[email protected]>
1 parent 71dccee commit 84c1ffe

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

integration/query_fuzz_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1346,6 +1346,7 @@ func runQueryFuzzTestCases(t *testing.T, ps *promqlsmith.PromQLSmith, c1, c2 *e2
13461346
expr parser.Expr
13471347
query string
13481348
)
1349+
runForNonDeterCheck := 3
13491350
for i := 0; i < run; i++ {
13501351
for {
13511352
expr = ps.WalkInstantQuery()
@@ -1354,6 +1355,30 @@ func runQueryFuzzTestCases(t *testing.T, ps *promqlsmith.PromQLSmith, c1, c2 *e2
13541355
break
13551356
}
13561357
}
1358+
1359+
nonDeterministicQuery := false
1360+
for i := 0; i < runForNonDeterCheck; i++ {
1361+
r1, err1 := c2.Query(query, queryTime)
1362+
r2, err2 := c2.Query(query, queryTime)
1363+
1364+
if err1 != nil || err2 != nil {
1365+
if !cmp.Equal(err1, err2) {
1366+
nonDeterministicQuery = true
1367+
break
1368+
}
1369+
}
1370+
1371+
if !cmp.Equal(r1, r2, comparer) {
1372+
nonDeterministicQuery = true
1373+
break
1374+
}
1375+
}
1376+
1377+
if nonDeterministicQuery {
1378+
t.Logf("the instant query result is a non-deterministic for query (%s), skip", query)
1379+
continue
1380+
}
1381+
13571382
res1, err1 := c1.Query(query, queryTime)
13581383
res2, err2 := c2.Query(query, queryTime)
13591384
cases = append(cases, &testCase{
@@ -1374,6 +1399,30 @@ func runQueryFuzzTestCases(t *testing.T, ps *promqlsmith.PromQLSmith, c1, c2 *e2
13741399
break
13751400
}
13761401
}
1402+
1403+
nonDeterministicQuery := false
1404+
for i := 0; i < runForNonDeterCheck; i++ {
1405+
r1, err1 := c2.QueryRange(query, start, end, step)
1406+
r2, err2 := c2.QueryRange(query, start, end, step)
1407+
1408+
if err1 != nil || err2 != nil {
1409+
if !cmp.Equal(err1, err2) {
1410+
nonDeterministicQuery = true
1411+
break
1412+
}
1413+
}
1414+
1415+
if !cmp.Equal(r1, r2, comparer) {
1416+
nonDeterministicQuery = true
1417+
break
1418+
}
1419+
}
1420+
1421+
if nonDeterministicQuery {
1422+
t.Logf("the range query result is a non-deterministic for query (%s), skip", query)
1423+
continue
1424+
}
1425+
13771426
res1, err1 := c1.QueryRange(query, start, end, step)
13781427
res2, err2 := c2.QueryRange(query, start, end, step)
13791428
cases = append(cases, &testCase{

0 commit comments

Comments
 (0)