1 | var assert = require('assert');
|
2 | var Queue = require('../lib/queue');
|
3 |
|
4 | describe('Store Usage', function() {
|
5 |
|
6 | it('should retry connect', function (done) {
|
7 | var tries = 0;
|
8 | var s = {
|
9 | connect: function (cb) {
|
10 | tries++;
|
11 | if (tries < 3) {
|
12 | return cb('failed');
|
13 | }
|
14 | done();
|
15 | },
|
16 | getTask: function (taskId, cb) { cb() },
|
17 | putTask: function (taskId, task, priority, cb) { cb() },
|
18 | takeFirstN: function (n, cb) { cb() },
|
19 | takeLastN: function (n, cb) { cb() }
|
20 | }
|
21 | var q = new Queue(function (batch, cb) { cb() }, {
|
22 | storeMaxRetries: 5,
|
23 | storeRetryTimeout: 1,
|
24 | store: s
|
25 | })
|
26 | })
|
27 |
|
28 | it('should fail retry', function (done) {
|
29 | var tries = 0;
|
30 | var s = {
|
31 | connect: function (cb) {
|
32 | tries++;
|
33 | cb('failed');
|
34 | },
|
35 | getTask: function (taskId, cb) { cb() },
|
36 | putTask: function (taskId, task, priority, cb) { cb() },
|
37 | takeFirstN: function (n, cb) { cb() },
|
38 | takeLastN: function (n, cb) { cb() }
|
39 | }
|
40 | var q = new Queue(function (batch, cb) { cb() }, {
|
41 | storeMaxRetries: 2,
|
42 | storeRetryTimeout: 1,
|
43 | store: s
|
44 | })
|
45 | .on('error', function (e) {
|
46 | assert.ok(e);
|
47 | done();
|
48 | })
|
49 | })
|
50 |
|
51 | it('should queue length', function (done) {
|
52 | var queued = false;
|
53 | var s = {
|
54 | connect: function (cb) { cb(null, 5) },
|
55 | getTask: function (taskId, cb) { cb() },
|
56 | putTask: function (taskId, task, priority, cb) { cb() },
|
57 | getLock: function (lockId, cb) { cb(null, { 'task-id': queued ? 2 : 1 }) },
|
58 | getRunningTasks: function (cb) { cb(null, {}) },
|
59 | takeFirstN: function (n, cb) { cb(null, 'lock-id') },
|
60 | takeLastN: function (n, cb) { cb() },
|
61 | releaseLock: function (lockId, cb) { cb(null) },
|
62 | }
|
63 | var q = new Queue(function (n, cb) {
|
64 | if (n === 2) {
|
65 | assert.equal(q.length, 5);
|
66 | done();
|
67 | }
|
68 | cb();
|
69 | }, { store: s, autoResume: false })
|
70 | q.push(1).on('queued', function (e) {
|
71 | queued = true;
|
72 | assert.equal(q.length, 6);
|
73 | })
|
74 | })
|
75 |
|
76 | it('should fail if there is no length on connect', function (done) {
|
77 | var queued = false;
|
78 | var s = {
|
79 | connect: function (cb) { cb() }
|
80 | }
|
81 | try {
|
82 | var q = new Queue(function (n, cb) {}, { store: s })
|
83 | } catch (e) {
|
84 | done();
|
85 | }
|
86 | })
|
87 |
|
88 |
|
89 |
|
90 |
|
91 | })
|