d9950a27ed108c0b96f69acb9d467a6125dce80f
[WebKit.git] / Websites / perf.webkit.org / server-tests / resources / mock-data.js
1 require('../../tools/js/v3-models.js');
2
3 var crypto = require('crypto');
4
5 MockData = {
6     resetV3Models: function ()
7     {
8         Manifest.reset();
9     },
10     emptyTriggeragbleId() { return 1001; },
11     someTestId() { return 200; },
12     somePlatformId() { return 65; },
13     otherPlatformId() { return 101; },
14     macosRepositoryId() { return 9; },
15     webkitRepositoryId() { return 11; },
16     ownedJSCRepositoryId() { return 213; },
17     jscRepositoryId() { return 222; },
18     gitWebkitRepositoryId() { return 111; },
19     sharedRepositoryId() { return 14; },
20     buildbotBuildersURLDeprecated() {return '/json/builders'},
21     buildbotBuildersURL() {return '/api/v2/builders'},
22     addMockConfiguration: function (db)
23     {
24         return Promise.all([
25             db.insert('build_triggerables', {id: 1000, name: 'build-webkit'}),
26             db.insert('build_slaves', {id: 20, name: 'sync-slave', password_hash: crypto.createHash('sha256').update('password').digest('hex')}),
27             db.insert('repositories', {id: this.macosRepositoryId(), name: 'macOS'}),
28             db.insert('repositories', {id: this.webkitRepositoryId(), name: 'WebKit'}),
29             db.insert('repositories', {id: this.sharedRepositoryId(), name: 'Shared'}),
30             db.insert('repositories', {id: this.ownedJSCRepositoryId(), owner: this.webkitRepositoryId(), name: 'JavaScriptCore'}),
31             db.insert('repositories', {id: this.jscRepositoryId(), name: 'JavaScriptCore'}),
32             db.insert('triggerable_repository_groups', {id: 2001, name: 'webkit-svn', triggerable: 1000}),
33             db.insert('triggerable_repositories', {repository: this.macosRepositoryId(), group: 2001}),
34             db.insert('triggerable_repositories', {repository: this.webkitRepositoryId(), group: 2001}),
35             db.insert('commits', {id: 87832, repository: this.macosRepositoryId(), revision: '10.11 15A284'}),
36             db.insert('commits', {id: 93116, repository: this.webkitRepositoryId(), revision: '191622', time: (new Date(1445945816878)).toISOString()}),
37             db.insert('commits', {id: 96336, repository: this.webkitRepositoryId(), revision: '192736', time: (new Date(1448225325650)).toISOString()}),
38             db.insert('commits', {id: 111168, repository: this.sharedRepositoryId(), revision: '80229', time: '2016-03-02T23:17:54.3Z'}),
39             db.insert('commits', {id: 111169, repository: this.sharedRepositoryId(), revision: '80230', time: '2016-03-02T23:37:18.0Z'}),
40             db.insert('commits', {id: 11797, repository: this.jscRepositoryId(), revision: 'jsc-6161', time: '2016-03-02T23:19:55.3Z'}),
41             db.insert('commits', {id: 12017, repository: this.jscRepositoryId(), revision: 'jsc-9191', time: '2016-05-02T23:13:57.1Z'}),
42             db.insert('commits', {id: 1797, repository: this.ownedJSCRepositoryId(), revision: 'owned-jsc-6161', time: '2016-03-02T23:19:55.3Z'}),
43             db.insert('commits', {id: 2017, repository: this.ownedJSCRepositoryId(), revision: 'owned-jsc-9191', time: '2016-05-02T23:13:57.1Z'}),
44             db.insert('commit_ownerships', {owner: 93116, owned: 1797}),
45             db.insert('commit_ownerships', {owner: 96336, owned: 2017}),
46             db.insert('builds', {id: 901, number: '901', time: '2015-10-27T12:05:27.1Z'}),
47             db.insert('platforms', {id: MockData.somePlatformId(), name: 'some platform'}),
48             db.insert('platforms', {id: MockData.otherPlatformId(), name: 'other platform'}),
49             db.insert('tests', {id: MockData.someTestId(), name: 'some test'}),
50             db.insert('test_metrics', {id: 300, test: 200, name: 'some metric'}),
51             db.insert('test_configurations', {id: 301, metric: 300, platform: MockData.somePlatformId(), type: 'current'}),
52             db.insert('test_configurations', {id: 302, metric: 300, platform: MockData.otherPlatformId(), type: 'current'}),
53             db.insert('test_runs', {id: 801, config: 301, build: 901, mean_cache: 100}),
54         ]);
55     },
56     addMockData: function (db, statusList)
57     {
58         if (!statusList)
59             statusList = ['pending', 'pending', 'pending', 'pending'];
60         return Promise.all([
61             this.addMockConfiguration(db),
62             db.insert('commit_sets', {id: 401}),
63             db.insert('commit_set_items', {set: 401, commit: 87832}),
64             db.insert('commit_set_items', {set: 401, commit: 93116}),
65             db.insert('commit_sets', {id: 402}),
66             db.insert('commit_set_items', {set: 402, commit: 87832}),
67             db.insert('commit_set_items', {set: 402, commit: 96336}),
68             db.insert('analysis_tasks', {id: 500, platform: 65, metric: 300, name: 'some task',
69                 start_run: 801, start_run_time: '2015-10-27T12:05:27.1Z',
70                 end_run: 801, end_run_time: '2015-10-27T12:05:27.1Z'}),
71             db.insert('analysis_test_groups', {id: 600, task: 500, name: 'some test group'}),
72             db.insert('build_requests', {id: 700, status: statusList[0], triggerable: 1000, repository_group: 2001, platform: 65, test: 200, group: 600, order: 0, commit_set: 401}),
73             db.insert('build_requests', {id: 701, status: statusList[1], triggerable: 1000, repository_group: 2001, platform: 65, test: 200, group: 600, order: 1, commit_set: 402}),
74             db.insert('build_requests', {id: 702, status: statusList[2], triggerable: 1000, repository_group: 2001, platform: 65, test: 200, group: 600, order: 2, commit_set: 401}),
75             db.insert('build_requests', {id: 703, status: statusList[3], triggerable: 1000, repository_group: 2001, platform: 65, test: 200, group: 600, order: 3, commit_set: 402}),
76         ]);
77     },
78     addAnotherTriggerable(db) {
79         return Promise.all([
80             db.insert('build_triggerables', {id: 2345, name: 'build-webkit-jsc'}),
81             db.insert('triggerable_repository_groups', {id: 4002, name: 'mac-svnwebkit-jsc', triggerable: 2345}),
82             db.insert('triggerable_repositories', {repository: this.macosRepositoryId(), group: 4002}),
83             db.insert('triggerable_repositories', {repository: this.webkitRepositoryId(), group: 4002}),
84             db.insert('triggerable_repositories', {repository: this.jscRepositoryId(), group: 4002}),
85         ]);
86     },
87     addEmptyTriggerable(db)
88     {
89         return Promise.all([
90             db.insert('build_triggerables', {id: this.emptyTriggeragbleId(), name: 'empty-triggerable'}),
91             db.insert('repositories', {id: this.macosRepositoryId(), name: 'macOS'}),
92             db.insert('repositories', {id: this.webkitRepositoryId(), name: 'WebKit'}),
93             db.insert('repositories', {id: this.gitWebkitRepositoryId(), name: 'Git-WebKit'}),
94             db.insert('platforms', {id: MockData.somePlatformId(), name: 'some platform'}),
95             db.insert('tests', {id: MockData.someTestId(), name: 'some test'}),
96             db.insert('test_metrics', {id: 5300, test: MockData.someTestId(), name: 'some metric'}),
97             db.insert('test_configurations', {id: 5400, metric: 5300, platform: MockData.somePlatformId(), type: 'current'}),
98         ]);
99     },
100     addMockTestGroupWithGitWebKit(db)
101     {
102         return Promise.all([
103             db.insert('repositories', {id: this.gitWebkitRepositoryId(), name: 'Git-WebKit'}),
104             db.insert('triggerable_repository_groups', {id: 2002, name: 'webkit-git', triggerable: 1000}),
105             db.insert('triggerable_repositories', {repository: this.macosRepositoryId(), group: 2002}),
106             db.insert('triggerable_repositories', {repository: this.gitWebkitRepositoryId(), group: 2002}),
107             db.insert('commits', {id: 193116, repository: this.gitWebkitRepositoryId(), revision: '2ceda45d3cd63cde58d0dbf5767714e03d902e43', time: (new Date(1445945816878)).toISOString()}),
108             db.insert('commits', {id: 196336, repository: this.gitWebkitRepositoryId(), revision: '8e294365a452a89785d6536ca7f0fc8a95fa152d', time: (new Date(1448225325650)).toISOString()}),
109             db.insert('commit_sets', {id: 1401}),
110             db.insert('commit_set_items', {set: 1401, commit: 87832}),
111             db.insert('commit_set_items', {set: 1401, commit: 193116}),
112             db.insert('commit_sets', {id: 1402}),
113             db.insert('commit_set_items', {set: 1402, commit: 87832}),
114             db.insert('commit_set_items', {set: 1402, commit: 196336}),
115             db.insert('analysis_test_groups', {id: 1600, task: 500, name: 'test group with git'}),
116             db.insert('build_requests', {id: 1700, status: 'pending', triggerable: 1000, repository_group: 2002, platform: 65, test: 200, group: 1600, order: 0, commit_set: 1401}),
117             db.insert('build_requests', {id: 1701, status: 'pending', triggerable: 1000, repository_group: 2002, platform: 65, test: 200, group: 1600, order: 1, commit_set: 1402}),
118             db.insert('build_requests', {id: 1702, status: 'pending', triggerable: 1000, repository_group: 2002, platform: 65, test: 200, group: 1600, order: 2, commit_set: 1401}),
119             db.insert('build_requests', {id: 1703, status: 'pending', triggerable: 1000, repository_group: 2002, platform: 65, test: 200, group: 1600, order: 3, commit_set: 1402}),
120         ]);
121     },
122     addAnotherMockTestGroup: function (db, statusList, author)
123     {
124         if (!statusList)
125             statusList = ['pending', 'pending', 'pending', 'pending'];
126         const test = MockData.someTestId();
127         const triggerable = 1000;
128         const platform = 65;
129         const repository_group = 2001;
130         return Promise.all([
131             db.insert('analysis_test_groups', {id: 601, task: 500, name: 'another test group', author}),
132             db.insert('build_requests', {id: 713, status: statusList[3], triggerable, repository_group, platform, test, group: 601, order: 3, commit_set: 402}),
133             db.insert('build_requests', {id: 710, status: statusList[0], triggerable, repository_group, platform, test, group: 601, order: 0, commit_set: 401}),
134             db.insert('build_requests', {id: 712, status: statusList[2], triggerable, repository_group, platform, test, group: 601, order: 2, commit_set: 401}),
135             db.insert('build_requests', {id: 711, status: statusList[1], triggerable, repository_group, platform, test, group: 601, order: 1, commit_set: 402}),
136         ]);
137     },
138     addTestGroupWithOwnedCommits(db, statusList)
139     {
140
141         if (!statusList)
142             statusList = ['pending', 'pending', 'pending', 'pending'];
143         return Promise.all([
144             this.addMockConfiguration(db),
145             this.addAnotherTriggerable(db),
146             db.insert('analysis_tasks', {id: 1080, platform: 65, metric: 300, name: 'some task with component test',
147                 start_run: 801, start_run_time: '2015-10-27T12:05:27.1Z',
148                 end_run: 801, end_run_time: '2015-10-27T12:05:27.1Z'}),
149             db.insert('analysis_test_groups', {id: 900, task: 1080, name: 'some test group with component test'}),
150             db.insert('commit_sets', {id: 403}),
151             db.insert('commit_set_items', {set: 403, commit: 87832}),
152             db.insert('commit_set_items', {set: 403, commit: 93116}),
153             db.insert('commit_set_items', {set: 403, commit: 1797, commit_owner: 93116, requires_build: true}),
154             db.insert('commit_sets', {id: 404}),
155             db.insert('commit_set_items', {set: 404, commit: 87832}),
156             db.insert('commit_set_items', {set: 404, commit: 96336}),
157             db.insert('commit_set_items', {set: 404, commit: 2017, commit_owner: 96336, requires_build: true}),
158             db.insert('build_requests', {id: 704, status: statusList[0], triggerable: 1000, repository_group: 2001, platform: 65, test: 200, group: 900, order: 0, commit_set: 403}),
159             db.insert('build_requests', {id: 705, status: statusList[1], triggerable: 1000, repository_group: 2001, platform: 65, test: 200, group: 900, order: 1, commit_set: 404}),
160             db.insert('build_requests', {id: 706, status: statusList[2], triggerable: 1000, repository_group: 2001, platform: 65, test: 200, group: 900, order: 2, commit_set: 403}),
161             db.insert('build_requests', {id: 707, status: statusList[3], triggerable: 1000, repository_group: 2001, platform: 65, test: 200, group: 900, order: 3, commit_set: 404}),
162         ]);
163     },
164     addTestGroupWithOwnerCommitNotInCommitSet(db)
165     {
166         return Promise.all([
167             this.addMockConfiguration(db),
168             this.addAnotherTriggerable(db),
169             db.insert('analysis_tasks', {id: 1080, platform: 65, metric: 300, name: 'some task with component test',
170                 start_run: 801, start_run_time: '2015-10-27T12:05:27.1Z',
171                 end_run: 801, end_run_time: '2015-10-27T12:05:27.1Z'}),
172             db.insert('analysis_test_groups', {id: 900, task: 1080, name: 'some test group with component test'}),
173             db.insert('commit_sets', {id: 404}),
174             db.insert('commit_set_items', {set: 404, commit: 87832}),
175             db.insert('commit_set_items', {set: 404, commit: 96336}),
176             db.insert('commit_set_items', {set: 404, commit: 2017, commit_owner: 93116, requires_build: true}),
177             db.insert('build_requests', {id: 704, status: 'pending', triggerable: 1000, repository_group: 2001, platform: 65, test: 200, group: 900, order: 0, commit_set: 404}),
178         ]);
179     },
180     mockTestSyncConfigWithSingleBuilder: function ()
181     {
182         return {
183             'triggerableName': 'build-webkit',
184             'lookbackCount': 2,
185             'buildRequestArgument': 'build-request-id',
186             'repositoryGroups': {
187                 'webkit-svn': {
188                     'repositories': {'WebKit': {}, 'macOS': {}},
189                     'testProperties': {
190                         'os': {'revision': 'macOS'},
191                         'wk': {'revision': 'WebKit'},
192                     }
193                 }
194             },
195             'types': {
196                 'some-test': {'test': ['some test']}
197             },
198             'builders': {
199                 'builder-1': {'builder': 'some-builder-1',
200                      properties: {forcescheduler: 'force-some-builder-1'}} 
201             },
202             'testConfigurations': [
203                 {
204                     'platforms': ['some platform'],
205                     'types': ['some-test'],
206                     'builders': ['builder-1'],
207                 }
208             ]
209         }
210     },
211     mockTestSyncConfigWithTwoBuilders: function ()
212     {
213         return {
214             'triggerableName': 'build-webkit',
215             'lookbackCount': 2,
216             'buildRequestArgument': 'build-request-id',
217             'repositoryGroups': {
218                 'webkit-svn': {
219                     'repositories': {'WebKit': {}, 'macOS': {}},
220                     'testProperties': {
221                         'os': {'revision': 'macOS'},
222                         'wk': {'revision': 'WebKit'},
223                     }
224                 }
225             },
226             'types': {
227                 'some-test': {'test': ['some test']},
228             },
229             'builders': {
230                 'builder-1': {'builder': 'some-builder-1', properties: {forcescheduler: 'force-some-builder-1'}},
231                 'builder-2': {'builder': 'some builder 2', properties: {forcescheduler: 'force-some-builder-2'}},
232             },
233             'testConfigurations': [
234                 {
235                     'platforms': ['some platform'],
236                     'types': ['some-test'],
237                     'builders': ['builder-1', 'builder-2'],
238                 }
239             ]
240         }
241     },
242     mockBuildbotBuildersDeprecated: function ()
243     {
244         return {
245             "some builder": {
246                 "slaves": [ "some-slave-1" ]
247             },
248             "some-builder-1": {
249                 "slaves": [ "some-slave-2" ]
250             },
251             "some builder 2": {
252                 "slaves": [ "some-slave-3" ]
253             },
254             "other builder": {
255                 "slaves": [ "some-slave-4" ]
256             },
257             "some tester": {
258                 "slaves": [ "some-slave-5" ]
259             },
260             "another tester": {
261                 "slaves": [ "some-slave-6" ]
262             }
263         }
264     },
265     mockBuildbotBuilders: function ()
266     {
267         return {
268             "builders": [
269                 {
270                     "builderid": 1,
271                     "name": "some builder",
272                 },
273                 {
274                     "builderid": 2,
275                     "name": "some-builder-1",
276                 },
277                 {
278                     "builderid": 3,
279                     "name": "some builder 2",
280                 },
281                 {
282                     "builderid": 4,
283                     "name": "other builder",
284                 },
285                 {
286                     "builderid": 5,
287                     "name": "some tester",
288                 },
289                 {
290                     "builderid": 6,
291                     "name": "another tester",
292                 }
293             ]
294         }
295     },
296     pendingBuild(options)
297     {
298         options = options || {};
299         return {
300             'builderName': options.builder || 'some-builder-1',
301             'builds': [],
302             'properties': [
303                 ['wk', options.webkitRevision || '191622'],
304                 ['os', options.osxRevision || '10.11 15A284'],
305                 ['build-request-id', (options.buildRequestId || 702).toString(), ]
306             ],
307             'source': {
308                 'branch': '',
309                 'changes': [],
310                 'codebase': 'WebKit',
311                 'hasPatch': false,
312                 'project': '',
313                 'repository': '',
314                 'revision': ''
315             },
316         };
317     },
318     runningBuild(options)
319     {
320         options = options || {};
321         return {
322             'builderName': options.builder || 'some-builder-1',
323             'builds': [],
324             'properties': [
325                 ['wk', options.webkitRevision || '192736'],
326                 ['os', options.osxRevision || '10.11 15A284'],
327                 ['build-request-id', (options.buildRequestId || 701).toString(), ]
328             ],
329             'currentStep': {},
330             'eta': 721,
331             'number': options.buildNumber || 124,
332             'source': {
333                 'branch': '',
334                 'changes': [],
335                 'codebase': 'WebKit',
336                 'hasPatch': false,
337                 'project': '',
338                 'repository': '',
339                 'revision': ''
340             },
341         };
342     },
343     finishedBuild(options)
344     {
345         options = options || {};
346         return {
347             'builderName': options.builder || 'some-builder-1',
348             'builds': [],
349             'properties': [
350                 ['wk', options.webkitRevision || '191622'],
351                 ['os', options.osxRevision || '10.11 15A284'],
352                 ['build-request-id', (options.buildRequestId || 700).toString(), ]
353             ],
354             'currentStep': null,
355             'eta': null,
356             'number': options.buildNumber || 123,
357             'source': {
358                 'branch': '',
359                 'changes': [],
360                 'codebase': 'WebKit',
361                 'hasPatch': false,
362                 'project': '',
363                 'repository': '',
364                 'revision': ''
365             },
366             'times': [0, 1],
367         };
368     }
369 }
370
371 if (typeof module != 'undefined')
372     module.exports = MockData;