|
|
|
@ -18,6 +18,12 @@ const ( |
|
|
|
MySQLEntDatabaseEnv = "DEX_MYSQL_ENT_DATABASE" |
|
|
|
MySQLEntDatabaseEnv = "DEX_MYSQL_ENT_DATABASE" |
|
|
|
MySQLEntUserEnv = "DEX_MYSQL_ENT_USER" |
|
|
|
MySQLEntUserEnv = "DEX_MYSQL_ENT_USER" |
|
|
|
MySQLEntPasswordEnv = "DEX_MYSQL_ENT_PASSWORD" |
|
|
|
MySQLEntPasswordEnv = "DEX_MYSQL_ENT_PASSWORD" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MySQL8EntHostEnv = "DEX_MYSQL8_ENT_HOST" |
|
|
|
|
|
|
|
MySQL8EntPortEnv = "DEX_MYSQL8_ENT_PORT" |
|
|
|
|
|
|
|
MySQL8EntDatabaseEnv = "DEX_MYSQL8_ENT_DATABASE" |
|
|
|
|
|
|
|
MySQL8EntUserEnv = "DEX_MYSQL8_ENT_USER" |
|
|
|
|
|
|
|
MySQL8EntPasswordEnv = "DEX_MYSQL8_ENT_PASSWORD" |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
func mysqlTestConfig(host string, port uint64) *MySQL { |
|
|
|
func mysqlTestConfig(host string, port uint64) *MySQL { |
|
|
|
@ -40,6 +46,35 @@ func mysqlTestConfig(host string, port uint64) *MySQL { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func mysql8TestConfig(host string, port uint64) *MySQL { |
|
|
|
|
|
|
|
return &MySQL{ |
|
|
|
|
|
|
|
NetworkDB: NetworkDB{ |
|
|
|
|
|
|
|
Database: getenv(MySQL8EntDatabaseEnv, "mysql"), |
|
|
|
|
|
|
|
User: getenv(MySQL8EntUserEnv, "mysql"), |
|
|
|
|
|
|
|
Password: getenv(MySQL8EntPasswordEnv, "mysql"), |
|
|
|
|
|
|
|
Host: host, |
|
|
|
|
|
|
|
Port: uint16(port), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
SSL: SSL{ |
|
|
|
|
|
|
|
Mode: mysqlSSLFalse, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
params: map[string]string{ |
|
|
|
|
|
|
|
"innodb_lock_wait_timeout": "1", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func newMySQL8Storage(t *testing.T, host string, port uint64) storage.Storage { |
|
|
|
|
|
|
|
logger := slog.New(slog.NewTextHandler(t.Output(), &slog.HandlerOptions{Level: slog.LevelDebug})) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cfg := mysql8TestConfig(host, port) |
|
|
|
|
|
|
|
s, err := cfg.Open(logger) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
panic(err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return s |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func newMySQLStorage(t *testing.T, host string, port uint64) storage.Storage { |
|
|
|
func newMySQLStorage(t *testing.T, host string, port uint64) storage.Storage { |
|
|
|
logger := slog.New(slog.NewTextHandler(t.Output(), &slog.HandlerOptions{Level: slog.LevelDebug})) |
|
|
|
logger := slog.New(slog.NewTextHandler(t.Output(), &slog.HandlerOptions{Level: slog.LevelDebug})) |
|
|
|
|
|
|
|
|
|
|
|
@ -72,6 +107,27 @@ func TestMySQL(t *testing.T) { |
|
|
|
conformance.RunTransactionTests(t, newStorage) |
|
|
|
conformance.RunTransactionTests(t, newStorage) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func TestMySQL8(t *testing.T) { |
|
|
|
|
|
|
|
host := os.Getenv(MySQL8EntHostEnv) |
|
|
|
|
|
|
|
if host == "" { |
|
|
|
|
|
|
|
t.Skipf("test environment variable %s not set, skipping", MySQL8EntHostEnv) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
port := uint64(3306) |
|
|
|
|
|
|
|
if rawPort := os.Getenv(MySQL8EntPortEnv); rawPort != "" { |
|
|
|
|
|
|
|
var err error |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
port, err = strconv.ParseUint(rawPort, 10, 32) |
|
|
|
|
|
|
|
require.NoError(t, err, "invalid mysql port %q: %s", rawPort, err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
newStorage := func(t *testing.T) storage.Storage { |
|
|
|
|
|
|
|
return newMySQL8Storage(t, host, port) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
conformance.RunTests(t, newStorage) |
|
|
|
|
|
|
|
conformance.RunTransactionTests(t, newStorage) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestMySQLDSN(t *testing.T) { |
|
|
|
func TestMySQLDSN(t *testing.T) { |
|
|
|
tests := []struct { |
|
|
|
tests := []struct { |
|
|
|
name string |
|
|
|
name string |
|
|
|
|