X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Futils.test.mjs;h=5e089e291f07877506ff12a3373ca407ee2b5c51;hb=e44639e9af74427b71f1556ff7ec9f7606373e0d;hp=ac544f89c5a2f504a6c768c212461e30a8467ee9;hpb=4ef0b45781a9a2a1416c4bb62d700a0c70e71145;p=poolifier.git diff --git a/tests/utils.test.mjs b/tests/utils.test.mjs index ac544f89..5e089e29 100644 --- a/tests/utils.test.mjs +++ b/tests/utils.test.mjs @@ -6,11 +6,12 @@ import { expect } from 'expect' import { DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS, DEFAULT_TASK_NAME, - DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS, EMPTY_FUNCTION, availableParallelism, average, + buildWorkerChoiceStrategyOptions, exponentialDelay, + getWorkerChoiceStrategyRetries, getWorkerId, getWorkerType, isAsyncFunction, @@ -19,12 +20,17 @@ import { max, median, min, - once, + // once, round, secureRandom, sleep -} from '../lib/utils.js' -import { KillBehaviors, WorkerTypes } from '../lib/index.js' +} from '../lib/utils.cjs' +import { + FixedClusterPool, + FixedThreadPool, + KillBehaviors, + WorkerTypes +} from '../lib/index.cjs' describe('Utils test suite', () => { it('Verify DEFAULT_TASK_NAME value', () => { @@ -35,15 +41,6 @@ describe('Utils test suite', () => { expect(EMPTY_FUNCTION).toStrictEqual(expect.any(Function)) }) - it('Verify DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS values', () => { - expect(DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS).toStrictEqual({ - retries: 6, - runTime: { median: false }, - waitTime: { median: false }, - elu: { median: false } - }) - }) - it('Verify DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS values', () => { expect(DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS).toStrictEqual({ aggregate: false, @@ -83,9 +80,10 @@ describe('Utils test suite', () => { it('Verify sleep() behavior', async () => { const start = performance.now() - await sleep(1000) + const sleepMs = 1000 + await sleep(sleepMs) const elapsed = performance.now() - start - expect(elapsed).toBeGreaterThanOrEqual(999) + expect(elapsed).toBeGreaterThanOrEqual(sleepMs - 1) }) it('Verify exponentialDelay() behavior', () => { @@ -239,18 +237,46 @@ describe('Utils test suite', () => { expect(max(1, 1)).toBe(1) }) - it('Verify once()', () => { - let called = 0 - const fn = () => ++called - const onceFn = once(fn, this) - const result1 = onceFn() - expect(called).toBe(1) - expect(result1).toBe(1) - const result2 = onceFn() - expect(called).toBe(1) - expect(result2).toBe(1) - const result3 = onceFn() - expect(called).toBe(1) - expect(result3).toBe(1) + it('Verify getWorkerChoiceStrategyRetries() behavior', async () => { + const numberOfThreads = 4 + const pool = new FixedThreadPool( + numberOfThreads, + './tests/worker-files/thread/testWorker.mjs' + ) + expect(getWorkerChoiceStrategyRetries(pool)).toBe(pool.info.maxSize * 2) + await pool.destroy() }) + + it('Verify buildWorkerChoiceStrategyOptions() behavior', async () => { + const numberOfWorkers = 4 + const pool = new FixedClusterPool( + numberOfWorkers, + './tests/worker-files/cluster/testWorker.cjs' + ) + expect(buildWorkerChoiceStrategyOptions(pool)).toStrictEqual({ + runTime: { median: false }, + waitTime: { median: false }, + elu: { median: false }, + weights: expect.objectContaining({ + 0: expect.any(Number), + [pool.info.maxSize - 1]: expect.any(Number) + }) + }) + await pool.destroy() + }) + + // it('Verify once()', () => { + // let called = 0 + // const fn = () => ++called + // const onceFn = once(fn, this) + // const result1 = onceFn() + // expect(called).toBe(1) + // expect(result1).toBe(1) + // const result2 = onceFn() + // expect(called).toBe(1) + // expect(result2).toBe(1) + // const result3 = onceFn() + // expect(called).toBe(1) + // expect(result3).toBe(1) + // }) })