@@ -105,68 +105,32 @@ describe('WorkerManager', () => {
105
105
await workerManager . settled ( ) ;
106
106
await workerManager . destroy ( ) ;
107
107
} ) ;
108
- // Test('zero-copy buffer transfer', async () => {
109
- // workerManager = await WorkerManager.createWorkerManager(
110
- // {
111
- // workerFactory,
112
- // cores: 1,
113
- // logger,
114
- // },
115
- // );
116
- // const buffer = await workerManager.call(async (w) => {
117
- // // Start with a Node Buffer that is "pooled"
118
- // const inputBuffer = Buffer.from('hello 1');
119
- // // Slice copy out the ArrayBuffer
120
- // const input = inputBuffer.buffer.slice(
121
- // inputBuffer.byteOffset,
122
- // inputBuffer.byteOffset + inputBuffer.byteLength,
123
- // );
124
- // // When the underlying ArrayBuffer is detached
125
- // // this Buffer's byteLength will also become 0
126
- // const inputBuffer_ = Buffer.from(input);
127
- // expect(inputBuffer_.byteLength).toBe(input.byteLength);
128
- // // Zero-copy transfer moves "ownership"
129
- // // input is detached from main thread
130
- // // output is detached from worker thread
131
- // const output = await w.transferBuffer(Transfer(input));
132
- // // Detached ArrayBuffers have byte lengths of 0
133
- // expect(input.byteLength).toBe(0);
134
- // expect(inputBuffer_.byteLength).toBe(0);
135
- // // Zero-copy wrap to use Node Buffer API
136
- // const outputBuffer = Buffer.from(output);
137
- // return outputBuffer;
138
- // });
139
- // expect(buffer).toEqual(Buffer.from('hello 2'));
140
- // await workerManager.destroy();
141
- // });
142
- // test('scratch', async () => {
143
- // console.log('start');
144
- // console.log(
145
- // 'Hello from main',
146
- // nodeWorkers.isMainThread,
147
- // nodeWorkers.threadId,
148
- // );
149
- //
150
- // const script = `
151
- // const nodeWorkers = require("node:worker_threads");
152
- // console.log("Hello from worker!: ", nodeWorkers.isMainThread, nodeWorkers.threadId);
153
- // nodeWorkers.parentPort.on('message', v => {
154
- // console.log('message', v);
155
- // nodeWorkers.parentPort.postMessage(v);
156
- // });
157
- // `;
158
- // await new Promise((resolve, reject) => {
159
- // const worker = new nodeWorkers.Worker(script, { eval: true });
160
- // worker.on('message', (v) => {
161
- // logger.warn(`message: ${v}`);
162
- // worker.terminate();
163
- // });
164
- // worker.on('error', reject);
165
- // worker.on('exit', resolve);
166
- // worker.postMessage('some message!');
167
- // });
168
- // console.log('stop');
169
- // });
170
- } ) ;
108
+ test ( 'zero-copy buffer transfer' , async ( ) => {
109
+ workerManager = await WorkerManager . createWorkerManager ( {
110
+ workerFactory,
111
+ cores : 1 ,
112
+ logger,
113
+ } ) ;
114
+ // Creating a new buffer
115
+ const inputBuffer = Buffer . from ( 'hello 1' ) ;
116
+ // Extracting the underlying ArrayBuffer
117
+ const input = inputBuffer . buffer . slice (
118
+ inputBuffer . byteOffset ,
119
+ inputBuffer . byteOffset + inputBuffer . byteLength ,
120
+ ) ;
121
+ // Making call with transfer
122
+ const output = await workerManager . call ( {
123
+ type : 'transferBuffer' ,
124
+ data : input ,
125
+ transferList : [ input ] ,
126
+ } ) ;
127
+ // The input ArrayBuffer is detached so the length is now 0
128
+ expect ( input . byteLength ) . toBe ( 0 ) ;
129
+ // The output should be filled with 0xF
130
+ expect ( Buffer . from ( output as ArrayBuffer ) ) . toEqual (
131
+ Buffer . alloc ( inputBuffer . byteLength , 0xf ) ,
132
+ ) ;
171
133
172
- test ( 'asd' , async ( ) => { } ) ;
134
+ await workerManager . destroy ( ) ;
135
+ } ) ;
136
+ } ) ;
0 commit comments