Index: Tools/GardeningServer/model/test/ct-failures-tests.html |
diff --git a/Tools/GardeningServer/model/test/ct-failures-tests.html b/Tools/GardeningServer/model/test/ct-failures-tests.html |
index e68d81257b86cf636d91766b513a1617bda4348c..c8c9370db7721b7825fae61dbeaad524fb84c93b 100644 |
--- a/Tools/GardeningServer/model/test/ct-failures-tests.html |
+++ b/Tools/GardeningServer/model/test/ct-failures-tests.html |
@@ -6,6 +6,12 @@ found in the LICENSE file. |
<link rel="import" href="../ct-failures.html"> |
+<link rel="import" href="../../lib/network-simulator.html"> |
+<link rel="import" href="../ct-commit-list.html"> |
+<link rel="import" href="../ct-commit-log-mock.html"> |
+<link rel="import" href="../ct-failure-group.html"> |
+<link rel="import" href="../ct-failure.html"> |
+ |
<script> |
(function () { |
@@ -36,10 +42,10 @@ describe('ct-failures', function() { |
var cl2 = new CTCommitList(undefined, ['chromium:2', 'blink:1']); |
var cl3 = new CTCommitList(undefined, ['chromium:2', 'blink:2']); |
var cl4 = new CTCommitList(undefined, []); |
- var group1 = new CTFailureGroup([], cl1); |
- var group2 = new CTFailureGroup([], cl2); |
- var group3 = new CTFailureGroup([], cl3); |
- var group4 = new CTFailureGroup([], cl4); |
+ var group1 = new CTFailureGroup('', [], cl1); |
+ var group2 = new CTFailureGroup('', [], cl2); |
+ var group3 = new CTFailureGroup('', [], cl3); |
+ var group4 = new CTFailureGroup('', [], cl4); |
// Sort by last revision first. |
assert(analyzer._failureByTreeListComparator('chromium', group1, group2) > 0); |
@@ -60,6 +66,158 @@ describe('ct-failures', function() { |
assert(analyzer._failureByTreeListComparator('chromium', group4, group1) > 0); |
}); |
}); |
+ |
+ describe('.update', function() { |
+ it('should update everything', function(done) { |
+ var simulator = new NetworkSimulator(assert, done); |
+ var netData = { |
+ alerts: { |
+ latest_builder_info: { |
+ 'chromium.webkit': { |
+ 'Linux Tests': { |
+ state: "building", |
+ lastUpdateTime: 1409697816.726562, |
+ revisions: { |
+ v8: 50, |
+ chromium: 293001, |
+ nacl: 50, |
+ blink: 181262 |
+ }, |
+ }, |
+ }, |
+ 'chromium.linux': { |
+ "Linux Tests (dbg)(1)": { |
+ state: "building", |
+ lastUpdateTime: 1409696812.7248161, |
+ revisions: { |
+ v8: 50, |
+ chromium: 292984, |
+ nacl: 50, |
+ blink: 181241 |
+ } |
+ }, |
+ } |
+ }, |
+ range_groups: [ |
+ { |
+ sort_key: 'linux: Linux Tests (dbg)(1)', |
+ failure_keys: [ 'f1', ], |
+ likely_revisions: [ |
+ 'chromium: 100', |
+ 'chromium: 101', |
+ ], |
+ merged_first_failing: { |
+ blink: 50, |
+ nacl: 50, |
+ v8: 50, |
+ chromium: 101, |
+ }, |
+ merged_last_passing: { |
+ blink: 50, |
+ nacl: 50, |
+ v8: 50, |
+ chromium: 99, |
+ }, |
+ }, |
+ ], |
+ alerts: [ |
+ { |
+ last_result_time: 1409697347.089103, |
+ failing_build_count: 4, |
+ passing_build: 2485, |
+ last_failing_build: 2489, |
+ failing_build: 2486, |
+ latest_revisions: { |
+ v8: 50, |
+ chromium: 103, |
+ nacl: 50, |
+ blink: 51 |
+ }, |
+ master_url: "https://build.chromium.org/p/chromium.linux", |
+ reason: null, |
+ failing_revisions: { |
+ v8: 50, |
+ chromium: 101, |
+ nacl: 50, |
+ blink: 50 |
+ }, |
+ builder_name: "Linux Tests (dbg)(1)", |
+ key: "f1", |
+ step_name: "compile", |
+ tree_name: null, |
+ passing_revisions: { |
+ v8: 50, |
+ chromium: 99, |
+ nacl: 50, |
+ blink: 50 |
+ }, |
+ would_close_tree: true |
+ }, |
+ ], |
+ } |
+ } |
+ simulator.json = function(url) { |
+ var matched = Object.find(netData, function(key) { |
+ return url.indexOf(key) != -1; |
+ }); |
+ if (matched) { |
+ return Promise.resolve(netData[matched]); |
+ } else { |
+ return Promise.reject('Unexpected url: ' + url); |
+ } |
+ }; |
+ simulator.runTest(function() { |
+ var analyzer = new CTFailures(CTCommitLogMock()); |
+ return analyzer.update().then(function() { |
+ assert.property(analyzer.failures, 'chromium'); |
+ assert.lengthOf(analyzer.failures.chromium, 1); |
+ var group = analyzer.failures.chromium[0]; |
+ assert.equal(group.constructor, CTFailureGroup); |
+ assert.equal(group.key, 'linux: Linux Tests (dbg)(1)'); |
+ assert.lengthOf(group.failures, 1); |
+ var failure = group.failures[0]; |
+ assert.equal(failure.constructor, CTFailure); |
+ assert.equal(failure.key, 'compile::null'); |
+ assert.equal(failure.step, 'compile'); |
+ assert.equal(failure.testName, null); |
+ var resultNodesByBuilder = failure.resultNodesByBuilder; |
+ assert.property(resultNodesByBuilder, 'Linux Tests (dbg)(1)'); |
+ var dbgBuilder = resultNodesByBuilder['Linux Tests (dbg)(1)']; |
+ assert.propertyVal(dbgBuilder, 'actual', 'UNKNOWN'); |
+ assert.propertyVal(dbgBuilder, 'lastFailingBuild', 2489); |
+ assert.propertyVal(dbgBuilder, 'earliestFailingBuild', 2486); |
+ assert.propertyVal(dbgBuilder, 'masterUrl', 'https://build.chromium.org/p/chromium.linux'); |
+ assert.propertyVal(dbgBuilder, 'failingBuildCount', 4); |
+ |
+ var commitList = group.commitList; |
+ assert.equal(commitList.constructor, CTCommitList); |
+ assert.lengthOf(commitList.repositories, 1); |
+ var repositoryCommitList = commitList.repositories[0]; |
+ assert.propertyVal(repositoryCommitList, 'range', '100 : 101'); |
+ assert.propertyVal(repositoryCommitList, 'expanded', false); |
+ |
+ // Flip |expanded| to true to check that it's preserved across updates. |
+ repositoryCommitList.expanded = true; |
+ |
+ // Update |netData| to make sure it's propagated into the updated values. |
+ netData.alerts.alerts[0].last_failing_build = 2490; |
+ |
+ return analyzer.update().then(function() { |
+ assert.strictEqual(analyzer.failures.chromium[0], group) |
+ assert.strictEqual(group.failures[0], failure) |
+ assert.strictEqual(failure.resultNodesByBuilder, resultNodesByBuilder); |
+ assert.strictEqual(resultNodesByBuilder['Linux Tests (dbg)(1)'], dbgBuilder); |
+ assert.propertyVal(dbgBuilder, 'lastFailingBuild', 2490); |
+ |
+ assert.strictEqual(group.commitList, commitList); |
+ assert.strictEqual(commitList.repositories[0], repositoryCommitList); |
+ assert.propertyVal(repositoryCommitList, 'expanded', true); |
+ }); |
+ }); |
+ }); |
+ }); |
+ }); |
+ |
}); |
})() |