1 describe("/admin/regenerate-manifest", function () {
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, {
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}});
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 }
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']});
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' }
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' }
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' }
126 // FIXME: Test the generation of all and dashboard.