keuss 1.6.11 → 1.6.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Queue.js +3 -1
- package/TODO +0 -2
- package/backends/bucket-mongo-safe.js +44 -45
- package/backends/bucket-mongo.js +9 -9
- package/backends/mongo.js +1 -0
- package/backends/pl-mongo.js +1 -0
- package/backends/redis-list.js +3 -1
- package/backends/redis-oq.js +1 -0
- package/examples/snippets/06-random-consumer-producer.js +5 -5
- package/package.json +6 -6
- package/signal/redis-pubsub.js +1 -1
- package/test/backends_bucket-at-least-once.js +43 -35
package/Queue.js
CHANGED
|
@@ -537,13 +537,15 @@ class Queue {
|
|
|
537
537
|
//////////////////////////////////
|
|
538
538
|
async.parallel ({
|
|
539
539
|
type: cb => cb (null, this.type()),
|
|
540
|
+
capabilities: cb => cb (null, this.capabilities ()),
|
|
541
|
+
factory: cb => cb (null, this._factory.to_descriptor_obj ()),
|
|
540
542
|
stats: cb => this.stats (cb),
|
|
541
543
|
paused: cb => this.paused (cb),
|
|
542
544
|
next_mature_t: cb => this.next_t (cb),
|
|
543
545
|
size: cb => this.size (cb),
|
|
544
546
|
totalSize: cb => this.totalSize (cb),
|
|
545
547
|
schedSize: cb => this.schedSize (cb),
|
|
546
|
-
resvSize: cb => this.resvSize (cb)
|
|
548
|
+
resvSize: cb => this.resvSize (cb)
|
|
547
549
|
}, cb);
|
|
548
550
|
}
|
|
549
551
|
|
package/TODO
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
bugs
|
|
2
2
|
-------------------------------------------------------------
|
|
3
|
-
* deadlettering on all backend but mongo-pipeline does not preserve hdrs
|
|
4
3
|
|
|
5
4
|
prio 1
|
|
6
5
|
-------------------------------------------------------------
|
|
@@ -10,7 +9,6 @@ prio 1
|
|
|
10
9
|
+ add some commonplace transforms (etl-like)
|
|
11
10
|
+ create a server for that, allow processor code defined externally
|
|
12
11
|
|
|
13
|
-
|
|
14
12
|
prio 0
|
|
15
13
|
-----------------------------------------------------------------
|
|
16
14
|
* bridges?
|
|
@@ -133,11 +133,13 @@ class Bucket {
|
|
|
133
133
|
q: q
|
|
134
134
|
});
|
|
135
135
|
|
|
136
|
-
if ((res && res.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
136
|
+
if ((res && res.deletedCount) != 1) {
|
|
137
|
+
return cb({
|
|
138
|
+
err: 'Bucket flush: exactly one must be deleted',
|
|
139
|
+
e: err,
|
|
140
|
+
q: q
|
|
141
|
+
});
|
|
142
|
+
}
|
|
141
143
|
|
|
142
144
|
debug ('Bucket: deleted whole bucket %o', q);
|
|
143
145
|
cb (null, null);
|
|
@@ -216,7 +218,7 @@ class Bucket {
|
|
|
216
218
|
q: q
|
|
217
219
|
});
|
|
218
220
|
|
|
219
|
-
if (
|
|
221
|
+
if (res && (res.modifiedCount != 1)) return cb({
|
|
220
222
|
err: 'Bucket flush: exactly one must be updated',
|
|
221
223
|
e: err,
|
|
222
224
|
q: q,
|
|
@@ -650,17 +652,15 @@ class BucketMongoSafeQueue extends Queue {
|
|
|
650
652
|
//////////////////////////////////
|
|
651
653
|
// queue size including non-mature elements
|
|
652
654
|
totalSize (callback) {
|
|
653
|
-
this._col.aggregate ([
|
|
655
|
+
const cursor = this._col.aggregate ([
|
|
654
656
|
{$group:{_id:'t', v: {$sum: '$n'}}}
|
|
655
|
-
]
|
|
656
|
-
if (err) return callback (err);
|
|
657
|
+
]);
|
|
657
658
|
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
});
|
|
659
|
+
cursor.toArray ((err, res) => {
|
|
660
|
+
debug ('calculating totalSize: aggregation pipeline returns %o', res);
|
|
661
|
+
if (err) return callback (err);
|
|
662
|
+
if (res.length == 0) return callback (null, 0);
|
|
663
|
+
callback (null, res[0].v);
|
|
664
664
|
});
|
|
665
665
|
}
|
|
666
666
|
|
|
@@ -668,18 +668,16 @@ class BucketMongoSafeQueue extends Queue {
|
|
|
668
668
|
//////////////////////////////////
|
|
669
669
|
// queue size NOT including non-mature elements
|
|
670
670
|
size (callback) {
|
|
671
|
-
this._col.aggregate ([
|
|
671
|
+
const cursor = this._col.aggregate ([
|
|
672
672
|
{$match: {mature: {$lte: Queue.now ()}}},
|
|
673
673
|
{$group:{_id:'t', v: {$sum: '$n'}}}
|
|
674
|
-
]
|
|
675
|
-
if (err) return callback (err);
|
|
674
|
+
]);
|
|
676
675
|
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
});
|
|
676
|
+
cursor.toArray ((err, res) => {
|
|
677
|
+
debug ('calculating size: aggregation pipeline returns %o', res);
|
|
678
|
+
if (err) return callback (err);
|
|
679
|
+
if (res.length == 0) return callback (null, 0);
|
|
680
|
+
callback (null, res[0].v);
|
|
683
681
|
});
|
|
684
682
|
}
|
|
685
683
|
|
|
@@ -687,42 +685,39 @@ class BucketMongoSafeQueue extends Queue {
|
|
|
687
685
|
//////////////////////////////////
|
|
688
686
|
// queue size of non-mature elements only
|
|
689
687
|
schedSize (callback) {
|
|
690
|
-
this._col.aggregate ([
|
|
688
|
+
const cursor = this._col.aggregate ([
|
|
691
689
|
{$match: {
|
|
692
690
|
mature: {$gt: Queue.now ()},
|
|
693
691
|
reserved: {$exists: false}
|
|
694
692
|
}},
|
|
695
693
|
{$group:{_id:'t', v: {$sum: '$n'}}}
|
|
696
|
-
]
|
|
697
|
-
if (err) return callback (err);
|
|
694
|
+
]);
|
|
698
695
|
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
});
|
|
696
|
+
cursor.toArray ((err, res) => {
|
|
697
|
+
debug ('calculating schedSize: aggregation pipeline returns %o', res);
|
|
698
|
+
if (err) return callback (err);
|
|
699
|
+
if (res.length == 0) return callback (null, 0);
|
|
700
|
+
callback (null, res[0].v);
|
|
705
701
|
});
|
|
706
702
|
}
|
|
707
703
|
|
|
704
|
+
|
|
708
705
|
//////////////////////////////////
|
|
709
706
|
// queue size of non-mature elements only
|
|
710
707
|
resvSize (callback) {
|
|
711
|
-
this._col.aggregate ([
|
|
708
|
+
const cursor = this._col.aggregate ([
|
|
712
709
|
{$match: {
|
|
713
710
|
mature: {$gt: Queue.now ()},
|
|
714
711
|
reserved: {$exists: true}
|
|
715
712
|
}},
|
|
716
713
|
{$group:{_id:'t', v: {$sum: '$n'}}}
|
|
717
|
-
]
|
|
718
|
-
if (err) return callback (err);
|
|
714
|
+
]);
|
|
719
715
|
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
});
|
|
716
|
+
cursor.toArray ((err, res) => {
|
|
717
|
+
debug ('calculating resvSize: aggregation pipeline returns %o', res);
|
|
718
|
+
if (err) return callback (err);
|
|
719
|
+
if (res.length == 0) return callback (null, 0);
|
|
720
|
+
callback (null, res[0].v);
|
|
726
721
|
});
|
|
727
722
|
}
|
|
728
723
|
|
|
@@ -730,7 +725,11 @@ class BucketMongoSafeQueue extends Queue {
|
|
|
730
725
|
/////////////////////////////////////////
|
|
731
726
|
// get element from queue
|
|
732
727
|
next_t (callback) {
|
|
733
|
-
this._col.
|
|
728
|
+
this._col.findOne ({}, {
|
|
729
|
+
sort: {mature:1},
|
|
730
|
+
projection: {mature: 1}
|
|
731
|
+
},
|
|
732
|
+
(err, result) => {
|
|
734
733
|
if (err) return callback (err);
|
|
735
734
|
debug ('obtaining next_t: got %o', result && result.mature);
|
|
736
735
|
callback (null, result && result.mature);
|
|
@@ -738,7 +737,6 @@ class BucketMongoSafeQueue extends Queue {
|
|
|
738
737
|
}
|
|
739
738
|
|
|
740
739
|
|
|
741
|
-
|
|
742
740
|
//////////////////////////////////////////////
|
|
743
741
|
// remove by id
|
|
744
742
|
remove (id, callback) {
|
|
@@ -940,9 +938,10 @@ class Factory extends QFactory_MongoDB_defaults {
|
|
|
940
938
|
|
|
941
939
|
capabilities () {
|
|
942
940
|
return {
|
|
943
|
-
sched:
|
|
941
|
+
sched: true,
|
|
944
942
|
reserve: true,
|
|
945
943
|
pipeline: false,
|
|
944
|
+
tape: false,
|
|
946
945
|
remove: true
|
|
947
946
|
};
|
|
948
947
|
}
|
package/backends/bucket-mongo.js
CHANGED
|
@@ -205,16 +205,14 @@ class BucketMongoQueue extends Queue {
|
|
|
205
205
|
// queue size including non-mature elements
|
|
206
206
|
totalSize (callback) {
|
|
207
207
|
//////////////////////////////////
|
|
208
|
-
this._col.aggregate ([
|
|
208
|
+
const cursor = this._col.aggregate ([
|
|
209
209
|
{$group:{_id:'t', v: {$sum: '$n'}}}
|
|
210
|
-
]
|
|
211
|
-
if (err) return callback (err);
|
|
210
|
+
]);
|
|
212
211
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
});
|
|
212
|
+
cursor.toArray ((err, res) => {
|
|
213
|
+
if (err) return callback (err);
|
|
214
|
+
if (res.length == 0) return callback (null, 0);
|
|
215
|
+
callback (null, res[0].v);
|
|
218
216
|
});
|
|
219
217
|
}
|
|
220
218
|
|
|
@@ -342,7 +340,9 @@ class Factory extends QFactory_MongoDB_defaults {
|
|
|
342
340
|
return {
|
|
343
341
|
sched: false,
|
|
344
342
|
reserve: false,
|
|
345
|
-
pipeline: false
|
|
343
|
+
pipeline: false,
|
|
344
|
+
tape: false,
|
|
345
|
+
remove: true
|
|
346
346
|
};
|
|
347
347
|
}
|
|
348
348
|
}
|
package/backends/mongo.js
CHANGED
package/backends/pl-mongo.js
CHANGED
package/backends/redis-list.js
CHANGED
package/backends/redis-oq.js
CHANGED
|
@@ -26,10 +26,10 @@ var factory_opts = {
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
// test dimensions: elems to produce and consume, number of consumers, number of producers
|
|
29
|
-
const num_elems =
|
|
29
|
+
const num_elems = 1000000;
|
|
30
30
|
const num_producers = 3;
|
|
31
31
|
const num_consumers = 7;
|
|
32
|
-
const commit_likelihood =
|
|
32
|
+
const commit_likelihood = 75;
|
|
33
33
|
|
|
34
34
|
// stats holder
|
|
35
35
|
var selfs = {
|
|
@@ -223,12 +223,12 @@ MQ (factory_opts, function (err, factory) {
|
|
|
223
223
|
var q = factory.queue ('test_queue_456', q_opts);
|
|
224
224
|
|
|
225
225
|
var timer = setInterval (() => {
|
|
226
|
-
console.log ('**** state: %
|
|
226
|
+
console.log ('**** state: %o', _.map (shareds, (v, k) => {return {cnt: v.push_count || v.pop_count, max: v.push_max || v.pop_max }}));
|
|
227
227
|
|
|
228
228
|
console.log ('das pop %d, ko %d, ok %d', das_pop, das_ko, das_ok);
|
|
229
229
|
|
|
230
230
|
q.status ((err ,res) => {
|
|
231
|
-
console.log ('**** status: %
|
|
231
|
+
console.log ('**** status: %o', res);
|
|
232
232
|
});
|
|
233
233
|
}, 2000);
|
|
234
234
|
|
|
@@ -263,7 +263,7 @@ MQ (factory_opts, function (err, factory) {
|
|
|
263
263
|
clearInterval (timer);
|
|
264
264
|
|
|
265
265
|
q.status ((err ,res) => {
|
|
266
|
-
console.log ('**** status: %
|
|
266
|
+
console.log ('**** status: %o', res);
|
|
267
267
|
q.drain (() => factory.close ());
|
|
268
268
|
});
|
|
269
269
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "keuss",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.14",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"queue",
|
|
6
6
|
"persistent",
|
|
@@ -26,19 +26,19 @@
|
|
|
26
26
|
},
|
|
27
27
|
"license": "GPL-3.0",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@nodebb/mubsub": "~1.
|
|
29
|
+
"@nodebb/mubsub": "~1.8.0",
|
|
30
30
|
"async": "~3.2.3",
|
|
31
31
|
"async-lock": "~1.3.1",
|
|
32
|
-
"debug": "~4.3.
|
|
33
|
-
"ioredis": "~
|
|
32
|
+
"debug": "~4.3.4",
|
|
33
|
+
"ioredis": "~5.0.4",
|
|
34
34
|
"lodash": "~4.17.21",
|
|
35
35
|
"mitt": "~3.0.0",
|
|
36
|
-
"mongodb": "~
|
|
36
|
+
"mongodb": "~4.5.0",
|
|
37
37
|
"uuid": "~8.3.2"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"chance": "~1.1.8",
|
|
41
|
-
"mocha": "~9.2.
|
|
41
|
+
"mocha": "~9.2.2",
|
|
42
42
|
"should": "~13.2.3"
|
|
43
43
|
},
|
|
44
44
|
"scripts": {
|
package/signal/redis-pubsub.js
CHANGED
|
@@ -52,6 +52,7 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
52
52
|
function (cb) {q.totalSize (cb)},
|
|
53
53
|
function (cb) {q.next_t (cb)},
|
|
54
54
|
], function(err, results) {
|
|
55
|
+
if (err) return done (err);
|
|
55
56
|
results.should.eql ([{get: 0, put: 0, reserve: 0, commit: 0, rollback: 0, deadletter: 0}, 0, 0, null])
|
|
56
57
|
done();
|
|
57
58
|
});
|
|
@@ -67,15 +68,15 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
67
68
|
function (cb) {setTimeout (cb, 1111)},
|
|
68
69
|
function (cb) {q.size (function (err, size) {
|
|
69
70
|
size.should.equal (2);
|
|
70
|
-
cb();
|
|
71
|
+
cb(err);
|
|
71
72
|
})},
|
|
72
73
|
function (cb) {q.stats (function (err, res) {
|
|
73
74
|
res.should.eql ({get: 0, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0});
|
|
74
|
-
cb();
|
|
75
|
+
cb(err);
|
|
75
76
|
})},
|
|
76
77
|
function (cb) {q.next_t (function (err, res) {
|
|
77
78
|
res.getTime().should.be.approximately(new Date().getTime(), 2000);
|
|
78
|
-
cb();
|
|
79
|
+
cb(err);
|
|
79
80
|
})},
|
|
80
81
|
function (cb) {q.pop ('c1', function (err, ret) {
|
|
81
82
|
ret.payload.should.eql ({elem:1, pl:'twetrwte'});
|
|
@@ -83,11 +84,11 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
83
84
|
})},
|
|
84
85
|
function (cb) {q.size (function (err, size) {
|
|
85
86
|
size.should.equal (0);
|
|
86
|
-
cb();
|
|
87
|
+
cb(err);
|
|
87
88
|
})},
|
|
88
89
|
function (cb) {q.stats (function (err, res) {
|
|
89
90
|
res.should.eql ({get: 1, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0});
|
|
90
|
-
cb();
|
|
91
|
+
cb(err);
|
|
91
92
|
})},
|
|
92
93
|
function (cb) {q.pop ('c2', function (err, ret) {
|
|
93
94
|
ret.payload.should.eql ({elem:2, pl:'twetrwte'});
|
|
@@ -95,13 +96,14 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
95
96
|
})},
|
|
96
97
|
function (cb) {q.size (function (err, size) {
|
|
97
98
|
size.should.equal (0);
|
|
98
|
-
cb();
|
|
99
|
+
cb(err);
|
|
99
100
|
})},
|
|
100
101
|
function (cb) {q.stats (function (err, res) {
|
|
101
102
|
res.should.eql ({get: 2, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0});
|
|
102
|
-
cb();
|
|
103
|
+
cb(err);
|
|
103
104
|
})},
|
|
104
105
|
], function(err, results) {
|
|
106
|
+
if (err) return done (err);
|
|
105
107
|
q.drain();
|
|
106
108
|
done();
|
|
107
109
|
});
|
|
@@ -136,13 +138,14 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
136
138
|
})},
|
|
137
139
|
function (cb) {q.size (function (err, size) {
|
|
138
140
|
size.should.equal (0);
|
|
139
|
-
cb();
|
|
141
|
+
cb(err);
|
|
140
142
|
})},
|
|
141
143
|
function (cb) {q.stats (function (err, res) {
|
|
142
144
|
res.should.eql ({get: 2, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0});
|
|
143
|
-
cb();
|
|
145
|
+
cb(err);
|
|
144
146
|
})},
|
|
145
147
|
], function(err, results) {
|
|
148
|
+
if (err) return done (err);
|
|
146
149
|
q.drain();
|
|
147
150
|
done();
|
|
148
151
|
});
|
|
@@ -159,18 +162,18 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
159
162
|
(cb) => q.push ({elem:4, pl:'twetrwte'}, cb),
|
|
160
163
|
(cb) => setTimeout (cb, 666),
|
|
161
164
|
|
|
162
|
-
(cb) => q.size ((err, size) => {size.should.equal (4); cb(); }),
|
|
163
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 4, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(); }),
|
|
165
|
+
(cb) => q.size ((err, size) => {size.should.equal (4); cb(err); }),
|
|
166
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 4, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
164
167
|
|
|
165
168
|
(cb) => q.push ({elem:5, pl:'twetrwte'}, cb),
|
|
166
169
|
(cb) => q.push ({elem:6, pl:'twetrwte'}, cb),
|
|
167
170
|
(cb) => q.push ({elem:7, pl:'twetrwte'}, cb),
|
|
168
171
|
(cb) => setTimeout (cb, 666),
|
|
169
172
|
|
|
170
|
-
(cb) => q.size ((err, size) => {size.should.equal (7); cb(); }),
|
|
171
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(); }),
|
|
173
|
+
(cb) => q.size ((err, size) => {size.should.equal (7); cb(err); }),
|
|
174
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
172
175
|
|
|
173
|
-
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime(), 2000); cb(); }),
|
|
176
|
+
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime(), 2000); cb(err); }),
|
|
174
177
|
|
|
175
178
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:1, pl:'twetrwte'}); cb (err); })},
|
|
176
179
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:2, pl:'twetrwte'}); cb (err); })},
|
|
@@ -180,9 +183,10 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
180
183
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:6, pl:'twetrwte'}); cb (err); })},
|
|
181
184
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:7, pl:'twetrwte'}); cb (err); })},
|
|
182
185
|
|
|
183
|
-
(cb) => q.size ((err, size) => {size.should.equal (0); cb(); }),
|
|
184
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 7, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(); }),
|
|
186
|
+
(cb) => q.size ((err, size) => {size.should.equal (0); cb(err); }),
|
|
187
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 7, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
185
188
|
], function(err, results) {
|
|
189
|
+
if (err) return done (err);
|
|
186
190
|
q.drain();
|
|
187
191
|
done();
|
|
188
192
|
});
|
|
@@ -199,19 +203,19 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
199
203
|
(cb) => q.push ({elem:4, pl:'twetrwte'}, {delay: 4}, cb),
|
|
200
204
|
(cb) => setTimeout (cb, 700),
|
|
201
205
|
|
|
202
|
-
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 3300, 100); cb(); }),
|
|
206
|
+
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 3300, 100); cb(err); }),
|
|
203
207
|
|
|
204
208
|
(cb) => q.push ({elem:5, pl:'twetrwte'}, {delay: 2}, cb),
|
|
205
209
|
(cb) => q.push ({elem:6, pl:'twetrwte'}, {delay: 1}, cb),
|
|
206
210
|
(cb) => q.push ({elem:7, pl:'twetrwte'}, {delay: 2}, cb),
|
|
207
211
|
(cb) => setTimeout (cb, 700),
|
|
208
212
|
|
|
209
|
-
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 1300, 100); cb(); }),
|
|
213
|
+
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 1300, 100); cb(err); }),
|
|
210
214
|
|
|
211
|
-
(cb) => q.size ((err, size) => {size.should.equal (0); cb(); }),
|
|
212
|
-
(cb) => q.totalSize ((err, size) => {size.should.equal (7); cb(); }),
|
|
213
|
-
(cb) => q.schedSize ((err, size) => {size.should.equal (7); cb(); }),
|
|
214
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(); }),
|
|
215
|
+
(cb) => q.size ((err, size) => {size.should.equal (0); cb(err); }),
|
|
216
|
+
(cb) => q.totalSize ((err, size) => {size.should.equal (7); cb(err); }),
|
|
217
|
+
(cb) => q.schedSize ((err, size) => {size.should.equal (7); cb(err); }),
|
|
218
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
215
219
|
|
|
216
220
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:5, pl:'twetrwte'}); cb (err); })},
|
|
217
221
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:6, pl:'twetrwte'}); cb (err); })},
|
|
@@ -221,9 +225,10 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
221
225
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:3, pl:'twetrwte'}); cb (err); })},
|
|
222
226
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:4, pl:'twetrwte'}); cb (err); })},
|
|
223
227
|
|
|
224
|
-
(cb) => q.size ((err, size) => {size.should.equal (0); cb(); }),
|
|
225
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 7, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(); }),
|
|
228
|
+
(cb) => q.size ((err, size) => {size.should.equal (0); cb(err); }),
|
|
229
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 7, put: 7, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
226
230
|
], function(err, results) {
|
|
231
|
+
if (err) return done (err);
|
|
227
232
|
q.drain();
|
|
228
233
|
done();
|
|
229
234
|
});
|
|
@@ -238,19 +243,20 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
238
243
|
(cb) => q.push ({elem:2, pl:'twetrwte'}, cb),
|
|
239
244
|
(cb) => setTimeout (cb, 700),
|
|
240
245
|
|
|
241
|
-
(cb) => q.size ((err, size) => {size.should.equal (2); cb(); }),
|
|
242
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(); }),
|
|
246
|
+
(cb) => q.size ((err, size) => {size.should.equal (2); cb(err); }),
|
|
247
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 2, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
243
248
|
|
|
244
249
|
(cb) => q.push ({elem:3, pl:'twetrwte'}, cb),
|
|
245
250
|
(cb) => setTimeout (cb, 700),
|
|
246
251
|
|
|
247
|
-
(cb) => q.size ((err, size) => {size.should.equal (3); cb(); }),
|
|
248
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 3, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(); }),
|
|
252
|
+
(cb) => q.size ((err, size) => {size.should.equal (3); cb(err); }),
|
|
253
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 0, put: 3, reserve: 0, commit: 0, rollback: 0, deadletter: 0}); cb(err); }),
|
|
249
254
|
|
|
250
|
-
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() - 1400, 100); cb(); }),
|
|
255
|
+
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() - 1400, 100); cb(err); }),
|
|
251
256
|
|
|
252
257
|
(cb) => {
|
|
253
258
|
q.pop ('c1', {reserve: true}, (err, ret) => {
|
|
259
|
+
if (err) return cb (err);
|
|
254
260
|
ret.payload.should.eql ({elem:1, pl:'twetrwte'});
|
|
255
261
|
q.ko (ret._id, (new Date().getTime() + 5000 ), (err, res) => {
|
|
256
262
|
should (res).equal (true);
|
|
@@ -263,6 +269,7 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
263
269
|
|
|
264
270
|
(cb) => {
|
|
265
271
|
q.pop ('c1', {reserve: true}, (err, ret) => {
|
|
272
|
+
if (err) return cb (err);
|
|
266
273
|
ret.payload.should.eql ({elem:3, pl:'twetrwte'});
|
|
267
274
|
q.ko (ret._id, (new Date().getTime() + 3000 ), (err, res) => {
|
|
268
275
|
should (res).equal (true);
|
|
@@ -273,18 +280,19 @@ describe ('bucket-at-least-once with ' + MQ_item.label + ' queue backend', funct
|
|
|
273
280
|
|
|
274
281
|
(cb) => setTimeout (cb, 700),
|
|
275
282
|
|
|
276
|
-
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 2500, 500); cb(); }),
|
|
283
|
+
(cb) => q.next_t ((err, res) => {res.getTime().should.be.approximately(new Date().getTime() + 2500, 500); cb(err); }),
|
|
277
284
|
|
|
278
|
-
(cb) => q.size ((err, size) => {size.should.equal (0); cb(); }),
|
|
279
|
-
(cb) => q.totalSize ((err, size) => {size.should.equal (2); cb(); }),
|
|
280
|
-
(cb) => q.schedSize ((err, size) => {size.should.equal (2); cb(); }),
|
|
285
|
+
(cb) => q.size ((err, size) => {size.should.equal (0); cb(err); }),
|
|
286
|
+
(cb) => q.totalSize ((err, size) => {size.should.equal (2); cb(err); }),
|
|
287
|
+
(cb) => q.schedSize ((err, size) => {size.should.equal (2); cb(err); }),
|
|
281
288
|
|
|
282
289
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:3, pl:'twetrwte'}); cb (err); })},
|
|
283
290
|
(cb) => {q.pop ('c1', (err, ret) => {ret.payload.should.eql ({elem:1, pl:'twetrwte'}); cb (err); })},
|
|
284
291
|
|
|
285
|
-
(cb) => q.size ((err, size) => {size.should.equal (0); cb(); }),
|
|
286
|
-
(cb) => q.stats ((err, res) => {res.should.eql ({get: 3, put: 3, reserve: 2, commit: 0, rollback: 2, deadletter: 0}); cb(); }),
|
|
292
|
+
(cb) => q.size ((err, size) => {size.should.equal (0); cb(err); }),
|
|
293
|
+
(cb) => q.stats ((err, res) => {res.should.eql ({get: 3, put: 3, reserve: 2, commit: 0, rollback: 2, deadletter: 0}); cb(err); }),
|
|
287
294
|
], function(err, results) {
|
|
295
|
+
if (err) return done (err);
|
|
288
296
|
q.drain();
|
|
289
297
|
done();
|
|
290
298
|
});
|