UNPKG

2.4 kBJavaScriptView Raw
1var assert = require('assert');
2var Queue = require('../lib/queue');
3
4describe('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 // TODO: Test progress
89 // TODO: Test the actual stores
90
91})