X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fselection-strategies%2Fselection-strategies-utils.ts;h=3c7f5f4df327afcce3aaf7ee7f7ee88c397e6513;hb=3d84cdaec91dfe96a82462c902bead4067b452d2;hp=777be6e4d4a2be104afd7986bd835e7e04312e96;hpb=19b8be8ba6e628292d8c461a7d5702a25e0f76e7;p=poolifier.git diff --git a/src/pools/selection-strategies/selection-strategies-utils.ts b/src/pools/selection-strategies/selection-strategies-utils.ts index 777be6e4..3c7f5f4d 100644 --- a/src/pools/selection-strategies/selection-strategies-utils.ts +++ b/src/pools/selection-strategies/selection-strategies-utils.ts @@ -10,6 +10,7 @@ import { LeastUsedWorkerChoiceStrategy } from './least-used-worker-choice-strate import { RoundRobinWorkerChoiceStrategy } from './round-robin-worker-choice-strategy.js' import { type IWorkerChoiceStrategy, + type MeasurementStatisticsRequirements, type StrategyPolicy, type TaskStatisticsRequirements, WorkerChoiceStrategies, @@ -100,13 +101,27 @@ export const buildWorkerChoiceStrategyOptions = < } } +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 ): 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) @@ -116,12 +131,11 @@ export const buildWorkerChoiceStrategiesPolicy = ( export const buildWorkerChoiceStrategiesTaskStatisticsRequirements = ( workerChoiceStrategies: Map ): 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),