From 2ede6a35b83832b149ba5ce026680a18e9518ee7 Mon Sep 17 00:00:00 2001 From: crazycs Date: Mon, 21 Feb 2022 15:37:42 +0800 Subject: [PATCH] topsql: make unit test stable (#32463) close pingcap/tidb#32461 --- util/topsql/topsql_test.go | 47 +++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/util/topsql/topsql_test.go b/util/topsql/topsql_test.go index c19c48eb77eac..401ae47820ed8 100644 --- a/util/topsql/topsql_test.go +++ b/util/topsql/topsql_test.go @@ -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() @@ -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) {