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