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

Function TestGhostSchemaUpdate

backend/tests/ghost_test.go:40–167  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

38)
39
40func TestGhostSchemaUpdate(t *testing.T) {
41 const databaseName = "testGhostSchemaUpdate"
42
43 t.Parallel()
44 a := require.New(t)
45 ctx := context.Background()
46 ctl := &controller{}
47 ctx, err := ctl.StartServerWithExternalPg(ctx)
48 a.NoError(err)
49 defer ctl.Close(ctx)
50
51 mysqlContainer, err := getMySQLContainer(ctx)
52 defer func() {
53 mysqlContainer.Close(ctx)
54 }()
55 a.NoError(err)
56
57 mysqlDB := mysqlContainer.db
58
59 _, err = mysqlDB.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %v", databaseName))
60 a.NoError(err)
61
62 _, err = mysqlDB.Exec("DROP USER IF EXISTS bytebase")
63 a.NoError(err)
64 _, err = mysqlDB.Exec("CREATE USER 'bytebase' IDENTIFIED WITH mysql_native_password BY 'bytebase'")
65 a.NoError(err)
66
67 _, err = mysqlDB.Exec("GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, PROCESS, REFERENCES, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER, UPDATE, USAGE, REPLICATION CLIENT, REPLICATION SLAVE, LOCK TABLES, RELOAD ON *.* to bytebase")
68 a.NoError(err)
69
70 instanceResponse, err := ctl.instanceServiceClient.CreateInstance(ctx, connect.NewRequest(&v1pb.CreateInstanceRequest{
71 InstanceId: generateRandomString("instance"),
72 Instance: &v1pb.Instance{
73 Title: "mysqlInstance",
74 Engine: v1pb.Engine_MYSQL,
75 Environment: new("environments/prod"),
76 Activation: true,
77 DataSources: []*v1pb.DataSource{{Type: v1pb.DataSourceType_ADMIN, Host: mysqlContainer.host, Port: mysqlContainer.port, Username: "bytebase", Password: "bytebase", Id: "admin"}},
78 },
79 }))
80 a.NoError(err)
81 instance := instanceResponse.Msg
82
83 // Create backup database for MySQL.
84 backupDBName := common.BackupDatabaseNameOfEngine(storepb.Engine_MYSQL)
85 err = ctl.createDatabase(ctx, ctl.project, instance, nil /* environment */, backupDBName, "")
86 a.NoError(err)
87
88 err = ctl.createDatabase(ctx, ctl.project, instance, nil /* environment */, databaseName, "")
89 a.NoError(err)
90
91 databaseResponse, err := ctl.databaseServiceClient.GetDatabase(ctx, connect.NewRequest(&v1pb.GetDatabaseRequest{
92 Name: fmt.Sprintf("%s/databases/%s", instance.Name, databaseName),
93 }))
94 a.NoError(err)
95 database := databaseResponse.Msg
96
97 sheet1Response, err := ctl.sheetServiceClient.CreateSheet(ctx, connect.NewRequest(&v1pb.CreateSheetRequest{

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
createDatabaseMethod · 0.95
changeDatabaseMethod · 0.95
GetGhostMigrationMethod · 0.95
getMySQLContainerFunction · 0.85
generateRandomStringFunction · 0.85
CloseMethod · 0.65
CreateInstanceMethod · 0.65
GetDatabaseMethod · 0.65

Tested by

no test coverage detected