Skip to content

Commit 24e6400

Browse files
authored
tests/performance: fix use of this.iterations in setup/tearDown (#8777)
Currently, setting ITERATIONS to anything except 0 will silently break `pull-replication-perf-skimdb` because of a mismatch between this.iterations in the test `setup()` function and the actual number of iterations the test is run for. This failure is surfaced by #8768. This commit moves access to iterations from a testCase's `this` to an argument in the setup() function.
1 parent 102a1e3 commit 24e6400

File tree

6 files changed

+42
-43
lines changed

6 files changed

+42
-43
lines changed

tests/performance/perf.attachments.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ module.exports = function (PouchDB, callback) {
3939
name: 'basic-attachments',
4040
assertions: 1,
4141
iterations: 1000,
42-
setup: function (db, callback) {
42+
setup: function (db, _, callback) {
4343

4444
var blob = randomBlob(50000);
4545
db._blob = blob;
@@ -56,7 +56,7 @@ module.exports = function (PouchDB, callback) {
5656
name: 'many-attachments-base64',
5757
assertions: 1,
5858
iterations: 100,
59-
setup: function (db, callback) {
59+
setup: function (db, _, callback) {
6060
const doc = {
6161
_id: 'doc1',
6262
_attachments: {},
@@ -77,7 +77,7 @@ module.exports = function (PouchDB, callback) {
7777
name: 'many-attachments-binary',
7878
assertions: 1,
7979
iterations: 100,
80-
setup: function (db, callback) {
80+
setup: function (db, _, callback) {
8181
const doc = {
8282
_id: 'doc1',
8383
_attachments: {},

tests/performance/perf.basics.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ module.exports = function (PouchDB, callback) {
1414
name: 'basic-inserts',
1515
assertions: 1,
1616
iterations: 1000,
17-
setup: function (db, callback) {
17+
setup: function (db, _, callback) {
1818
callback(null, {'yo': 'dawg'});
1919
},
2020
test: function (db, itr, doc, done) {
@@ -25,7 +25,7 @@ module.exports = function (PouchDB, callback) {
2525
name: 'bulk-inserts',
2626
assertions: 1,
2727
iterations: 100,
28-
setup: function (db, callback) {
28+
setup: function (db, _, callback) {
2929
var docs = [];
3030
for (var i = 0; i < 100; i++) {
3131
docs.push({much : 'docs', very : 'bulk'});
@@ -40,7 +40,7 @@ module.exports = function (PouchDB, callback) {
4040
name: 'bulk-inserts-large-docs',
4141
assertions: 1,
4242
iterations: 100,
43-
setup: function (db, callback) {
43+
setup: function (db, _, callback) {
4444
var docs = [];
4545

4646
for (var d = 0; d < 100; d++) {
@@ -61,7 +61,7 @@ module.exports = function (PouchDB, callback) {
6161
name: 'bulk-inserts-massive-docs',
6262
assertions: 1,
6363
iterations: 10,
64-
setup: function (db, callback) {
64+
setup: function (db, _, callback) {
6565
var docs = [];
6666

6767
// Depth is an important factor here. Depth makes any kind of recursive
@@ -102,7 +102,7 @@ module.exports = function (PouchDB, callback) {
102102
name: 'basic-updates',
103103
assertions: 1,
104104
iterations: 100,
105-
setup: function (db, callback) {
105+
setup: function (db, _, callback) {
106106
var docs = [];
107107
for (var i = 0; i < 100; i++) {
108108
docs.push({});
@@ -123,9 +123,9 @@ module.exports = function (PouchDB, callback) {
123123
name: 'basic-gets',
124124
assertions: 1,
125125
iterations: 1000,
126-
setup: function (db, callback) {
126+
setup: function (db, { iterations }, callback) {
127127
var docs = [];
128-
for (var i = 0; i < this.iterations; i++) {
128+
for (var i = 0; i < iterations; i++) {
129129
docs.push({_id : commonUtils.createDocId(i),
130130
foo : 'bar', baz : 'quux'});
131131
}
@@ -139,7 +139,7 @@ module.exports = function (PouchDB, callback) {
139139
name: 'all-docs-skip-limit',
140140
assertions: 1,
141141
iterations: 10,
142-
setup: function (db, callback) {
142+
setup: function (db, _, callback) {
143143
var docs = [];
144144
for (var i = 0; i < 1000; i++) {
145145
docs.push({_id : commonUtils.createDocId(i),
@@ -166,7 +166,7 @@ module.exports = function (PouchDB, callback) {
166166
name: 'all-docs-startkey-endkey',
167167
assertions: 1,
168168
iterations: 10,
169-
setup: function (db, callback) {
169+
setup: function (db, _, callback) {
170170
var docs = [];
171171
for (var i = 0; i < 1000; i++) {
172172
docs.push({
@@ -199,7 +199,7 @@ module.exports = function (PouchDB, callback) {
199199
name: 'all-docs-keys',
200200
assertions: 1,
201201
iterations: 100,
202-
setup: function (db, callback) {
202+
setup: function (db, _, callback) {
203203
var docs = [];
204204
for (var i = 0; i < 1000; i++) {
205205
docs.push({_id : commonUtils.createDocId(i),
@@ -226,7 +226,7 @@ module.exports = function (PouchDB, callback) {
226226
name: 'all-docs-include-docs',
227227
assertions: 1,
228228
iterations: 100,
229-
setup: function (db, callback) {
229+
setup: function (db, _, callback) {
230230
var docs = [];
231231
for (var i = 0; i < 1000; i++) {
232232
docs.push({
@@ -253,7 +253,7 @@ module.exports = function (PouchDB, callback) {
253253
name: 'pull-replication-perf-skimdb',
254254
assertions: 1,
255255
iterations: 0,
256-
setup: function (localDB, callback) {
256+
setup: function (localDB, { iterations }, callback) {
257257
// The NPM registry is a couchdb database. "skimdb" is the NPM
258258
// registry, minus the actual packages, found at
259259
// https://skimdb.npmjs.com/registry, and an example of a real, public
@@ -266,7 +266,7 @@ module.exports = function (PouchDB, callback) {
266266
});
267267
var localPouches = [];
268268

269-
for (var i = 0; i < this.iterations; ++i) {
269+
for (var i = 0; i < iterations; ++i) {
270270
localPouches[i] = new PouchDB(commonUtils.safeRandomDBName());
271271
}
272272

tests/performance/perf.find.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ module.exports = function (PouchDB, callback) {
2222
name: 'create-index',
2323
assertions: 1,
2424
iterations: 1,
25-
setup: function (db, callback) {
25+
setup: function (db, _, callback) {
2626
db.bulkDocs(makeTestDocs())
2727
.then(function () {
2828
callback();
@@ -42,7 +42,7 @@ module.exports = function (PouchDB, callback) {
4242
name: 'simple-find-query',
4343
assertions: 1,
4444
iterations: 5,
45-
setup: function (db, callback) {
45+
setup: function (db, _, callback) {
4646
db.bulkDocs(makeTestDocs())
4747
.then(function () {
4848
return db.createIndex({
@@ -66,7 +66,7 @@ module.exports = function (PouchDB, callback) {
6666
name: 'simple-find-query-no-index',
6767
assertions: 1,
6868
iterations: 5,
69-
setup: function (db, callback) {
69+
setup: function (db, _, callback) {
7070
db.bulkDocs(makeTestDocs())
7171
.then(function () {
7272
callback();
@@ -84,7 +84,7 @@ module.exports = function (PouchDB, callback) {
8484
name: 'complex-find-query',
8585
assertions: 1,
8686
iterations: 5,
87-
setup: function (db, callback) {
87+
setup: function (db, _, callback) {
8888
db.bulkDocs(makeTestDocs())
8989
.then(function () {
9090
return db.createIndex({
@@ -113,7 +113,7 @@ module.exports = function (PouchDB, callback) {
113113
name: 'complex-find-query-no-index',
114114
assertions: 1,
115115
iterations: 5,
116-
setup: function (db, callback) {
116+
setup: function (db, _, callback) {
117117
db.bulkDocs(makeTestDocs())
118118
.then(function () {
119119
callback();
@@ -136,7 +136,7 @@ module.exports = function (PouchDB, callback) {
136136
name: 'multi-field-query',
137137
assertions: 1,
138138
iterations: 5,
139-
setup: function (db, callback) {
139+
setup: function (db, _, callback) {
140140
db.bulkDocs(makeTestDocs())
141141
.then(function () {
142142
return db.createIndex({

tests/performance/perf.views.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ module.exports = function (PouchDB, callback) {
2626
name: 'temp-views',
2727
assertions: 1,
2828
iterations: 1,
29-
setup: function (db, callback) {
29+
setup: function (db, _, callback) {
3030
var tasks = [];
3131
for (var i = 0; i < 100; i++) {
3232
tasks.push(i);
@@ -58,7 +58,7 @@ module.exports = function (PouchDB, callback) {
5858
name: 'build-secondary-index',
5959
assertions: 1,
6060
iterations: 1,
61-
setup: function (db, callback) {
61+
setup: function (db, _, callback) {
6262
var docs = [];
6363
for (var i = 0; i < 1000; i++) {
6464
docs.push({});
@@ -88,7 +88,7 @@ module.exports = function (PouchDB, callback) {
8888
name: 'persisted-views',
8989
assertions: 1,
9090
iterations: 10,
91-
setup: function (db, callback) {
91+
setup: function (db, _, callback) {
9292
var tasks = [];
9393
for (var i = 0; i < 100; i++) {
9494
tasks.push(i);
@@ -131,7 +131,7 @@ module.exports = function (PouchDB, callback) {
131131
name: 'persisted-views-stale-ok',
132132
assertions: 1,
133133
iterations: 10,
134-
setup: function (db, callback) {
134+
setup: function (db, _, callback) {
135135
var tasks = [];
136136
for (var i = 0; i < 100; i++) {
137137
tasks.push(i);

tests/performance/replication-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ module.exports = function (PouchDB, Promise) {
1515

1616
PullRequestTestObject.prototype.setup = function (itr, gens) {
1717
var self = this;
18-
return function (localDB, callback) {
18+
return function (localDB, _, callback) {
1919
var remoteDBOpts = {ajax: {pool: {maxSockets: MAX_SOCKETS}}};
2020
var remoteCouchUrl = commonUtils.couchHost() + "/" +
2121
commonUtils.safeRandomDBName();

tests/performance/utils.js

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ var commonUtils = require('../common-utils.js');
66
var nextTick = (typeof process === 'undefined' || process.browser) ?
77
setTimeout : process.nextTick;
88

9-
var grep;
10-
var iterations;
119
const params = commonUtils.params();
12-
if (commonUtils.isNode()) {
13-
grep = params.GREP;
14-
iterations = params.ITERATIONS && parseInt(params.ITERATIONS, 10);
15-
} else {
16-
grep = params.grep;
17-
iterations = params.iterations && parseInt(params.iterations, 10);
10+
const grep = commonUtils.isNode() ? params.GREP : params.grep;
11+
12+
function iterationsFor(testCase) {
13+
const override = commonUtils.isNode() ? params.ITERATIONS : params.iterations;
14+
if (override) {
15+
return parseInt(override, 10);
16+
} else {
17+
return testCase.iterations;
18+
}
1819
}
1920

2021
var adapterUsed;
@@ -28,9 +29,7 @@ exports.runTests = function (PouchDB, suiteName, testCases, callback) {
2829
return false;
2930
}
3031
}
31-
var iter = typeof iterations === 'number' ? iterations :
32-
testCase.iterations;
33-
return iter !== 0;
32+
return iterationsFor(testCase) > 0;
3433
});
3534

3635
if (!testCases.length) {
@@ -39,18 +38,18 @@ exports.runTests = function (PouchDB, suiteName, testCases, callback) {
3938

4039
testCases.forEach(function (testCase, i) {
4140
var testName = testCase.name;
42-
var iter = typeof iterations === 'number' ? iterations :
43-
testCase.iterations;
4441
test('benchmarking', function (t) {
4542
var db;
4643
var setupObj;
4744

4845
var localDbName = commonUtils.safeRandomDBName();
4946

47+
const iterations = iterationsFor(testCase);
48+
5049
t.test('setup', function (t) {
5150
db = new PouchDB(localDbName, { size: 3000 });
5251
adapterUsed = db.adapter;
53-
testCase.setup(db, function (err, res) {
52+
testCase.setup(db, { iterations }, function (err, res) {
5453
if (err) {
5554
t.error(err);
5655
reporter.log(testName + ' errored: ' + err.message + '\n');
@@ -59,7 +58,7 @@ exports.runTests = function (PouchDB, suiteName, testCases, callback) {
5958
if (i === 0) {
6059
reporter.startSuite(suiteName);
6160
}
62-
reporter.start(testCase, iter);
61+
reporter.start(testCase, iterations);
6362
t.end();
6463
});
6564
});
@@ -83,7 +82,7 @@ exports.runTests = function (PouchDB, suiteName, testCases, callback) {
8382
} else {
8483
reporter.endIteration(testCase);
8584
}
86-
if (++num < iter) {
85+
if (++num < iterations) {
8786
next();
8887
} else {
8988
t.ok(testName + ' completed');

0 commit comments

Comments
 (0)