/*
|
* 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');
|
}
|
|
});
|