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