nice.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import Piscina from '..';
  2. import { getCurrentProcessPriority, WindowsThreadPriority } from '@napi-rs/nice';
  3. import { resolve } from 'path';
  4. import { test } from 'tap';
  5. test('can set niceness for threads on Linux', {
  6. skip: process.platform !== 'linux'
  7. }, async ({ equal }) => {
  8. const worker = new Piscina({
  9. filename: resolve(__dirname, 'fixtures/eval.js'),
  10. niceIncrement: 5
  11. });
  12. const currentNiceness = getCurrentProcessPriority();
  13. const result = await worker.runTask('require("@napi-rs/nice").getCurrentProcessPriority()');
  14. // niceness is capped to 19 on Linux.
  15. const expected = Math.min(currentNiceness + 5, 19);
  16. equal(result, expected);
  17. });
  18. test('can set niceness for threads on Windows', {
  19. skip: process.platform !== 'win32'
  20. }, async ({ equal }) => {
  21. const worker = new Piscina({
  22. filename: resolve(__dirname, 'fixtures/eval.js'),
  23. niceIncrement: WindowsThreadPriority.ThreadPriorityAboveNormal
  24. });
  25. const result = await worker.runTask('require("@napi-rs/nice").getCurrentProcessPriority()');
  26. equal(result, WindowsThreadPriority.ThreadPriorityAboveNormal);
  27. });
  28. test('setting niceness never does anything bad', async ({ equal }) => {
  29. const worker = new Piscina({
  30. filename: resolve(__dirname, 'fixtures/eval.js'),
  31. niceIncrement: 5
  32. });
  33. const result = await worker.runTask('42');
  34. equal(result, 42);
  35. });