1
- import * as expect from 'expect.js ' ;
1
+ import { expect } from 'chai ' ;
2
2
3
3
import { Db } from 'mongodb' ;
4
4
import { Agenda } from '../src' ;
@@ -15,7 +15,7 @@ const clearJobs = async () => {
15
15
}
16
16
} ;
17
17
18
- describe ( 'Agenda ' , function ( ) {
18
+ describe ( 'JobProcessor ' , function ( ) {
19
19
// this.timeout(1000000);
20
20
21
21
beforeEach ( async ( ) => {
@@ -48,35 +48,90 @@ describe('Agenda', function () {
48
48
await clearJobs ( ) ;
49
49
} ) ;
50
50
51
- describe ( 'configuration methods' , ( ) => {
52
- it ( 'ensure new jobs are always filling up running queue' , async ( ) => {
53
- let shortOneFinished = false ;
51
+ it ( 'ensure new jobs are always filling up running queue' , async ( ) => {
52
+ let shortOneFinished = false ;
54
53
55
- agenda . define ( 'test long' , async ( ) => {
54
+ agenda . define ( 'test long' , async ( ) => {
55
+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
56
+ } ) ;
57
+ agenda . define ( 'test short' , async ( ) => {
58
+ shortOneFinished = true ;
59
+ await new Promise ( resolve => setTimeout ( resolve , 5 ) ) ;
60
+ } ) ;
61
+
62
+ await agenda . start ( ) ;
63
+
64
+ // queue up long ones
65
+ for ( let i = 0 ; i < 100 ; i ++ ) {
66
+ agenda . now ( 'test long' ) ;
67
+ }
68
+
69
+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
70
+
71
+ // queue more short ones (they should complete first!)
72
+ for ( let j = 0 ; j < 100 ; j ++ ) {
73
+ agenda . now ( 'test short' ) ;
74
+ }
75
+
76
+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
77
+
78
+ expect ( shortOneFinished ) . to . be . true ;
79
+ } ) ;
80
+
81
+ it ( 'ensure slow jobs time out' , async ( ) => {
82
+ agenda . define (
83
+ 'test long' ,
84
+ async ( ) => {
56
85
await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
86
+ } ,
87
+ { lockLifetime : 500 }
88
+ ) ;
89
+
90
+ await agenda . start ( ) ;
91
+
92
+ // queue up long ones
93
+ agenda . now ( 'test long' ) ;
94
+
95
+ const promiseResult = await new Promise ( resolve => {
96
+ agenda . on ( 'error' , err => {
97
+ resolve ( err ) ;
57
98
} ) ;
58
- agenda . define ( 'test short' , async ( ) => {
59
- shortOneFinished = true ;
60
- await new Promise ( resolve => setTimeout ( resolve , 5 ) ) ;
99
+
100
+ agenda . on ( 'success' , ( ) => {
101
+ resolve ( ) ;
61
102
} ) ;
103
+ } ) ;
62
104
63
- await agenda . start ( ) ;
105
+ expect ( promiseResult ) . to . be . an ( 'error' ) ;
106
+ } ) ;
64
107
65
- // queue up long ones
66
- for ( let i = 0 ; i < 100 ; i ++ ) {
67
- agenda . now ( 'test long' ) ;
68
- }
108
+ it ( 'ensure slow jobs do not time out when calling touch' , async ( ) => {
109
+ agenda . define (
110
+ 'test long' ,
111
+ async job => {
112
+ for ( let i = 0 ; i < 10 ; i ++ ) {
113
+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
114
+ await job . touch ( ) ;
115
+ }
116
+ } ,
117
+ { lockLifetime : 500 }
118
+ ) ;
69
119
70
- await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
120
+ await agenda . start ( ) ;
71
121
72
- // queue more short ones (they should complete first!)
73
- for ( let j = 0 ; j < 100 ; j ++ ) {
74
- agenda . now ( 'test short' ) ;
75
- }
122
+ // queue up long ones
123
+ agenda . now ( 'test long' ) ;
76
124
77
- await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
125
+ const promiseResult = await new Promise ( resolve => {
126
+ agenda . on ( 'error' , err => {
127
+ resolve ( err ) ;
128
+ } ) ;
78
129
79
- expect ( shortOneFinished ) . to . be ( true ) ;
130
+ agenda . on ( 'success' , ( ) => {
131
+ resolve ( ) ;
132
+ } ) ;
80
133
} ) ;
134
+
135
+ expect ( promiseResult ) . to . not . be . an ( 'error' ) ;
81
136
} ) ;
82
137
} ) ;
0 commit comments