Modified: trunk/Websites/perf.webkit.org/ChangeLog (227233 => 227234)
--- trunk/Websites/perf.webkit.org/ChangeLog 2018-01-19 21:48:25 UTC (rev 227233)
+++ trunk/Websites/perf.webkit.org/ChangeLog 2018-01-19 22:12:23 UTC (rev 227234)
@@ -1,3 +1,15 @@
+2018-01-18 Dewei Zhu <[email protected]>
+
+ Should allow updating a build-request to 'canceled'.
+ https://bugs.webkit.org/show_bug.cgi?id=181819
+
+ Reviewed by Ryosuke Niwa.
+
+ It's possible syncing script update a build-request to 'canceled' state.
+
+ * public/api/build-requests.php: Added 'canceled' as an acceptable update state.
+ * server-tests/api-build-requests-tests.js: Added a unit test to update a build-request to 'canceled'.
+
2018-01-18 Aakash Jain <[email protected]>
Add support for builderNameToIDMap in BuildbotSyncer
Modified: trunk/Websites/perf.webkit.org/public/api/build-requests.php (227233 => 227234)
--- trunk/Websites/perf.webkit.org/public/api/build-requests.php 2018-01-19 21:48:25 UTC (rev 227233)
+++ trunk/Websites/perf.webkit.org/public/api/build-requests.php 2018-01-19 22:12:23 UTC (rev 227234)
@@ -61,7 +61,7 @@
}
$db->update_row('build_requests', 'request', array('id' => $id), array('status' => 'failed', 'url' => $url));
} else {
- if (!in_array($status, array('pending', 'scheduled', 'running', 'failed', 'completed'))) {
+ if (!in_array($status, array('pending', 'scheduled', 'running', 'failed', 'completed', 'canceled'))) {
$db->rollback_transaction();
exit_with_error('UnknownBuildRequestStatus', array('buildRequest' => $id, 'status' => $status));
}
Modified: trunk/Websites/perf.webkit.org/server-tests/api-build-requests-tests.js (227233 => 227234)
--- trunk/Websites/perf.webkit.org/server-tests/api-build-requests-tests.js 2018-01-19 21:48:25 UTC (rev 227233)
+++ trunk/Websites/perf.webkit.org/server-tests/api-build-requests-tests.js 2018-01-19 22:12:23 UTC (rev 227234)
@@ -542,4 +542,48 @@
assert.strictEqual(buildRequests[7].order(), 3);
});
});
+
+ it('should not return "UnknownBuildRequestStatus" when updating a canceled build request', () => {
+ const updates = {'700': {status: 'canceled', url: 'http://build.webkit.org/someBuilder/builds'}};
+ return MockData.addMockData(TestServer.database()).then(() => {
+ return TestServer.remoteAPI().postJSONWithStatus('/api/build-requests/build-webkit', {
+ 'slaveName': 'sync-slave',
+ 'slavePassword': 'password',
+ 'buildRequestUpdates': updates
+ }).then((response) => {
+ assert.equal(response['status'], 'OK');
+
+ assert.equal(response['buildRequests'].length, 4);
+ assert.deepEqual(response['buildRequests'][0].id, 700);
+ assert.deepEqual(response['buildRequests'][0].order, 0);
+ assert.deepEqual(response['buildRequests'][0].platform, '65');
+ assert.deepEqual(response['buildRequests'][0].commitSet, 401);
+ assert.deepEqual(response['buildRequests'][0].status, 'canceled');
+ assert.deepEqual(response['buildRequests'][0].test, '200');
+
+ assert.deepEqual(response['buildRequests'][1].id, 701);
+ assert.deepEqual(response['buildRequests'][1].order, 1);
+ assert.deepEqual(response['buildRequests'][1].platform, '65');
+ assert.deepEqual(response['buildRequests'][1].commitSet, 402);
+ assert.deepEqual(response['buildRequests'][1].status, 'pending');
+ assert.deepEqual(response['buildRequests'][1].test, '200');
+
+ assert.deepEqual(response['buildRequests'][2].id, 702);
+ assert.deepEqual(response['buildRequests'][2].order, 2);
+ assert.deepEqual(response['buildRequests'][2].platform, '65');
+ assert.deepEqual(response['buildRequests'][2].commitSet, 401);
+ assert.deepEqual(response['buildRequests'][2].status, 'pending');
+ assert.deepEqual(response['buildRequests'][2].test, '200');
+
+ assert.deepEqual(response['buildRequests'][3].id, 703);
+ assert.deepEqual(response['buildRequests'][3].order, 3);
+ assert.deepEqual(response['buildRequests'][3].platform, '65');
+ assert.deepEqual(response['buildRequests'][3].commitSet, 402);
+ assert.deepEqual(response['buildRequests'][3].status, 'pending');
+ assert.deepEqual(response['buildRequests'][3].test, '200');
+ }, () => {
+ assert(false, 'Should not be reached');
+ });
+ });
+ });
});