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