From 0583e841d4183af87fee7fcc6a2e84ee03d8a20a Mon Sep 17 00:00:00 2001 From: CbcWestwolf <1004626265@qq.com> Date: Tue, 3 Sep 2024 15:17:47 +0800 Subject: [PATCH] test: make `TestMergeCreateTableJobs` stable (#55774) close pingcap/tidb#55753 --- pkg/ddl/executor_nokit_test.go | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/pkg/ddl/executor_nokit_test.go b/pkg/ddl/executor_nokit_test.go index e683e286f0..b6cff86b8b 100644 --- a/pkg/ddl/executor_nokit_test.go +++ b/pkg/ddl/executor_nokit_test.go @@ -17,6 +17,7 @@ package ddl import ( "fmt" "slices" + "strings" "testing" "github.com/pingcap/tidb/pkg/parser/model" @@ -108,6 +109,12 @@ func TestMergeCreateTableJobs(t *testing.T) { newWs, err := mergeCreateTableJobs(jobWs) require.NoError(t, err) require.Len(t, newWs, 2) + slices.SortFunc(newWs, func(a, b *JobWrapper) int { + if a.Type != b.Type { + return int(a.Type - b.Type) + } + return 0 + }) require.Equal(t, model.ActionAddColumn, newWs[0].Type) require.Equal(t, model.ActionCreateTables, newWs[1].Type) }) @@ -120,6 +127,12 @@ func TestMergeCreateTableJobs(t *testing.T) { Args: []any{&model.TableInfo{Name: model.NewCIStr("t2")}, false}}}, } newWs, err := mergeCreateTableJobs(jobWs) + slices.SortFunc(newWs, func(a, b *JobWrapper) int { + if aName, bName := a.Args[0].(*model.TableInfo).Name.L, b.Args[0].(*model.TableInfo).Name.L; aName != bName { + return strings.Compare(aName, bName) + } + return 0 + }) require.NoError(t, err) require.EqualValues(t, jobWs, newWs) }) @@ -132,6 +145,12 @@ func TestMergeCreateTableJobs(t *testing.T) { Args: []any{&model.TableInfo{Name: model.NewCIStr("t2")}, false}}}, } newWs, err := mergeCreateTableJobs(jobWs) + slices.SortFunc(newWs, func(a, b *JobWrapper) int { + if aName, bName := a.Args[0].(*model.TableInfo).Name.L, b.Args[0].(*model.TableInfo).Name.L; aName != bName { + return strings.Compare(aName, bName) + } + return 0 + }) require.NoError(t, err) require.EqualValues(t, jobWs, newWs) }) @@ -144,6 +163,12 @@ func TestMergeCreateTableJobs(t *testing.T) { Args: []any{&model.TableInfo{Name: model.NewCIStr("t2")}, false}}}, } newWs, err := mergeCreateTableJobs(jobWs) + slices.SortFunc(newWs, func(a, b *JobWrapper) int { + if aName, bName := a.SchemaName, b.SchemaName; aName != bName { + return strings.Compare(aName, bName) + } + return 0 + }) require.NoError(t, err) require.EqualValues(t, jobWs, newWs) }) @@ -167,6 +192,21 @@ func TestMergeCreateTableJobs(t *testing.T) { jobWs = append(jobWs, NewJobWrapper(&model.Job{SchemaName: "dbxxx", Type: model.ActionCreateTable, Args: []any{&model.TableInfo{ForeignKeys: []*model.FKInfo{{}}}, false}}, false)) newWs, err := mergeCreateTableJobs(jobWs) + slices.SortFunc(newWs, func(a, b *JobWrapper) int { + if a.Type != b.Type { + return int(b.Type - a.Type) + } + if aName, bName := a.SchemaName, b.SchemaName; aName != bName { + return strings.Compare(aName, bName) + } + aTableInfo, aOK := a.Args[0].(*model.TableInfo) + bTableInfo, bOK := b.Args[0].(*model.TableInfo) + if aOK && bOK && aTableInfo.Name.L != bTableInfo.Name.L { + return strings.Compare(aTableInfo.Name.L, bTableInfo.Name.L) + } + + return 0 + }) require.NoError(t, err) // 3 non-mergeable + 2 + 1 + 3 require.Len(t, newWs, 9)