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