Skip to content
This repository has been archived by the owner on Oct 29, 2023. It is now read-only.

Commit

Permalink
Add connection_super_user files to each sandbox
Browse files Browse the repository at this point in the history
  • Loading branch information
datacharmer committed Aug 11, 2022
1 parent 351bf00 commit a3cc69e
Show file tree
Hide file tree
Showing 11 changed files with 130 additions and 91 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 1.68.0 12-Aug-2022

### NEW FEATURES

* Add file `connection_super_user.conf` and `connection_super_user.json` to each sandbox

## 1.67.0 10-Aug-2022

### Code improvements
Expand Down
2 changes: 1 addition & 1 deletion common/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.67.0
1.68.0
74 changes: 38 additions & 36 deletions globals/globals.go
Original file line number Diff line number Diff line change
Expand Up @@ -244,42 +244,44 @@ const (
ExportSupportedMysqlVersions = "supported-mysql-versions"

// Instantiated in sandbox package
AutoCnfName = "auto.cnf"
DataDirName = "data"
ScriptAddOption = "add_option"
ScriptClear = "clear"
ScriptGrantsMysql = "grants.mysql"
ScriptInitDb = "init_db"
ScriptAfterStart = "after_start"
ScriptLoadGrants = "load_grants"
ScriptMy = "my"
ScriptMySandboxCnf = "my.sandbox.cnf"
ScriptMysqlsh = "mysqlsh"
ScriptNoClear = "no_clear"
ScriptPostGrantsSql = "post_grants.sql"
ScriptPreGrantsSql = "pre_grants.sql"
ScriptRestart = "restart"
ScriptSbInclude = "sb_include"
ScriptSendKill = "send_kill"
ScriptShowBinlog = "show_binlog"
ScriptShowLog = "show_log"
ScriptShowRelayLog = "show_relaylog"
ScriptStart = "start"
ScriptStatus = "status"
ScriptStop = "stop"
ScriptTestSb = "test_sb"
ScriptUse = "use"
ScriptUseAdmin = "use_admin"
ScriptConnectionConf = "connection.conf"
ScriptConnectionSql = "connection.sql"
ScriptConnectionJson = "connection.json"
ScriptReplicateFrom = "replicate_from"
ScriptCloneConnectionSql = "clone_connection.sql"
ScriptCloneFrom = "clone_from"
ScriptMetadata = "metadata"
ScriptSysbench = "sysbench"
ScriptSysbenchReady = "sysbench_ready"
ScriptWipeAndRestart = "wipe_and_restart"
AutoCnfName = "auto.cnf"
DataDirName = "data"
ScriptAddOption = "add_option"
ScriptClear = "clear"
ScriptGrantsMysql = "grants.mysql"
ScriptInitDb = "init_db"
ScriptAfterStart = "after_start"
ScriptLoadGrants = "load_grants"
ScriptMy = "my"
ScriptMySandboxCnf = "my.sandbox.cnf"
ScriptMysqlsh = "mysqlsh"
ScriptNoClear = "no_clear"
ScriptPostGrantsSql = "post_grants.sql"
ScriptPreGrantsSql = "pre_grants.sql"
ScriptRestart = "restart"
ScriptSbInclude = "sb_include"
ScriptSendKill = "send_kill"
ScriptShowBinlog = "show_binlog"
ScriptShowLog = "show_log"
ScriptShowRelayLog = "show_relaylog"
ScriptStart = "start"
ScriptStatus = "status"
ScriptStop = "stop"
ScriptTestSb = "test_sb"
ScriptUse = "use"
ScriptUseAdmin = "use_admin"
ScriptConnectionConf = "connection.conf"
ScriptConnectionSuperConf = "connection_super_user.conf"
ScriptConnectionSql = "connection.sql"
ScriptConnectionJson = "connection.json"
ScriptConnectionSuperJson = "connection_super_user.json"
ScriptReplicateFrom = "replicate_from"
ScriptCloneConnectionSql = "clone_connection.sql"
ScriptCloneFrom = "clone_from"
ScriptMetadata = "metadata"
ScriptSysbench = "sysbench"
ScriptSysbenchReady = "sysbench_ready"
ScriptWipeAndRestart = "wipe_and_restart"

ScriptCheckMsNodes = "check_ms_nodes"
ScriptCheckNodes = "check_nodes"
Expand Down
88 changes: 45 additions & 43 deletions globals/template_names.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,49 +97,51 @@ const (
TmplTidbMock = "tidb_mock"

// single
TmplShowBinlog = "show_binlog"
TmplShowRelaylog = "show_relaylog"
TmplCloneFrom = "clone_from"
TmplSemisyncSlaveOptions = "semisync_slave_options"
TmplGrants8x = "grants8x"
TmplExposeDdTables = "expose_dd_tables"
TmplUseAdmin = "use_admin"
TmplShowLog = "show_log"
TmplWipeAndRestart = "wipe_and_restart"
TmplCopyright = "copyright"
TmplReplCrashSafeOptions = "repl_crash_safe_options"
TmplSbLocked = "sb_locked"
TmplSbInclude = "sb_include"
TmplConnectionInfoSql = "connection_info_sql"
TmplMetadata = "metadata"
TmplSemisyncMasterOptions = "semisync_master_options"
TmplGrants57 = "grants57"
TmplLoadGrants = "load_grants"
TmplMy = "my"
TmplAfterStart = "after_start"
TmplConnectionInfoJson = "connection_info_json"
TmplClear = "clear"
TmplStatus = "status"
TmplTaskUserGrants = "task_user_grants"
TmplTestSb = "test_sb"
TmplMyCnf = "my_cnf"
TmplRestart = "restart"
TmplSysbench = "sysbench"
TmplSysbenchReady = "sysbench_ready"
TmplStop = "stop"
TmplGrants5x = "grants5x"
TmplAddOption = "add_option"
TmplReplicateFrom = "replicate_from"
TmplGtidOptions56 = "gtid_options_56"
TmplGtidOptions57 = "gtid_options_57"
TmplCloneConnectionSql = "clone_connection_sql"
TmplInitDb = "init_db"
TmplUse = "use"
TmplMysqlsh = "mysqlsh"
TmplSendKill = "send_kill"
TmplConnectionInfoConf = "connection_info_conf"
TmplReplicationOptions = "replication_options"
TmplStart = "start"
TmplShowBinlog = "show_binlog"
TmplShowRelaylog = "show_relaylog"
TmplCloneFrom = "clone_from"
TmplSemisyncSlaveOptions = "semisync_slave_options"
TmplGrants8x = "grants8x"
TmplExposeDdTables = "expose_dd_tables"
TmplUseAdmin = "use_admin"
TmplShowLog = "show_log"
TmplWipeAndRestart = "wipe_and_restart"
TmplCopyright = "copyright"
TmplReplCrashSafeOptions = "repl_crash_safe_options"
TmplSbLocked = "sb_locked"
TmplSbInclude = "sb_include"
TmplConnectionInfoSql = "connection_info_sql"
TmplMetadata = "metadata"
TmplSemisyncMasterOptions = "semisync_master_options"
TmplGrants57 = "grants57"
TmplLoadGrants = "load_grants"
TmplMy = "my"
TmplAfterStart = "after_start"
TmplConnectionInfoJson = "connection_info_json"
TmplConnectionInfoSuperJson = "connection_info_super_json"
TmplClear = "clear"
TmplStatus = "status"
TmplTaskUserGrants = "task_user_grants"
TmplTestSb = "test_sb"
TmplMyCnf = "my_cnf"
TmplRestart = "restart"
TmplSysbench = "sysbench"
TmplSysbenchReady = "sysbench_ready"
TmplStop = "stop"
TmplGrants5x = "grants5x"
TmplAddOption = "add_option"
TmplReplicateFrom = "replicate_from"
TmplGtidOptions56 = "gtid_options_56"
TmplGtidOptions57 = "gtid_options_57"
TmplCloneConnectionSql = "clone_connection_sql"
TmplInitDb = "init_db"
TmplUse = "use"
TmplMysqlsh = "mysqlsh"
TmplSendKill = "send_kill"
TmplConnectionInfoConf = "connection_info_conf"
TmplReplicationOptions = "replication_options"
TmplConnectionInfoSuperConf = "connection_info_super_conf"
TmplStart = "start"

// pxc
TmplPxcReplication = "pxc_replication"
Expand Down
9 changes: 6 additions & 3 deletions ops/sql.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,15 @@ type sandboxConnection struct {
}

// getSandboxConnection finds the connection credentials in a given sandbox directory
func getSandboxConnection(sandboxPath string) (sandboxConnection, error) {
func getSandboxConnection(sandboxPath string, asSuperUser bool) (sandboxConnection, error) {
var sc sandboxConnection
if !common.DirExists(sandboxPath) {
return sc, fmt.Errorf(globals.ErrDirectoryNotFound, sandboxPath)
}
connectionFile := path.Join(sandboxPath, globals.ScriptConnectionJson)
if asSuperUser {
connectionFile = path.Join(sandboxPath, globals.ScriptConnectionSuperJson)
}
if !common.FileExists(connectionFile) {
return sc, fmt.Errorf(globals.ErrFileNotFound, connectionFile)
}
Expand All @@ -53,9 +56,9 @@ func getSandboxConnection(sandboxPath string) (sandboxConnection, error) {
}

// RunSandboxQuery runs a SQL query in a given sandbox directory
func RunSandboxQuery[T comparable](sandboxPath, query string) (interface{}, error) {
func RunSandboxQuery[T comparable](sandboxPath, query string, asSuperUser bool) (interface{}, error) {

credentials, err := getSandboxConnection(sandboxPath)
credentials, err := getSandboxConnection(sandboxPath, asSuperUser)
if err != nil {
return "", err
}
Expand Down
2 changes: 2 additions & 0 deletions sandbox/sandbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -931,7 +931,9 @@ func createSingleSandbox(sandboxDef SandboxDef) (execList []concurrent.Execution
{globals.ScriptAfterStart, globals.TmplAfterStart, true},
{globals.ScriptConnectionSql, globals.TmplConnectionInfoSql, false},
{globals.ScriptConnectionConf, globals.TmplConnectionInfoConf, false},
{globals.ScriptConnectionSuperConf, globals.TmplConnectionInfoSuperConf, false},
{globals.ScriptConnectionJson, globals.TmplConnectionInfoJson, false},
{globals.ScriptConnectionSuperJson, globals.TmplConnectionInfoSuperJson, false},
{globals.ScriptReplicateFrom, globals.TmplReplicateFrom, true},
{globals.ScriptMetadata, globals.TmplMetadata, true},
{globals.ScriptSysbench, globals.TmplSysbench, true},
Expand Down
16 changes: 16 additions & 0 deletions sandbox/templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,15 @@ var (
//go:embed templates/single/connection_info_json.gotxt
ConnectionInfoJson string

//go:embed templates/single/connection_info_super_json.gotxt
ConnectionInfoSuperJson string

//go:embed templates/single/connection_info_conf.gotxt
ConnectionInfoConf string

//go:embed templates/single/connection_info_super_conf.gotxt
ConnectionInfoSuperConf string

//go:embed templates/single/clone_connection_sql.gotxt
cloneConnectionSql string

Expand Down Expand Up @@ -362,11 +368,21 @@ var (
Notes: "",
Contents: ConnectionInfoConf,
},
globals.TmplConnectionInfoSuperConf: TemplateDesc{
Description: "connection info use this sandbox as super user (.conf)",
Notes: "",
Contents: ConnectionInfoSuperConf,
},
globals.TmplConnectionInfoJson: TemplateDesc{
Description: "connection info to replicate from this sandbox (.json)",
Notes: "",
Contents: ConnectionInfoJson,
},
globals.TmplConnectionInfoSuperJson: TemplateDesc{
Description: "connection info to use this sandbox as super user (.json)",
Notes: "",
Contents: ConnectionInfoSuperJson,
},
globals.TmplReplicateFrom: TemplateDesc{
Description: "starts replication from another sandbox",
Notes: "",
Expand Down
5 changes: 5 additions & 0 deletions sandbox/templates/single/connection_info_super_conf.gotxt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

master_host = {{.SbHost}}
master_port = {{.Port}}
master_user = {{.DbUser}}
master_password = {{.DbPassword}}
7 changes: 7 additions & 0 deletions sandbox/templates/single/connection_info_super_json.gotxt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

{
"master_host" : "{{.SbHost}}",
"master_port" : {{.Port}},
"master_user" : "{{.DbUser}}",
"master_password" : "{{.DbPassword}}"
}
4 changes: 2 additions & 2 deletions ts/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,11 +162,11 @@ func runSqlInSandbox(ts *testscript.TestScript, neg bool, args []string) {

var strResult string
if isANumber(wanted) {
result, err := ops.RunSandboxQuery[int](sbDir, query)
result, err := ops.RunSandboxQuery[int](sbDir, query, true)
ts.Check(err)
strResult = fmt.Sprintf("%d", result.(int))
} else {
result, err := ops.RunSandboxQuery[string](sbDir, query)
result, err := ops.RunSandboxQuery[string](sbDir, query, true)
ts.Check(err)
strResult = result.(string)
}
Expand Down
8 changes: 2 additions & 6 deletions ts/templates/feature/dd-expose-tables.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,8 @@ stdout '# fail : 0'

run_sql_in_sandbox $sb_dir 'select VERSION()' {{.DbVersion}}-debug
run_sql_in_sandbox $sb_dir 'select @@debug is not null' 1
exec $sb_dir/use -BN -e 'select count(*) from mysql.tables where name =''tables'' and schema_id=1'
stdout '\b1\b'
! stderr .
exec $sb_dir/use -BN -e 'select count(*) from information_schema.tables where table_name =''tables'' and table_schema=''mysql'''
stdout '\b1\b'
! stderr .
run_sql_in_sandbox $sb_dir 'select count(*) from mysql.tables where name =''tables'' and schema_id=1' 1
run_sql_in_sandbox $sb_dir 'select count(*) from information_schema.tables where table_name =''tables'' and table_schema=''mysql''' 1

# sandbox cleanup
exec dbdeployer delete msb_{{.DbPathVer}}_dd
Expand Down

0 comments on commit a3cc69e

Please sign in to comment.