repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
chore: v2.4.5
[poolifier.git]
/
tests
/
pools
/
selection-strategies
/
selection-strategies.test.js
diff --git
a/tests/pools/selection-strategies/selection-strategies.test.js
b/tests/pools/selection-strategies/selection-strategies.test.js
index a62571797c08010ef6da62b947c5a81e67af1e84..2fff1b13772e43c4acad99ad48e7441fda474dee 100644
(file)
--- a/
tests/pools/selection-strategies/selection-strategies.test.js
+++ b/
tests/pools/selection-strategies/selection-strategies.test.js
@@
-43,7
+43,9
@@
describe('Selection strategies test suite', () => {
WorkerChoiceStrategies.ROUND_ROBIN
)
expect(
WorkerChoiceStrategies.ROUND_ROBIN
)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy().nextWorkerId
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.ROUND_ROBIN
+ ).nextWorkerNodeId
).toBe(0)
// We need to clean up the resources after our test
await pool.destroy()
).toBe(0)
// We need to clean up the resources after our test
await pool.destroy()
@@
-70,8
+72,13
@@
describe('Selection strategies test suite', () => {
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.ROUND_ROBIN)
expect(
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.ROUND_ROBIN)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .requiredStatistics.runTime
+ pool.workerChoiceStrategyContext.getRequiredStatistics().runTime
+ ).toBe(false)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().avgRunTime
+ ).toBe(false)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().medRunTime
).toBe(false)
await pool.destroy()
pool = new DynamicThreadPool(
).toBe(false)
await pool.destroy()
pool = new DynamicThreadPool(
@@
-81,8
+88,13
@@
describe('Selection strategies test suite', () => {
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.ROUND_ROBIN)
expect(
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.ROUND_ROBIN)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .requiredStatistics.runTime
+ pool.workerChoiceStrategyContext.getRequiredStatistics().runTime
+ ).toBe(false)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().avgRunTime
+ ).toBe(false)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().medRunTime
).toBe(false)
// We need to clean up the resources after our test
await pool.destroy()
).toBe(false)
// We need to clean up the resources after our test
await pool.destroy()
@@
-134,14
+146,14
@@
describe('Selection strategies test suite', () => {
)
let results = new Set()
for (let i = 0; i < max; i++) {
)
let results = new Set()
for (let i = 0; i < max; i++) {
- results.add(pool.chooseWorker
()[1]
.id)
+ results.add(pool.chooseWorker
Node()[1].worker
.id)
}
expect(results.size).toBe(max)
await pool.destroy()
pool = new FixedThreadPool(max, './tests/worker-files/thread/testWorker.js')
results = new Set()
for (let i = 0; i < max; i++) {
}
expect(results.size).toBe(max)
await pool.destroy()
pool = new FixedThreadPool(max, './tests/worker-files/thread/testWorker.js')
results = new Set()
for (let i = 0; i < max; i++) {
- results.add(pool.chooseWorker
()[1]
.threadId)
+ results.add(pool.chooseWorker
Node()[1].worker
.threadId)
}
expect(results.size).toBe(max)
await pool.destroy()
}
expect(results.size).toBe(max)
await pool.destroy()
@@
-154,11
+166,15
@@
describe('Selection strategies test suite', () => {
{ workerChoiceStrategy: WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN }
)
expect(
{ workerChoiceStrategy: WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN }
)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy().nextWorkerId
- ).toBeUndefined()
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.ROUND_ROBIN
+ ).nextWorkerNodeId
+ ).toBeDefined()
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.ROUND_ROBIN)
expect(
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.ROUND_ROBIN)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy().nextWorkerId
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.ROUND_ROBIN
+ ).nextWorkerNodeId
).toBe(0)
await pool.destroy()
pool = new DynamicThreadPool(
).toBe(0)
await pool.destroy()
pool = new DynamicThreadPool(
@@
-168,13
+184,15
@@
describe('Selection strategies test suite', () => {
{ workerChoiceStrategy: WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN }
)
expect(
{ workerChoiceStrategy: WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN }
)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .workerChoiceStrategy.nextWorkerId
- ).toBeUndefined()
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.ROUND_ROBIN
+ ).nextWorkerNodeId
+ ).toBeDefined()
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.ROUND_ROBIN)
expect(
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.ROUND_ROBIN)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .workerChoiceStrategy.nextWorkerId
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.ROUND_ROBIN
+ ).nextWorkerNodeId
).toBe(0)
// We need to clean up the resources after our test
await pool.destroy()
).toBe(0)
// We need to clean up the resources after our test
await pool.destroy()
@@
-213,8
+231,13
@@
describe('Selection strategies test suite', () => {
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.LESS_USED)
expect(
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.LESS_USED)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .requiredStatistics.runTime
+ pool.workerChoiceStrategyContext.getRequiredStatistics().runTime
+ ).toBe(false)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().avgRunTime
+ ).toBe(false)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().medRunTime
).toBe(false)
await pool.destroy()
pool = new DynamicThreadPool(
).toBe(false)
await pool.destroy()
pool = new DynamicThreadPool(
@@
-224,8
+247,13
@@
describe('Selection strategies test suite', () => {
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.LESS_USED)
expect(
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.LESS_USED)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .requiredStatistics.runTime
+ pool.workerChoiceStrategyContext.getRequiredStatistics().runTime
+ ).toBe(false)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().avgRunTime
+ ).toBe(false)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().medRunTime
).toBe(false)
// We need to clean up the resources after our test
await pool.destroy()
).toBe(false)
// We need to clean up the resources after our test
await pool.destroy()
@@
-297,9
+325,14
@@
describe('Selection strategies test suite', () => {
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.LESS_BUSY)
expect(
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.LESS_BUSY)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .requiredStatistics.runTime
+ pool.workerChoiceStrategyContext.getRequiredStatistics().runTime
).toBe(true)
).toBe(true)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().avgRunTime
+ ).toBe(false)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().medRunTime
+ ).toBe(false)
await pool.destroy()
pool = new DynamicThreadPool(
min,
await pool.destroy()
pool = new DynamicThreadPool(
min,
@@
-308,9
+341,14
@@
describe('Selection strategies test suite', () => {
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.LESS_BUSY)
expect(
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.LESS_BUSY)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .requiredStatistics.runTime
+ pool.workerChoiceStrategyContext.getRequiredStatistics().runTime
).toBe(true)
).toBe(true)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().avgRunTime
+ ).toBe(false)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().medRunTime
+ ).toBe(false)
// We need to clean up the resources after our test
await pool.destroy()
})
// We need to clean up the resources after our test
await pool.destroy()
})
@@
-357,18
+395,18
@@
describe('Selection strategies test suite', () => {
expect(pool.opts.workerChoiceStrategy).toBe(
WorkerChoiceStrategies.FAIR_SHARE
)
expect(pool.opts.workerChoiceStrategy).toBe(
WorkerChoiceStrategies.FAIR_SHARE
)
- for (const worker
Key of pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
+ for (const worker
NodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.FAIR_SHARE
)
.workerLastVirtualTaskTimestamp.keys()) {
expect(
.workerLastVirtualTaskTimestamp.keys()) {
expect(
- pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
- .workerLastVirtualTaskTimestamp.get(workerKey).start
+ pool.workerChoiceStrategyContext
.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.FAIR_SHARE
)
+ .workerLastVirtualTaskTimestamp.get(worker
Node
Key).start
).toBe(0)
expect(
).toBe(0)
expect(
- pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
- .workerLastVirtualTaskTimestamp.get(workerKey).end
+ pool.workerChoiceStrategyContext
.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.FAIR_SHARE
)
+ .workerLastVirtualTaskTimestamp.get(worker
Node
Key).end
).toBe(0)
}
// We need to clean up the resources after our test
).toBe(0)
}
// We need to clean up the resources after our test
@@
-395,9
+433,14
@@
describe('Selection strategies test suite', () => {
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE)
expect(
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .requiredStatistics.runTime
+ pool.workerChoiceStrategyContext.getRequiredStatistics().runTime
).toBe(true)
).toBe(true)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().avgRunTime
+ ).toBe(true)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().medRunTime
+ ).toBe(false)
await pool.destroy()
pool = new DynamicThreadPool(
min,
await pool.destroy()
pool = new DynamicThreadPool(
min,
@@
-406,9
+449,14
@@
describe('Selection strategies test suite', () => {
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE)
expect(
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .requiredStatistics.runTime
+ pool.workerChoiceStrategyContext.getRequiredStatistics().runTime
+ ).toBe(true)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().avgRunTime
).toBe(true)
).toBe(true)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().medRunTime
+ ).toBe(false)
// We need to clean up the resources after our test
await pool.destroy()
})
// We need to clean up the resources after our test
await pool.destroy()
})
@@
-425,6
+473,11
@@
describe('Selection strategies test suite', () => {
promises.push(pool.execute())
}
await Promise.all(promises)
promises.push(pool.execute())
}
await Promise.all(promises)
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.FAIR_SHARE
+ ).workerLastVirtualTaskTimestamp.size
+ ).toBe(pool.workerNodes.length)
// We need to clean up the resources after our test
await pool.destroy()
})
// We need to clean up the resources after our test
await pool.destroy()
})
@@
-438,10
+491,18
@@
describe('Selection strategies test suite', () => {
)
// TODO: Create a better test to cover `FairShareChoiceStrategy#choose`
const promises = []
)
// TODO: Create a better test to cover `FairShareChoiceStrategy#choose`
const promises = []
- for (let i = 0; i < max * 2; i++) {
+ const maxMultiplier = 2
+ for (let i = 0; i < max * maxMultiplier; i++) {
promises.push(pool.execute())
}
await Promise.all(promises)
promises.push(pool.execute())
}
await Promise.all(promises)
+ // if (process.platform !== 'win32') {
+ // expect(
+ // pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ // WorkerChoiceStrategies.FAIR_SHARE
+ // ).workerLastVirtualTaskTimestamp.size
+ // ).toBe(pool.workerNodes.length)
+ // }
// We need to clean up the resources after our test
await pool.destroy()
})
// We need to clean up the resources after our test
await pool.destroy()
})
@@
-452,22
+513,23
@@
describe('Selection strategies test suite', () => {
'./tests/worker-files/thread/testWorker.js'
)
expect(
'./tests/worker-files/thread/testWorker.js'
)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .workerLastVirtualTaskTimestamp
- ).toBeUndefined()
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.FAIR_SHARE
+ ).workerLastVirtualTaskTimestamp
+ ).toBeDefined()
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE)
- for (const worker
Key of pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
+ for (const worker
NodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.FAIR_SHARE
)
.workerLastVirtualTaskTimestamp.keys()) {
expect(
.workerLastVirtualTaskTimestamp.keys()) {
expect(
- pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
- .workerLastVirtualTaskTimestamp.get(workerKey).start
+ pool.workerChoiceStrategyContext
.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.FAIR_SHARE
)
+ .workerLastVirtualTaskTimestamp.get(worker
Node
Key).start
).toBe(0)
expect(
).toBe(0)
expect(
- pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
- .workerLastVirtualTaskTimestamp.get(workerKey).end
+ pool.workerChoiceStrategyContext
.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.FAIR_SHARE
)
+ .workerLastVirtualTaskTimestamp.get(worker
Node
Key).end
).toBe(0)
}
await pool.destroy()
).toBe(0)
}
await pool.destroy()
@@
-477,24
+539,23
@@
describe('Selection strategies test suite', () => {
'./tests/worker-files/thread/testWorker.js'
)
expect(
'./tests/worker-files/thread/testWorker.js'
)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .workerChoiceStrategy.workerLastVirtualTaskTimestamp
- ).toBeUndefined()
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.FAIR_SHARE
+ ).workerLastVirtualTaskTimestamp
+ ).toBeDefined()
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE)
- for (const worker
Key of pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
- .worker
ChoiceStrategy.worker
LastVirtualTaskTimestamp.keys()) {
+ for (const worker
NodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.FAIR_SHARE
)
+ .workerLastVirtualTaskTimestamp.keys()) {
expect(
expect(
- pool.workerChoiceStrategyContext
- .getWorkerChoiceStrategy()
- .workerChoiceStrategy.workerLastVirtualTaskTimestamp.get(workerKey)
- .start
+ pool.workerChoiceStrategyContext.workerChoiceStrategies
+ .get(WorkerChoiceStrategies.FAIR_SHARE)
+ .workerLastVirtualTaskTimestamp.get(workerNodeKey).start
).toBe(0)
expect(
).toBe(0)
expect(
- pool.workerChoiceStrategyContext
- .getWorkerChoiceStrategy()
- .workerChoiceStrategy.workerLastVirtualTaskTimestamp.get(workerKey)
- .end
+ pool.workerChoiceStrategyContext.workerChoiceStrategies
+ .get(WorkerChoiceStrategies.FAIR_SHARE)
+ .workerLastVirtualTaskTimestamp.get(workerNodeKey).end
).toBe(0)
}
// We need to clean up the resources after our test
).toBe(0)
}
// We need to clean up the resources after our test
@@
-511,24
+572,27
@@
describe('Selection strategies test suite', () => {
WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
)
expect(
WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy().currentWorkerId
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).currentWorkerNodeId
).toBe(0)
expect(
).toBe(0)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .defaultWorkerWeight
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).defaultWorkerWeight
).toBeGreaterThan(0)
).toBeGreaterThan(0)
- for (const worker
Key of pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
+ for (const worker
NodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
)
.workersTaskRunTime.keys()) {
expect(
.workersTaskRunTime.keys()) {
expect(
- pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
- .workersTaskRunTime.get(workerKey).weight
+ pool.workerChoiceStrategyContext
.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
)
+ .workersTaskRunTime.get(worker
Node
Key).weight
).toBeGreaterThan(0)
expect(
).toBeGreaterThan(0)
expect(
- pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
- .workersTaskRunTime.get(workerKey).runTime
+ pool.workerChoiceStrategyContext
.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
)
+ .workersTaskRunTime.get(worker
Node
Key).runTime
).toBe(0)
}
// We need to clean up the resources after our test
).toBe(0)
}
// We need to clean up the resources after our test
@@
-555,9
+619,14
@@
describe('Selection strategies test suite', () => {
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN)
expect(
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .requiredStatistics.runTime
+ pool.workerChoiceStrategyContext.getRequiredStatistics().runTime
+ ).toBe(true)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().avgRunTime
).toBe(true)
).toBe(true)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().medRunTime
+ ).toBe(false)
await pool.destroy()
pool = new DynamicThreadPool(
min,
await pool.destroy()
pool = new DynamicThreadPool(
min,
@@
-566,9
+635,14
@@
describe('Selection strategies test suite', () => {
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN)
expect(
)
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .requiredStatistics.runTime
+ pool.workerChoiceStrategyContext.getRequiredStatistics().runTime
).toBe(true)
).toBe(true)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().avgRunTime
+ ).toBe(true)
+ expect(
+ pool.workerChoiceStrategyContext.getRequiredStatistics().medRunTime
+ ).toBe(false)
// We need to clean up the resources after our test
await pool.destroy()
})
// We need to clean up the resources after our test
await pool.destroy()
})
@@
-585,6
+659,11
@@
describe('Selection strategies test suite', () => {
promises.push(pool.execute())
}
await Promise.all(promises)
promises.push(pool.execute())
}
await Promise.all(promises)
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).workersTaskRunTime.size
+ ).toBe(pool.workerNodes.length)
// We need to clean up the resources after our test
await pool.destroy()
})
// We need to clean up the resources after our test
await pool.destroy()
})
@@
-598,10
+677,21
@@
describe('Selection strategies test suite', () => {
)
// TODO: Create a better test to cover `WeightedRoundRobinWorkerChoiceStrategy#choose`
const promises = []
)
// TODO: Create a better test to cover `WeightedRoundRobinWorkerChoiceStrategy#choose`
const promises = []
- for (let i = 0; i < max * 2; i++) {
+ const maxMultiplier =
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).defaultWorkerWeight * 50
+ for (let i = 0; i < max * maxMultiplier; i++) {
promises.push(pool.execute())
}
await Promise.all(promises)
promises.push(pool.execute())
}
await Promise.all(promises)
+ if (process.platform !== 'win32') {
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).workersTaskRunTime.size
+ ).toBe(pool.workerNodes.length)
+ }
// We need to clean up the resources after our test
await pool.destroy()
})
// We need to clean up the resources after our test
await pool.destroy()
})
@@
-612,31
+702,38
@@
describe('Selection strategies test suite', () => {
'./tests/worker-files/thread/testWorker.js'
)
expect(
'./tests/worker-files/thread/testWorker.js'
)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy().currentWorkerId
- ).toBeUndefined()
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).currentWorkerNodeId
+ ).toBeDefined()
expect(
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .defaultWorkerWeight
- ).toBeUndefined()
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).defaultWorkerWeight
+ ).toBeDefined()
expect(
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .workersTaskRunTime
- ).toBeUndefined()
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).workersTaskRunTime
+ ).toBeDefined()
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN)
expect(
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy().currentWorkerId
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).currentWorkerNodeId
).toBe(0)
expect(
).toBe(0)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .defaultWorkerWeight
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).defaultWorkerWeight
).toBeGreaterThan(0)
).toBeGreaterThan(0)
- for (const worker
Key of pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
+ for (const worker
NodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
)
.workersTaskRunTime.keys()) {
expect(
.workersTaskRunTime.keys()) {
expect(
- pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
- .workersTaskRunTime.get(workerKey).runTime
+ pool.workerChoiceStrategyContext
.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
)
+ .workersTaskRunTime.get(worker
Node
Key).runTime
).toBe(0)
}
await pool.destroy()
).toBe(0)
}
await pool.destroy()
@@
-646,33
+743,38
@@
describe('Selection strategies test suite', () => {
'./tests/worker-files/thread/testWorker.js'
)
expect(
'./tests/worker-files/thread/testWorker.js'
)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .workerChoiceStrategy.currentWorkerId
- ).toBeUndefined()
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).currentWorkerNodeId
+ ).toBeDefined()
expect(
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .workerChoiceStrategy.defaultWorkerWeight
- ).toBeUndefined()
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).defaultWorkerWeight
+ ).toBeDefined()
expect(
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .workerChoiceStrategy.workersTaskRunTime
- ).toBeUndefined()
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).workersTaskRunTime
+ ).toBeDefined()
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN)
expect(
pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .workerChoiceStrategy.currentWorkerId
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).currentWorkerNodeId
).toBe(0)
expect(
).toBe(0)
expect(
- pool.workerChoiceStrategyContext.getWorkerChoiceStrategy()
- .workerChoiceStrategy.defaultWorkerWeight
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+ ).defaultWorkerWeight
).toBeGreaterThan(0)
).toBeGreaterThan(0)
- for (const worker
Key of pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
- .worker
ChoiceStrategy.worker
sTaskRunTime.keys()) {
+ for (const worker
NodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
)
+ .workersTaskRunTime.keys()) {
expect(
expect(
- pool.workerChoiceStrategyContext
- .get
WorkerChoiceStrategy(
)
- .worker
ChoiceStrategy.workersTaskRunTime.get(worker
Key).runTime
+ pool.workerChoiceStrategyContext
.workerChoiceStrategies
+ .get
(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
)
+ .worker
sTaskRunTime.get(workerNode
Key).runTime
).toBe(0)
}
// We need to clean up the resources after our test
).toBe(0)
}
// We need to clean up the resources after our test
@@
-689,7
+791,7
@@
describe('Selection strategies test suite', () => {
{ workerChoiceStrategy: 'UNKNOWN_STRATEGY' }
)
).toThrowError(
{ workerChoiceStrategy: 'UNKNOWN_STRATEGY' }
)
).toThrowError(
- new Error("
Worker choice strategy 'UNKNOWN_STRATEGY' not found
")
+ new Error("
Invalid worker choice strategy 'UNKNOWN_STRATEGY'
")
)
})
})
)
})
})