1
1
'use strict' ;
2
2
var should = require ( 'chai' ) . should ( ) ;
3
- var throttledQueue = require ( '../index.js' ) ;
3
+ var concurrencyQueue = require ( '../index.js' ) ;
4
4
5
5
var job1 = { name : 'job1' , 'val' : 4 } ;
6
6
var job2 = { name : 'job2' , 'val' : 5 } ;
@@ -36,7 +36,7 @@ describe('Concurrency-Queue', function() {
36
36
} ) ;
37
37
38
38
it ( "should fire a 'ready' event when adding jobs till maxConcurrency is reached" , function ( ) {
39
- cQ = throttledQueue . createInstance ( options ) ;
39
+ cQ = concurrencyQueue . createInstance ( options ) ;
40
40
cQ . push ( job1 ) ;
41
41
result . onReady . should . not . equal ( undefined ) ;
42
42
result . onReady [ 0 ] . should . equal ( job1 ) ;
@@ -51,7 +51,7 @@ describe('Concurrency-Queue', function() {
51
51
result . onReady [ 2 ] . should . deep . equal ( { maxConcurrency : 3 , processing : 2 , queued : 0 } ) ;
52
52
} ) ;
53
53
it ( "should fire a 'queued' event when maxConcurrency reached" , function ( ) {
54
- cQ = throttledQueue . createInstance ( options ) ;
54
+ cQ = concurrencyQueue . createInstance ( options ) ;
55
55
cQ . push ( job1 ) ;
56
56
cQ . push ( job2 ) ;
57
57
cQ . push ( job3 ) ;
@@ -67,7 +67,7 @@ describe('Concurrency-Queue', function() {
67
67
result . onQueued [ 2 ] . should . deep . equal ( { maxConcurrency : 3 , processing : 3 , queued : 2 } ) ;
68
68
} ) ;
69
69
it ( "should fire a 'ready' event and release a queued job when drained" , function ( ) {
70
- cQ = throttledQueue . createInstance ( options ) ;
70
+ cQ = concurrencyQueue . createInstance ( options ) ;
71
71
cQ . push ( job1 ) ;
72
72
var jobId2 = cQ . push ( job2 ) ;
73
73
cQ . push ( job3 ) ;
@@ -81,7 +81,7 @@ describe('Concurrency-Queue', function() {
81
81
} ) ;
82
82
it ( "should fire a 'drained' event and and 'empty' event when completely drained" , function ( ) {
83
83
options . maxConcurrency = 2 ;
84
- cQ = throttledQueue . createInstance ( options ) ;
84
+ cQ = concurrencyQueue . createInstance ( options ) ;
85
85
var jobId1 = cQ . push ( job1 ) ;
86
86
var jobId2 = cQ . push ( job2 ) ;
87
87
cQ . drain ( jobId1 ) ;
@@ -94,6 +94,27 @@ describe('Concurrency-Queue', function() {
94
94
should . not . exist ( result . onEmpty [ 1 ] ) ;
95
95
result . onEmpty [ 2 ] . should . deep . equal ( { maxConcurrency : 2 , processing : 0 , queued : 0 } )
96
96
} ) ;
97
+ it ( "should release entries in the queue following the FIFO rule" , function ( ) {
98
+ options . maxConcurrency = 2 ;
99
+ cQ = concurrencyQueue . createInstance ( options ) ;
100
+ var jobId1 = cQ . push ( job1 ) ;
101
+ result . onReady [ 0 ] . should . equal ( job1 ) ;
102
+ result . onReady [ 2 ] . should . deep . equal ( { maxConcurrency : 2 , processing : 1 , queued : 0 } ) ;
103
+ var jobId2 = cQ . push ( job2 ) ;
104
+ var jobId3 = cQ . push ( job3 ) ;
105
+ var jobId4 = cQ . push ( job4 ) ;
106
+ result . onQueued [ 0 ] . should . equal ( job4 ) ;
107
+ result . onQueued [ 2 ] . should . deep . equal ( { maxConcurrency : 2 , processing : 2 , queued : 2 } ) ;
108
+ //drain out of order should still maintain input sequence
109
+ cQ . drain ( jobId2 ) ;
110
+ result . onReady [ 0 ] . should . equal ( job3 ) ;
111
+ result . onReady [ 2 ] . should . deep . equal ( { maxConcurrency : 2 , processing : 2 , queued : 1 } ) ;
112
+ cQ . drain ( jobId1 ) ;
113
+ result . onReady [ 0 ] . should . equal ( job4 ) ;
114
+ result . onReady [ 2 ] . should . deep . equal ( { maxConcurrency : 2 , processing : 2 , queued : 0 } ) ;
115
+
116
+ } ) ;
117
+
97
118
} ) ;
98
119
} ) ;
99
120
0 commit comments