forked from timgit/pg-boss
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmonitoringTest.js
61 lines (44 loc) · 2.41 KB
/
monitoringTest.js
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
const assert = require('assert')
const helper = require('./testHelper')
describe('monitoring', function () {
it('should emit state counts', async function () {
const defaults = {
monitorStateIntervalSeconds: 1,
maintenanceIntervalSeconds: 10
}
const boss = this.test.boss = await helper.start({ ...this.test.bossConfig, ...defaults })
const queue = 'monitorMe'
await boss.send(queue)
await boss.send(queue)
const states1 = await boss.countStates()
assert.strictEqual(2, states1.queues[queue].created, 'created count is wrong after 2 sendes')
assert.strictEqual(0, states1.queues[queue].active, 'active count is wrong after 2 sendes')
await boss.send(queue)
await boss.fetch(queue)
const states2 = await boss.countStates()
assert.strictEqual(2, states2.queues[queue].created, 'created count is wrong after 3 sendes and 1 fetch')
assert.strictEqual(1, states2.queues[queue].active, 'active count is wrong after 3 sendes and 1 fetch')
await boss.fetch(queue)
const states3 = await boss.countStates()
assert.strictEqual(1, states3.queues[queue].created, 'created count is wrong after 3 sendes and 2 fetches')
assert.strictEqual(2, states3.queues[queue].active, 'active count is wrong after 3 sendes and 2 fetches')
const job = await boss.fetch(queue)
await boss.complete(job.id)
const states4 = await boss.countStates()
assert.strictEqual(0, states4.queues[queue].created, 'created count is wrong after 3 sendes and 3 fetches and 1 complete')
assert.strictEqual(2, states4.queues[queue].active, 'active count is wrong after 3 sendes and 3 fetches and 1 complete')
assert.strictEqual(1, states4.queues[queue].completed, 'completed count is wrong after 3 sendes and 3 fetches and 1 complete')
return new Promise((resolve) => {
let resolved = false
boss.on('monitor-states', async states => {
if (!resolved) {
resolved = true
assert.strictEqual(states4.queues[queue].created, states.queues[queue].created, 'created count from monitor-states doesn\'t match')
assert.strictEqual(states4.queues[queue].active, states.queues[queue].active, 'active count from monitor-states doesn\'t match')
assert.strictEqual(states4.queues[queue].completed, states.queues[queue].completed, 'completed count from monitor-states doesn\'t match')
resolve()
}
})
})
})
})