Unreviewed build fix after r174555.
[WebKit-https.git] / Websites / perf.webkit.org / tests / admin-regenerate-manifest.js
1 describe("/admin/regenerate-manifest", function () {
2
3     it("should generate an empty manifest when database is empty", function () {
4         httpGet('/admin/regenerate-manifest', function (response) {
5             assert.equal(response.statusCode, 200);
6             httpGet('/data/manifest', function (response) {
7                 assert.equal(response.statusCode, 200);
8                 var manifest = JSON.parse(response.responseText);
9                 assert.deepEqual(manifest, {
10                     all: [],
11                     bugTrackers: [],
12                     builders: [],
13                     dashboard: [],
14                     metrics: [],
15                     repositories: [],
16                     tests: []});
17                 notifyDone();
18             });
19         });
20     });
21
22     it("should generate manifest with bug trackers without repositories", function () {
23         queryAndFetchAll("INSERT INTO bug_trackers (tracker_id, tracker_name, tracker_new_bug_url) VALUES"
24             + " (1, 'Bugzilla', 'bugs.webkit.org')", [], function () {
25             httpGet('/admin/regenerate-manifest', function (response) {
26                 assert.equal(response.statusCode, 200);
27                 httpGet('/data/manifest', function (response) {
28                     assert.equal(response.statusCode, 200);
29                     var manifest = JSON.parse(response.responseText);
30                     assert.deepEqual(manifest['bugTrackers'], { 'Bugzilla': { newBugUrl: 'bugs.webkit.org', repositories: null } });
31                     notifyDone();
32                 });
33             });
34         });
35     });
36
37     it("should generate manifest with bug trackers and repositories", function () {
38         queryAndFetchAll("INSERT INTO repositories (repository_id, repository_name, repository_url, repository_blame_url) VALUES"
39             + " (1, 'WebKit', 'trac.webkit.org', null), (2, 'Chromium', null, 'SomeBlameURL')", [], function () {
40             queryAndFetchAll("INSERT INTO bug_trackers (tracker_id, tracker_name) VALUES (3, 'Bugzilla'), (4, 'Issue Tracker')", [], function () {
41                 queryAndFetchAll("INSERT INTO tracker_repositories (tracrepo_tracker, tracrepo_repository) VALUES (3, 1), (4, 1), (4, 2)", [], function () {
42                     httpGet('/admin/regenerate-manifest', function (response) {
43                         assert.equal(response.statusCode, 200);
44                         httpGet('/data/manifest', function (response) {
45                             assert.equal(response.statusCode, 200);
46                             var manifest = JSON.parse(response.responseText);
47                             assert.deepEqual(manifest['repositories'], {
48                                 'WebKit': { url: 'trac.webkit.org', blameUrl: null, hasReportedCommits: false },
49                                 'Chromium': { url: null, blameUrl: 'SomeBlameURL', hasReportedCommits: false }
50                             });
51                             assert.deepEqual(manifest['bugTrackers']['Bugzilla'], { newBugUrl: null, repositories: ['WebKit'] });
52                             assert.deepEqual(manifest['bugTrackers']['Issue Tracker'], { newBugUrl: null, repositories: ['WebKit', 'Chromium'] });
53                             notifyDone();
54                         });
55                     });
56                 });
57             });
58         });
59     });
60
61     it("should generate manifest with builders", function () {
62         queryAndFetchAll("INSERT INTO builders (builder_id, builder_name, builder_password_hash, builder_build_url) VALUES"
63             + " (1, 'SomeBuilder', 'a', null), (2, 'SomeOtherBuilder', 'b', 'SomeURL')", [], function () {
64             httpGet('/admin/regenerate-manifest', function (response) {
65                 assert.equal(response.statusCode, 200);
66                 httpGet('/data/manifest', function (response) {
67                     assert.equal(response.statusCode, 200);
68                     var manifest = JSON.parse(response.responseText);
69                     assert.deepEqual(manifest['builders'], {
70                         '1': { name: 'SomeBuilder', buildUrl: null },
71                         '2': { name: 'SomeOtherBuilder', buildUrl: 'SomeURL' }
72                     });
73                     notifyDone();
74                 });
75             });
76         });
77     });
78
79     it("should generate manifest with tests", function () {
80         queryAndFetchAll("INSERT INTO tests (test_id, test_name, test_parent) VALUES"
81             + " (1, 'SomeTest', null), (2, 'SomeOtherTest', null),  (3, 'ChildTest', 1)", [], function () {
82             httpGet('/admin/regenerate-manifest', function (response) {
83                 assert.equal(response.statusCode, 200);
84                 httpGet('/data/manifest', function (response) {
85                     assert.equal(response.statusCode, 200);
86                     var manifest = JSON.parse(response.responseText);
87                     assert.deepEqual(manifest['tests'], {
88                         '1': { name: 'SomeTest', url: null, parentId: null },
89                         '2': { name: 'SomeOtherTest', url: null, parentId: null },
90                         '3': { name: 'ChildTest', url: null, parentId: '1' }
91                     });
92                     notifyDone();
93                 });
94             });
95         });
96     });
97
98     it("should generate manifest with metrics", function () {
99         queryAndFetchAll("INSERT INTO tests (test_id, test_name, test_parent) VALUES"
100             + " (1, 'SomeTest', null), (2, 'SomeOtherTest', null),  (3, 'ChildTest', 1)", [], function () {
101             queryAndFetchAll('INSERT INTO aggregators (aggregator_id, aggregator_name, aggregator_definition) values (4, $1, $2)',
102                 ['Total', 'values.reduce(function (a, b) { return a + b; })'], function () {
103                 queryAndFetchAll("INSERT INTO test_metrics (metric_id, metric_test, metric_name, metric_aggregator) VALUES"
104                     + " (5, 1, 'Time', null), (6, 2, 'Time', 4), (7, 2, 'Malloc', 4)", [], function () {
105                     httpGet('/admin/regenerate-manifest', function (response) {
106                         assert.equal(response.statusCode, 200);
107                         httpGet('/data/manifest', function (response) {
108                             assert.equal(response.statusCode, 200);
109                             var manifest = JSON.parse(response.responseText);
110                             assert.deepEqual(manifest['metrics'], {
111                                 '5': { name: 'Time', test: '1', aggregator: null },
112                                 '6': { name: 'Time', test: '2', aggregator: 'Total' },
113                                 '7': { name: 'Malloc', test: '2', aggregator: 'Total' }
114                             });
115                             notifyDone();
116                         });
117                     });
118                 });
119             });
120         });
121     });
122
123     // FIXME: Test the generation of all and dashboard.
124 });