blob: 076b3a0158b1bcbd6d789d0c1057db5884ab400d [file] [log] [blame]
'use strict';
var opts = {};
if (typeof process !== 'undefined' && process.env) {
if (process.env.ADAPTER) {
opts.adapter = process.env.ADAPTER;
}
}
function runTestSuites(PouchDB) {
function runTestsNow() {
var reporter = require('./perf.reporter');
reporter.log('Testing PouchDB version ' + PouchDB.version +
(opts.adapter ?
(', using adapter: ' + opts.adapter) : '') +
'\n\n');
var theAdapterUsed;
var count = 0;
function checkDone(adapterUsed) {
theAdapterUsed = theAdapterUsed || adapterUsed;
if (++count === 4) { // number of perf.xxxx.js tests
reporter.complete(theAdapterUsed);
}
}
require('./perf.basics')(PouchDB, opts, checkDone);
require('./perf.views')(PouchDB, opts, checkDone);
require('./perf.find')(PouchDB, opts, checkDone);
require('./perf.attachments')(PouchDB, opts, checkDone);
}
if (typeof process === 'undefined' || process.browser) {
// rendering the initial view has its own costs
// that interfere with measurements
setTimeout(runTestsNow, 1000);
} else {
runTestsNow();
}
}
var startNow = true;
if (global.window && global.window.location && global.window.location.search) {
var fragment = global.window.location.search.replace(/^\??/, '').split('&');
var params = {};
fragment.forEach(function (param) {
var keyValue = param.split('=');
params[keyValue[0]] = decodeURIComponent(keyValue[1]);
});
if ('adapter' in params) {
opts.adapter = params.adapter;
}
if ('src' in params) {
var script = global.document.createElement('script');
script.src = params.src;
script.onreadystatechange = function () {
if ("loaded" === script.readyState || "complete" === script.readyState) {
runTestSuites(global.window.PouchDB);
}
};
global.document.getElementsByTagName('body')[0].appendChild(script);
startNow = false;
}
}
if (startNow) {
var PouchDB;
if (process.browser) {
PouchDB = window.PouchDB;
} else {
PouchDB = require('../../packages/node_modules/pouchdb');
PouchDB.plugin(require('../../packages/node_modules/' +
'pouchdb-find'));
}
if (!process.browser) {
PouchDB.plugin(require('../../packages/node_modules/' +
'pouchdb-adapter-memory'));
}
runTestSuites(PouchDB);
}