blob: 19da37115a73db9bc11ca3060c11e7a6a884286d [file] [log] [blame]
'use strict';
var opts = {};
var levelAdapter;
if (typeof process !== 'undefined' && process.env) {
levelAdapter = process.env.LEVEL_ADAPTER;
if (process.env.ADAPTER) {
opts.adapter = process.env.ADAPTER;
}
}
function runTestSuites(PouchDB) {
var reporter = require('./perf.reporter');
reporter.log('Testing PouchDB version ' + PouchDB.version +
((opts.adapter || levelAdapter) ?
(', using adapter: ' + (opts.adapter || levelAdapter)) : '') +
'\n\n');
require('./perf.basics')(PouchDB, opts);
require('./perf.views')(PouchDB, opts);
require('./perf.attachments')(PouchDB, opts);
}
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 = process.browser ? window.PouchDB :
require('../../packages/pouchdb');
if (!process.browser) {
// the two strings are to fool Browserify, because this test
// fails in Node 0.11-0.12 due to sqlite3 being incompatible
require('../../packages/' + 'pouchdb/extras/websql');
}
runTestSuites(PouchDB);
}