Commit | Line | Data |
---|---|---|
a61a0724 | 1 | const { expect } = require('expect') |
8620fb25 | 2 | const { ClusterWorker, KillBehaviors, ThreadWorker } = require('../../lib') |
7fc5cce6 | 3 | |
e1ffb94f JB |
4 | describe('Abstract worker test suite', () => { |
5 | class StubPoolWithIsMainWorker extends ThreadWorker { | |
6 | constructor (fn, opts) { | |
7 | super(fn, opts) | |
78cea37e | 8 | this.mainWorker = undefined |
e1ffb94f | 9 | } |
7fc5cce6 | 10 | } |
c510fea7 | 11 | |
e088a00c | 12 | it('Verify worker options default values', () => { |
8620fb25 | 13 | const worker = new ThreadWorker(() => {}) |
978aad6f | 14 | expect(worker.opts.maxInactiveTime).toStrictEqual(60000) |
e088a00c JB |
15 | expect(worker.opts.killBehavior).toBe(KillBehaviors.SOFT) |
16 | expect(worker.opts.async).toBe(false) | |
8620fb25 JB |
17 | }) |
18 | ||
19 | it('Verify that worker options are set at worker creation', () => { | |
20 | const worker = new ClusterWorker(() => {}, { | |
21 | maxInactiveTime: 6000, | |
22 | async: true, | |
23 | killBehavior: KillBehaviors.HARD | |
24 | }) | |
978aad6f | 25 | expect(worker.opts.maxInactiveTime).toStrictEqual(6000) |
e088a00c JB |
26 | expect(worker.opts.killBehavior).toBe(KillBehaviors.HARD) |
27 | expect(worker.opts.async).toBe(true) | |
8620fb25 JB |
28 | }) |
29 | ||
a86b6df1 JB |
30 | it('Verify that taskFunctions parameter is mandatory', () => { |
31 | expect(() => new ClusterWorker()).toThrowError( | |
32 | 'taskFunctions parameter is mandatory' | |
33 | ) | |
d4aeae5a JB |
34 | }) |
35 | ||
a86b6df1 JB |
36 | it('Verify that taskFunctions parameter is a function or an object', () => { |
37 | expect(() => new ClusterWorker(0)).toThrowError( | |
38 | new TypeError('taskFunctions parameter is not a function or an object') | |
d4aeae5a JB |
39 | ) |
40 | expect(() => new ClusterWorker('')).toThrowError( | |
a86b6df1 JB |
41 | new TypeError('taskFunctions parameter is not a function or an object') |
42 | ) | |
43 | expect(() => new ClusterWorker(true)).toThrowError( | |
44 | new TypeError('taskFunctions parameter is not a function or an object') | |
d4aeae5a JB |
45 | ) |
46 | }) | |
47 | ||
630f0acf | 48 | it('Verify that taskFunctions parameter is not an empty object literal', () => { |
a86b6df1 JB |
49 | expect(() => new ClusterWorker([])).toThrowError( |
50 | new TypeError('taskFunctions parameter is not an object literal') | |
51 | ) | |
52 | expect(() => new ClusterWorker(new Map())).toThrowError( | |
53 | new TypeError('taskFunctions parameter is not an object literal') | |
54 | ) | |
55 | expect(() => new ClusterWorker(new Set())).toThrowError( | |
56 | new TypeError('taskFunctions parameter is not an object literal') | |
57 | ) | |
58 | expect(() => new ClusterWorker(new WeakMap())).toThrowError( | |
59 | new TypeError('taskFunctions parameter is not an object literal') | |
d4aeae5a | 60 | ) |
a86b6df1 JB |
61 | expect(() => new ClusterWorker(new WeakSet())).toThrowError( |
62 | new TypeError('taskFunctions parameter is not an object literal') | |
63 | ) | |
630f0acf JB |
64 | expect(() => new ClusterWorker({})).toThrowError( |
65 | new TypeError('taskFunctions parameter object is empty') | |
66 | ) | |
a86b6df1 JB |
67 | }) |
68 | ||
69 | it('Verify that taskFunctions parameter with multiple task functions is taken', () => { | |
70 | const fn1 = () => { | |
71 | return 1 | |
72 | } | |
73 | const fn2 = () => { | |
74 | return 2 | |
75 | } | |
76 | const worker = new ClusterWorker({ fn1, fn2 }) | |
82888165 | 77 | expect(typeof worker.taskFunctions.get('default') === 'function').toBe(true) |
a86b6df1 JB |
78 | expect(typeof worker.taskFunctions.get('fn1') === 'function').toBe(true) |
79 | expect(typeof worker.taskFunctions.get('fn2') === 'function').toBe(true) | |
d4aeae5a JB |
80 | }) |
81 | ||
318d4156 | 82 | it('Verify that handleError() method is working properly', () => { |
7fc5cce6 APA |
83 | const error = new Error('My error') |
84 | const worker = new ThreadWorker(() => {}) | |
78cea37e | 85 | expect(worker.handleError(error)).toStrictEqual(error) |
7fc5cce6 APA |
86 | }) |
87 | ||
318d4156 | 88 | it('Verify that getMainWorker() throw error if main worker is not set', () => { |
7fc5cce6 APA |
89 | expect(() => |
90 | new StubPoolWithIsMainWorker(() => {}).getMainWorker() | |
d4aeae5a | 91 | ).toThrowError('Main worker was not set') |
7fc5cce6 | 92 | }) |
c510fea7 | 93 | }) |