Files
biomedjs/node_modules/strong-store-cluster/test/helper/do-concurrent-inc.js
Dobie Wollert d3089dcd17 Latest Code
2015-04-06 03:28:20 -04:00

52 lines
799 B
JavaScript

exports.run = run;
exports.teardown = teardown;
var ROUNDS = 100;
assert = require('assert'),
cluster = require('cluster'),
store = require('../..');
function run(cb) {
var left = ROUNDS,
coll = store.collection('counter');
increment();
function increment() {
coll.acquire('counter', function(err, lock, val) {
assert(!err);
if (!val)
val = 1;
else
val++;
lock.set(val);
lock.release();
if (--left > 0)
increment();
else
cb();
});
}
}
function teardown() {
if (cluster.isWorker)
process._channel.unref();
if (cluster.isMaster) {
store.collection('counter').get('counter', function(err, value) {
assert(value % ROUNDS === 0);
assert(value >= ROUNDS);
});
}
}