).nextWorkerNodeId
).toBe(0)
} else if (workerChoiceStrategy === WorkerChoiceStrategies.FAIR_SHARE) {
- for (const workerNodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(workerChoiceStrategy)
- .workerLastVirtualTaskTimestamp.keys()) {
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(workerChoiceStrategy)
- .workerLastVirtualTaskTimestamp.get(workerNodeKey).start
- ).toBe(0)
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(workerChoiceStrategy)
- .workerLastVirtualTaskTimestamp.get(workerNodeKey).end
- ).toBe(0)
- }
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp
+ ).toBeInstanceOf(Array)
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp.length
+ ).toBe(0)
} else if (
workerChoiceStrategy === WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
) {
workerChoiceStrategy
).defaultWorkerWeight
).toBeGreaterThan(0)
- for (const workerNodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(workerChoiceStrategy)
- .workersTaskRunTime.keys()) {
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(workerChoiceStrategy)
- .workersTaskRunTime.get(workerNodeKey).weight
- ).toBeGreaterThan(0)
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(workerChoiceStrategy)
- .workersTaskRunTime.get(workerNodeKey).runTime
- ).toBe(0)
- }
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workerVirtualTaskRunTime
+ ).toBe(0)
}
}
await pool.destroy()
{ workerChoiceStrategy: WorkerChoiceStrategies.ROUND_ROBIN }
)
// TODO: Create a better test to cover `RoundRobinWorkerChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
}
- await Promise.all(promises)
// We need to clean up the resources after our test
await pool.destroy()
})
{ workerChoiceStrategy: WorkerChoiceStrategies.ROUND_ROBIN }
)
// TODO: Create a better test to cover `RoundRobinWorkerChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
}
- await Promise.all(promises)
// We need to clean up the resources after our test
await pool.destroy()
})
{ workerChoiceStrategy: WorkerChoiceStrategies.LESS_USED }
)
// TODO: Create a better test to cover `LessUsedWorkerChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
}
- await Promise.all(promises)
// We need to clean up the resources after our test
await pool.destroy()
})
{ workerChoiceStrategy: WorkerChoiceStrategies.LESS_USED }
)
// TODO: Create a better test to cover `LessUsedWorkerChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
}
- await Promise.all(promises)
// We need to clean up the resources after our test
await pool.destroy()
})
{ workerChoiceStrategy: WorkerChoiceStrategies.LESS_BUSY }
)
// TODO: Create a better test to cover `LessBusyWorkerChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
}
- await Promise.all(promises)
// We need to clean up the resources after our test
await pool.destroy()
})
{ workerChoiceStrategy: WorkerChoiceStrategies.LESS_BUSY }
)
// TODO: Create a better test to cover `LessBusyWorkerChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
}
- await Promise.all(promises)
// We need to clean up the resources after our test
await pool.destroy()
})
{ workerChoiceStrategy: WorkerChoiceStrategies.FAIR_SHARE }
)
// TODO: Create a better test to cover `FairShareChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
+ }
+ for (const workerNode of pool.workerNodes) {
+ expect(workerNode.tasksUsage.avgRunTime).toBeDefined()
+ expect(workerNode.tasksUsage.avgRunTime).toBeGreaterThanOrEqual(0)
+ expect(workerNode.tasksUsage.medRunTime).toBeDefined()
+ expect(workerNode.tasksUsage.medRunTime).toBe(0)
}
- await Promise.all(promises)
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
pool.workerChoiceStrategyContext.workerChoiceStrategy
- ).workerLastVirtualTaskTimestamp.size
+ ).workersVirtualTaskEndTimestamp.length
).toBe(pool.workerNodes.length)
// We need to clean up the resources after our test
await pool.destroy()
{ workerChoiceStrategy: WorkerChoiceStrategies.FAIR_SHARE }
)
// TODO: Create a better test to cover `FairShareChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
}
- await Promise.all(promises)
- // if (process.platform !== 'win32') {
- // expect(
- // pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
- // pool.workerChoiceStrategyContext.workerChoiceStrategy
- // ).workerLastVirtualTaskTimestamp.size
- // ).toBe(pool.workerNodes.length)
- // }
+ for (const workerNode of pool.workerNodes) {
+ expect(workerNode.tasksUsage.avgRunTime).toBeDefined()
+ expect(workerNode.tasksUsage.avgRunTime).toBeGreaterThanOrEqual(0)
+ expect(workerNode.tasksUsage.medRunTime).toBeDefined()
+ expect(workerNode.tasksUsage.medRunTime).toBe(0)
+ }
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ pool.workerChoiceStrategyContext.workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp.length
+ ).toBe(pool.workerNodes.length)
// We need to clean up the resources after our test
await pool.destroy()
})
}
)
// TODO: Create a better test to cover `FairShareChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
}
- await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
expect(workerNode.tasksUsage.avgRunTime).toBeDefined()
expect(workerNode.tasksUsage.avgRunTime).toBe(0)
expect(workerNode.tasksUsage.medRunTime).toBeDefined()
- expect(workerNode.tasksUsage.medRunTime).toBeGreaterThan(0)
+ expect(workerNode.tasksUsage.medRunTime).toBeGreaterThanOrEqual(0)
}
- // if (process.platform !== 'win32') {
- // expect(
- // pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
- // pool.workerChoiceStrategyContext.workerChoiceStrategy
- // ).workerLastVirtualTaskTimestamp.size
- // ).toBe(pool.workerNodes.length)
- // }
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ pool.workerChoiceStrategyContext.workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp.length
+ ).toBe(pool.workerNodes.length)
// We need to clean up the resources after our test
await pool.destroy()
})
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
workerChoiceStrategy
- ).workerLastVirtualTaskTimestamp
- ).toBeDefined()
+ ).workersVirtualTaskEndTimestamp
+ ).toBeInstanceOf(Array)
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp.length
+ ).toBe(0)
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp[0] = performance.now()
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp.length
+ ).toBe(1)
pool.setWorkerChoiceStrategy(workerChoiceStrategy)
- for (const workerNodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(pool.workerChoiceStrategyContext.workerChoiceStrategy)
- .workerLastVirtualTaskTimestamp.keys()) {
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(pool.workerChoiceStrategyContext.workerChoiceStrategy)
- .workerLastVirtualTaskTimestamp.get(workerNodeKey).start
- ).toBe(0)
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(pool.workerChoiceStrategyContext.workerChoiceStrategy)
- .workerLastVirtualTaskTimestamp.get(workerNodeKey).end
- ).toBe(0)
- }
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp
+ ).toBeInstanceOf(Array)
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp.length
+ ).toBe(0)
await pool.destroy()
pool = new DynamicThreadPool(
min,
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
workerChoiceStrategy
- ).workerLastVirtualTaskTimestamp
- ).toBeDefined()
+ ).workersVirtualTaskEndTimestamp
+ ).toBeInstanceOf(Array)
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp.length
+ ).toBe(0)
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp[0] = performance.now()
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp.length
+ ).toBe(1)
pool.setWorkerChoiceStrategy(workerChoiceStrategy)
- for (const workerNodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(pool.workerChoiceStrategyContext.workerChoiceStrategy)
- .workerLastVirtualTaskTimestamp.keys()) {
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(pool.workerChoiceStrategyContext.workerChoiceStrategy)
- .workerLastVirtualTaskTimestamp.get(workerNodeKey).start
- ).toBe(0)
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(pool.workerChoiceStrategyContext.workerChoiceStrategy)
- .workerLastVirtualTaskTimestamp.get(workerNodeKey).end
- ).toBe(0)
- }
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp
+ ).toBeInstanceOf(Array)
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workersVirtualTaskEndTimestamp.length
+ ).toBe(0)
// We need to clean up the resources after our test
await pool.destroy()
})
{ workerChoiceStrategy: WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN }
)
// TODO: Create a better test to cover `WeightedRoundRobinWorkerChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
+ }
+ for (const workerNode of pool.workerNodes) {
+ expect(workerNode.tasksUsage.avgRunTime).toBeDefined()
+ expect(workerNode.tasksUsage.avgRunTime).toBeGreaterThanOrEqual(0)
+ expect(workerNode.tasksUsage.medRunTime).toBeDefined()
+ expect(workerNode.tasksUsage.medRunTime).toBe(0)
}
- await Promise.all(promises)
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
pool.workerChoiceStrategyContext.workerChoiceStrategy
- ).workersTaskRunTime.size
- ).toBe(pool.workerNodes.length)
+ ).defaultWorkerWeight
+ ).toBeGreaterThan(0)
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ pool.workerChoiceStrategyContext.workerChoiceStrategy
+ ).workerVirtualTaskRunTime
+ ).toBeGreaterThanOrEqual(0)
// We need to clean up the resources after our test
await pool.destroy()
})
{ workerChoiceStrategy: WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN }
)
// TODO: Create a better test to cover `WeightedRoundRobinWorkerChoiceStrategy#choose`
- const promises = []
- const maxMultiplier =
- pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
- pool.workerChoiceStrategyContext.workerChoiceStrategy
- ).defaultWorkerWeight * 50
+ const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
}
- await Promise.all(promises)
- if (process.platform !== 'win32') {
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
- pool.workerChoiceStrategyContext.workerChoiceStrategy
- ).workersTaskRunTime.size
- ).toBe(pool.workerNodes.length)
+ for (const workerNode of pool.workerNodes) {
+ expect(workerNode.tasksUsage.avgRunTime).toBeDefined()
+ expect(workerNode.tasksUsage.avgRunTime).toBeGreaterThanOrEqual(0)
+ expect(workerNode.tasksUsage.medRunTime).toBeDefined()
+ expect(workerNode.tasksUsage.medRunTime).toBe(0)
}
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ pool.workerChoiceStrategyContext.workerChoiceStrategy
+ ).defaultWorkerWeight
+ ).toBeGreaterThan(0)
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ pool.workerChoiceStrategyContext.workerChoiceStrategy
+ ).workerVirtualTaskRunTime
+ ).toBeGreaterThanOrEqual(0)
// We need to clean up the resources after our test
await pool.destroy()
})
}
)
// TODO: Create a better test to cover `WeightedRoundRobinWorkerChoiceStrategy#choose`
- const promises = []
const maxMultiplier = 2
for (let i = 0; i < max * maxMultiplier; i++) {
- promises.push(pool.execute())
+ await pool.execute()
}
- await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
expect(workerNode.tasksUsage.avgRunTime).toBeDefined()
expect(workerNode.tasksUsage.avgRunTime).toBe(0)
expect(workerNode.tasksUsage.medRunTime).toBeDefined()
- expect(workerNode.tasksUsage.medRunTime).toBeGreaterThan(0)
+ expect(workerNode.tasksUsage.medRunTime).toBeGreaterThanOrEqual(0)
}
- // if (process.platform !== 'win32') {
- // expect(
- // pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
- // pool.workerChoiceStrategyContext.workerChoiceStrategy
- // ).workersTaskRunTime.size
- // ).toBe(pool.workerNodes.length)
- // }
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ pool.workerChoiceStrategyContext.workerChoiceStrategy
+ ).defaultWorkerWeight
+ ).toBeGreaterThan(0)
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ pool.workerChoiceStrategyContext.workerChoiceStrategy
+ ).workerVirtualTaskRunTime
+ ).toBeGreaterThanOrEqual(0)
// We need to clean up the resources after our test
await pool.destroy()
})
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
workerChoiceStrategy
- ).workersTaskRunTime
+ ).workerVirtualTaskRunTime
).toBeDefined()
pool.setWorkerChoiceStrategy(workerChoiceStrategy)
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategy
).defaultWorkerWeight
).toBeGreaterThan(0)
- for (const workerNodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(pool.workerChoiceStrategyContext.workerChoiceStrategy)
- .workersTaskRunTime.keys()) {
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(pool.workerChoiceStrategyContext.workerChoiceStrategy)
- .workersTaskRunTime.get(workerNodeKey).runTime
- ).toBe(0)
- }
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workerVirtualTaskRunTime
+ ).toBe(0)
await pool.destroy()
pool = new DynamicThreadPool(
min,
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
workerChoiceStrategy
- ).workersTaskRunTime
+ ).workerVirtualTaskRunTime
).toBeDefined()
pool.setWorkerChoiceStrategy(workerChoiceStrategy)
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategy
).defaultWorkerWeight
).toBeGreaterThan(0)
- for (const workerNodeKey of pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(pool.workerChoiceStrategyContext.workerChoiceStrategy)
- .workersTaskRunTime.keys()) {
- expect(
- pool.workerChoiceStrategyContext.workerChoiceStrategies
- .get(pool.workerChoiceStrategyContext.workerChoiceStrategy)
- .workersTaskRunTime.get(workerNodeKey).runTime
- ).toBe(0)
- }
+ expect(
+ pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
+ workerChoiceStrategy
+ ).workerVirtualTaskRunTime
+ ).toBe(0)
// We need to clean up the resources after our test
await pool.destroy()
})