-
-
Notifications
You must be signed in to change notification settings - Fork 2k
Expand file tree
/
Copy pathtest_performance.js
More file actions
110 lines (93 loc) · 3.59 KB
/
test_performance.js
File metadata and controls
110 lines (93 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
var fs = require('fs');
var path = require('path');
var exec = require('child_process').exec;
var { glob } = require('glob');
var runSeries = require('run-series');
var constants = require('./util/constants');
var pathToJasminePerformanceTests = constants.pathToJasminePerformanceTests;
var pathToRoot = constants.pathToRoot;
/**
* Run all jasmine 'performance' test in series
*
* To run specific performance tests, use
*
* $ npm run test-jasmine -- --performanceTest=<name-of-suite>
*/
var testCases = require('../test/jasmine/performance_tests/assets/test_cases').testCases;
glob(pathToJasminePerformanceTests + '/*.js').then(function(files) {
var tasks = [];
for(let file of files) {
for(let testCase of testCases) {
tasks.push(function(cb) {
var cmd = [
'karma', 'start',
path.join(constants.pathToRoot, 'test', 'jasmine', 'karma.conf.js'),
'--performanceTest=' + path.basename(file),
'--nowatch',
'--tracesType=' + testCase.traceType,
'--tracesMode=' + testCase.mode,
'--tracesCount=' + testCase.nTraces,
'--tracesPoints=' + testCase.n,
].join(' ');
console.log('Running: ' + cmd);
exec(cmd, function(err) {
cb(null, err);
}).stdout.pipe(process.stdout);
});
}
}
runSeries(tasks, function(err, results) {
var failed = results.filter(function(r) { return r; });
if(failed.length) {
console.log('\ntest-performance summary:');
failed.forEach(function(r) { console.warn('- ' + r.cmd + ' failed'); });
console.log('');
// Create CSV file for failed cases
var str = [
'number of traces',
'chart type & mode',
'data points',
'run id',
'rendering time(ms)'
].join(',') + '\n';
failed.forEach(function(r) {
// split command string frist by space then by equal to get
var cmdArgs = r.cmd.split(' ').map(part => {
return part.split('=');
});
var test = {};
for(var i = 0; i < cmdArgs.length; i++) {
if('--tracesCount' === cmdArgs[i][0]) {
test.nTraces = cmdArgs[i][1];
}
}
for(var i = 0; i < cmdArgs.length; i++) {
if('--tracesType' === cmdArgs[i][0]) {
test.traceType = cmdArgs[i][1];
}
}
for(var i = 0; i < cmdArgs.length; i++) {
if('--tracesMode' === cmdArgs[i][0]) {
test.mode = cmdArgs[i][1];
}
}
for(var i = 0; i < cmdArgs.length; i++) {
if('--tracesPoints' === cmdArgs[i][0]) {
test.n = cmdArgs[i][1];
}
}
str += [
(test.nTraces || 1),
(test.traceType + (test.mode ? ' ' + test.mode : '')),
test.n,
'failed',
''
].join(',') + '\n';
});
var failedCSV = pathToRoot + '../Downloads/failed.csv';
console.log('Saving:', failedCSV)
console.log(str);
fs.writeFileSync(failedCSV, str);
}
});
});