blob: 6872a932b02bbf5935c060a757c257d0e4a8fcca [file] [log] [blame]
'use strict';
const assert = require('assert');
const TestServer = require('./resources/test-server.js');
const prepareServerTest = require('./resources/common-operations.js').prepareServerTest;
const submitReport = require('./resources/common-operations.js').submitReport;
describe("/admin/platforms", function () {
prepareServerTest(this);
function reportsForDifferentPlatforms()
{
return [
{
"buildNumber": "3001",
"buildTime": "2013-02-28T09:01:47",
"builderName": "someBuilder",
"builderPassword": "somePassword",
"platform": "Mavericks",
"tests": {"test": { "metrics": {"FrameRate": { "current": [[1, 1, 1], [1, 1, 1]] } } } },
},
{
"buildNumber": "3001",
"buildTime": "2013-02-28T10:12:03",
"builderName": "someBuilder",
"builderPassword": "somePassword",
"platform": "Mountain Lion",
"tests": {"test": { "metrics": {"FrameRate": { "current": [[2, 2, 2], [2, 2, 2]] }, "Combined": { "current": [[3, 3, 3], [3, 3, 3]] }} } },
},
{
"buildNumber": "3003",
"buildTime": "2013-02-28T12:56:26",
"builderName": "someBuilder",
"builderPassword": "somePassword",
"platform": "Trunk Mountain Lion",
"tests": {"test": { "metrics": {"FrameRate": { "current": [[4, 4, 4], [4, 4, 4]] } } } }
}];
}
it("should delete the platform that got merged into another one", () => {
const db = TestServer.database();
let oldPlatforms;
return submitReport(reportsForDifferentPlatforms()).then(() => {
return db.selectAll('platforms', 'name');
}).then((platforms) => {
oldPlatforms = platforms;
assert.equal(oldPlatforms.length, 3);
assert.equal(oldPlatforms[0]['name'], 'Mavericks');
assert.equal(oldPlatforms[1]['name'], 'Mountain Lion');
assert.equal(oldPlatforms[2]['name'], 'Trunk Mountain Lion');
}).then(() => {
return TestServer.remoteAPI().postFormUrlencodedData('/admin/platforms.php',
{'action': 'merge', 'id': oldPlatforms[1]['id'], 'destination': oldPlatforms[2]['id']});
}).then(() => {
return db.selectAll('platforms');
}).then((newPlatforms) => {
assert.equal(newPlatforms.length, 2);
assert.deepEqual(newPlatforms[0], oldPlatforms[0]);
assert.deepEqual(newPlatforms[1], oldPlatforms[2]);
});
});
it("should move test runs from the merged platform to the destination platform", () => {
let oldTestRuns;
const queryForRuns = 'SELECT * FROM test_runs, test_configurations, platforms WHERE run_config = config_id AND config_platform = platform_id ORDER by run_mean_cache';
const db = TestServer.database();
return submitReport(reportsForDifferentPlatforms()).then(() => {
return db.query(queryForRuns);
}).then((result) => {
oldTestRuns = result.rows;
assert.equal(oldTestRuns.length, 4);
assert.equal(oldTestRuns[0]['platform_name'], 'Mavericks');
assert.equal(oldTestRuns[0]['run_sum_cache'], 6);
assert.equal(oldTestRuns[1]['platform_name'], 'Mountain Lion');
assert.equal(oldTestRuns[1]['run_sum_cache'], 12);
assert.equal(oldTestRuns[2]['platform_name'], 'Mountain Lion');
assert.equal(oldTestRuns[2]['run_sum_cache'], 18);
assert.equal(oldTestRuns[3]['platform_name'], 'Trunk Mountain Lion');
assert.equal(oldTestRuns[3]['run_sum_cache'], 24);
}).then(() => {
return TestServer.remoteAPI().postFormUrlencodedData('/admin/platforms.php',
{'action': 'merge', 'id': oldTestRuns[1]['platform_id'], 'destination': oldTestRuns[3]['platform_id']});
}).then(() => {
return db.query(queryForRuns);
}).then((result) => {
const newTestRuns = result.rows;
assert.equal(newTestRuns.length, 4);
assert.equal(newTestRuns[0]['run_id'], oldTestRuns[0]['run_id']);
assert.equal(newTestRuns[0]['platform_name'], 'Mavericks');
assert.equal(newTestRuns[0]['run_sum_cache'], 6);
assert.equal(newTestRuns[1]['run_id'], oldTestRuns[1]['run_id']);
assert.equal(newTestRuns[1]['platform_name'], 'Trunk Mountain Lion');
assert.equal(newTestRuns[1]['run_sum_cache'], 12);
assert.equal(newTestRuns[2]['run_id'], oldTestRuns[2]['run_id']);
assert.equal(newTestRuns[2]['platform_name'], 'Trunk Mountain Lion');
assert.equal(newTestRuns[2]['run_sum_cache'], 18);
assert.equal(newTestRuns[3]['run_id'], oldTestRuns[3]['run_id']);
assert.equal(newTestRuns[3]['platform_name'], 'Trunk Mountain Lion');
assert.equal(newTestRuns[3]['run_sum_cache'], 24);
assert.equal(newTestRuns[1]['run_config'], newTestRuns[3]['run_config']);
});
});
it("should move test configurations from the merged platform to the destination platform", () => {
let oldConfigs;
const reports = reportsForDifferentPlatforms();
reports[0]['tests'] = {"test": { "metrics": {"FrameRate": { "baseline": [[1, 1, 1], [1, 1, 1]] } } } };
const queryForConfig = 'SELECT * from test_configurations, platforms, test_metrics'
+ ' where config_platform = platform_id and config_metric = metric_id and platform_name in ($1, $2) order by config_id';
const db = TestServer.database();
return submitReport(reports).then(() => {
return db.query(queryForConfig, [reports[0]['platform'], reports[2]['platform']]);
}).then((result) => {
oldConfigs = result.rows;
assert.equal(oldConfigs.length, 2);
assert.equal(oldConfigs[0]['platform_name'], reports[0]['platform']);
assert.equal(oldConfigs[0]['metric_name'], 'FrameRate');
assert.equal(oldConfigs[0]['config_type'], 'baseline');
assert.equal(oldConfigs[1]['platform_name'], reports[2]['platform']);
assert.equal(oldConfigs[1]['metric_name'], 'FrameRate');
assert.equal(oldConfigs[1]['config_type'], 'current');
}).then(() => {
return TestServer.remoteAPI().postFormUrlencodedData('/admin/platforms.php',
{'action': 'merge', 'id': oldConfigs[0]['platform_id'], 'destination': oldConfigs[1]['platform_id']});
}).then(() => {
return db.query(queryForConfig, [reports[0]['platform'], reports[2]['platform']]);
}).then((result) => {
const newConfigs = result.rows;
assert.equal(newConfigs.length, 2);
assert.equal(newConfigs[0]['platform_name'], reports[2]['platform']);
assert.equal(newConfigs[0]['metric_name'], 'FrameRate');
assert.equal(newConfigs[0]['config_type'], 'baseline');
assert.equal(newConfigs[1]['platform_name'], reports[2]['platform']);
assert.equal(newConfigs[1]['metric_name'], 'FrameRate');
assert.equal(newConfigs[1]['config_type'], 'current');
});
});
});