runTime: {
minimum: Math.min(
...this.workerNodes.map(
- workerNode => workerNode.usage.runTime.minimum
+ workerNode => workerNode.usage.runTime?.minimum ?? Infinity
)
),
maximum: Math.max(
...this.workerNodes.map(
- workerNode => workerNode.usage.runTime.maximum
+ workerNode => workerNode.usage.runTime?.maximum ?? -Infinity
)
)
}
waitTime: {
minimum: Math.min(
...this.workerNodes.map(
- workerNode => workerNode.usage.waitTime.minimum
+ workerNode => workerNode.usage.waitTime?.minimum ?? Infinity
)
),
maximum: Math.max(
...this.workerNodes.map(
- workerNode => workerNode.usage.waitTime.maximum
+ workerNode => workerNode.usage.waitTime?.maximum ?? -Infinity
)
)
}
(performance.now() - this.startTimestamp) * this.maxSize
const totalTasksRunTime = this.workerNodes.reduce(
(accumulator, workerNode) =>
- accumulator + workerNode.usage.runTime.aggregate,
+ accumulator + (workerNode.usage.runTime?.aggregate ?? 0),
0
)
const totalTasksWaitTime = this.workerNodes.reduce(
(accumulator, workerNode) =>
- accumulator + workerNode.usage.waitTime.aggregate,
+ accumulator + (workerNode.usage.waitTime?.aggregate ?? 0),
0
)
return (totalTasksRunTime + totalTasksWaitTime) / poolRunTimeCapacity
.aggregate
) {
const taskRunTime = message.taskPerformance?.runTime ?? 0
- workerUsage.runTime.aggregate += taskRunTime
+ workerUsage.runTime.aggregate =
+ (workerUsage.runTime.aggregate ?? 0) + taskRunTime
workerUsage.runTime.minimum = Math.min(
taskRunTime,
- workerUsage.runTime.minimum ?? Infinity
+ workerUsage.runTime?.minimum ?? Infinity
)
workerUsage.runTime.maximum = Math.max(
taskRunTime,
- workerUsage.runTime.maximum ?? -Infinity
+ workerUsage.runTime?.maximum ?? -Infinity
)
if (
this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime
this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime
.aggregate
) {
- workerUsage.waitTime.aggregate += taskWaitTime
+ workerUsage.waitTime.aggregate =
+ (workerUsage.waitTime?.aggregate ?? 0) + taskWaitTime
workerUsage.waitTime.minimum = Math.min(
taskWaitTime,
- workerUsage.waitTime.minimum ?? Infinity
+ workerUsage.waitTime?.minimum ?? Infinity
)
workerUsage.waitTime.maximum = Math.max(
taskWaitTime,
- workerUsage.waitTime.maximum ?? -Infinity
+ workerUsage.waitTime?.maximum ?? -Infinity
)
if (
this.workerChoiceStrategyContext.getTaskStatisticsRequirements()
}
if (
this.workerChoiceStrategyContext.getTaskStatisticsRequirements()
- .waitTime.median &&
- taskWaitTime != null
+ .waitTime.median
) {
workerUsage.waitTime.history.push(taskWaitTime)
workerUsage.waitTime.median = median(workerUsage.waitTime.history)
.aggregate
) {
if (message.taskPerformance?.elu != null) {
- workerUsage.elu.idle.aggregate += message.taskPerformance.elu.idle
- workerUsage.elu.active.aggregate += message.taskPerformance.elu.active
+ workerUsage.elu.idle.aggregate =
+ (workerUsage.elu.idle?.aggregate ?? 0) +
+ message.taskPerformance.elu.idle
+ workerUsage.elu.active.aggregate =
+ (workerUsage.elu.active?.aggregate ?? 0) +
+ message.taskPerformance.elu.active
if (workerUsage.elu.utilization != null) {
workerUsage.elu.utilization =
(workerUsage.elu.utilization +
}
workerUsage.elu.idle.minimum = Math.min(
message.taskPerformance.elu.idle,
- workerUsage.elu.idle.minimum ?? Infinity
+ workerUsage.elu.idle?.minimum ?? Infinity
)
workerUsage.elu.idle.maximum = Math.max(
message.taskPerformance.elu.idle,
- workerUsage.elu.idle.maximum ?? -Infinity
+ workerUsage.elu.idle?.maximum ?? -Infinity
)
workerUsage.elu.active.minimum = Math.min(
message.taskPerformance.elu.active,
- workerUsage.elu.active.minimum ?? Infinity
+ workerUsage.elu.active?.minimum ?? Infinity
)
workerUsage.elu.active.maximum = Math.max(
message.taskPerformance.elu.active,
- workerUsage.elu.active.maximum ?? -Infinity
+ workerUsage.elu.active?.maximum ?? -Infinity
)
- }
- if (
- this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu
- .average &&
- workerUsage.tasks.executed !== 0
- ) {
- const executedTasks =
- workerUsage.tasks.executed - workerUsage.tasks.failed
- workerUsage.elu.idle.average =
- workerUsage.elu.idle.aggregate / executedTasks
- workerUsage.elu.active.average =
- workerUsage.elu.active.aggregate / executedTasks
- }
- if (
- this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu
- .median &&
- message.taskPerformance?.elu != null
- ) {
- workerUsage.elu.idle.history.push(message.taskPerformance.elu.idle)
- workerUsage.elu.active.history.push(message.taskPerformance.elu.active)
- workerUsage.elu.idle.median = median(workerUsage.elu.idle.history)
- workerUsage.elu.active.median = median(workerUsage.elu.active.history)
+ if (
+ this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu
+ .average &&
+ workerUsage.tasks.executed !== 0
+ ) {
+ const executedTasks =
+ workerUsage.tasks.executed - workerUsage.tasks.failed
+ workerUsage.elu.idle.average =
+ workerUsage.elu.idle.aggregate / executedTasks
+ workerUsage.elu.active.average =
+ workerUsage.elu.active.aggregate / executedTasks
+ }
+ if (
+ this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu
+ .median &&
+ message.taskPerformance?.elu != null
+ ) {
+ workerUsage.elu.idle.history.push(message.taskPerformance.elu.idle)
+ workerUsage.elu.active.history.push(
+ message.taskPerformance.elu.active
+ )
+ workerUsage.elu.idle.median = median(workerUsage.elu.idle.history)
+ workerUsage.elu.active.median = median(workerUsage.elu.active.history)
+ }
}
}
}
private getInitialWorkerUsage (worker?: Worker): WorkerUsage {
const getTasksQueueSize = (worker?: Worker): number => {
- return worker != null
- ? this.tasksQueueSize(this.getWorkerNodeKey(worker))
- : 0
+ if (worker == null) {
+ return 0
+ }
+ // FIXME: Workaround tasks queue initialization issue.
+ try {
+ return this.tasksQueueSize(this.getWorkerNodeKey(worker))
+ } catch {
+ return 0
+ }
}
const getTasksMaxQueueSize = (worker?: Worker): number => {
- return worker != null
- ? this.tasksMaxQueueSize(this.getWorkerNodeKey(worker))
- : 0
+ if (worker == null) {
+ return 0
+ }
+ // FIXME: Workaround tasks queue initialization issue.
+ try {
+ return this.tasksMaxQueueSize(this.getWorkerNodeKey(worker))
+ } catch {
+ return 0
+ }
}
return {
tasks: {
failed: 0
},
runTime: {
- aggregate: 0,
- maximum: 0,
- minimum: 0,
- average: 0,
- median: 0,
history: new CircularArray()
},
waitTime: {
- aggregate: 0,
- maximum: 0,
- minimum: 0,
- average: 0,
- median: 0,
history: new CircularArray()
},
elu: {
idle: {
- aggregate: 0,
- maximum: 0,
- minimum: 0,
- average: 0,
- median: 0,
history: new CircularArray()
},
active: {
- aggregate: 0,
- maximum: 0,
- minimum: 0,
- average: 0,
- median: 0,
history: new CircularArray()
}
}
failed: 0
},
runTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
}
failed: 0
},
runTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
}
failed: 0
},
runTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
failed: 0
},
runTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
},
runTime: {
aggregate: expect.any(Number),
- average: 0,
- median: 0,
+ maximum: expect.any(Number),
+ minimum: expect.any(Number),
history: expect.any(CircularArray)
},
waitTime: {
aggregate: expect.any(Number),
- average: 0,
- median: 0,
+ maximum: expect.any(Number),
+ minimum: expect.any(Number),
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
},
runTime: {
aggregate: expect.any(Number),
- average: 0,
- median: 0,
+ maximum: expect.any(Number),
+ minimum: expect.any(Number),
history: expect.any(CircularArray)
},
waitTime: {
aggregate: expect.any(Number),
- average: 0,
- median: 0,
+ maximum: expect.any(Number),
+ minimum: expect.any(Number),
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
}
await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
- expect(workerNode.usage).toStrictEqual({
+ expect(workerNode.usage).toMatchObject({
tasks: {
executed: expect.any(Number),
executing: 0,
failed: 0
},
runTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
- idle: {
- aggregate: 0,
- average: 0,
- median: 0,
+ idle: expect.objectContaining({
history: expect.any(CircularArray)
- },
- active: {
- aggregate: expect.any(Number),
- average: 0,
- median: 0,
+ }),
+ active: expect.objectContaining({
history: expect.any(CircularArray)
- },
- utilization: expect.any(Number)
+ })
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
expect(workerNode.usage.tasks.executed).toBeLessThanOrEqual(
max * maxMultiplier
)
- expect(workerNode.usage.elu.utilization).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.elu.utilization).toBeLessThanOrEqual(1)
+ if (workerNode.usage.elu.utilization == null) {
+ expect(workerNode.usage.elu.utilization).toBeUndefined()
+ } else {
+ expect(workerNode.usage.elu.utilization).toBeGreaterThanOrEqual(0)
+ expect(workerNode.usage.elu.utilization).toBeLessThanOrEqual(1)
+ }
}
// We need to clean up the resources after our test
await pool.destroy()
}
await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
- expect(workerNode.usage).toStrictEqual({
+ expect(workerNode.usage).toMatchObject({
tasks: {
executed: expect.any(Number),
executing: 0,
failed: 0
},
runTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
- idle: {
- aggregate: 0,
- average: 0,
- median: 0,
+ idle: expect.objectContaining({
history: expect.any(CircularArray)
- },
- active: {
- aggregate: expect.any(Number),
- average: 0,
- median: 0,
+ }),
+ active: expect.objectContaining({
history: expect.any(CircularArray)
- },
- utilization: expect.any(Number)
+ })
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
expect(workerNode.usage.tasks.executed).toBeLessThanOrEqual(
max * maxMultiplier
)
- expect(workerNode.usage.elu.utilization).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.elu.utilization).toBeLessThanOrEqual(1)
+ if (workerNode.usage.elu.utilization == null) {
+ expect(workerNode.usage.elu.utilization).toBeUndefined()
+ } else {
+ expect(workerNode.usage.elu.utilization).toBeGreaterThanOrEqual(0)
+ expect(workerNode.usage.elu.utilization).toBeLessThanOrEqual(1)
+ }
}
// We need to clean up the resources after our test
await pool.destroy()
}
await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
- expect(workerNode.usage).toStrictEqual({
+ expect(workerNode.usage).toMatchObject({
tasks: {
executed: expect.any(Number),
executing: 0,
maxQueued: 0,
failed: 0
},
- runTime: {
- aggregate: expect.any(Number),
- average: expect.any(Number),
- median: 0,
+ runTime: expect.objectContaining({
history: expect.any(CircularArray)
- },
+ }),
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
- idle: {
- aggregate: 0,
- average: 0,
- median: 0,
+ idle: expect.objectContaining({
history: expect.any(CircularArray)
- },
- active: {
- aggregate: expect.any(Number),
- average: expect.any(Number),
- median: 0,
+ }),
+ active: expect.objectContaining({
history: expect.any(CircularArray)
- },
- utilization: expect.any(Number)
+ })
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
expect(workerNode.usage.tasks.executed).toBeLessThanOrEqual(
max * maxMultiplier
)
- expect(workerNode.usage.runTime.aggregate).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.runTime.average).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.elu.utilization).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.elu.utilization).toBeLessThanOrEqual(1)
+ if (workerNode.usage.runTime.aggregate == null) {
+ expect(workerNode.usage.runTime.aggregate).toBeUndefined()
+ } else {
+ expect(workerNode.usage.runTime.aggregate).toBeGreaterThan(0)
+ }
+ if (workerNode.usage.runTime.average == null) {
+ expect(workerNode.usage.runTime.average).toBeUndefined()
+ } else {
+ expect(workerNode.usage.runTime.average).toBeGreaterThan(0)
+ }
+ if (workerNode.usage.elu.utilization == null) {
+ expect(workerNode.usage.elu.utilization).toBeUndefined()
+ } else {
+ expect(workerNode.usage.elu.utilization).toBeGreaterThanOrEqual(0)
+ expect(workerNode.usage.elu.utilization).toBeLessThanOrEqual(1)
+ }
}
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
}
await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
- expect(workerNode.usage).toStrictEqual({
+ expect(workerNode.usage).toMatchObject({
tasks: {
executed: expect.any(Number),
executing: 0,
maxQueued: 0,
failed: 0
},
- runTime: {
- aggregate: expect.any(Number),
- average: expect.any(Number),
- median: 0,
+ runTime: expect.objectContaining({
history: expect.any(CircularArray)
- },
+ }),
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
- idle: {
- aggregate: 0,
- average: 0,
- median: 0,
+ idle: expect.objectContaining({
history: expect.any(CircularArray)
- },
- active: {
- aggregate: expect.any(Number),
- average: expect.any(Number),
- median: 0,
+ }),
+ active: expect.objectContaining({
history: expect.any(CircularArray)
- },
- utilization: expect.any(Number)
+ })
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
expect(workerNode.usage.tasks.executed).toBeLessThanOrEqual(
max * maxMultiplier
)
- expect(workerNode.usage.runTime.aggregate).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.runTime.average).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.elu.utilization).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.elu.utilization).toBeLessThanOrEqual(1)
+ if (workerNode.usage.runTime.aggregate == null) {
+ expect(workerNode.usage.runTime.aggregate).toBeUndefined()
+ } else {
+ expect(workerNode.usage.runTime.aggregate).toBeGreaterThan(0)
+ }
+ if (workerNode.usage.runTime.average == null) {
+ expect(workerNode.usage.runTime.average).toBeUndefined()
+ } else {
+ expect(workerNode.usage.runTime.average).toBeGreaterThan(0)
+ }
+ if (workerNode.usage.elu.utilization == null) {
+ expect(workerNode.usage.elu.utilization).toBeUndefined()
+ } else {
+ expect(workerNode.usage.elu.utilization).toBeGreaterThanOrEqual(0)
+ expect(workerNode.usage.elu.utilization).toBeLessThanOrEqual(1)
+ }
}
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
}
await Promise.all(promises)
for (const workerNode of pool.workerNodes) {
- expect(workerNode.usage).toStrictEqual({
+ expect(workerNode.usage).toMatchObject({
tasks: {
executed: expect.any(Number),
executing: 0,
maxQueued: 0,
failed: 0
},
- runTime: {
- aggregate: expect.any(Number),
- average: 0,
- median: expect.any(Number),
+ runTime: expect.objectContaining({
history: expect.any(CircularArray)
- },
+ }),
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
- idle: {
- aggregate: 0,
- average: 0,
- median: 0,
+ idle: expect.objectContaining({
history: expect.any(CircularArray)
- },
- active: {
- aggregate: expect.any(Number),
- average: expect.any(Number),
- median: 0,
+ }),
+ active: expect.objectContaining({
history: expect.any(CircularArray)
- },
- utilization: expect.any(Number)
+ })
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
expect(workerNode.usage.tasks.executed).toBeLessThanOrEqual(
max * maxMultiplier
)
- expect(workerNode.usage.runTime.aggregate).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.runTime.median).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.elu.utilization).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.elu.utilization).toBeLessThanOrEqual(1)
+ if (workerNode.usage.runTime.aggregate == null) {
+ expect(workerNode.usage.runTime.aggregate).toBeUndefined()
+ } else {
+ expect(workerNode.usage.runTime.aggregate).toBeGreaterThan(0)
+ }
+ if (workerNode.usage.runTime.median == null) {
+ expect(workerNode.usage.runTime.median).toBeUndefined()
+ } else {
+ expect(workerNode.usage.runTime.median).toBeGreaterThan(0)
+ }
+ if (workerNode.usage.elu.utilization == null) {
+ expect(workerNode.usage.elu.utilization).toBeUndefined()
+ } else {
+ expect(workerNode.usage.elu.utilization).toBeGreaterThanOrEqual(0)
+ expect(workerNode.usage.elu.utilization).toBeLessThanOrEqual(1)
+ }
}
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
maxQueued: 0,
failed: 0
},
- runTime: {
- aggregate: expect.any(Number),
- average: expect.any(Number),
- median: 0,
+ runTime: expect.objectContaining({
history: expect.any(CircularArray)
- },
+ }),
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
expect(workerNode.usage.tasks.executed).toBeLessThanOrEqual(
max * maxMultiplier
)
- expect(workerNode.usage.runTime.aggregate).toBeGreaterThanOrEqual(0)
- expect(workerNode.usage.runTime.average).toBeGreaterThanOrEqual(0)
+ if (workerNode.usage.runTime.aggregate == null) {
+ expect(workerNode.usage.runTime.aggregate).toBeUndefined()
+ } else {
+ expect(workerNode.usage.runTime.aggregate).toBeGreaterThan(0)
+ }
+ if (workerNode.usage.runTime.average == null) {
+ expect(workerNode.usage.runTime.average).toBeUndefined()
+ } else {
+ expect(workerNode.usage.runTime.average).toBeGreaterThan(0)
+ }
}
expect(
pool.workerChoiceStrategyContext.workerChoiceStrategies.get(
},
runTime: {
aggregate: expect.any(Number),
+ maximum: expect.any(Number),
+ minimum: expect.any(Number),
average: expect.any(Number),
- median: 0,
history: expect.any(CircularArray)
},
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
},
runTime: {
aggregate: expect.any(Number),
- average: 0,
+ maximum: expect.any(Number),
+ minimum: expect.any(Number),
median: expect.any(Number),
history: expect.any(CircularArray)
},
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThanOrEqual(0)
failed: 0
},
runTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
}
failed: 0
},
runTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
waitTime: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
elu: {
idle: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
},
active: {
- aggregate: 0,
- average: 0,
- median: 0,
history: expect.any(CircularArray)
- },
- utilization: 0
+ }
}
})
}