import { RoundRobinWorkerChoiceStrategy } from './round-robin-worker-choice-strategy.js'
import {
type IWorkerChoiceStrategy,
+ type MeasurementStatisticsRequirements,
type StrategyPolicy,
type TaskStatisticsRequirements,
WorkerChoiceStrategies,
}
}
+export const toggleMedianMeasurementStatisticsRequirements = (
+ measurementStatisticsRequirements: MeasurementStatisticsRequirements,
+ toggleMedian: boolean
+): void => {
+ if (measurementStatisticsRequirements.average && toggleMedian) {
+ measurementStatisticsRequirements.average = false
+ measurementStatisticsRequirements.median = toggleMedian
+ }
+ if (measurementStatisticsRequirements.median && !toggleMedian) {
+ measurementStatisticsRequirements.average = true
+ measurementStatisticsRequirements.median = toggleMedian
+ }
+}
+
export const buildWorkerChoiceStrategiesPolicy = (
workerChoiceStrategies: Map<WorkerChoiceStrategy, IWorkerChoiceStrategy>
): StrategyPolicy => {
- const policies: StrategyPolicy[] = []
- for (const workerChoiceStrategy of workerChoiceStrategies.values()) {
- policies.push(workerChoiceStrategy.strategyPolicy)
- }
+ const policies: StrategyPolicy[] = Array.from(
+ workerChoiceStrategies,
+ ([_, workerChoiceStrategy]) => workerChoiceStrategy.strategyPolicy
+ )
return {
dynamicWorkerUsage: policies.some(p => p.dynamicWorkerUsage),
dynamicWorkerReady: policies.some(p => p.dynamicWorkerReady)
export const buildWorkerChoiceStrategiesTaskStatisticsRequirements = (
workerChoiceStrategies: Map<WorkerChoiceStrategy, IWorkerChoiceStrategy>
): TaskStatisticsRequirements => {
- const taskStatisticsRequirements: TaskStatisticsRequirements[] = []
- for (const workerChoiceStrategy of workerChoiceStrategies.values()) {
- taskStatisticsRequirements.push(
+ const taskStatisticsRequirements: TaskStatisticsRequirements[] = Array.from(
+ workerChoiceStrategies,
+ ([_, workerChoiceStrategy]) =>
workerChoiceStrategy.taskStatisticsRequirements
- )
- }
+ )
return {
runTime: {
aggregate: taskStatisticsRequirements.some(r => r.runTime.aggregate),