VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /usr/local/lib/node_modules/mediasoup/test/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/local/lib/node_modules/mediasoup/test/test-AudioLevelObserver.js
const { toBeType } = require('jest-tobetype');
const mediasoup = require('../');
const { createWorker } = mediasoup;

expect.extend({ toBeType });

let worker;
let router;
let audioLevelObserver;

const mediaCodecs =
[
	{
		kind       : 'audio',
		mimeType   : 'audio/opus',
		clockRate  : 48000,
		channels   : 2,
		parameters :
		{
			useinbandfec : 1,
			foo          : 'bar'
		}
	}
];

beforeAll(async () =>
{
	worker = await createWorker();
	router = await worker.createRouter({ mediaCodecs });
});

afterAll(() => worker.close());

test('router.createAudioLevelObserver() succeeds', async () =>
{
	const onObserverNewRtpObserver = jest.fn();

	router.observer.once('newrtpobserver', onObserverNewRtpObserver);

	audioLevelObserver = await router.createAudioLevelObserver();

	expect(onObserverNewRtpObserver).toHaveBeenCalledTimes(1);
	expect(onObserverNewRtpObserver).toHaveBeenCalledWith(audioLevelObserver);
	expect(audioLevelObserver.id).toBeType('string');
	expect(audioLevelObserver.closed).toBe(false);
	expect(audioLevelObserver.paused).toBe(false);
	expect(audioLevelObserver.appData).toEqual({});

	await expect(router.dump())
		.resolves
		.toMatchObject(
			{
				rtpObserverIds : [ audioLevelObserver.id ]
			});
}, 2000);

test('router.createAudioLevelObserver() with wrong arguments rejects with TypeError', async () =>
{
	await expect(router.createAudioLevelObserver({ maxEntries: 0 }))
		.rejects
		.toThrow(TypeError);

	await expect(router.createAudioLevelObserver({ maxEntries: -10 }))
		.rejects
		.toThrow(TypeError);

	await expect(router.createAudioLevelObserver({ threshold: 'foo' }))
		.rejects
		.toThrow(TypeError);

	await expect(router.createAudioLevelObserver({ interval: false }))
		.rejects
		.toThrow(TypeError);

	await expect(router.createAudioLevelObserver({ appData: 'NOT-AN-OBJECT' }))
		.rejects
		.toThrow(TypeError);
}, 2000);

test('audioLevelObserver.pause() and resume() succeed', async () =>
{
	await audioLevelObserver.pause();

	expect(audioLevelObserver.paused).toBe(true);

	await audioLevelObserver.resume();

	expect(audioLevelObserver.paused).toBe(false);
}, 2000);

test('audioLevelObserver.close() succeeds', async () =>
{
	// We need different a AudioLevelObserver instance here.
	const audioLevelObserver2 =
		await router.createAudioLevelObserver({ maxEntries: 8 });

	let dump = await router.dump();

	expect(dump.rtpObserverIds.length).toBe(2);

	audioLevelObserver2.close();

	expect(audioLevelObserver2.closed).toBe(true);

	dump = await router.dump();

	expect(dump.rtpObserverIds.length).toBe(1);

}, 2000);

test('AudioLevelObserver emits "routerclose" if Router is closed', async () =>
{
	// We need different Router and AudioLevelObserver instances here.
	const router2 = await worker.createRouter({ mediaCodecs });
	const audioLevelObserver2 = await router2.createAudioLevelObserver();

	await new Promise((resolve) =>
	{
		audioLevelObserver2.on('routerclose', resolve);
		router2.close();
	});

	expect(audioLevelObserver2.closed).toBe(true);
}, 2000);

test('AudioLevelObserver emits "routerclose" if Worker is closed', async () =>
{
	await new Promise((resolve) =>
	{
		audioLevelObserver.on('routerclose', resolve);
		worker.close();
	});

	expect(audioLevelObserver.closed).toBe(true);
}, 2000);

VaKeR 2022