NET-Web-API-w-Angular/my-app/node_modules/piscina/test/async-context.ts

43 lines
945 B
TypeScript
Executable file

import { createHook, executionAsyncId } from 'async_hooks';
import Piscina from '..';
import { test } from 'tap';
import { resolve } from 'path';
test('postTask() calls the correct async hooks', async ({ equal }) => {
let taskId;
let initCalls = 0;
let beforeCalls = 0;
let afterCalls = 0;
let resolveCalls = 0;
const hook = createHook({
init (id, type) {
if (type === 'Piscina.Task') {
initCalls++;
taskId = id;
}
},
before (id) {
if (id === taskId) beforeCalls++;
},
after (id) {
if (id === taskId) afterCalls++;
},
promiseResolve () {
if (executionAsyncId() === taskId) resolveCalls++;
}
});
hook.enable();
const pool = new Piscina({
filename: resolve(__dirname, 'fixtures/eval.js')
});
await pool.runTask('42');
hook.disable();
equal(initCalls, 1);
equal(beforeCalls, 1);
equal(afterCalls, 1);
equal(resolveCalls, 1);
});