(t *testing.T)
| 13 | ) |
| 14 | |
| 15 | func TestSyncSchema(t *testing.T) { |
| 16 | databaseName := "sync_schema" |
| 17 | newDatabaseName := "sync_schema_new" |
| 18 | const ( |
| 19 | createSchema = ` |
| 20 | create schema schema_a; |
| 21 | create table schema_a.table_t1(c1 int, c2 int, c3 int); |
| 22 | create index idx_table_t1_c1_c2_c3 on schema_a.table_t1(c1, c2, c3); |
| 23 | create sequence schema_a.sequence_s1; |
| 24 | alter sequence schema_a.sequence_s1 owned by schema_a.table_t1.c1; |
| 25 | alter table schema_a.table_t1 alter column c1 set default nextval('schema_a.sequence_s1'::regclass); |
| 26 | ` |
| 27 | ) |
| 28 | |
| 29 | t.Parallel() |
| 30 | a := require.New(t) |
| 31 | ctx := context.Background() |
| 32 | ctl := &controller{} |
| 33 | ctx, err := ctl.StartServerWithExternalPg(ctx) |
| 34 | a.NoError(err) |
| 35 | defer ctl.Close(ctx) |
| 36 | |
| 37 | pgContainer, err := getPgContainer(ctx) |
| 38 | defer func() { |
| 39 | pgContainer.Close(ctx) |
| 40 | }() |
| 41 | a.NoError(err) |
| 42 | |
| 43 | pgDB := pgContainer.db |
| 44 | err = pgDB.Ping() |
| 45 | a.NoError(err) |
| 46 | |
| 47 | _, err = pgDB.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %v", databaseName)) |
| 48 | a.NoError(err) |
| 49 | _, err = pgDB.Exec("CREATE USER bytebase WITH ENCRYPTED PASSWORD 'bytebase'") |
| 50 | a.NoError(err) |
| 51 | _, err = pgDB.Exec("ALTER USER bytebase WITH SUPERUSER") |
| 52 | a.NoError(err) |
| 53 | |
| 54 | instanceResp, err := ctl.instanceServiceClient.CreateInstance(ctx, connect.NewRequest(&v1pb.CreateInstanceRequest{ |
| 55 | InstanceId: generateRandomString("instance"), |
| 56 | Instance: &v1pb.Instance{ |
| 57 | Title: "pgTestSyncSchema", |
| 58 | Engine: v1pb.Engine_POSTGRES, |
| 59 | Environment: new("environments/prod"), |
| 60 | Activation: true, |
| 61 | DataSources: []*v1pb.DataSource{{Type: v1pb.DataSourceType_ADMIN, Host: pgContainer.host, Port: pgContainer.port, Username: "bytebase", Password: "bytebase", Id: "admin"}}, |
| 62 | }, |
| 63 | })) |
| 64 | a.NoError(err) |
| 65 | instance := instanceResp.Msg |
| 66 | |
| 67 | err = ctl.createDatabase(ctx, ctl.project, instance, nil /* environment */, databaseName, "bytebase") |
| 68 | a.NoError(err) |
| 69 | |
| 70 | databaseResp, err := ctl.databaseServiceClient.GetDatabase(ctx, connect.NewRequest(&v1pb.GetDatabaseRequest{ |
| 71 | Name: fmt.Sprintf("%s/databases/%s", instance.Name, databaseName), |
| 72 | })) |
nothing calls this directly
no test coverage detected