forked from piscinajs/piscina
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest-resourcelimits.ts
34 lines (33 loc) · 1.25 KB
/
test-resourcelimits.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import Piscina from '..';
import { test } from 'tap';
import { resolve } from 'path';
test('resourceLimits causes task to reject', async ({ equal, rejects }) => {
const worker = new Piscina({
filename: resolve(__dirname, 'fixtures/resource-limits.js'),
resourceLimits: {
maxOldGenerationSizeMb: 16,
maxYoungGenerationSizeMb: 4,
codeRangeSizeMb: 16
}
});
worker.on('error', () => {
// Ignore any additional errors that may occur.
// This may happen because when the Worker is
// killed a new worker is created that may hit
// the memory limits immediately. When that
// happens, there is no associated Promise to
// reject so we emit an error event instead.
// We don't care so much about that here. We
// could potentially avoid the issue by setting
// higher limits above but rather than try to
// guess at limits that may work consistently,
// let's just ignore the additional error for
// now.
});
const limits : any = worker.options.resourceLimits;
equal(limits.maxOldGenerationSizeMb, 16);
equal(limits.maxYoungGenerationSizeMb, 4);
equal(limits.codeRangeSizeMb, 16);
rejects(worker.run(null),
/Worker terminated due to reaching memory limit: JS heap out of memory/);
});