(t *testing.T)
| 52 | var mc *mock.Cluster |
| 53 | |
| 54 | func 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 | } |
nothing calls this directly
no test coverage detected