Skip to content

Commit 4d9c6a4

Browse files
committed
refactor: factor out worker info initialization
Signed-off-by: Jérôme Benoit <[email protected]>
1 parent 7da22ea commit 4d9c6a4

File tree

4 files changed

+41
-56
lines changed

4 files changed

+41
-56
lines changed

deno.json

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
"version": "0.4.31",
44
"exports": "./src/mod.ts",
55
"compilerOptions": {
6-
"lib": [
7-
"deno.worker"
8-
],
6+
"lib": ["deno.worker"],
97
"strict": true
108
},
119
"tasks": {
@@ -26,9 +24,7 @@
2624
"documentation": "deno doc ./src/mod.ts"
2725
},
2826
"test": {
29-
"include": [
30-
"./tests/**/*.test.mjs"
31-
]
27+
"include": ["./tests/**/*.test.mjs"]
3228
},
3329
"fmt": {
3430
"semiColons": false,
@@ -41,18 +37,8 @@
4137
"@std/testing": "jsr:@std/testing@^1.0.8"
4238
},
4339
"publish": {
44-
"include": [
45-
"LICENSE",
46-
"README.md",
47-
"deno.json",
48-
"src/**/*.ts"
49-
]
40+
"include": ["LICENSE", "README.md", "deno.json", "src/**/*.ts"]
5041
},
5142
"lock": false,
52-
"exclude": [
53-
"./coverage",
54-
"./dist/browser",
55-
"./dist/esm",
56-
"./npm"
57-
]
43+
"exclude": ["./coverage", "./dist/browser", "./dist/esm", "./npm"]
5844
}

src/pools/utils.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
type IWorker,
2121
type IWorkerNode,
2222
type MeasurementStatistics,
23+
type WorkerInfo,
2324
type WorkerNodeOptions,
2425
type WorkerType,
2526
WorkerTypes,
@@ -415,7 +416,7 @@ export const createWorker = <Worker extends IWorker>(
415416
* @returns The worker type of the given worker.
416417
* @internal
417418
*/
418-
export const getWorkerType = (worker: IWorker): WorkerType | undefined => {
419+
const getWorkerType = (worker: IWorker): WorkerType | undefined => {
419420
if (worker instanceof Worker) {
420421
return WorkerTypes.web
421422
}
@@ -428,14 +429,28 @@ export const getWorkerType = (worker: IWorker): WorkerType | undefined => {
428429
* @returns The worker id of the given worker.
429430
* @internal
430431
*/
431-
export const getWorkerId = (
432+
const getWorkerId = (
432433
worker: IWorker,
433434
): `${string}-${string}-${string}-${string}-${string}` | undefined => {
434435
if (worker instanceof Worker) {
435436
return crypto.randomUUID()
436437
}
437438
}
438439

440+
export const initWorkerInfo = (worker: IWorker): WorkerInfo => {
441+
return {
442+
backPressure: false,
443+
backPressureStealing: false,
444+
continuousStealing: false,
445+
dynamic: false,
446+
id: getWorkerId(worker),
447+
ready: false,
448+
stealing: false,
449+
stolen: false,
450+
type: getWorkerType(worker)!,
451+
}
452+
}
453+
439454
export const waitWorkerNodeEvents = async <
440455
Worker extends IWorker,
441456
Data = unknown,

src/pools/worker-node.ts

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ import { DEFAULT_TASK_NAME } from '../utils.ts'
55
import {
66
checkWorkerNodeArguments,
77
createWorker,
8-
getWorkerId,
9-
getWorkerType,
8+
initWorkerInfo,
109
} from './utils.ts'
1110
import {
1211
type IWorker,
@@ -58,7 +57,7 @@ export class WorkerNode<Worker extends IWorker, Data = unknown>
5857
this.worker = createWorker<Worker>(type, fileURL, {
5958
workerOptions: opts.workerOptions,
6059
})
61-
this.info = this.initWorkerInfo(this.worker)
60+
this.info = initWorkerInfo(this.worker)
6261
this.usage = this.initWorkerUsage()
6362
this.messageChannel = new MessageChannel()
6463
this.messageChannel.port1.onmessage = (
@@ -197,20 +196,6 @@ export class WorkerNode<Worker extends IWorker, Data = unknown>
197196
}
198197
}
199198

200-
private initWorkerInfo(worker: Worker): WorkerInfo {
201-
return {
202-
id: getWorkerId(worker),
203-
type: getWorkerType(worker)!,
204-
dynamic: false,
205-
ready: false,
206-
stealing: false,
207-
stolen: false,
208-
continuousStealing: false,
209-
backPressureStealing: false,
210-
backPressure: false,
211-
}
212-
}
213-
214199
private initWorkerUsage(): WorkerUsage {
215200
const getTasksQueueSize = (): number => {
216201
return this.tasksQueue.size

tests/pools/utils.test.mjs

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import {
77
DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS,
88
exportedUpdateMeasurementStatistics,
99
getDefaultTasksQueueOptions,
10-
getWorkerId,
11-
getWorkerType,
10+
initWorkerInfo,
1211
} from '../../src/pools/utils.ts'
1312
import { MeasurementHistorySize } from '../../src/pools/worker.ts'
1413

@@ -113,25 +112,25 @@ describe('Pool utils test suite', () => {
113112
worker.terminate()
114113
})
115114

116-
it('Verify getWorkerType() behavior', () => {
117-
const worker = new Worker(
118-
new URL('./../worker-files/thread/testWorker.mjs', import.meta.url),
119-
{
120-
type: 'module',
121-
},
122-
)
123-
expect(getWorkerType(worker)).toBe(WorkerTypes.web)
124-
worker.terminate()
125-
})
126-
127-
it('Verify getWorkerId() behavior', () => {
128-
const worker = new Worker(
115+
it('Verify initWorkerInfo() behavior', () => {
116+
const worker = createWorker(
117+
WorkerTypes.web,
129118
new URL('./../worker-files/thread/testWorker.mjs', import.meta.url),
130-
{
131-
type: 'module',
132-
},
119+
{},
133120
)
134-
expect(getWorkerId(worker)).toMatch(
121+
const workerInfo = initWorkerInfo(worker)
122+
expect(workerInfo).toStrictEqual({
123+
backPressure: false,
124+
backPressureStealing: false,
125+
continuousStealing: false,
126+
dynamic: false,
127+
id: expect.any(String),
128+
ready: false,
129+
stealing: false,
130+
stolen: false,
131+
type: WorkerTypes.web,
132+
})
133+
expect(workerInfo.id).toMatch(
135134
/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,
136135
)
137136
worker.terminate()

0 commit comments

Comments
 (0)