| OLD | NEW |
| 1 package analysis | 1 package analysis |
| 2 | 2 |
| 3 import ( | 3 import ( |
| 4 "fmt" | 4 "fmt" |
| 5 "os" | 5 "os" |
| 6 "sort" | 6 "sort" |
| 7 "strings" | 7 "strings" |
| 8 "testing" | 8 "testing" |
| 9 "time" | 9 "time" |
| 10 | 10 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 "t4": map[string]types.Label{"d_44": types.POSITIVE}, | 76 "t4": map[string]types.Label{"d_44": types.POSITIVE}, |
| 77 } | 77 } |
| 78 STATUS_OK_2, UNTRIAGED_COUNT_2, NEGATIVE_COUNT_2 := true, 0, 0 | 78 STATUS_OK_2, UNTRIAGED_COUNT_2, NEGATIVE_COUNT_2 := true, 0, 0 |
| 79 | 79 |
| 80 assert.Equal(t, len(digests), len(params)) | 80 assert.Equal(t, len(digests), len(params)) |
| 81 assert.Equal(t, len(digests[0]), len(commits)) | 81 assert.Equal(t, len(digests[0]), len(commits)) |
| 82 | 82 |
| 83 diffStore := NewMockDiffStore() | 83 diffStore := NewMockDiffStore() |
| 84 expStore := expstorage.NewMemExpectationsStore() | 84 expStore := expstorage.NewMemExpectationsStore() |
| 85 tileStore := NewMockTileStore(t, digests, params, commits) | 85 tileStore := NewMockTileStore(t, digests, params, commits) |
| 86 ignoreStore := types.NewMemIgnoreStore() |
| 86 timeBetweenPolls := 10 * time.Hour | 87 timeBetweenPolls := 10 * time.Hour |
| 87 » a := NewAnalyzer(expStore, tileStore, diffStore, mockUrlGenerator, timeB
etweenPolls) | 88 » a := NewAnalyzer(expStore, tileStore, diffStore, ignoreStore, mockUrlGen
erator, timeBetweenPolls) |
| 88 | 89 |
| 89 allTests, err := a.ListTestDetails(nil) | 90 allTests, err := a.ListTestDetails(nil) |
| 90 assert.Nil(t, err) | 91 assert.Nil(t, err) |
| 91 | 92 |
| 92 // Poll until ready | 93 // Poll until ready |
| 93 for allTests == nil { | 94 for allTests == nil { |
| 94 time.Sleep(10 * time.Millisecond) | 95 time.Sleep(10 * time.Millisecond) |
| 95 allTests, err = a.ListTestDetails(nil) | 96 allTests, err = a.ListTestDetails(nil) |
| 96 assert.Nil(t, err) | 97 assert.Nil(t, err) |
| 97 } | 98 } |
| 98 assert.NotNil(t, allTests) | 99 assert.NotNil(t, allTests) |
| 99 assert.Equal(t, len(params), len(allTests.Tests)) | 100 assert.Equal(t, len(params), len(allTests.Tests)) |
| 100 | 101 |
| 101 // Make sure the lookup function works correctly. | 102 // Make sure the lookup function works correctly. |
| 102 » for _, oneTest := range a.currentTestDetails.Tests { | 103 » for _, oneTest := range a.current.TestDetails.Tests { |
| 103 » » found := a.currentTestDetails.lookup(oneTest.Name) | 104 » » found := a.current.TestDetails.lookup(oneTest.Name) |
| 104 assert.NotNil(t, found) | 105 assert.NotNil(t, found) |
| 105 assert.Equal(t, oneTest, found) | 106 assert.Equal(t, oneTest, found) |
| 106 } | 107 } |
| 107 | 108 |
| 108 test1, err := a.GetTestDetails("t1", nil) | 109 test1, err := a.GetTestDetails("t1", nil) |
| 109 assert.Nil(t, err) | 110 assert.Nil(t, err) |
| 110 assert.NotNil(t, test1) | 111 assert.NotNil(t, test1) |
| 111 assert.Equal(t, commits, test1.Commits) | 112 assert.Equal(t, commits, test1.Commits) |
| 112 assert.Equal(t, 1, len(test1.Tests)) | 113 assert.Equal(t, 1, len(test1.Tests)) |
| 113 assert.Equal(t, 0, len(test1.Query)) | 114 assert.Equal(t, 0, len(test1.Query)) |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 // Download the testdata and remove the testdata directory at the end. | 175 // Download the testdata and remove the testdata directory at the end. |
| 175 err := testutils.DownloadTestDataFile(TEST_DATA_STORAGE_PATH, TEST_DATA_
PATH) | 176 err := testutils.DownloadTestDataFile(TEST_DATA_STORAGE_PATH, TEST_DATA_
PATH) |
| 176 assert.Nil(t, err, "Unable to download testdata.") | 177 assert.Nil(t, err, "Unable to download testdata.") |
| 177 defer func() { | 178 defer func() { |
| 178 os.RemoveAll(TEST_DATA_DIR) | 179 os.RemoveAll(TEST_DATA_DIR) |
| 179 }() | 180 }() |
| 180 | 181 |
| 181 diffStore := NewMockDiffStore() | 182 diffStore := NewMockDiffStore() |
| 182 expStore := expstorage.NewMemExpectationsStore() | 183 expStore := expstorage.NewMemExpectationsStore() |
| 183 tileStore := NewMockTileStoreFromJson(t, TEST_DATA_PATH) | 184 tileStore := NewMockTileStoreFromJson(t, TEST_DATA_PATH) |
| 185 ignoreStore := types.NewMemIgnoreStore() |
| 184 timeBetweenPolls := 10 * time.Hour | 186 timeBetweenPolls := 10 * time.Hour |
| 185 » a := NewAnalyzer(expStore, tileStore, diffStore, mockUrlGenerator, timeB
etweenPolls) | 187 » a := NewAnalyzer(expStore, tileStore, diffStore, ignoreStore, mockUrlGen
erator, timeBetweenPolls) |
| 186 | 188 |
| 187 // Poll until the Analyzer has process the tile. | 189 // Poll until the Analyzer has process the tile. |
| 188 var allTests *GUITestDetails | 190 var allTests *GUITestDetails |
| 189 allTests, err = a.ListTestDetails(nil) | 191 allTests, err = a.ListTestDetails(nil) |
| 190 assert.Nil(t, err) | 192 assert.Nil(t, err) |
| 191 for allTests == nil { | 193 for allTests == nil { |
| 192 time.Sleep(10 * time.Millisecond) | 194 time.Sleep(10 * time.Millisecond) |
| 193 allTests, err = a.ListTestDetails(nil) | 195 allTests, err = a.ListTestDetails(nil) |
| 194 assert.Nil(t, err) | 196 assert.Nil(t, err) |
| 195 } | 197 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 assert.True(t, commitIds[0] < len(oneTest.Commits)) | 233 assert.True(t, commitIds[0] < len(oneTest.Commits)) |
| 232 assert.True(t, commitIds[0] >= 0) | 234 assert.True(t, commitIds[0] >= 0) |
| 233 for i := 1; i < len(commitIds); i++ { | 235 for i := 1; i < len(commitIds); i++ { |
| 234 assert.True(t, commitIds[i-1] < commitIds[i], fm
t.Sprintf("%d is not smaller than %d", commitIds[i-1], commitIds[i])) | 236 assert.True(t, commitIds[i-1] < commitIds[i], fm
t.Sprintf("%d is not smaller than %d", commitIds[i-1], commitIds[i])) |
| 235 assert.True(t, commitIds[i] < len(oneTest.Commit
s)) | 237 assert.True(t, commitIds[i] < len(oneTest.Commit
s)) |
| 236 assert.True(t, commitIds[i] >= 0) | 238 assert.True(t, commitIds[i] >= 0) |
| 237 } | 239 } |
| 238 } | 240 } |
| 239 | 241 |
| 240 // Go through the current tile and check whether the digests mat
ch up. | 242 // Go through the current tile and check whether the digests mat
ch up. |
| 241 » » for _, trace := range a.currentTile.Traces[testName] { | 243 » » for _, trace := range a.current.Tile.Traces[testName] { |
| 242 for idx, digest := range trace.Digests { | 244 for idx, digest := range trace.Digests { |
| 243 assert.NotNil(t, commitsBD[digest], fmt.Sprintf(
"Did not find digest: %s in \n %v", digest, commitsBD)) | 245 assert.NotNil(t, commitsBD[digest], fmt.Sprintf(
"Did not find digest: %s in \n %v", digest, commitsBD)) |
| 244 assert.NotEqual(t, len(commitsBD[digest]), sort.
SearchInts(commitsBD[digest], trace.CommitIds[idx])) | 246 assert.NotEqual(t, len(commitsBD[digest]), sort.
SearchInts(commitsBD[digest], trace.CommitIds[idx])) |
| 245 } | 247 } |
| 246 } | 248 } |
| 247 } | 249 } |
| 248 | 250 |
| 249 // Get the status. | 251 // Get the status. |
| 250 status := a.GetStatus() | 252 status := a.GetStatus() |
| 251 | 253 |
| 252 // Query over all corpora. | 254 // Query over all corpora. |
| 253 allTests, err = a.ListTestDetails(nil) | 255 allTests, err = a.ListTestDetails(nil) |
| 254 assert.Nil(t, err) | 256 assert.Nil(t, err) |
| 255 assert.NotNil(t, allTests.AllParams) | 257 assert.NotNil(t, allTests.AllParams) |
| 256 | 258 |
| 257 // Query each corpus individually and make sure the results make sense. | 259 // Query each corpus individually and make sure the results make sense. |
| 258 testCount := 0 | 260 testCount := 0 |
| 259 testParams := map[string][]string{} | 261 testParams := map[string][]string{} |
| 260 for corpus, _ := range status.CorpStatus { | 262 for corpus, _ := range status.CorpStatus { |
| 261 q := map[string][]string{"source_type": []string{corpus}} | 263 q := map[string][]string{"source_type": []string{corpus}} |
| 262 corpusTests, err := a.ListTestDetails(q) | 264 corpusTests, err := a.ListTestDetails(q) |
| 265 q["head"] = []string{"0"} |
| 263 assert.Nil(t, err) | 266 assert.Nil(t, err) |
| 264 assert.Equal(t, q, corpusTests.Query) | 267 assert.Equal(t, q, corpusTests.Query) |
| 265 assert.NotEqual(t, allTests.AllParams, corpusTests.AllParams) | 268 assert.NotEqual(t, allTests.AllParams, corpusTests.AllParams) |
| 266 | 269 |
| 267 testCount += len(corpusTests.Tests) | 270 testCount += len(corpusTests.Tests) |
| 268 addParams(testParams, corpusTests.AllParams) | 271 addParams(testParams, corpusTests.AllParams) |
| 269 } | 272 } |
| 270 assert.Equal(t, len(allTests.Tests), testCount) | 273 assert.Equal(t, len(allTests.Tests), testCount) |
| 271 assert.Equal(t, len(allTests.AllParams), len(testParams)) | 274 assert.Equal(t, len(allTests.AllParams), len(testParams)) |
| 272 for param, values := range allTests.AllParams { | 275 for param, values := range allTests.AllParams { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 331 } | 334 } |
| 332 | 335 |
| 333 func (m MockDiffStore) AbsPath(digest []string) map[string]string { | 336 func (m MockDiffStore) AbsPath(digest []string) map[string]string { |
| 334 result := map[string]string{} | 337 result := map[string]string{} |
| 335 for _, d := range digest { | 338 for _, d := range digest { |
| 336 result[d] = "abspath/" + d | 339 result[d] = "abspath/" + d |
| 337 } | 340 } |
| 338 return result | 341 return result |
| 339 } | 342 } |
| 340 | 343 |
| 341 func (m MockDiffStore) IgnorableDigests() map[string]bool { | 344 func (m MockDiffStore) UnavailableDigests() map[string]bool { |
| 342 return nil | 345 return nil |
| 343 } | 346 } |
| 344 | 347 |
| 345 func NewMockDiffStore() diff.DiffStore { | 348 func NewMockDiffStore() diff.DiffStore { |
| 346 return MockDiffStore{} | 349 return MockDiffStore{} |
| 347 } | 350 } |
| 348 | 351 |
| 349 // Mock the tilestore for GoldenTraces | 352 // Mock the tilestore for GoldenTraces |
| 350 func NewMockTileStore(t *testing.T, digests [][]string, params []map[string]stri
ng, commits []*ptypes.Commit) ptypes.TileStore { | 353 func NewMockTileStore(t *testing.T, digests [][]string, params []map[string]stri
ng, commits []*ptypes.Commit) ptypes.TileStore { |
| 351 // Build the tile from the digests, params and commits. | 354 // Build the tile from the digests, params and commits. |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 } | 402 } |
| 400 | 403 |
| 401 func (m *MockTileStore) Put(scale, index int, tile *ptypes.Tile) error { | 404 func (m *MockTileStore) Put(scale, index int, tile *ptypes.Tile) error { |
| 402 assert.FailNow(m.t, "Should not be called.") | 405 assert.FailNow(m.t, "Should not be called.") |
| 403 return nil | 406 return nil |
| 404 } | 407 } |
| 405 | 408 |
| 406 func (m *MockTileStore) GetModifiable(scale, index int) (*ptypes.Tile, error) { | 409 func (m *MockTileStore) GetModifiable(scale, index int) (*ptypes.Tile, error) { |
| 407 return m.Get(scale, index) | 410 return m.Get(scale, index) |
| 408 } | 411 } |
| OLD | NEW |