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

Side by Side Diff: go/buildbot/buildbot_test.go

Issue 813443002: Overhaul database package (Closed) Base URL: https://skia.googlesource.com/buildbot@master
Patch Set: Unskip the CT GS tests 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 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
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
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
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
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
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
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
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
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 }
OLDNEW
« README.md ('K') | « datahopper/go/datahopper/main.go ('k') | go/buildbot/db.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698