OLD | NEW |
1 package buildbot | 1 package buildbot |
2 | 2 |
3 import ( | 3 import ( |
4 "bytes" | 4 "bytes" |
5 "encoding/json" | 5 "encoding/json" |
6 "fmt" | 6 "fmt" |
7 "io" | 7 "io" |
8 "net/http" | 8 "net/http" |
9 "path/filepath" | 9 "path/filepath" |
10 "reflect" | 10 "reflect" |
11 "testing" | 11 "testing" |
12 | 12 |
13 "github.com/golang/glog" | 13 "github.com/golang/glog" |
| 14 "github.com/jmoiron/sqlx" |
14 | 15 |
15 "skia.googlesource.com/buildbot.git/go/database" | 16 "skia.googlesource.com/buildbot.git/go/database" |
| 17 "skia.googlesource.com/buildbot.git/go/database/testutil" |
16 "skia.googlesource.com/buildbot.git/go/gitinfo" | 18 "skia.googlesource.com/buildbot.git/go/gitinfo" |
17 "skia.googlesource.com/buildbot.git/go/testutils" | 19 "skia.googlesource.com/buildbot.git/go/testutils" |
18 "skia.googlesource.com/buildbot.git/go/util" | 20 "skia.googlesource.com/buildbot.git/go/util" |
19 ) | 21 ) |
20 | 22 |
21 var ( | 23 var ( |
22 // testJsonInput is raw JSON data as returned from the build master. | 24 // testJsonInput is raw JSON data as returned from the build master. |
23 testJsonInput = testutils.MustReadFile("default_build.json") | 25 testJsonInput = testutils.MustReadFile("default_build.json") |
24 | 26 |
25 // testIncompleteBuild is JSON data for a not-yet-finished build. | 27 // testIncompleteBuild is JSON data for a not-yet-finished build. |
(...skipping 21 matching lines...) Expand all Loading... |
47 "http://build.chromium.org/p/client.skia/json/builders/Test-Ubun
tu12-ShuttleA-GTX660-x86-Release/builds/721": []byte(testJsonInput
), | 49 "http://build.chromium.org/p/client.skia/json/builders/Test-Ubun
tu12-ShuttleA-GTX660-x86-Release/builds/721": []byte(testJsonInput
), |
48 "http://build.chromium.org/p/client.skia/json/builders/Test-Ubun
tu12-ShuttleA-GTX550Ti-x86_64-Release-Valgrind/builds/152": []byte(testIncomplet
eBuild), | 50 "http://build.chromium.org/p/client.skia/json/builders/Test-Ubun
tu12-ShuttleA-GTX550Ti-x86_64-Release-Valgrind/builds/152": []byte(testIncomplet
eBuild), |
49 "http://build.chromium.org/p/client.skia.android/json/builders/P
erf-Android-Venue8-PowerVR-x86-Release/builds/464": []byte(venue464), | 51 "http://build.chromium.org/p/client.skia.android/json/builders/P
erf-Android-Venue8-PowerVR-x86-Release/builds/464": []byte(venue464), |
50 "http://build.chromium.org/p/client.skia.android/json/builders/P
erf-Android-Venue8-PowerVR-x86-Release/builds/465": []byte(venue465), | 52 "http://build.chromium.org/p/client.skia.android/json/builders/P
erf-Android-Venue8-PowerVR-x86-Release/builds/465": []byte(venue465), |
51 "http://build.chromium.org/p/client.skia.android/json/builders/P
erf-Android-Venue8-PowerVR-x86-Release/builds/466": []byte(venue466), | 53 "http://build.chromium.org/p/client.skia.android/json/builders/P
erf-Android-Venue8-PowerVR-x86-Release/builds/466": []byte(venue466), |
52 "http://build.chromium.org/p/client.skia.fyi/json/builders/House
keeper-PerCommit/builds/1035": []byte(housekeeper10
35), | 54 "http://build.chromium.org/p/client.skia.fyi/json/builders/House
keeper-PerCommit/builds/1035": []byte(housekeeper10
35), |
53 } | 55 } |
54 ) | 56 ) |
55 | 57 |
56 // clearDB initializes the database, upgrading it if needed, and removes all | 58 // clearDB initializes the database, upgrading it if needed, and removes all |
57 // data to ensure that the test begins with a clean slate. | 59 // data to ensure that the test begins with a clean slate. Returns a MySQLTestDa
tabase |
58 func clearDB(t *testing.T, conf *database.DatabaseConfig) error { | 60 // which must be closed after the test finishes. |
| 61 func clearDB(t *testing.T) *testutil.MySQLTestDatabase { |
59 failMsg := "Database initialization failed. Do you have the test databas
e set up properly? Details: %v" | 62 failMsg := "Database initialization failed. Do you have the test databas
e set up properly? Details: %v" |
60 » if err := InitDB(conf); err != nil { | 63 |
| 64 » // Set up the database. |
| 65 » testDb := testutil.SetupMySQLTestDatabase(t, migrationSteps) |
| 66 |
| 67 » conf := database.LocalTestDatabaseConfig(testutil.TEST_DB, migrationStep
s) |
| 68 » var err error |
| 69 » DB, err = sqlx.Open("mysql", conf.MySQLString) |
| 70 » if err != nil { |
61 t.Fatalf(failMsg, err) | 71 t.Fatalf(failMsg, err) |
62 } | 72 } |
63 » tables := []string{ | 73 |
64 » » TABLE_BUILD_REVISIONS, | 74 » return testDb |
65 » » TABLE_BUILD_STEPS, | |
66 » » TABLE_BUILDS, | |
67 » } | |
68 » // Delete the data. | |
69 » for _, table := range tables { | |
70 » » _, err := DB.Exec(fmt.Sprintf("DELETE FROM %s;", table)) | |
71 » » if err != nil { | |
72 » » » t.Fatalf(failMsg, err) | |
73 » » } | |
74 » } | |
75 » return nil | |
76 } | 75 } |
77 | 76 |
78 // respBodyCloser is a wrapper which lets us pretend to implement io.ReadCloser | 77 // respBodyCloser is a wrapper which lets us pretend to implement io.ReadCloser |
79 // by wrapping a bytes.Reader. | 78 // by wrapping a bytes.Reader. |
80 type respBodyCloser struct { | 79 type respBodyCloser struct { |
81 io.Reader | 80 io.Reader |
82 } | 81 } |
83 | 82 |
84 // Close is a stub method which lets us pretend to implement io.ReadCloser. | 83 // Close is a stub method which lets us pretend to implement io.ReadCloser. |
85 func (r respBodyCloser) Close() error { | 84 func (r respBodyCloser) Close() error { |
(...skipping 14 matching lines...) Expand all Loading... |
100 // testGetBuild is a helper function which pretends to load JSON data from a | 99 // testGetBuild is a helper function which pretends to load JSON data from a |
101 // build master and decodes it into a Build object. | 100 // build master and decodes it into a Build object. |
102 func testGetBuildFromMaster(repo *gitinfo.GitInfo) (*Build, error) { | 101 func testGetBuildFromMaster(repo *gitinfo.GitInfo) (*Build, error) { |
103 httpGet = testGet | 102 httpGet = testGet |
104 return getBuildFromMaster("client.skia", "Test-Ubuntu12-ShuttleA-GTX660-
x86-Release", 721, repo) | 103 return getBuildFromMaster("client.skia", "Test-Ubuntu12-ShuttleA-GTX660-
x86-Release", 721, repo) |
105 } | 104 } |
106 | 105 |
107 // TestGetBuildFromMaster verifies that we can load JSON data from the build mas
ter and | 106 // TestGetBuildFromMaster verifies that we can load JSON data from the build mas
ter and |
108 // decode it into a Build object. | 107 // decode it into a Build object. |
109 func TestGetBuildFromMaster(t *testing.T) { | 108 func TestGetBuildFromMaster(t *testing.T) { |
110 » clearDB(t, ProdDatabaseConfig(true)) | 109 » d := clearDB(t) |
| 110 » defer d.Close() |
111 | 111 |
112 // Load the test repo. | 112 // Load the test repo. |
113 tr := util.NewTempRepo() | 113 tr := util.NewTempRepo() |
114 defer tr.Cleanup() | 114 defer tr.Cleanup() |
115 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) | 115 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) |
116 if err != nil { | 116 if err != nil { |
117 t.Fatal(err) | 117 t.Fatal(err) |
118 } | 118 } |
119 | 119 |
120 // Default, complete build. | 120 // Default, complete build. |
121 if _, err := testGetBuildFromMaster(repo); err != nil { | 121 if _, err := testGetBuildFromMaster(repo); err != nil { |
122 t.Fatal(err) | 122 t.Fatal(err) |
123 } | 123 } |
124 // Incomplete build. | 124 // Incomplete build. |
125 _, err = getBuildFromMaster("client.skia", "Test-Ubuntu12-ShuttleA-GTX55
0Ti-x86_64-Release-Valgrind", 152, repo) | 125 _, err = getBuildFromMaster("client.skia", "Test-Ubuntu12-ShuttleA-GTX55
0Ti-x86_64-Release-Valgrind", 152, repo) |
126 if err != nil { | 126 if err != nil { |
127 t.Fatal(err) | 127 t.Fatal(err) |
128 } | 128 } |
129 } | 129 } |
130 | 130 |
131 // TestBuildJsonSerialization verifies that we can serialize a build to JSON | 131 // TestBuildJsonSerialization verifies that we can serialize a build to JSON |
132 // and back without losing or corrupting the data. | 132 // and back without losing or corrupting the data. |
133 func TestBuildJsonSerialization(t *testing.T) { | 133 func TestBuildJsonSerialization(t *testing.T) { |
134 » if err := clearDB(t, ProdDatabaseConfig(true)); err != nil { | 134 » d := clearDB(t) |
135 » » t.Fatal(err) | 135 » defer d.Close() |
136 » } | |
137 | 136 |
138 // Load the test repo. | 137 // Load the test repo. |
139 tr := util.NewTempRepo() | 138 tr := util.NewTempRepo() |
140 defer tr.Cleanup() | 139 defer tr.Cleanup() |
141 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) | 140 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) |
142 if err != nil { | 141 if err != nil { |
143 t.Fatal(err) | 142 t.Fatal(err) |
144 } | 143 } |
145 | 144 |
146 b1, err := testGetBuildFromMaster(repo) | 145 b1, err := testGetBuildFromMaster(repo) |
147 if err != nil { | 146 if err != nil { |
148 t.Fatal(err) | 147 t.Fatal(err) |
149 } | 148 } |
150 bytes, err := json.Marshal(b1) | 149 bytes, err := json.Marshal(b1) |
151 if err != nil { | 150 if err != nil { |
152 t.Fatal(err) | 151 t.Fatal(err) |
153 } | 152 } |
154 b2 := &Build{} | 153 b2 := &Build{} |
155 if err := json.Unmarshal(bytes, b2); err != nil { | 154 if err := json.Unmarshal(bytes, b2); err != nil { |
156 t.Fatal(err) | 155 t.Fatal(err) |
157 } | 156 } |
158 if !reflect.DeepEqual(b1, b2) { | 157 if !reflect.DeepEqual(b1, b2) { |
159 t.Fatalf("Serialization diff:\nIn: %v\nOut: %v", b1, b2) | 158 t.Fatalf("Serialization diff:\nIn: %v\nOut: %v", b1, b2) |
160 } | 159 } |
161 } | 160 } |
162 | 161 |
163 // TestFindCommitsForBuild verifies that findCommitsForBuild correctly obtains | 162 // TestFindCommitsForBuild verifies that findCommitsForBuild correctly obtains |
164 // the list of commits which were newly built in a given build. | 163 // the list of commits which were newly built in a given build. |
165 func TestFindCommitsForBuild(t *testing.T) { | 164 func TestFindCommitsForBuild(t *testing.T) { |
166 » if err := clearDB(t, ProdDatabaseConfig(true)); err != nil { | 165 » d := clearDB(t) |
167 » » t.Fatal(err) | 166 » defer d.Close() |
168 » } | |
169 | 167 |
170 // Load the test repo. | 168 // Load the test repo. |
171 tr := util.NewTempRepo() | 169 tr := util.NewTempRepo() |
172 defer tr.Cleanup() | 170 defer tr.Cleanup() |
173 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) | 171 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) |
174 if err != nil { | 172 if err != nil { |
175 t.Fatal(err) | 173 t.Fatal(err) |
176 } | 174 } |
177 | 175 |
178 // The test repo is laid out like this: | 176 // The test repo is laid out like this: |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 glog.Errorf("Not equal:\n %+v\n %+v\n", s, b2.St
eps[i]) | 274 glog.Errorf("Not equal:\n %+v\n %+v\n", s, b2.St
eps[i]) |
277 } | 275 } |
278 } | 276 } |
279 return fmt.Errorf("Builds are not equal! Builds:\nExpected: %+v\
nActual: %+v", b1, b2) | 277 return fmt.Errorf("Builds are not equal! Builds:\nExpected: %+v\
nActual: %+v", b1, b2) |
280 } | 278 } |
281 return nil | 279 return nil |
282 } | 280 } |
283 | 281 |
284 // testBuildDbSerialization verifies that we can write a build to the DB and | 282 // testBuildDbSerialization verifies that we can write a build to the DB and |
285 // pull it back out without losing or corrupting the data. | 283 // pull it back out without losing or corrupting the data. |
286 func testBuildDbSerialization(t *testing.T, conf *database.DatabaseConfig) { | 284 func testBuildDbSerialization(t *testing.T) { |
287 » clearDB(t, conf) | 285 » d := clearDB(t) |
| 286 » defer d.Close() |
| 287 |
288 // Load the test repo. | 288 // Load the test repo. |
289 tr := util.NewTempRepo() | 289 tr := util.NewTempRepo() |
290 defer tr.Cleanup() | 290 defer tr.Cleanup() |
291 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) | 291 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) |
292 if err != nil { | 292 if err != nil { |
293 t.Fatal(err) | 293 t.Fatal(err) |
294 } | 294 } |
295 | 295 |
296 // Test case: an empty build. Tests null and empty values. | 296 // Test case: an empty build. Tests null and empty values. |
297 emptyTime := 0.0 | 297 emptyTime := 0.0 |
(...skipping 13 matching lines...) Expand all Loading... |
311 for _, b := range testCases { | 311 for _, b := range testCases { |
312 if err = dbSerializeAndCompare(b); err != nil { | 312 if err = dbSerializeAndCompare(b); err != nil { |
313 t.Fatal(err) | 313 t.Fatal(err) |
314 } | 314 } |
315 } | 315 } |
316 } | 316 } |
317 | 317 |
318 // testUnfinishedBuild verifies that we can write a build which is not yet | 318 // testUnfinishedBuild verifies that we can write a build which is not yet |
319 // finished, load the build back from the database, and update it when it | 319 // finished, load the build back from the database, and update it when it |
320 // finishes. | 320 // finishes. |
321 func testUnfinishedBuild(t *testing.T, conf *database.DatabaseConfig) { | 321 func testUnfinishedBuild(t *testing.T) { |
322 » clearDB(t, conf) | 322 » d := clearDB(t) |
| 323 » defer d.Close() |
| 324 |
323 // Load the test repo. | 325 // Load the test repo. |
324 tr := util.NewTempRepo() | 326 tr := util.NewTempRepo() |
325 defer tr.Cleanup() | 327 defer tr.Cleanup() |
326 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) | 328 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) |
327 if err != nil { | 329 if err != nil { |
328 t.Fatal(err) | 330 t.Fatal(err) |
329 } | 331 } |
330 | 332 |
331 // Obtain and insert an unfinished build. | 333 // Obtain and insert an unfinished build. |
332 httpGet = testGet | 334 httpGet = testGet |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 break | 396 break |
395 } | 397 } |
396 } | 398 } |
397 if found { | 399 if found { |
398 t.Fatal(fmt.Errorf("Finished build was found by getUnfinishedBui
lds!")) | 400 t.Fatal(fmt.Errorf("Finished build was found by getUnfinishedBui
lds!")) |
399 } | 401 } |
400 } | 402 } |
401 | 403 |
402 // testLastProcessedBuilds verifies that getLastProcessedBuilds gives us | 404 // testLastProcessedBuilds verifies that getLastProcessedBuilds gives us |
403 // the expected result. | 405 // the expected result. |
404 func testLastProcessedBuilds(t *testing.T, conf *database.DatabaseConfig) { | 406 func testLastProcessedBuilds(t *testing.T) { |
405 » clearDB(t, conf) | 407 » d := clearDB(t) |
| 408 » defer d.Close() |
| 409 |
406 // Load the test repo. | 410 // Load the test repo. |
407 tr := util.NewTempRepo() | 411 tr := util.NewTempRepo() |
408 defer tr.Cleanup() | 412 defer tr.Cleanup() |
409 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) | 413 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) |
410 if err != nil { | 414 if err != nil { |
411 t.Fatal(err) | 415 t.Fatal(err) |
412 } | 416 } |
413 | 417 |
414 build, err := testGetBuildFromMaster(repo) | 418 build, err := testGetBuildFromMaster(repo) |
415 if err != nil { | 419 if err != nil { |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 actual, err := getLatestBuilds() | 519 actual, err := getLatestBuilds() |
516 if err != nil { | 520 if err != nil { |
517 t.Fatal(err) | 521 t.Fatal(err) |
518 } | 522 } |
519 if !reflect.DeepEqual(expected, actual) { | 523 if !reflect.DeepEqual(expected, actual) { |
520 t.Fatal(fmt.Errorf("getLatestBuilds returned incorrect results:
%v", actual)) | 524 t.Fatal(fmt.Errorf("getLatestBuilds returned incorrect results:
%v", actual)) |
521 } | 525 } |
522 } | 526 } |
523 | 527 |
524 // testGetUningestedBuilds verifies that getUningestedBuilds works as expected. | 528 // testGetUningestedBuilds verifies that getUningestedBuilds works as expected. |
525 func testGetUningestedBuilds(t *testing.T, conf *database.DatabaseConfig) { | 529 func testGetUningestedBuilds(t *testing.T) { |
526 » // First, insert some builds into the database as a starting point. | 530 » d := clearDB(t) |
527 » clearDB(t, conf) | 531 » defer d.Close() |
528 | 532 |
529 // Load the test repo. | 533 // Load the test repo. |
530 tr := util.NewTempRepo() | 534 tr := util.NewTempRepo() |
531 defer tr.Cleanup() | 535 defer tr.Cleanup() |
532 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) | 536 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) |
533 if err != nil { | 537 if err != nil { |
534 t.Fatal(err) | 538 t.Fatal(err) |
535 } | 539 } |
536 | 540 |
537 // This builder is no longer found on the master. | 541 // This builder is no longer found on the master. |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
606 t.Fatal(err) | 610 t.Fatal(err) |
607 } | 611 } |
608 if !reflect.DeepEqual(expected, actual) { | 612 if !reflect.DeepEqual(expected, actual) { |
609 t.Fatal(fmt.Errorf("getUningestedBuilds returned incorrect resul
ts: %v", actual)) | 613 t.Fatal(fmt.Errorf("getUningestedBuilds returned incorrect resul
ts: %v", actual)) |
610 } | 614 } |
611 } | 615 } |
612 | 616 |
613 // testIngestNewBuilds verifies that we can successfully query the masters and | 617 // testIngestNewBuilds verifies that we can successfully query the masters and |
614 // the database for new and unfinished builds, respectively, and ingest them | 618 // the database for new and unfinished builds, respectively, and ingest them |
615 // into the database. | 619 // into the database. |
616 func testIngestNewBuilds(t *testing.T, conf *database.DatabaseConfig) { | 620 func testIngestNewBuilds(t *testing.T) { |
617 » // First, insert some builds into the database as a starting point. | 621 » d := clearDB(t) |
618 » clearDB(t, conf) | 622 » defer d.Close() |
619 | 623 |
620 // Load the test repo. | 624 // Load the test repo. |
621 tr := util.NewTempRepo() | 625 tr := util.NewTempRepo() |
622 defer tr.Cleanup() | 626 defer tr.Cleanup() |
623 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) | 627 repo, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false
, true) |
624 if err != nil { | 628 if err != nil { |
625 t.Fatal(err) | 629 t.Fatal(err) |
626 } | 630 } |
627 | 631 |
628 // This builder needs to load a few builds. | 632 // This builder needs to load a few builds. |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
711 } | 715 } |
712 if !(a.MasterName == e.MasterName && a.BuilderName == e.BuilderN
ame && a.Number == e.Number) { | 716 if !(a.MasterName == e.MasterName && a.BuilderName == e.BuilderN
ame && a.Number == e.Number) { |
713 t.Fatalf("Incorrect build was inserted! %v", a) | 717 t.Fatalf("Incorrect build was inserted! %v", a) |
714 } | 718 } |
715 if !a.IsFinished() { | 719 if !a.IsFinished() { |
716 t.Fatalf("Failed to update build properly; it should be
finished: %v", a) | 720 t.Fatalf("Failed to update build properly; it should be
finished: %v", a) |
717 } | 721 } |
718 } | 722 } |
719 } | 723 } |
720 | 724 |
721 func TestSQLiteBuildDbSerialization(t *testing.T) { | |
722 testBuildDbSerialization(t, ProdDatabaseConfig(true)) | |
723 } | |
724 | |
725 func TestSQLiteUnfinishedBuild(t *testing.T) { | |
726 testUnfinishedBuild(t, ProdDatabaseConfig(true)) | |
727 } | |
728 | |
729 func TestSQLiteLastProcessedBuilds(t *testing.T) { | |
730 testLastProcessedBuilds(t, ProdDatabaseConfig(true)) | |
731 } | |
732 | |
733 func TestSQLiteGetUningestedBuilds(t *testing.T) { | |
734 testGetUningestedBuilds(t, ProdDatabaseConfig(true)) | |
735 } | |
736 | |
737 func TestSQLiteIngestNewBuilds(t *testing.T) { | |
738 testIngestNewBuilds(t, ProdDatabaseConfig(true)) | |
739 } | |
740 | |
741 // The below MySQL tests require: | |
742 // shell> mysql -u root | |
743 // mysql> CREATE DATABASE sk_testing; | |
744 // mysql> CREATE USER 'test_user'@'localhost'; | |
745 // mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON sk_testing.* TO 'test
_user'@'localhost'; | |
746 // | |
747 // They are skipped when using the -short flag. | |
748 func TestMySQLBuildDbSerialization(t *testing.T) { | 725 func TestMySQLBuildDbSerialization(t *testing.T) { |
749 if testing.Short() { | 726 if testing.Short() { |
750 t.Skip("Skipping MySQL tests with -short.") | 727 t.Skip("Skipping MySQL tests with -short.") |
751 } | 728 } |
752 » testBuildDbSerialization(t, localMySQLTestDatabaseConfig("test_user", ""
)) | 729 » testBuildDbSerialization(t) |
753 } | 730 } |
754 | 731 |
755 func TestMySQLUnfinishedBuild(t *testing.T) { | 732 func TestMySQLUnfinishedBuild(t *testing.T) { |
756 if testing.Short() { | 733 if testing.Short() { |
757 t.Skip("Skipping MySQL tests with -short.") | 734 t.Skip("Skipping MySQL tests with -short.") |
758 } | 735 } |
759 » testUnfinishedBuild(t, localMySQLTestDatabaseConfig("test_user", "")) | 736 » testUnfinishedBuild(t) |
760 } | 737 } |
761 | 738 |
762 func TestMySQLLastProcessedBuilds(t *testing.T) { | 739 func TestMySQLLastProcessedBuilds(t *testing.T) { |
763 if testing.Short() { | 740 if testing.Short() { |
764 t.Skip("Skipping MySQL tests with -short.") | 741 t.Skip("Skipping MySQL tests with -short.") |
765 } | 742 } |
766 » testLastProcessedBuilds(t, localMySQLTestDatabaseConfig("test_user", "")
) | 743 » testLastProcessedBuilds(t) |
767 } | 744 } |
768 | 745 |
769 func TestMySQLGetUningestedBuilds(t *testing.T) { | 746 func TestMySQLGetUningestedBuilds(t *testing.T) { |
770 if testing.Short() { | 747 if testing.Short() { |
771 t.Skip("Skipping MySQL tests with -short.") | 748 t.Skip("Skipping MySQL tests with -short.") |
772 } | 749 } |
773 » testGetUningestedBuilds(t, localMySQLTestDatabaseConfig("test_user", "")
) | 750 » testGetUningestedBuilds(t) |
774 } | 751 } |
775 | 752 |
776 func TestMySQLIngestNewBuilds(t *testing.T) { | 753 func TestMySQLIngestNewBuilds(t *testing.T) { |
777 if testing.Short() { | 754 if testing.Short() { |
778 t.Skip("Skipping MySQL tests with -short.") | 755 t.Skip("Skipping MySQL tests with -short.") |
779 } | 756 } |
780 » testIngestNewBuilds(t, localMySQLTestDatabaseConfig("test_user", "")) | 757 » testIngestNewBuilds(t) |
781 } | 758 } |
OLD | NEW |