Skip to content

Commit

Permalink
topsql: make unit test stable (#32463)
Browse files Browse the repository at this point in the history
close #32461
  • Loading branch information
crazycs520 authored Feb 21, 2022
1 parent 5233d2e commit 2ede6a3
Showing 1 changed file with 26 additions and 21 deletions.
47 changes: 26 additions & 21 deletions util/topsql/topsql_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,6 @@ func TestTopSQLReporter(t *testing.T) {
defer wg.Wait()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

sqlMap := make(map[string]string)
sql2plan := make(map[string]string)
recordsCnt := server.RecordsCnt()
Expand All @@ -144,29 +143,35 @@ func TestTopSQLReporter(t *testing.T) {
}
})
}
server.WaitCollectCnt(recordsCnt, 1, time.Second*5)
records := server.GetLatestRecords()
checkSQLPlanMap := map[string]struct{}{}
for _, req := range records {
require.Greater(t, len(req.Items), 0)
require.Greater(t, req.Items[0].CpuTimeMs, uint32(0))
sqlMeta, exist := server.GetSQLMetaByDigestBlocking(req.SqlDigest, time.Second)
require.True(t, exist)
expectedNormalizedSQL, exist := sqlMap[string(req.SqlDigest)]
require.True(t, exist)
require.Equal(t, expectedNormalizedSQL, sqlMeta.NormalizedSql)

expectedNormalizedPlan := sql2plan[expectedNormalizedSQL]
if expectedNormalizedPlan == "" || len(req.PlanDigest) == 0 {
require.Len(t, req.PlanDigest, 0)
continue
for retry := 0; retry < 5; retry++ {
server.WaitCollectCnt(recordsCnt, 1, time.Second*5)
records := server.GetLatestRecords()
for _, req := range records {
require.Greater(t, len(req.Items), 0)
require.Greater(t, req.Items[0].CpuTimeMs, uint32(0))
sqlMeta, exist := server.GetSQLMetaByDigestBlocking(req.SqlDigest, time.Second)
require.True(t, exist)
expectedNormalizedSQL, exist := sqlMap[string(req.SqlDigest)]
require.True(t, exist)
require.Equal(t, expectedNormalizedSQL, sqlMeta.NormalizedSql)

expectedNormalizedPlan := sql2plan[expectedNormalizedSQL]
if expectedNormalizedPlan == "" || len(req.PlanDigest) == 0 {
require.Len(t, req.PlanDigest, 0)
checkSQLPlanMap[expectedNormalizedSQL] = struct{}{}
continue
}
normalizedPlan, exist := server.GetPlanMetaByDigestBlocking(req.PlanDigest, time.Second)
require.True(t, exist)
require.Equal(t, expectedNormalizedPlan, normalizedPlan)
checkSQLPlanMap[expectedNormalizedSQL] = struct{}{}
}
if len(checkSQLPlanMap) == len(reqs) {
break
}
normalizedPlan, exist := server.GetPlanMetaByDigestBlocking(req.PlanDigest, time.Second)
require.True(t, exist)
require.Equal(t, expectedNormalizedPlan, normalizedPlan)
checkSQLPlanMap[expectedNormalizedSQL] = struct{}{}
}
require.Equal(t, 2, len(checkSQLPlanMap))
require.Equal(t, len(reqs), len(checkSQLPlanMap))
}

func TestMaxSQLAndPlanTest(t *testing.T) {
Expand Down

0 comments on commit 2ede6a3

Please sign in to comment.