MCPcopy Index your code
hub / github.com/bytebase/bytebase / TestSyncSchema

Function TestSyncSchema

backend/tests/sync_schema_test.go:15–123  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

13)
14
15func 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 }))

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
createDatabaseMethod · 0.95
changeDatabaseMethod · 0.95
getSchemaDiffMethod · 0.95
getPgContainerFunction · 0.85
generateRandomStringFunction · 0.85
CloseMethod · 0.65
PingMethod · 0.65
CreateInstanceMethod · 0.65
GetDatabaseMethod · 0.65
CreateSheetMethod · 0.65

Tested by

no test coverage detected