@@ -4,31 +4,28 @@ assert = require "assert"
4
4
5
5
vows .describe " job-queue"
6
6
.addBatch
7
- " Test 1 " :
7
+ " With no consumers or jobs " :
8
8
topic : new JobQueue
9
9
" No consumers " : (jobQueue ) ->
10
10
assert .deepEqual jobQueue .consumers , []
11
11
" No pending jobs " : (jobQueue ) ->
12
12
assert .equal jobQueue .pendingJobs , 0
13
- " Test 2" :
14
- topic : ->
15
- makeConsumer = (consumerId ) ->
16
- (job ) ->
17
- job .process consumerId
18
- jobQueue = new JobQueue [1 .. 5 ].map (makeConsumer), 5 , 100
19
- jobQueue .addConsumers [6 .. 10 ].map (makeConsumer), 8 , 200
13
+ " With MovingWindowRateLimitedConsumer and 500 jobs" :
14
+ topic : ->
15
+ jobQueue = new JobQueue [1 .. 5 ].map (consumerId) -> new JobQueue.MovingWindowRateLimitedConsumer ((job ) -> job .process consumerId), 5 , 100
16
+ jobQueue .addConsumers [6 .. 10 ].map (consumerId) -> new JobQueue.MovingWindowRateLimitedConsumer ((job ) -> job .process consumerId), 8 , 200
20
17
for jobId in [1 .. 500 ] then do (jobId ) ->
21
18
jobQueue .enqueue
22
19
id : jobId
23
20
process : (consumerId ) ->
24
21
jobQueue
25
- " Initially " :
22
+ " initially " :
26
23
topic : (jobQueue ) -> jobQueue
27
24
" 10 consumers " : (jobQueue ) ->
28
25
assert .equal jobQueue .consumers .length , 10
29
26
" 500 pending jobs " : (jobQueue ) ->
30
27
assert .equal jobQueue .pendingJobs , 500
31
- " After 10 ms" :
28
+ " after 10 ms" :
32
29
topic : (jobQueue ) ->
33
30
setTimeout =>
34
31
@ callback null , jobQueue
@@ -38,7 +35,7 @@ vows.describe "job-queue"
38
35
assert .equal jobQueue .consumers .length , 10
39
36
" 435 pending jobs " : (jobQueue ) ->
40
37
assert .equal jobQueue .pendingJobs , 435
41
- " After 110 ms" :
38
+ " after 110 ms" :
42
39
topic : (jobQueue ) ->
43
40
setTimeout =>
44
41
@ callback null , jobQueue
@@ -48,7 +45,7 @@ vows.describe "job-queue"
48
45
assert .equal jobQueue .consumers .length , 10
49
46
" 410 pending jobs " : (jobQueue ) ->
50
47
assert .equal jobQueue .pendingJobs , 410
51
- " After 160 ms" :
48
+ " after 160 ms" :
52
49
topic : (jobQueue ) ->
53
50
setTimeout =>
54
51
@ callback null , jobQueue
@@ -58,7 +55,7 @@ vows.describe "job-queue"
58
55
assert .equal jobQueue .consumers .length , 10
59
56
" 410 pending jobs " : (jobQueue ) ->
60
57
assert .equal jobQueue .pendingJobs , 410
61
- " After 210 ms" :
58
+ " after 210 ms" :
62
59
topic : (jobQueue ) ->
63
60
setTimeout =>
64
61
@ callback null , jobQueue
@@ -68,7 +65,7 @@ vows.describe "job-queue"
68
65
assert .equal jobQueue .consumers .length , 10
69
66
" 345 pending jobs " : (jobQueue ) ->
70
67
assert .equal jobQueue .pendingJobs , 345
71
- " After 510 ms" :
68
+ " after 510 ms" :
72
69
topic : (jobQueue ) ->
73
70
setTimeout =>
74
71
@ callback null , jobQueue
@@ -78,7 +75,100 @@ vows.describe "job-queue"
78
75
assert .equal jobQueue .consumers .length , 10
79
76
" 230 pending jobs " : (jobQueue ) ->
80
77
assert .equal jobQueue .pendingJobs , 230
81
- " After 1010 ms" :
78
+ " after 1010 ms" :
79
+ topic : (jobQueue ) ->
80
+ setTimeout =>
81
+ @ callback null , jobQueue
82
+ , 1010
83
+ undefined
84
+ " 10 consumers " : (jobQueue ) ->
85
+ assert .equal jobQueue .consumers .length , 10
86
+ " 0 pending jobs " : (jobQueue ) ->
87
+ assert .equal jobQueue .pendingJobs , 0
88
+ " With CustomRateLimitedConsumer and 500 jobs" :
89
+ topic : ->
90
+ jobQueue = new JobQueue [1 .. 5 ].map (consumerId) ->
91
+ counter = 1
92
+ new JobQueue.CustomRateLimitedConsumer [
93
+ (job ) ->
94
+ job .process consumerId
95
+ ->
96
+ d = new Date
97
+ d .setUTCMilliseconds d .getUTCMilliseconds () + (counter++ ) * 1.5
98
+ d
99
+ ]...
100
+ jobQueue .addConsumers [6 .. 10 ].map (consumerId) ->
101
+ counter = 1
102
+ new JobQueue.CustomRateLimitedConsumer [
103
+ (job ) ->
104
+ job .process consumerId
105
+ ->
106
+ d = new Date
107
+ d .setUTCMilliseconds d .getUTCMilliseconds () + (counter++ ) * 2.5
108
+ d
109
+ ]...
110
+ for jobId in [1 .. 500 ] then do (jobId ) ->
111
+ jobQueue .enqueue
112
+ id : jobId
113
+ process : (consumerId ) ->
114
+ jobQueue
115
+ " initially" :
116
+ topic : (jobQueue ) -> jobQueue
117
+ " 10 consumers " : (jobQueue ) ->
118
+ assert .equal jobQueue .consumers .length , 10
119
+ " 500 pending jobs " : (jobQueue ) ->
120
+ assert .equal jobQueue .pendingJobs , 500
121
+ " after 10 ms" :
122
+ topic : (jobQueue ) ->
123
+ setTimeout =>
124
+ @ callback null , jobQueue
125
+ , 10
126
+ undefined
127
+ " 10 consumers " : (jobQueue ) ->
128
+ assert .equal jobQueue .consumers .length , 10
129
+ " >= 480 pending jobs " : (jobQueue ) ->
130
+ assert jobQueue .pendingJobs >= 480
131
+ " after 110 ms" :
132
+ topic : (jobQueue ) ->
133
+ setTimeout =>
134
+ @ callback null , jobQueue
135
+ , 110
136
+ undefined
137
+ " 10 consumers " : (jobQueue ) ->
138
+ assert .equal jobQueue .consumers .length , 10
139
+ " >= 410 pending jobs " : (jobQueue ) ->
140
+ assert jobQueue .pendingJobs >= 410
141
+ " after 160 ms" :
142
+ topic : (jobQueue ) ->
143
+ setTimeout =>
144
+ @ callback null , jobQueue
145
+ , 160
146
+ undefined
147
+ " 10 consumers " : (jobQueue ) ->
148
+ assert .equal jobQueue .consumers .length , 10
149
+ " >= 380 pending jobs " : (jobQueue ) ->
150
+ assert jobQueue .pendingJobs >= 380
151
+ " after 210 ms" :
152
+ topic : (jobQueue ) ->
153
+ setTimeout =>
154
+ @ callback null , jobQueue
155
+ , 210
156
+ undefined
157
+ " 10 consumers " : (jobQueue ) ->
158
+ assert .equal jobQueue .consumers .length , 10
159
+ " >= 350 pending jobs " : (jobQueue ) ->
160
+ assert jobQueue .pendingJobs >= 350
161
+ " after 510 ms" :
162
+ topic : (jobQueue ) ->
163
+ setTimeout =>
164
+ @ callback null , jobQueue
165
+ , 510
166
+ undefined
167
+ " 10 consumers " : (jobQueue ) ->
168
+ assert .equal jobQueue .consumers .length , 10
169
+ " >= 150 pending jobs " : (jobQueue ) ->
170
+ assert jobQueue .pendingJobs >= 150
171
+ " after 1010 ms" :
82
172
topic : (jobQueue ) ->
83
173
setTimeout =>
84
174
@ callback null , jobQueue
@@ -90,8 +180,6 @@ vows.describe "job-queue"
90
180
assert .equal jobQueue .pendingJobs , 0
91
181
.export module
92
182
93
- ###
94
183
process .on " uncaughtException" , (err ) ->
95
184
console .error " Caught exception: " + err
96
- process.removeAllListeners "uncaughtException"
97
- ###
185
+ process .removeAllListeners " uncaughtException"
0 commit comments