repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
test: import RR worker choice strategy expectation
[poolifier.git]
/
tests
/
pools
/
abstract
/
abstract-pool.test.js
diff --git
a/tests/pools/abstract/abstract-pool.test.js
b/tests/pools/abstract/abstract-pool.test.js
index db45fa077620d225d4a8367ebd3d37c9d7cc9da7..05abdc69d7c31369f42db85505531aa77022f9d3 100644
(file)
--- a/
tests/pools/abstract/abstract-pool.test.js
+++ b/
tests/pools/abstract/abstract-pool.test.js
@@
-11,7
+11,7
@@
const { CircularArray } = require('../../../lib/circular-array')
const { Queue } = require('../../../lib/queue')
describe('Abstract pool test suite', () => {
const { Queue } = require('../../../lib/queue')
describe('Abstract pool test suite', () => {
- const numberOfWorkers =
1
+ const numberOfWorkers =
2
class StubPoolWithRemoveAllWorker extends FixedThreadPool {
removeAllWorker () {
this.workerNodes = []
class StubPoolWithRemoveAllWorker extends FixedThreadPool {
removeAllWorker () {
this.workerNodes = []
@@
-106,7
+106,7
@@
describe('Abstract pool test suite', () => {
workerChoiceStrategy: WorkerChoiceStrategies.LEAST_USED,
workerChoiceStrategyOptions: {
medRunTime: true,
workerChoiceStrategy: WorkerChoiceStrategies.LEAST_USED,
workerChoiceStrategyOptions: {
medRunTime: true,
- weights: { 0: 300 }
+ weights: { 0: 300
, 1: 200
}
},
enableEvents: false,
enableTasksQueue: true,
},
enableEvents: false,
enableTasksQueue: true,
@@
-126,7
+126,7
@@
describe('Abstract pool test suite', () => {
)
expect(pool.opts.workerChoiceStrategyOptions).toStrictEqual({
medRunTime: true,
)
expect(pool.opts.workerChoiceStrategyOptions).toStrictEqual({
medRunTime: true,
- weights: { 0: 300 }
+ weights: { 0: 300
, 1: 200
}
})
expect(pool.opts.messageHandler).toStrictEqual(testHandler)
expect(pool.opts.errorHandler).toStrictEqual(testHandler)
})
expect(pool.opts.messageHandler).toStrictEqual(testHandler)
expect(pool.opts.errorHandler).toStrictEqual(testHandler)
@@
-327,14
+327,15
@@
describe('Abstract pool test suite', () => {
numberOfWorkers,
'./tests/worker-files/cluster/testWorker.js'
)
numberOfWorkers,
'./tests/worker-files/cluster/testWorker.js'
)
- const promises = []
- for (let i = 0; i < numberOfWorkers * 2; i++) {
- promises.push(pool.execute())
+ const promises = new Set()
+ const maxMultiplier = 2
+ for (let i = 0; i < numberOfWorkers * maxMultiplier; i++) {
+ promises.add(pool.execute())
}
for (const workerNode of pool.workerNodes) {
expect(workerNode.tasksUsage).toStrictEqual({
run: 0,
}
for (const workerNode of pool.workerNodes) {
expect(workerNode.tasksUsage).toStrictEqual({
run: 0,
- running:
numberOfWorkers * 2
,
+ running:
maxMultiplier
,
runTime: 0,
runTimeHistory: expect.any(CircularArray),
avgRunTime: 0,
runTime: 0,
runTimeHistory: expect.any(CircularArray),
avgRunTime: 0,
@@
-349,7
+350,7
@@
describe('Abstract pool test suite', () => {
await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
expect(workerNode.tasksUsage).toStrictEqual({
await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
expect(workerNode.tasksUsage).toStrictEqual({
- run:
numberOfWorkers * 2
,
+ run:
maxMultiplier
,
running: 0,
runTime: 0,
runTimeHistory: expect.any(CircularArray),
running: 0,
runTime: 0,
runTimeHistory: expect.any(CircularArray),
@@
-371,16
+372,17
@@
describe('Abstract pool test suite', () => {
numberOfWorkers,
'./tests/worker-files/thread/testWorker.js'
)
numberOfWorkers,
'./tests/worker-files/thread/testWorker.js'
)
- const promises = []
- for (let i = 0; i < numberOfWorkers * 2; i++) {
- promises.push(pool.execute())
+ const promises = new Set()
+ const maxMultiplier = 2
+ for (let i = 0; i < numberOfWorkers * maxMultiplier; i++) {
+ promises.add(pool.execute())
}
await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
expect(workerNode.tasksUsage).toStrictEqual({
}
await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
expect(workerNode.tasksUsage).toStrictEqual({
- run:
numberOfWorkers * 2
,
+ run:
expect.any(Number)
,
running: 0,
running: 0,
- runTime:
expect.any(Number)
,
+ runTime:
0
,
runTimeHistory: expect.any(CircularArray),
avgRunTime: 0,
medRunTime: 0,
runTimeHistory: expect.any(CircularArray),
avgRunTime: 0,
medRunTime: 0,
@@
-390,12
+392,11
@@
describe('Abstract pool test suite', () => {
medWaitTime: 0,
error: 0
})
medWaitTime: 0,
error: 0
})
- expect(workerNode.tasksUsage.run
Time).toBeGreaterThanOrEqual
(0)
- expect(workerNode.tasksUsage.
avgRunTime).toBeGreaterThanOrEqual(0
)
+ expect(workerNode.tasksUsage.run
).toBeGreaterThan
(0)
+ expect(workerNode.tasksUsage.
run).toBeLessThanOrEqual(maxMultiplier
)
}
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE)
for (const workerNode of pool.workerNodes) {
}
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE)
for (const workerNode of pool.workerNodes) {
- expect(workerNode.tasksUsage).toBeDefined()
expect(workerNode.tasksUsage).toStrictEqual({
run: 0,
running: 0,
expect(workerNode.tasksUsage).toStrictEqual({
run: 0,
running: 0,
@@
-410,6
+411,7
@@
describe('Abstract pool test suite', () => {
error: 0
})
expect(workerNode.tasksUsage.runTimeHistory.length).toBe(0)
error: 0
})
expect(workerNode.tasksUsage.runTimeHistory.length).toBe(0)
+ expect(workerNode.tasksUsage.waitTimeHistory.length).toBe(0)
}
await pool.destroy()
})
}
await pool.destroy()
})
@@
-420,16
+422,16
@@
describe('Abstract pool test suite', () => {
numberOfWorkers,
'./tests/worker-files/thread/testWorker.js'
)
numberOfWorkers,
'./tests/worker-files/thread/testWorker.js'
)
- const promises =
[]
+ const promises =
new Set()
let poolFull = 0
pool.emitter.on(PoolEvents.full, () => ++poolFull)
for (let i = 0; i < numberOfWorkers * 2; i++) {
let poolFull = 0
pool.emitter.on(PoolEvents.full, () => ++poolFull)
for (let i = 0; i < numberOfWorkers * 2; i++) {
- promises.
push
(pool.execute())
+ promises.
add
(pool.execute())
}
await Promise.all(promises)
// The `full` event is triggered when the number of submitted tasks at once reach the max number of workers in the dynamic pool.
}
await Promise.all(promises)
// The `full` event is triggered when the number of submitted tasks at once reach the max number of workers in the dynamic pool.
- // So in total numberOfWorkers
+ 1 times for a loop submitting up to numberOfWorkers * 2 tasks to the dynamic pool
.
- expect(poolFull).toBe(numberOfWorkers
+ 1
)
+ // So in total numberOfWorkers
* 2 times for a loop submitting up to numberOfWorkers * 2 tasks to the dynamic pool with min = max = numberOfWorkers
.
+ expect(poolFull).toBe(numberOfWorkers
* 2
)
await pool.destroy()
})
await pool.destroy()
})
@@
-438,11
+440,11
@@
describe('Abstract pool test suite', () => {
numberOfWorkers,
'./tests/worker-files/thread/testWorker.js'
)
numberOfWorkers,
'./tests/worker-files/thread/testWorker.js'
)
- const promises =
[]
+ const promises =
new Set()
let poolBusy = 0
pool.emitter.on(PoolEvents.busy, () => ++poolBusy)
for (let i = 0; i < numberOfWorkers * 2; i++) {
let poolBusy = 0
pool.emitter.on(PoolEvents.busy, () => ++poolBusy)
for (let i = 0; i < numberOfWorkers * 2; i++) {
- promises.
push
(pool.execute())
+ promises.
add
(pool.execute())
}
await Promise.all(promises)
// The `busy` event is triggered when the number of submitted tasks at once reach the number of fixed pool workers.
}
await Promise.all(promises)
// The `busy` event is triggered when the number of submitted tasks at once reach the number of fixed pool workers.