blob: 8c25288e7156f2dc29dc32e77d6d72d9be094901 [file] [log] [blame]
'use strict';
var adapters = [
['local', 'http']
];
adapters.forEach(function (adapters) {
var suiteName = 'test.replicationBackoff.js-' + adapters[0] + '-' + adapters[1];
describe(suiteName, function () {
var dbs = {};
beforeEach(function () {
dbs.name = testUtils.adapterUrl(adapters[0], 'testdb');
dbs.remote = testUtils.adapterUrl(adapters[1], 'test_repl_remote');
});
afterEach(function (done) {
testUtils.cleanup([dbs.name, dbs.remote], done);
});
it('Issue 5402 should not keep adding event listeners when backoff is firing', function (done) {
this.timeout(1500);
var remote = new PouchDB(dbs.remote, {
fetch: function () {
throw new Error('flunking you');
}
});
var db = new PouchDB(dbs.name);
var backOffCount = 0;
var numberOfActiveListeners = 0;
var replication = db.sync(remote, {
live: true,
retry: true,
heartbeat: 1,
timeout: 1,
back_off_function: function () {
numberOfActiveListeners = replication.pull.listeners("active").length;
++backOffCount;
if (backOffCount > 15 || numberOfActiveListeners > 3) {
replication.cancel();
}
return 1;
}
});
replication.on("complete", function () {
if (numberOfActiveListeners > 3) {
done(new Error("Number of 'active' listeners shouldn't grow larger than one. Currently at " + numberOfActiveListeners));
} else {
done();
}
});
});
});
});