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