Add the UI for scheduling a A/B testing with a custom root
[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         AnalysisTask._fetchAllPromise = null;
9         AnalysisTask.clearStaticMap();
10         BuildRequest.clearStaticMap();
11         CommitLog.clearStaticMap();
12         Metric.clearStaticMap();
13         Platform.clearStaticMap();
14         Repository.clearStaticMap();
15         CommitSet.clearStaticMap();
16         Test.clearStaticMap();
17         TestGroup.clearStaticMap();
18         Triggerable.clearStaticMap();
19         TriggerableRepositoryGroup.clearStaticMap();
20     },
21     emptyTriggeragbleId() { return 1001; },
22     someTestId() { return 200; },
23     somePlatformId() { return 65; },
24     macosRepositoryId() { return 9; },
25     webkitRepositoryId() { return 11; },
26     gitWebkitRepositoryId() { return 111; },
27     addMockData: function (db, statusList)
28     {
29         if (!statusList)
30             statusList = ['pending', 'pending', 'pending', 'pending'];
31         return Promise.all([
32             db.insert('build_triggerables', {id: 1000, name: 'build-webkit'}),
33             db.insert('build_slaves', {id: 20, name: 'sync-slave', password_hash: crypto.createHash('sha256').update('password').digest('hex')}),
34             db.insert('repositories', {id: this.macosRepositoryId(), name: 'macOS'}),
35             db.insert('repositories', {id: this.webkitRepositoryId(), name: 'WebKit'}),
36             db.insert('triggerable_repository_groups', {id: 2001, name: 'webkit-svn', triggerable: 1000}),
37             db.insert('triggerable_repositories', {repository: this.macosRepositoryId(), group: 2001}),
38             db.insert('triggerable_repositories', {repository: this.webkitRepositoryId(), group: 2001}),
39             db.insert('commits', {id: 87832, repository: this.macosRepositoryId(), revision: '10.11 15A284'}),
40             db.insert('commits', {id: 93116, repository: this.webkitRepositoryId(), revision: '191622', time: '2015-10-27T11:36:56.88Z'}),
41             db.insert('commits', {id: 96336, repository: this.webkitRepositoryId(), revision: '192736', time: '2015-11-22T20:48:45.65Z'}),
42             db.insert('commits', {id: 96629, repository: this.webkitRepositoryId(), revision: '192903', time: '2015-12-01T21:14:46.99Z'}),
43             db.insert('builds', {id: 901, number: '901', time: '2015-10-27T12:05:27.1Z'}),
44             db.insert('builds', {id: 902, number: '902', time: '2015-10-27T12:06:54.2Z'}),
45             db.insert('build_commits', {commit_build: 901, build_commit: 93116}),
46             db.insert('build_commits', {commit_build: 902, build_commit: 96336}),
47             db.insert('platforms', {id: MockData.somePlatformId(), name: 'some platform'}),
48             db.insert('tests', {id: MockData.someTestId(), name: 'some test'}),
49             db.insert('test_metrics', {id: 300, test: MockData.someTestId(), name: 'some metric'}),
50             db.insert('test_configurations', {id: 301, metric: 300, platform: MockData.somePlatformId(), type: 'current'}),
51             db.insert('test_runs', {id: 801, config: 301, build: 901, mean_cache: 101}),
52             db.insert('test_runs', {id: 802, config: 301, build: 902, mean_cache: 92}),
53             db.insert('commit_sets', {id: 401}),
54             db.insert('commit_set_relationships', {set: 401, commit: 87832}),
55             db.insert('commit_set_relationships', {set: 401, commit: 93116}),
56             db.insert('commit_sets', {id: 402}),
57             db.insert('commit_set_relationships', {set: 402, commit: 87832}),
58             db.insert('commit_set_relationships', {set: 402, commit: 96336}),
59             db.insert('analysis_tasks', {id: 500, platform: 65, metric: 300, name: 'some task',
60                 start_run: 801, start_run_time: '2015-10-27T12:05:27.1Z',
61                 end_run: 801, end_run_time: '2015-10-27T12:05:27.1Z'}),
62             db.insert('analysis_test_groups', {id: 600, task: 500, name: 'some test group'}),
63             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}),
64             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}),
65             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}),
66             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}),
67         ]);
68     },
69     addEmptyTriggerable(db)
70     {
71         return Promise.all([
72             db.insert('build_triggerables', {id: this.emptyTriggeragbleId(), name: 'empty-triggerable'}),
73             db.insert('repositories', {id: this.macosRepositoryId(), name: 'macOS'}),
74             db.insert('repositories', {id: this.webkitRepositoryId(), name: 'WebKit'}),
75             db.insert('repositories', {id: this.gitWebkitRepositoryId(), name: 'Git-WebKit'}),
76             db.insert('platforms', {id: MockData.somePlatformId(), name: 'some platform'}),
77             db.insert('tests', {id: MockData.someTestId(), name: 'some test'}),
78         ]);
79     },
80     addMockTestGroupWithGitWebKit(db)
81     {
82         return Promise.all([
83             db.insert('repositories', {id: this.gitWebkitRepositoryId(), name: 'Git-WebKit'}),
84             db.insert('triggerable_repository_groups', {id: 2002, name: 'webkit-git', triggerable: 1000}),
85             db.insert('triggerable_repositories', {repository: this.macosRepositoryId(), group: 2002}),
86             db.insert('triggerable_repositories', {repository: this.gitWebkitRepositoryId(), group: 2002}),
87             db.insert('commits', {id: 193116, repository: this.gitWebkitRepositoryId(), revision: '2ceda45d3cd63cde58d0dbf5767714e03d902e43', time: (new Date(1445945816878)).toISOString()}),
88             db.insert('commits', {id: 196336, repository: this.gitWebkitRepositoryId(), revision: '8e294365a452a89785d6536ca7f0fc8a95fa152d', time: (new Date(1448225325650)).toISOString()}),
89             db.insert('commit_sets', {id: 1401}),
90             db.insert('commit_set_relationships', {set: 1401, commit: 87832}),
91             db.insert('commit_set_relationships', {set: 1401, commit: 193116}),
92             db.insert('commit_sets', {id: 1402}),
93             db.insert('commit_set_relationships', {set: 1402, commit: 87832}),
94             db.insert('commit_set_relationships', {set: 1402, commit: 196336}),
95             db.insert('analysis_test_groups', {id: 1600, task: 500, name: 'test group with git'}),
96             db.insert('build_requests', {id: 1700, status: 'pending', triggerable: 1000, repository_group: 2002, platform: 65, test: 200, group: 1600, order: 0, commit_set: 1401}),
97             db.insert('build_requests', {id: 1701, status: 'pending', triggerable: 1000, repository_group: 2002, platform: 65, test: 200, group: 1600, order: 1, commit_set: 1402}),
98             db.insert('build_requests', {id: 1702, status: 'pending', triggerable: 1000, repository_group: 2002, platform: 65, test: 200, group: 1600, order: 2, commit_set: 1401}),
99             db.insert('build_requests', {id: 1703, status: 'pending', triggerable: 1000, repository_group: 2002, platform: 65, test: 200, group: 1600, order: 3, commit_set: 1402}),
100         ]);
101     },
102     addAnotherMockTestGroup: function (db, statusList, author)
103     {
104         if (!statusList)
105             statusList = ['pending', 'pending', 'pending', 'pending'];
106         const test = MockData.someTestId();
107         const triggerable = 1000;
108         const platform = 65;
109         const repository_group = 2001;
110         return Promise.all([
111             db.insert('analysis_test_groups', {id: 601, task: 500, name: 'another test group', author}),
112             db.insert('build_requests', {id: 713, status: statusList[3], triggerable, repository_group, platform, test, group: 601, order: 3, commit_set: 402}),
113             db.insert('build_requests', {id: 710, status: statusList[0], triggerable, repository_group, platform, test, group: 601, order: 0, commit_set: 401}),
114             db.insert('build_requests', {id: 712, status: statusList[2], triggerable, repository_group, platform, test, group: 601, order: 2, commit_set: 401}),
115             db.insert('build_requests', {id: 711, status: statusList[1], triggerable, repository_group, platform, test, group: 601, order: 1, commit_set: 402}),
116         ]);
117     },
118     mockTestSyncConfigWithSingleBuilder: function ()
119     {
120         return {
121             'triggerableName': 'build-webkit',
122             'lookbackCount': 2,
123             'buildRequestArgument': 'build-request-id',
124             'repositoryGroups': {
125                 'webkit-svn': {
126                     'repositories': ['WebKit', 'macOS'],
127                     'properties': {
128                         'os': '<macOS>',
129                         'wk': '<WebKit>',
130                     }
131                 }
132             },
133             'configurations': [
134                 {
135                     'platform': 'some platform',
136                     'test': ['some test'],
137                     'builder': 'some-builder-1',
138                 }
139             ]
140         }
141     },
142     mockTestSyncConfigWithTwoBuilders: function ()
143     {
144         return {
145             'triggerableName': 'build-webkit',
146             'lookbackCount': 2,
147             'buildRequestArgument': 'build-request-id',
148             'repositoryGroups': {
149                 'webkit-svn': {
150                     'repositories': ['WebKit', 'macOS'],
151                     'properties': {
152                         'os': '<macOS>',
153                         'wk': '<WebKit>',
154                     }
155                 }
156             },
157             'configurations': [
158                 {
159                     'platform': 'some platform',
160                     'test': ['some test'],
161                     'builder': 'some-builder-1',
162                 },
163                 {
164                     'platform': 'some platform',
165                     'test': ['some test'],
166                     'builder': 'some builder 2',
167                 }
168             ]
169         }
170     },
171     pendingBuild(options)
172     {
173         options = options || {};
174         return {
175             'builderName': options.builder || 'some-builder-1',
176             'builds': [],
177             'properties': [
178                 ['wk', options.webkitRevision || '191622'],
179                 ['os', options.osxRevision || '10.11 15A284'],
180                 ['build-request-id', (options.buildRequestId || 702).toString(), ]
181             ],
182             'source': {
183                 'branch': '',
184                 'changes': [],
185                 'codebase': 'WebKit',
186                 'hasPatch': false,
187                 'project': '',
188                 'repository': '',
189                 'revision': ''
190             },
191         };
192     },
193     runningBuild(options)
194     {
195         options = options || {};
196         return {
197             'builderName': options.builder || 'some-builder-1',
198             'builds': [],
199             'properties': [
200                 ['wk', options.webkitRevision || '192736'],
201                 ['os', options.osxRevision || '10.11 15A284'],
202                 ['build-request-id', (options.buildRequestId || 701).toString(), ]
203             ],
204             'currentStep': {},
205             'eta': 721,
206             'number': 124,
207             'source': {
208                 'branch': '',
209                 'changes': [],
210                 'codebase': 'WebKit',
211                 'hasPatch': false,
212                 'project': '',
213                 'repository': '',
214                 'revision': ''
215             },
216         };
217     },
218     finishedBuild(options)
219     {
220         options = options || {};
221         return {
222             'builderName': options.builder || 'some-builder-1',
223             'builds': [],
224             'properties': [
225                 ['wk', options.webkitRevision || '191622'],
226                 ['os', options.osxRevision || '10.11 15A284'],
227                 ['build-request-id', (options.buildRequestId || 700).toString(), ]
228             ],
229             'currentStep': null,
230             'eta': null,
231             'number': 123,
232             'source': {
233                 'branch': '',
234                 'changes': [],
235                 'codebase': 'WebKit',
236                 'hasPatch': false,
237                 'project': '',
238                 'repository': '',
239                 'revision': ''
240             },
241             'times': [0, 1],
242         };
243     }
244 }
245
246 if (typeof module != 'undefined')
247     module.exports = MockData;