Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: go/database/testutil/testutil.go

Issue 813443002: Overhaul database package (Closed) Base URL: https://skia.googlesource.com/buildbot@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 package testutil 1 package testutil
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
5 "os" 5 "os"
6 "strings" 6 "strings"
7 "testing" 7 "testing"
8 ) 8 )
9 9
10 import ( 10 import (
11 // Using 'require' which is like using 'assert' but causes tests to fail . 11 // Using 'require' which is like using 'assert' but causes tests to fail .
12 assert "github.com/stretchr/testify/require" 12 assert "github.com/stretchr/testify/require"
13 13
14 "skia.googlesource.com/buildbot.git/go/database" 14 "skia.googlesource.com/buildbot.git/go/database"
15 ) 15 )
16 16
17 // Connection string to the local MySQL database for testing. 17 // Connection string to the local MySQL database for testing.
18 const ( 18 const (
19 // String to open a local database for testing. The string formatting 19 // String to open a local database for testing. The string formatting
20 // parameters are: username, password, database. 20 // parameters are: username, password, database.
21 MYSQL_DB_OPEN = "%s:%s@tcp(localhost:3306)/%s?parseTime=true" 21 MYSQL_DB_OPEN = "%s:%s@tcp(localhost:3306)/%s?parseTime=true"
22 22
23 // File path to the local SQLite testing databse.
24 SQLITE_DB_PATH = "./testing.db"
25
26 // Name of the MySQL lock 23 // Name of the MySQL lock
27 SQL_LOCK = "mysql_testlock" 24 SQL_LOCK = "mysql_testlock"
28 ) 25 )
29 26
30 // Creates an SQLite test database and runs migration tests against it using the
31 // given migration steps.
32 func SQLiteVersioningTests(t *testing.T, migrationSteps []database.MigrationStep ) {
33 // Initialize without argument to test against SQLite3
34 conf := &database.DatabaseConfig{
35 SQLiteFilePath: SQLITE_DB_PATH,
36 MigrationSteps: migrationSteps,
37 }
38
39 vdb := database.NewVersionedDB(conf)
40 assert.False(t, vdb.IsMySQL)
41 testDBVersioning(t, vdb)
42 }
43
44 // Creates an MySQL test database and runs migration tests against it using the 27 // Creates an MySQL test database and runs migration tests against it using the
45 // given migration steps. See Get for required credentials. 28 // given migration steps. See Get for required credentials.
46 // The test assumes that the database is empty and that the readwrite user is 29 // The test assumes that the database is empty and that the readwrite user is
47 // not allowed to create/drop/alter tables. 30 // not allowed to create/drop/alter tables.
48 func MySQLVersioningTests(t *testing.T, dbName string, migrationSteps []database .MigrationStep) { 31 func MySQLVersioningTests(t *testing.T, dbName string, migrationSteps []database .MigrationStep) {
49 // OpenDB as root user and remove all tables. 32 // OpenDB as root user and remove all tables.
50 rootConf := &database.DatabaseConfig{ 33 rootConf := &database.DatabaseConfig{
51 MySQLString: GetTestMySQLConnStr(t, "root", dbName), 34 MySQLString: GetTestMySQLConnStr(t, "root", dbName),
52 MigrationSteps: migrationSteps, 35 MigrationSteps: migrationSteps,
53 } 36 }
54 lockVdb := GetMySQlLock(t, rootConf) 37 lockVdb := GetMySQlLock(t, rootConf)
55 defer func() { 38 defer func() {
56 ReleaseMySQLLock(t, lockVdb) 39 ReleaseMySQLLock(t, lockVdb)
57 lockVdb.Close() 40 lockVdb.Close()
58 }() 41 }()
59 42
60 rootVdb := database.NewVersionedDB(rootConf) 43 rootVdb := database.NewVersionedDB(rootConf)
61 assert.True(t, rootVdb.IsMySQL)
62 ClearMySQLTables(t, rootVdb) 44 ClearMySQLTables(t, rootVdb)
63 assert.Nil(t, rootVdb.Close()) 45 assert.Nil(t, rootVdb.Close())
64 46
65 // Configuration for the readwrite user without DDL privileges. 47 // Configuration for the readwrite user without DDL privileges.
66 readWriteConf := &database.DatabaseConfig{ 48 readWriteConf := &database.DatabaseConfig{
67 MySQLString: GetTestMySQLConnStr(t, "readwrite", dbName), 49 MySQLString: GetTestMySQLConnStr(t, "readwrite", dbName),
68 MigrationSteps: migrationSteps, 50 MigrationSteps: migrationSteps,
69 } 51 }
70 52
71 // Open DB as readwrite user and make sure it fails because of a missing 53 // Open DB as readwrite user and make sure it fails because of a missing
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 assert.Nil(t, err) 137 assert.Nil(t, err)
156 assert.Equal(t, 0, dbVersion) 138 assert.Equal(t, 0, dbVersion)
157 139
158 // upgrade the the latest version 140 // upgrade the the latest version
159 err = vdb.Migrate(maxVersion) 141 err = vdb.Migrate(maxVersion)
160 assert.Nil(t, err) 142 assert.Nil(t, err)
161 dbVersion, err = vdb.DBVersion() 143 dbVersion, err = vdb.DBVersion()
162 assert.Nil(t, err) 144 assert.Nil(t, err)
163 assert.Equal(t, maxVersion, dbVersion) 145 assert.Equal(t, maxVersion, dbVersion)
164 } 146 }
OLDNEW
« no previous file with comments | « go/database/database.go ('k') | golden/go/db/db.go » ('j') | golden/go/db/db.go » ('J')

Powered by Google App Engine
This is Rietveld 408576698