forked from Automattic/kue
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.js
More file actions
executable file
·124 lines (109 loc) · 3.62 KB
/
Copy pathtest.js
File metadata and controls
executable file
·124 lines (109 loc) · 3.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
var kue = require('../');
describe('Jobs', function () {
var jobs = null;
beforeEach(function (done) {
jobs = kue.createQueue();
jobs.promote(1);
done();
});
afterEach(function (done) {
jobs.shutdown( function( err ){
jobs = null;
done();
}, 500 );
});
it('should be processed', function (done) {
var jobData = {
title: 'welcome email for tj',
to: '"TJ" <tj@learnboost.com>',
template: 'welcome-email'
};
jobs.create('email-should-be-processed', jobData).priority('high').save();
jobs.process('email-should-be-processed', function (job, jdone) {
job.data.should.be.eql(jobData);
job.log( '<p>This is <span style="color: green;">a</span> formatted log<p/>' );
jdone();
done();
});
});
it('should retry on failure if attempts is set', function (testDone) {
var job = jobs.create('failure-attempts', {});
var failures = 0;
job.attempts(5)
.on('complete', function(){
attempts.should.be.equal(5);
failures.should.be.equal(4);
testDone();
})
.on('failed attempt', function( attempt ){
failures++;
})
.save();
var attempts = 0;
jobs.process('failure-attempts', function (job, done) {
attempts++;
if( attempts == 5 )
done();
else
done(new Error("error"));
});
});
/*
it('should delay retries on failure if attempts and delay is set', function (done) {
this.timeout(20000);
jobs.create('failure-attempts-delay', {}).delay(1000).attempts(5).attemptsDelay(100).save();
var delays = []
jobs.process('failure-attempts-delay', function (job, done) {
delays.push((new Date()) - job.created_at);
done(new Error("error"));
});
jobs.promote(1);
setTimeout(function () {
delays.should.arraysAlmostEql([1000, 1100, 1200, 1300, 1400]);
done();
}, 1500);
})
it('should fire up retries right away on failure if attemptsDelay is nil', function (done) {
this.timeout(20000);
jobs.create('failure-attempts-without-delay', {}).delay(1000).attempts(5).save();
var delays = []
jobs.process('failure-attempts-without-delay', function (job, done) {
delays.push((new Date()) - job.created_at);
done(new Error("error"));
});
jobs.promote(1);
setTimeout(function () {
delays.should.arraysAlmostEql([1000, 1000, 1000, 1000, 1000]);
done();
}, 1500);
})
it.only('should fire all events properly', function (done) {
this.timeout(60000);
var job = jobs.create('failure-attempts-delay-change-on-event', {}).attempts(5).attemptsDelay(100);
var delays = [];
var completes = [];
var failed = [];
job.save();
var start = new Date();
job.on('complete',function () {
completes.push((new Date()) - start);
}).on('failed', function () {
failed.push((new Date()) - start);
});
jobs.process('failure-attempts-delay-change-on-event', function (job, done) {
delays.push((new Date()) - start);
if (delays.length == 4) {
done()
} else {
done(new Error("error"));
}
job.attemptsDelay(job.attemptsDelay() * 2);
});
jobs.promote(1);
setTimeout(function () {
delays.should.arraysAlmostEql(failed.concat(completes));
delays.should.arraysAlmostEql([10, 200, 600, 1400]);
done();
}, 3000);
})*/
});