Skip to content

Commit c8dd83b

Browse files
committed
run each tests case in isolation
1 parent 577f7ac commit c8dd83b

File tree

4 files changed

+106
-97
lines changed

4 files changed

+106
-97
lines changed

tasks/test_performance.js

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,33 @@ var pathToJasminePerformanceTests = constants.pathToJasminePerformanceTests;
1313
*
1414
* $ npm run test-jasmine -- --performanceTest=<name-of-suite>
1515
*/
16+
17+
var testCases = require('../test/jasmine/performance_tests/assets/test_cases').testCases;
18+
1619
glob(pathToJasminePerformanceTests + '/*.js').then(function(files) {
17-
var tasks = files.map(function(file) {
18-
return function(cb) {
19-
var cmd = [
20-
'karma', 'start',
21-
path.join(constants.pathToRoot, 'test', 'jasmine', 'karma.conf.js'),
22-
'--performanceTest=' + path.basename(file),
23-
'--nowatch',
24-
'--tracesType=scattergl',
25-
'--tracesMode=markers',
26-
'--tracesCount=1',
27-
'--tracesPoints=1000',
28-
].join(' ');
29-
30-
console.log('Running: ' + cmd);
31-
32-
exec(cmd, function(err) {
33-
cb(null, err);
34-
}).stdout.pipe(process.stdout);
35-
};
36-
});
20+
var tasks = [];
21+
for(let file of files) {
22+
for(let testCase of testCases) {
23+
tasks.push(function(cb) {
24+
var cmd = [
25+
'karma', 'start',
26+
path.join(constants.pathToRoot, 'test', 'jasmine', 'karma.conf.js'),
27+
'--performanceTest=' + path.basename(file),
28+
'--nowatch',
29+
'--tracesType=' + testCase.traceType,
30+
'--tracesMode=' + testCase.mode,
31+
'--tracesCount=' + testCase.nTraces,
32+
'--tracesPoints=' + testCase.n,
33+
].join(' ');
34+
35+
console.log('Running: ' + cmd);
36+
37+
exec(cmd, function(err) {
38+
cb(null, err);
39+
}).stdout.pipe(process.stdout);
40+
});
41+
}
42+
}
3743

3844
runSeries(tasks, function(err, results) {
3945
if(err) throw err;

test/jasmine/performance_tests/all_test.js

Lines changed: 5 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -3,85 +3,14 @@ var delay = require('../assets/delay');
33
var d3SelectAll = require('../../strict-d3').selectAll;
44
var Plotly = require('../../../lib/index');
55
var downloadCSV = require('./assets/post_process').downloadCSV;
6+
var tests = require('./assets/test_cases').testCases;
67
var nSamples = require('./assets/constants').nSamples;
78
var MAX_RENDERING_TIME = 4000;
89

910
var gd = createGraphDiv();
1011

1112
const samples = Array.from({ length: nSamples }, (_, i) => i);
1213

13-
var tests = [];
14-
15-
for(let traceType of ['image', 'heatmap', 'contour']) {
16-
for(let m of [10, 20, 40, 80, 160, 320, 640]) {
17-
let nx = 5 * m;
18-
let ny = 2 * m;
19-
tests.push({
20-
nx: nx,
21-
ny: ny,
22-
n: nx * ny,
23-
nTraces: 1,
24-
traceType: traceType,
25-
selector: traceType === 'image' ? 'g.imagelayer.mlayer' :
26-
'g.' + traceType + 'layer'
27-
});
28-
}
29-
}
30-
31-
for(let traceType of ['box', 'violin']) {
32-
for(let mode of ['no points', 'all points']) {
33-
for(let nTraces of [1, 10, 100]) {
34-
for(let n of [1000, 2000, 4000, 8000, 16000, 32000]) {
35-
tests.push({
36-
n:n,
37-
nTraces: nTraces,
38-
traceType: traceType,
39-
mode: mode,
40-
selector: (
41-
traceType === 'box' ? 'g.trace.boxes' :
42-
traceType === 'violin' ? 'g.trace.violins' :
43-
undefined
44-
)
45-
});
46-
}
47-
}
48-
}
49-
}
50-
51-
for(let traceType of ['scatter', 'scattergl', 'scattergeo']) {
52-
for(let mode of ['markers', 'lines', 'markers+lines']) {
53-
for(let nTraces of [1, 10, 100]) {
54-
for(let n of [1000, 2000, 4000, 8000, 16000, 32000]) {
55-
tests.push({
56-
n:n,
57-
nTraces: nTraces,
58-
traceType: traceType,
59-
mode: mode,
60-
selector: (
61-
traceType === 'scatter' ? 'g.trace.scatter' :
62-
undefined
63-
)
64-
});
65-
}
66-
}
67-
}
68-
}
69-
70-
for(let traceType of ['bar', 'histogram']) {
71-
for(let mode of ['group', 'stack', 'overlay']) {
72-
for(let nTraces of [1, 10, 100]) {
73-
for(let n of [1000, 2000, 4000, 8000, 16000, 32000]) {
74-
tests.push({
75-
n:n,
76-
nTraces: nTraces,
77-
traceType: traceType,
78-
mode: mode,
79-
selector: 'g.trace.bars'
80-
});
81-
}
82-
}
83-
}
84-
}
8514

8615
function generateMock(spec) {
8716
var type = spec.traceType;
@@ -161,17 +90,17 @@ function makeBox(spec) {
16190
for(var k = 0; k < spec.nTraces; k++) {
16291
var trace = {
16392
type: spec.traceType,
164-
boxpoints: spec.mode === 'all points' ? 'all' : false,
93+
boxpoints: spec.mode === 'all_points' ? 'all' : false,
16594
y: y.slice(k * nPerTrace, (k + 1) * nPerTrace),
16695
x: Array.from({ length: nPerTrace }, (_, i) => k)
16796
};
16897

16998
if(spec.traceType === 'box') {
170-
trace.boxpoints = spec.mode === 'all points' ? 'all' : false;
99+
trace.boxpoints = spec.mode === 'all_points' ? 'all' : false;
171100
}
172101

173102
if(spec.traceType === 'violin') {
174-
trace.points = spec.mode === 'all points' ? 'all' : false;
103+
trace.points = spec.mode === 'all_points' ? 'all' : false;
175104
}
176105

177106
data.push(trace);
@@ -283,8 +212,8 @@ describe('Performance test various traces', function() {
283212
if(testCase) {
284213
if(testCase.tracesType && testCase.tracesType !== spec.traceType) testIt = false;
285214
if(testCase.tracesCount && testCase.tracesCount !== spec.nTraces) testIt = false;
286-
if(testCase.tracesMode && testCase.tracesMode !== spec.mode) testIt = false;
287215
if(testCase.tracesPoints && testCase.tracesPoints !== spec.n) testIt = false;
216+
if((testCase.tracesMode !== 'undefined' && testCase.tracesMode) && testCase.tracesMode !== spec.mode) testIt = false;
288217
}
289218

290219
if(testIt) {

test/jasmine/performance_tests/assets/post_process.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ exports.downloadCSV = function(allTests) {
2828
var myBlob = new Blob([str], {type: 'text/plain'})
2929
var url = window.URL.createObjectURL(myBlob);
3030
a.href = url;
31-
a.download = 'all.csv';
31+
a.download = 'results.csv';
3232
a.style.display = 'none';
3333
document.body.append(a);
3434
a.click();
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
var tests = [];
2+
3+
for(let traceType of ['image', 'heatmap', 'contour']) {
4+
for(let m of [10, 20, 40, 80, 160, 320, 640]) {
5+
let nx = 5 * m;
6+
let ny = 2 * m;
7+
tests.push({
8+
nx: nx,
9+
ny: ny,
10+
n: nx * ny,
11+
nTraces: 1,
12+
traceType: traceType,
13+
selector: traceType === 'image' ? 'g.imagelayer.mlayer' :
14+
'g.' + traceType + 'layer'
15+
});
16+
}
17+
}
18+
19+
for(let traceType of ['box', 'violin']) {
20+
for(let mode of ['no_points', 'all_points']) {
21+
for(let nTraces of [1, 10, 100]) {
22+
for(let n of [1000, 2000, 4000, 8000, 16000, 32000]) {
23+
tests.push({
24+
n:n,
25+
nTraces: nTraces,
26+
traceType: traceType,
27+
mode: mode,
28+
selector: (
29+
traceType === 'box' ? 'g.trace.boxes' :
30+
traceType === 'violin' ? 'g.trace.violins' :
31+
undefined
32+
)
33+
});
34+
}
35+
}
36+
}
37+
}
38+
39+
for(let traceType of ['scatter', 'scattergl', 'scattergeo']) {
40+
for(let mode of ['markers', 'lines', 'markers+lines']) {
41+
for(let nTraces of [1, 10, 100]) {
42+
for(let n of [1000, 2000, 4000, 8000, 16000, 32000]) {
43+
tests.push({
44+
n:n,
45+
nTraces: nTraces,
46+
traceType: traceType,
47+
mode: mode,
48+
selector: (
49+
traceType === 'scatter' ? 'g.trace.scatter' :
50+
undefined
51+
)
52+
});
53+
}
54+
}
55+
}
56+
}
57+
58+
for(let traceType of ['bar', 'histogram']) {
59+
for(let mode of ['group', 'stack', 'overlay']) {
60+
for(let nTraces of [1, 10, 100]) {
61+
for(let n of [1000, 2000, 4000, 8000, 16000, 32000]) {
62+
tests.push({
63+
n:n,
64+
nTraces: nTraces,
65+
traceType: traceType,
66+
mode: mode,
67+
selector: 'g.trace.bars'
68+
});
69+
}
70+
}
71+
}
72+
}
73+
74+
exports.testCases = tests;

0 commit comments

Comments
 (0)