/** * Created by marija on 26.06.15. */ var express = require('express'); var app = express(); var fs = require('fs'); var path = require('path'); var bodyParser = require('body-parser'); var child = require('child_process'); var ss = require('simple-statistics'); var psTree = require('ps-tree'); var a1 = []; var a2 = []; var con_coef = 1.96; var browser = process.argv[2]; var bugPath = process.argv[3]; var VM_invocations=process.argv[4]; var command1 = browser + ' http://localhost:8081/' + bugPath + 'v_before.html'; var command2 = browser + ' http://localhost:8081/' + bugPath + 'v_after.html'; console.log(command1); console.log(command2); var running_child = null; app.set('port', process.env.PORT || 8000); var server = app.listen(8081, function () { console.log('Listening on port %d', server.address().port); warmUpAndTest(command1, a1, function () { var mean1 = parseFloat(ss.mean(a1)); var st_dev1 = ss.standard_deviation(a1); console.log('mean 1: ' + mean1); warmUpAndTest(command2, a2, function () { var mean2 = parseFloat(ss.mean(a2)); var st_dev2 = ss.standard_deviation(a2); console.log('mean 2: ' + mean2); var results = compare2Alternatives(mean1, mean2, st_dev1, st_dev2, con_coef, 5); if (results[0] <= 0 && results[1] >= 0) { console.log('the performance difference is not statistically significant'); } else { console.log('the performance difference is statistically significant'); var diff = 100 - (mean2 * 100) / mean1; console.log('performance gain is: ' + diff + '%'); } server.close(); }); }); }); function warmUpAndTest(command, array, f) { running_child = child.exec(command, function (error, stdout, stderr) { if (array.length