Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

server: migrate test-infra to testify for tidb_test.go #29535

Merged
merged 64 commits into from
Nov 23, 2021
Merged
Changes from 1 commit
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
b5dc2a5
server: migrate `TestStatusAPIWithTLS`
yedamao Nov 6, 2021
3418188
server: migrate `TestStatusPort`
yedamao Nov 6, 2021
ea496ec
server: migrate `TestStatusAPIWithTLSCNCheck`
yedamao Nov 6, 2021
3bc068b
server: migrate `TestPessimisticInsertSelectForUpdate`
yedamao Nov 7, 2021
25c212f
server: migrate `TestShowTablesFlen`
yedamao Nov 7, 2021
abb324f
server: migate `TestFieldList`
yedamao Nov 7, 2021
db99c53
server: migrate `TestNullFlag`
yedamao Nov 7, 2021
651883e
server: migrate `TestNO_DEFAULT_VALUEFlag`
yedamao Nov 7, 2021
1ef56e5
server: migrate `TestCreateTableFlen`
yedamao Nov 7, 2021
a8ceb09
server: migrate `TestSystemTimeZone`
yedamao Nov 7, 2021
937568e
server: migrate `TestAuth`
yedamao Nov 7, 2021
c718343
server: migrate `TestUint64`
yedamao Nov 7, 2021
18e4d41
server: migrate `TestSpecialType`
yedamao Nov 7, 2021
66a5eb3
server: migrate `TestPreparedString`
yedamao Nov 7, 2021
e9a3f7e
server: migrate `TestPreparedTimestamp`
yedamao Nov 7, 2021
a26a890
server: migrate `TestConcurrentUpdate`
yedamao Nov 7, 2021
deeea38
server: migrate `TestErrorCode` and `TestLoadData`
yedamao Nov 7, 2021
0476bd7
server: migrate `TestConfigDefaultValue`
yedamao Nov 7, 2021
45b28de
server: migrate `TestLoadDataAutoRandom`
yedamao Nov 7, 2021
4a00c68
server: migrate `TestExplainFor` and `TestLoadDataAutoRandomWithSpeci…
yedamao Nov 7, 2021
874413d
server: migrate `TestStmtCount`
yedamao Nov 7, 2021
5fbfadf
server: migrate `TestLoadDataListPartition`
yedamao Nov 7, 2021
b04dcb5
server: migrate `TestRegression`
yedamao Nov 7, 2021
f55e819
server: migrate `TestIssues`
yedamao Nov 7, 2021
923cf68
server: migrate `TestDBNameEscape`
yedamao Nov 7, 2021
94ea04a
server: migrate `TestResultFieldTableIsNull`
yedamao Nov 7, 2021
c8fc3df
server: migrate `TestStatusAPI`
yedamao Nov 7, 2021
3e591ef
server: migrate `TestMultiStatements`
yedamao Nov 7, 2021
e61b1c2
server: migrate `TestSocketForwarding`
yedamao Nov 7, 2021
bc2a410
Merge branch 'master' into issue-27806
yedamao Nov 7, 2021
ddf3685
testkit: Add comments for DBTestKit's methods
yedamao Nov 8, 2021
83a661d
server: migrate `TestGracefulShutdown`
yedamao Nov 8, 2021
737e6c3
Merge branch 'master' into issue-27806
yedamao Nov 8, 2021
ac812cb
Merge branch 'issue-27806' of github.com:yedamao/tidb into issue-27806
yedamao Nov 8, 2021
598076a
server: remove deprecated method
yedamao Nov 8, 2021
03c2a78
server: migrate `TestTLSAuto`
yedamao Nov 8, 2021
1599147
server: migrate `TestTLSBasic`
yedamao Nov 8, 2021
6476267
server: migrate `TestTLSVerify`
yedamao Nov 8, 2021
227ab97
server: migrate `TestClientWithCollation`
yedamao Nov 9, 2021
793b931
server: migrate `TestErrorNoRollback`
yedamao Nov 9, 2021
8adcd51
server: migrate `TestPrepareCount`
yedamao Nov 9, 2021
d802968
server: migrate `TestDefaultCharacterAndCollation`
yedamao Nov 9, 2021
e1e786b
server: migrate `TestReloadTLS`
yedamao Nov 9, 2021
7f4524e
server: remove tidbTestSerialSuite
yedamao Nov 9, 2021
624c8bf
server: remove unused runTestTLSConnection/runReloadTLS
yedamao Nov 9, 2021
c41738c
Merge branch 'master' into issue-27806
yedamao Nov 9, 2021
4ba4cc7
Merge branch 'master' into issue-27806
yedamao Nov 13, 2021
a0bca55
server: migrate `TestClientErrors`
yedamao Nov 13, 2021
c6c4287
server: migrate `TestInitConnect`
yedamao Nov 13, 2021
3d102dc
server: migrate `TestSumAvg`
yedamao Nov 13, 2021
ed2951e
server: migrate `TestOnlySocket`
yedamao Nov 14, 2021
6bdeb73
server: migrate `TestSocketAndIp`
yedamao Nov 14, 2021
483a24c
Merge branch 'master' into issue-27806
yedamao Nov 15, 2021
0386e9e
Merge branch 'master' into issue-27806
yedamao Nov 20, 2021
fa9acdf
server: migrate `TestSocket`
yedamao Nov 20, 2021
ac26eb8
server: make tests run parallel
yedamao Nov 20, 2021
495d440
server: migrate `TestTopSQLCPUProfile`
yedamao Nov 20, 2021
b94de58
server: migrate `TestTopSQLAgent`
yedamao Nov 20, 2021
a922eda
server: cleanup tidb_test.go
yedamao Nov 20, 2021
ad42d71
server: cleanup server_test.go
yedamao Nov 20, 2021
9e5b1f6
server: polish method's naming
yedamao Nov 20, 2021
09f7ff4
server: remove scaffolding for the migration
yedamao Nov 20, 2021
6bb53b9
Merge branch 'master' into issue-27806
ti-chi-bot Nov 22, 2021
cdbc929
Merge branch 'master' into issue-27806
ti-chi-bot Nov 23, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
server: migrate TestSocketAndIp
yedamao committed Nov 14, 2021
commit 6bdeb730da4f7ad2f44e726c512e40d7765adc55
45 changes: 0 additions & 45 deletions server/server_test.go
Original file line number Diff line number Diff line change
@@ -122,21 +122,6 @@ func (cli *testServerClient) getDSN(overriders ...configOverrider) string {
return config.FormatDSN()
}

// runTests runs tests using the default database `test`.
func (cli *testServerClient) runTests(c *C, overrider configOverrider, tests ...func(dbt *DBTest)) {
db, err := sql.Open("mysql", cli.getDSN(overrider))
c.Assert(err, IsNil, Commentf("Error connecting"))
defer func() {
err := db.Close()
c.Assert(err, IsNil)
}()

dbt := &DBTest{c, db}
for _, test := range tests {
test(dbt)
}
}

// runTests runs tests using the default database `test`.
func (cli *testingServerClient) runTests(t *testing.T, overrider configOverrider, tests ...func(dbt *testkit.DBTestKit)) {
db, err := sql.Open("mysql", cli.getDSN(overrider))
@@ -951,36 +936,6 @@ func (cli *testingServerClient) runTestLoadDataForListColumnPartition2(t *testin
})
}

func (cli *testServerClient) checkRows(c *C, rows *sql.Rows, expectedRows ...string) {
buf := bytes.NewBuffer(nil)
result := make([]string, 0, 2)
for rows.Next() {
cols, err := rows.Columns()
c.Assert(err, IsNil)
rawResult := make([][]byte, len(cols))
dest := make([]interface{}, len(cols))
for i := range rawResult {
dest[i] = &rawResult[i]
}

err = rows.Scan(dest...)
c.Assert(err, IsNil)
buf.Reset()
for i, raw := range rawResult {
if i > 0 {
buf.WriteString(" ")
}
if raw == nil {
buf.WriteString("<nil>")
} else {
buf.WriteString(string(raw))
}
}
result = append(result, buf.String())
}
c.Assert(strings.Join(result, "\n"), Equals, strings.Join(expectedRows, "\n"))
}

func (cli *testingServerClient) checkRows(t *testing.T, rows *sql.Rows, expectedRows ...string) {
buf := bytes.NewBuffer(nil)
result := make([]string, 0, 2)
144 changes: 74 additions & 70 deletions server/tidb_test.go
Original file line number Diff line number Diff line change
@@ -533,159 +533,163 @@ func (ts *tidbTestSuite) TestSocket(c *C) {

}

func (ts *tidbTestSuite) TestSocketAndIp(c *C) {
func TestSocketAndIp(t *testing.T) {
osTempDir := os.TempDir()
tempDir, err := os.MkdirTemp(osTempDir, "tidb-test.*.socket")
c.Assert(err, IsNil)
require.NoError(t, err)
socketFile := tempDir + "/tidbtest.sock" // Unix Socket does not work on Windows, so '/' should be OK
defer os.RemoveAll(tempDir)
cli := newTestServerClient()

cli := newTestingServerClient()
cfg := newTestConfig()
cfg.Socket = socketFile
cfg.Port = cli.port
cfg.Status.ReportStatus = false

ts, cleanup := createTiDBTest(t)
defer cleanup()

server, err := NewServer(cfg, ts.tidbdrv)
c.Assert(err, IsNil)
require.NoError(t, err)
cli.port = getPortFromTCPAddr(server.listener.Addr())
go func() {
err := server.Run()
c.Assert(err, IsNil)
require.NoError(t, err)
}()
time.Sleep(time.Millisecond * 100)
defer server.Close()

// Test with Socket connection + Setup user1@% for all host access
cli.port = getPortFromTCPAddr(server.listener.Addr())
defer func() {
cli.runTests(c, func(config *mysql.Config) {
cli.runTests(t, func(config *mysql.Config) {
config.User = "root"
},
func(dbt *DBTest) {
dbt.mustQuery("DROP USER IF EXISTS 'user1'@'%'")
dbt.mustQuery("DROP USER IF EXISTS 'user1'@'localhost'")
dbt.mustQuery("DROP USER IF EXISTS 'user1'@'127.0.0.1'")
func(dbt *testkit.DBTestKit) {
dbt.MustQuery("DROP USER IF EXISTS 'user1'@'%'")
dbt.MustQuery("DROP USER IF EXISTS 'user1'@'localhost'")
dbt.MustQuery("DROP USER IF EXISTS 'user1'@'127.0.0.1'")
})
}()
cli.runTests(c, func(config *mysql.Config) {
cli.runTests(t, func(config *mysql.Config) {
config.User = "root"
config.Net = "unix"
config.Addr = socketFile
config.DBName = "test"
},
func(dbt *DBTest) {
rows := dbt.mustQuery("select user()")
cli.checkRows(c, rows, "root@localhost")
rows = dbt.mustQuery("show grants")
cli.checkRows(c, rows, "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION")
dbt.mustQuery("CREATE USER user1@'%'")
dbt.mustQuery("GRANT SELECT ON test.* TO user1@'%'")
func(dbt *testkit.DBTestKit) {
rows := dbt.MustQuery("select user()")
cli.checkRows(t, rows, "root@localhost")
rows = dbt.MustQuery("show grants")
cli.checkRows(t, rows, "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION")
dbt.MustQuery("CREATE USER user1@'%'")
dbt.MustQuery("GRANT SELECT ON test.* TO user1@'%'")
})
// Test with Network interface connection with all hosts
cli.runTests(c, func(config *mysql.Config) {
cli.runTests(t, func(config *mysql.Config) {
config.User = "user1"
config.DBName = "test"
},
func(dbt *DBTest) {
rows := dbt.mustQuery("select user()")
func(dbt *testkit.DBTestKit) {
rows := dbt.MustQuery("select user()")
// NOTICE: this is not compatible with MySQL! (MySQL would report user1@localhost also for 127.0.0.1)
cli.checkRows(c, rows, "user1@127.0.0.1")
rows = dbt.mustQuery("show grants")
cli.checkRows(c, rows, "GRANT USAGE ON *.* TO 'user1'@'%'\nGRANT SELECT ON test.* TO 'user1'@'%'")
cli.checkRows(t, rows, "user1@127.0.0.1")
rows = dbt.MustQuery("show grants")
cli.checkRows(t, rows, "GRANT USAGE ON *.* TO 'user1'@'%'\nGRANT SELECT ON test.* TO 'user1'@'%'")
})
// Test with unix domain socket file connection with all hosts
cli.runTests(c, func(config *mysql.Config) {
cli.runTests(t, func(config *mysql.Config) {
config.Net = "unix"
config.Addr = socketFile
config.User = "user1"
config.DBName = "test"
},
func(dbt *DBTest) {
rows := dbt.mustQuery("select user()")
cli.checkRows(c, rows, "user1@localhost")
rows = dbt.mustQuery("show grants")
cli.checkRows(c, rows, "GRANT USAGE ON *.* TO 'user1'@'%'\nGRANT SELECT ON test.* TO 'user1'@'%'")
func(dbt *testkit.DBTestKit) {
rows := dbt.MustQuery("select user()")
cli.checkRows(t, rows, "user1@localhost")
rows = dbt.MustQuery("show grants")
cli.checkRows(t, rows, "GRANT USAGE ON *.* TO 'user1'@'%'\nGRANT SELECT ON test.* TO 'user1'@'%'")
})

// Setup user1@127.0.0.1 for loop back network interface access
cli.runTests(c, func(config *mysql.Config) {
cli.runTests(t, func(config *mysql.Config) {
config.User = "root"
config.DBName = "test"
},
func(dbt *DBTest) {
rows := dbt.mustQuery("select user()")
func(dbt *testkit.DBTestKit) {
rows := dbt.MustQuery("select user()")
// NOTICE: this is not compatible with MySQL! (MySQL would report user1@localhost also for 127.0.0.1)
cli.checkRows(c, rows, "root@127.0.0.1")
rows = dbt.mustQuery("show grants")
cli.checkRows(c, rows, "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION")
dbt.mustQuery("CREATE USER user1@127.0.0.1")
dbt.mustQuery("GRANT SELECT,INSERT ON test.* TO user1@'127.0.0.1'")
cli.checkRows(t, rows, "root@127.0.0.1")
rows = dbt.MustQuery("show grants")
cli.checkRows(t, rows, "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION")
dbt.MustQuery("CREATE USER user1@127.0.0.1")
dbt.MustQuery("GRANT SELECT,INSERT ON test.* TO user1@'127.0.0.1'")
})
// Test with Network interface connection with all hosts
cli.runTests(c, func(config *mysql.Config) {
cli.runTests(t, func(config *mysql.Config) {
config.User = "user1"
config.DBName = "test"
},
func(dbt *DBTest) {
rows := dbt.mustQuery("select user()")
func(dbt *testkit.DBTestKit) {
rows := dbt.MustQuery("select user()")
// NOTICE: this is not compatible with MySQL! (MySQL would report user1@localhost also for 127.0.0.1)
cli.checkRows(c, rows, "user1@127.0.0.1")
rows = dbt.mustQuery("show grants")
cli.checkRows(c, rows, "GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'\nGRANT SELECT,INSERT ON test.* TO 'user1'@'127.0.0.1'")
cli.checkRows(t, rows, "user1@127.0.0.1")
rows = dbt.MustQuery("show grants")
cli.checkRows(t, rows, "GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'\nGRANT SELECT,INSERT ON test.* TO 'user1'@'127.0.0.1'")
})
// Test with unix domain socket file connection with all hosts
cli.runTests(c, func(config *mysql.Config) {
cli.runTests(t, func(config *mysql.Config) {
config.Net = "unix"
config.Addr = socketFile
config.User = "user1"
config.DBName = "test"
},
func(dbt *DBTest) {
rows := dbt.mustQuery("select user()")
cli.checkRows(c, rows, "user1@localhost")
rows = dbt.mustQuery("show grants")
cli.checkRows(c, rows, "GRANT USAGE ON *.* TO 'user1'@'%'\nGRANT SELECT ON test.* TO 'user1'@'%'")
func(dbt *testkit.DBTestKit) {
rows := dbt.MustQuery("select user()")
cli.checkRows(t, rows, "user1@localhost")
rows = dbt.MustQuery("show grants")
cli.checkRows(t, rows, "GRANT USAGE ON *.* TO 'user1'@'%'\nGRANT SELECT ON test.* TO 'user1'@'%'")
})

// Setup user1@localhost for socket (and if MySQL compatible; loop back network interface access)
cli.runTests(c, func(config *mysql.Config) {
cli.runTests(t, func(config *mysql.Config) {
config.Net = "unix"
config.Addr = socketFile
config.User = "root"
config.DBName = "test"
},
func(dbt *DBTest) {
rows := dbt.mustQuery("select user()")
cli.checkRows(c, rows, "root@localhost")
rows = dbt.mustQuery("show grants")
cli.checkRows(c, rows, "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION")
dbt.mustQuery("CREATE USER user1@localhost")
dbt.mustQuery("GRANT SELECT,INSERT,UPDATE,DELETE ON test.* TO user1@localhost")
func(dbt *testkit.DBTestKit) {
rows := dbt.MustQuery("select user()")
cli.checkRows(t, rows, "root@localhost")
rows = dbt.MustQuery("show grants")
cli.checkRows(t, rows, "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION")
dbt.MustQuery("CREATE USER user1@localhost")
dbt.MustQuery("GRANT SELECT,INSERT,UPDATE,DELETE ON test.* TO user1@localhost")
})
// Test with Network interface connection with all hosts
cli.runTests(c, func(config *mysql.Config) {
cli.runTests(t, func(config *mysql.Config) {
config.User = "user1"
config.DBName = "test"
},
func(dbt *DBTest) {
rows := dbt.mustQuery("select user()")
func(dbt *testkit.DBTestKit) {
rows := dbt.MustQuery("select user()")
// NOTICE: this is not compatible with MySQL! (MySQL would report user1@localhost also for 127.0.0.1)
cli.checkRows(c, rows, "user1@127.0.0.1")
rows = dbt.mustQuery("show grants")
cli.checkRows(c, rows, "GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'\nGRANT SELECT,INSERT ON test.* TO 'user1'@'127.0.0.1'")
cli.checkRows(t, rows, "user1@127.0.0.1")
rows = dbt.MustQuery("show grants")
cli.checkRows(t, rows, "GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'\nGRANT SELECT,INSERT ON test.* TO 'user1'@'127.0.0.1'")
})
// Test with unix domain socket file connection with all hosts
cli.runTests(c, func(config *mysql.Config) {
cli.runTests(t, func(config *mysql.Config) {
config.Net = "unix"
config.Addr = socketFile
config.User = "user1"
config.DBName = "test"
},
func(dbt *DBTest) {
rows := dbt.mustQuery("select user()")
cli.checkRows(c, rows, "user1@localhost")
rows = dbt.mustQuery("show grants")
cli.checkRows(c, rows, "GRANT USAGE ON *.* TO 'user1'@'localhost'\nGRANT SELECT,INSERT,UPDATE,DELETE ON test.* TO 'user1'@'localhost'")
func(dbt *testkit.DBTestKit) {
rows := dbt.MustQuery("select user()")
cli.checkRows(t, rows, "user1@localhost")
rows = dbt.MustQuery("show grants")
cli.checkRows(t, rows, "GRANT USAGE ON *.* TO 'user1'@'localhost'\nGRANT SELECT,INSERT,UPDATE,DELETE ON test.* TO 'user1'@'localhost'")
})

}