Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Node tests systematically fail in ubuntu-24.04-arm (Node 22, gcc, g++, -Db_sanitize=address, Debug) #1502

Closed
ibc opened this issue Mar 7, 2025 · 0 comments · Fixed by #1504
Assignees
Labels
Milestone

Comments

@ibc
Copy link
Member

ibc commented Mar 7, 2025

Bug Report

ubuntu-22.04-arm and ubuntu-24.04-arm hosts have been added to CI in this PR #1500.

Somehow, some Node tests systematically fail in ubuntu-24.04-arm:

Note that it's always the same tests:

FAIL node/src/test/test-Worker.ts (26.204 s)
  ✓ Worker.workerBin matches mediasoup-worker absolute path (2 ms)
  ✕ createWorker() succeeds (2001 ms)
  ✕ createWorker() with wrong settings rejects with TypeError (2005 ms)
  ✕ worker.updateSettings() succeeds (2002 ms)
  ✕ worker.updateSettings() with wrong settings rejects with TypeError (2001 ms)
  ✕ worker.updateSettings() rejects with InvalidStateError if closed (2001 ms)
  ✓ worker.dump() succeeds (2000 ms)
  ✕ worker.dump() rejects with InvalidStateError if closed (2001 ms)
  ✕ worker.getResourceUsage() succeeds (2001 ms)
  ✕ worker.close() succeeds (2001 ms)
  ✕ Worker emits "died" if worker process died unexpectedly (5002 ms)
  ✕ worker process ignores PIPE, HUP, ALRM, USR1 and USR2 signals (3001 ms)

  ● createWorker() succeeds

    thrown: "Exceeded timeout of 2000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      35 | });
      36 |
    > 37 | test('createWorker() succeeds', async () => {
         | ^
      38 | 	const onObserverNewWorker = jest.fn();
      39 |
      40 | 	mediasoup.observer.once('newworker', onObserverNewWorker);

      at Object.<anonymous> (node/src/test/test-Worker.ts:37:1)

  ● createWorker() with wrong settings rejects with TypeError

    thrown: "Exceeded timeout of 2000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      82 | }, 2000);
      83 |
    > 84 | test('createWorker() with wrong settings rejects with TypeError', async () => {
         | ^
      85 | 	// @ts-expect-error --- Testing purposes.
      86 | 	await expect(mediasoup.createWorker({ logLevel: 'chicken' })).rejects.toThrow(
      87 | 		TypeError

      at Object.<anonymous> (node/src/test/test-Worker.ts:84:1)

  ● worker.updateSettings() succeeds

    thrown: "Exceeded timeout of 2000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      111 | }, 2000);
      112 |
    > 113 | test('worker.updateSettings() succeeds', async () => {
          | ^
      114 | 	const worker = await mediasoup.createWorker();
      115 |
      116 | 	await expect(

      at Object.<anonymous> (node/src/test/test-Worker.ts:113:1)

  ● worker.updateSettings() with wrong settings rejects with TypeError

    thrown: "Exceeded timeout of 2000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      123 | }, 2000);
      124 |
    > 125 | test('worker.updateSettings() with wrong settings rejects with TypeError', async () => {
          | ^
      126 | 	const worker = await mediasoup.createWorker();
      127 |
      128 | 	// @ts-expect-error --- Testing purposes.

      at Object.<anonymous> (node/src/test/test-Worker.ts:125:1)

  ● worker.updateSettings() rejects with InvalidStateError if closed

    thrown: "Exceeded timeout of 2000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      136 | }, 2000);
      137 |
    > 138 | test('worker.updateSettings() rejects with InvalidStateError if closed', async () => {
          | ^
      139 | 	const worker = await mediasoup.createWorker();
      140 |
      141 | 	worker.close();

      at Object.<anonymous> (node/src/test/test-Worker.ts:138:1)

  ● worker.dump() rejects with InvalidStateError if closed

    thrown: "Exceeded timeout of 2000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      164 | }, 2000);
      165 |
    > 166 | test('worker.dump() rejects with InvalidStateError if closed', async () => {
          | ^
      167 | 	const worker = await mediasoup.createWorker();
      168 |
      169 | 	worker.close();

      at Object.<anonymous> (node/src/test/test-Worker.ts:166:1)

  ● worker.getResourceUsage() succeeds

    thrown: "Exceeded timeout of 2000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      174 | }, 2000);
      175 |
    > 176 | test('worker.getResourceUsage() succeeds', async () => {
          | ^
      177 | 	const worker = await mediasoup.createWorker();
      178 |
      179 | 	await expect(worker.getResourceUsage()).resolves.toMatchObject({});

      at Object.<anonymous> (node/src/test/test-Worker.ts:176:1)

  ● worker.close() succeeds

    thrown: "Exceeded timeout of 2000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      184 | }, 2000);
      185 |
    > 186 | test('worker.close() succeeds', async () => {
          | ^
      187 | 	const worker = await mediasoup.createWorker({ logLevel: 'warn' });
      188 | 	const onObserverClose = jest.fn();
      189 |

      at Object.<anonymous> (node/src/test/test-Worker.ts:186:1)

  ● Worker emits "died" if worker process died unexpectedly

    thrown: "Exceeded timeout of 5000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      [198](https://github.com/versatica/mediasoup/actions/runs/13721389481/job/38377476129?pr=1500#step:7:199) | }, 2000);
      199 |
    > 200 | test('Worker emits "died" if worker process died unexpectedly', async () => {
          | ^
      201 | 	let onDied: ReturnType<typeof jest.fn>;
      202 | 	let onObserverClose: ReturnType<typeof jest.fn>;
      203 |

      at Object.<anonymous> (node/src/test/test-Worker.ts:[200](https://github.com/versatica/mediasoup/actions/runs/13721389481/job/38377476129?pr=1500#step:7:201):1)

  ● worker process ignores PIPE, HUP, ALRM, USR1 and USR2 signals

    thrown: "Exceeded timeout of 3000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      308 | // so we just skip this test in Windows.
      309 | if (os.platform() !== 'win32') {
    > 310 | 	test('worker process ignores PIPE, HUP, ALRM, USR1 and USR2 signals', async () => {
          | 	^
      311 | 		const worker = await mediasoup.createWorker({ logLevel: 'warn' });
      312 |
      313 | 		await new Promise<void>((resolve, reject) => {

      at Object.<anonymous> (node/src/test/test-Worker.ts:310:2)
FAIL node/src/test/test-mediasoup.ts
  ✓ mediasoup.version matches version field in package.json (1 ms)
  ✕ setLoggerEventListeners() works (2001 ms)
  ✓ mediasoup.getSupportedRtpCapabilities() returns the mediasoup RTP capabilities (2 ms)
  ✓ parseScalabilityMode() works (2 ms)

  ● setLoggerEventListeners() works

    thrown: "Exceeded timeout of 2000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      18 | });
      19 |
    > 20 | test('setLoggerEventListeners() works', async () => {
         | ^
      21 | 	const onDebug = jest.fn();
      22 |
      23 | 	mediasoup.setLogEventListeners({

      at Object.<anonymous> (node/src/test/test-mediasoup.ts:20:1)

TODO

  • Fix the issue (if possible).
  • Uncomment the job in CI mediasoup-node.yaml
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
Development

Successfully merging a pull request may close this issue.

2 participants