Changeset 201718 in webkit
- Timestamp:
- Jun 6, 2016 11:51:23 AM (8 years ago)
- Location:
- trunk/Websites/perf.webkit.org
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Websites/perf.webkit.org/ChangeLog
r201607 r201718 1 2016-06-06 Ryosuke Niwa <rniwa@webkit.org> 2 3 sync-buildbot.js should update the list of tests and platforms associated with a triggerable 4 https://bugs.webkit.org/show_bug.cgi?id=158406 5 <rdar://problem/26185737> 6 7 Reviewed by Darin Adler. 8 9 Added /api/update-triggerable to update the list of configurations (platform and test pairs) 10 associated with a given triggerable, and make sync-buildbot.js use this JSON API before each 11 syncing cycle so that the association gets updated automatically by simply updating the JSON. 12 13 * server-tests/api-manifest.js: Use const for imported modules. 14 * server-tests/api-report-commits-tests.js: Removed unnecessary importing of crypto. 15 * server-tests/resources/mock-data.js: 16 (MockData.someTestId): Added. 17 (MockData.somePlatformId): Added. 18 (MockData.addMockData): 19 * server-tests/tools-buildbot-triggerable-tests.js: Use const for imported modules. Also added 20 a test for BuildbotTriggerable's updateTriggerable. 21 * tools/js/buildbot-triggerable.js: 22 (BuildbotTriggerable.prototype.updateTriggerable): Added. Find the list of all configurations 23 associated with this triggeerable and post it to /api/update-triggerable. 24 * tools/js/database.js: Added triggerable_configurations to the list of tables. 25 * tools/js/remote.js: 26 (RemoteAPI.prototype.postJSON): Print the whole response when JSON parsing fails for debugging. 27 * tools/sync-buildbot.js: 28 (syncLoop): Call BuildbotTriggerable's updateTriggerable before syncing. 29 1 30 2016-06-02 Ryosuke Niwa <rniwa@webkit.org> 2 31 -
trunk/Websites/perf.webkit.org/server-tests/api-manifest.js
r199444 r201718 1 1 'use strict'; 2 2 3 let assert = require('assert');3 const assert = require('assert'); 4 4 5 5 require('../tools/js/v3-models.js'); 6 6 7 let TestServer = require('./resources/test-server.js'); 7 const MockData = require('./resources/mock-data.js'); 8 const TestServer = require('./resources/test-server.js'); 8 9 9 10 describe('/api/manifest', function () { -
trunk/Websites/perf.webkit.org/server-tests/api-report-commits-tests.js
r199191 r201718 2 2 3 3 const assert = require('assert'); 4 const crypto = require('crypto');5 4 6 5 const TestServer = require('./resources/test-server.js'); -
trunk/Websites/perf.webkit.org/server-tests/resources/mock-data.js
r199332 r201718 17 17 TestGroup.clearStaticMap(); 18 18 }, 19 someTestId() { return 200; }, 20 somePlatformId() { return 65; }, 19 21 addMockData: function (db, statusList) 20 22 { … … 29 31 db.insert('commits', {id: 93116, repository: 11, revision: '191622', time: (new Date(1445945816878)).toISOString()}), 30 32 db.insert('commits', {id: 96336, repository: 11, revision: '192736', time: (new Date(1448225325650)).toISOString()}), 31 db.insert('platforms', {id: 65, name: 'some platform'}),32 db.insert('tests', {id: 200, name: 'some test'}),33 db.insert('platforms', {id: MockData.somePlatformId(), name: 'some platform'}), 34 db.insert('tests', {id: MockData.someTestId(), name: 'some test'}), 33 35 db.insert('test_metrics', {id: 300, test: 200, name: 'some metric'}), 34 36 db.insert('test_configurations', {id: 301, metric: 300, platform: 65, type: 'current'}), -
trunk/Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js
r199388 r201718 1 1 'use strict'; 2 2 3 let assert = require('assert'); 4 5 let BuildbotTriggerable = require('../tools/js/buildbot-triggerable.js').BuildbotTriggerable; 6 let MockData = require('./resources/mock-data.js'); 7 let MockRemoteAPI = require('../unit-tests/resources/mock-remote-api.js').MockRemoteAPI; 8 let TestServer = require('./resources/test-server.js'); 3 const assert = require('assert'); 4 5 const BuildbotTriggerable = require('../tools/js/buildbot-triggerable.js').BuildbotTriggerable; 6 const MockData = require('./resources/mock-data.js'); 7 const MockRemoteAPI = require('../unit-tests/resources/mock-remote-api.js').MockRemoteAPI; 8 const TestServer = require('./resources/test-server.js'); 9 const connectToDatabaseInEveryTest = require('./resources/common-operations.js').connectToDatabaseInEveryTest; 9 10 10 11 class MockLogger { … … 903 904 }); 904 905 }); 906 907 describe('updateTriggerables', function () { 908 connectToDatabaseInEveryTest(); 909 910 it('should update available triggerables', function (done) { 911 let db = TestServer.database(); 912 MockData.addMockData(db).then(function () { 913 return Manifest.fetch(); 914 }).then(function () { 915 return db.selectAll('triggerable_configurations', 'test'); 916 }).then(function (configurations) { 917 assert.equal(configurations.length, 0); 918 let config = MockData.mockTestSyncConfigWithSingleBuilder(); 919 let logger = new MockLogger; 920 let slaveInfo = {name: 'sync-slave', password: 'password'}; 921 let triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger); 922 return triggerable.updateTriggerable(); 923 }).then(function () { 924 return db.selectAll('triggerable_configurations', 'test'); 925 }).then(function (configurations) { 926 assert.equal(configurations.length, 1); 927 assert.equal(configurations[0].test, MockData.someTestId()); 928 assert.equal(configurations[0].platform, MockData.somePlatformId()); 929 done(); 930 }).catch(done); 931 }); 932 }); 933 905 934 }); -
trunk/Websites/perf.webkit.org/tools/js/buildbot-triggerable.js
r199388 r201718 27 27 28 28 name() { return this._name; } 29 30 updateTriggerable() 31 { 32 const map = new Map; 33 for (const syncer of this._syncers) { 34 for (const config of syncer.testConfigurations()) { 35 const entry = {test: config.test.id(), platform: config.platform.id()}; 36 map.set(entry.test + '-' + entry.platform, entry); 37 } 38 } 39 return this._remote.postJSON(`/api/update-triggerable/`, { 40 'slaveName': this._slaveInfo.name, 41 'slavePassword': this._slaveInfo.password, 42 'triggerable': this._name, 43 'configurations': Array.from(map.values())}); 44 } 29 45 30 46 syncOnce() -
trunk/Websites/perf.webkit.org/tools/js/database.js
r199191 r201718 143 143 'tests': 'test', 144 144 'tracker_repositories': 'tracrepo', 145 'triggerable_configurations': 'trigconfig', 145 146 'platforms': 'platform', 146 147 'reports': 'report', -
trunk/Websites/perf.webkit.org/tools/js/remote.js
r199266 r201718 72 72 const payload = JSON.stringify(data); 73 73 return this.sendHttpRequest(path, 'POST', 'application/json', payload).then(function (result) { 74 return JSON.parse(result.responseText); 74 try { 75 return JSON.parse(result.responseText); 76 } catch (error) { 77 console.error(result.responseText); 78 throw error; 79 } 75 80 }); 76 81 } -
trunk/Websites/perf.webkit.org/tools/sync-buildbot.js
r199220 r201718 42 42 43 43 console.log(`Fetching the manifest...`); 44 45 let triggerable; 44 46 Manifest.fetch().then(function () { 45 let triggerable = new BuildbotTriggerable(buildbotConfig, global.RemoteAPI, buildbotRemote, serverConfig.slave, console); 47 triggerable = new BuildbotTriggerable(buildbotConfig, global.RemoteAPI, buildbotRemote, serverConfig.slave, console); 48 return triggerable.updateTriggerable(); 49 }).then(function () { 46 50 return triggerable.syncOnce(); 47 51 }).catch(function (error) {
Note: See TracChangeset
for help on using the changeset viewer.