MCPcopy
hub / github.com/pingcap/tidb / TestCreateTables

Function TestCreateTables

br/pkg/restore/snap_client/client_test.go:54–111  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

52var mc *mock.Cluster
53
54func TestCreateTables(t *testing.T) {
55 m := mc
56 g := gluetidb.New()
57 client := snapclient.NewRestoreClient(m.PDClient, m.PDHTTPCli, nil, split.DefaultTestKeepaliveCfg)
58 err := client.InitConnections(g, m.Storage)
59 require.NoError(t, err)
60
61 info, err := m.Domain.GetSnapshotInfoSchema(math.MaxUint64)
62 require.NoError(t, err)
63 dbSchema, isExist := info.SchemaByName(pmodel.NewCIStr("test"))
64 require.True(t, isExist)
65
66 client.SetBatchDdlSize(1)
67 tables := make([]*metautil.Table, 4)
68 intField := types.NewFieldType(mysql.TypeLong)
69 intField.SetCharset("binary")
70 for i := len(tables) - 1; i >= 0; i-- {
71 tables[i] = &metautil.Table{
72 DB: dbSchema,
73 Info: &model.TableInfo{
74 ID: int64(i),
75 Name: pmodel.NewCIStr("test" + strconv.Itoa(i)),
76 Columns: []*model.ColumnInfo{{
77 ID: 1,
78 Name: pmodel.NewCIStr("id"),
79 FieldType: *intField,
80 State: model.StatePublic,
81 }},
82 Charset: "utf8mb4",
83 Collate: "utf8mb4_bin",
84 },
85 }
86 }
87 rules, newTables, err := client.CreateTablesTest(m.Domain, tables, 0)
88 require.NoError(t, err)
89 // make sure tables and newTables have same order
90 for i, tbl := range tables {
91 require.Equal(t, tbl.Info.Name, newTables[i].Name)
92 }
93 for _, nt := range newTables {
94 require.Regexp(t, "test[0-3]", nt.Name.String())
95 }
96 oldTableIDExist := make(map[int64]bool)
97 newTableIDExist := make(map[int64]bool)
98 for _, tr := range rules.Data {
99 oldTableID := tablecodec.DecodeTableID(tr.GetOldKeyPrefix())
100 require.False(t, oldTableIDExist[oldTableID], "table rule duplicate old table id")
101 oldTableIDExist[oldTableID] = true
102
103 newTableID := tablecodec.DecodeTableID(tr.GetNewKeyPrefix())
104 require.False(t, newTableIDExist[newTableID], "table rule duplicate new table id")
105 newTableIDExist[newTableID] = true
106 }
107
108 for i := 0; i < len(tables); i++ {
109 require.True(t, oldTableIDExist[int64(i)], "table rule does not exist")
110 }
111}

Callers

nothing calls this directly

Calls 11

SetCharsetMethod · 0.95
NewFunction · 0.92
NewFieldTypeFunction · 0.92
DecodeTableIDFunction · 0.92
InitConnectionsMethod · 0.80
GetSnapshotInfoSchemaMethod · 0.80
SetBatchDdlSizeMethod · 0.80
CreateTablesTestMethod · 0.80
SchemaByNameMethod · 0.65
EqualMethod · 0.65
StringMethod · 0.65

Tested by

no test coverage detected