blob: b511939142e6eb20869853e3b6db5f759d88f65b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* @file benchmark application instance
* @author Wenli Zhang
*/
define(function (require) {
var TestManager = require('./testManager');
var vm = new Vue({
el: '#app',
data: {
caseNames: ['line sampling'],
amounts: (function () {
var arr = [];
for (var i = 1000000; i > 0; i -= 10000) {
arr.push(i);
}
return arr;
})(),
times: [],
result: '',
hasRun: false,
isRunning: false,
elapsedTime: 0,
progress: 0
},
methods: {
run: run,
download: download
}
});
var manager = new TestManager(vm.amounts, vm.caseNames);
function run() {
var results = [];
var start = new Date();
var updateUI = function () {
var progress = Math.ceil(manager.getProgress() * 100);
vm.$set('progress', progress);
var end = new Date();
vm.$set('elapsedTime', end - start);
for (var i = 0; i < results.length; ++i) {
var test = results[i];
if (!vm.times[test.amountId]) {
vm.$set('times[' + test.amountId + ']', []);
}
vm.$set('times[' + test.amountId + '][' + test.caseId
+ ']', test.time);
}
results = [];
};
vm.$set('hasRun', false);
vm.$set('isRunning', true);
vm.$set('progress', 0);
manager.init();
for (var aid = 0; aid < vm.amounts.length; ++aid) {
for (var cid = 0; cid < vm.caseNames.length; ++cid) {
// run a test case in each loop
(function (aid, cid) {
setTimeout(function () {
var test = manager.run(cid, aid);
results.push(test);
if (aid === vm.amounts.length - 1
&& cid === vm.caseNames.length - 1) {
// last test case
vm.$set('hasRun', true);
vm.$set('isRunning', false);
vm.$set('result', manager.exportResult());
updateUI();
}
}, 0);
})(aid, cid);
// log results
setTimeout(updateUI, 0);
}
}
setTimeout(function () {
manager.drawReport(document.getElementById('report'));
}, 0);
}
function download() {
// save to file
var blob = new Blob([vm.result], {
type: 'text/json; charset=urf-8'
});
saveAs(blob, 'result.json');
}
});