mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
52 lines
799 B
JavaScript
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);
|
|
});
|
|
}
|
|
}
|
|
|
|
|