优化
This commit is contained in:
@@ -1,18 +1,49 @@
|
||||
import { jest } from '@jest/globals';
|
||||
import fs from 'fs';
|
||||
import * as Path from 'path';
|
||||
import process from 'process';
|
||||
import { setup, teardown } from 'jest-dev-server';
|
||||
import { Signaling, WebSocketSignaling } from "../../src/core/signaling.js";
|
||||
import { MockSignaling, reset } from "../mocks/mocksignaling.js";
|
||||
import { waitFor, sleep, serverExeName } from "../helpers/testutils.js";
|
||||
|
||||
const portNumber = 8081;
|
||||
const runSignalingIntegration = process.env.RUN_SIGNALING_INTEGRATION === '1';
|
||||
const signalingModes = runSignalingIntegration
|
||||
? [{ mode: "mock" }, { mode: "http" }, { mode: "websocket" }]
|
||||
: [{ mode: "mock" }];
|
||||
|
||||
jest.setTimeout(10000);
|
||||
|
||||
describe.each([
|
||||
{ mode: "mock" },
|
||||
{ mode: "http" },
|
||||
{ mode: "websocket" },
|
||||
])('signaling test in public mode', ({ mode }) => {
|
||||
function buildServerCommand(args = '') {
|
||||
const binaryPath = Path.resolve(`../bin~/${serverExeName()}`);
|
||||
const buildEntryPath = Path.resolve('../build/index.js');
|
||||
const serverCommand = fs.existsSync(binaryPath)
|
||||
? `"${binaryPath}"`
|
||||
: `"${process.execPath}" "${buildEntryPath}"`;
|
||||
|
||||
return `${serverCommand} ${args}`.trim();
|
||||
}
|
||||
|
||||
function getPortForMode(mode, isPrivate) {
|
||||
if (mode === 'mock') {
|
||||
return portNumber;
|
||||
}
|
||||
|
||||
const publicPorts = { http: portNumber + 1, websocket: portNumber + 2 };
|
||||
const privatePorts = { http: portNumber + 3, websocket: portNumber + 4 };
|
||||
return (isPrivate ? privatePorts : publicPorts)[mode];
|
||||
}
|
||||
|
||||
function createHttpSignaling(port) {
|
||||
return new Signaling(1, `http://localhost:${port}`);
|
||||
}
|
||||
|
||||
function createWebSocketSignaling(port) {
|
||||
return new WebSocketSignaling(1, `ws://localhost:${port}`);
|
||||
}
|
||||
|
||||
describe.each(signalingModes)('signaling test in public mode', ({ mode }) => {
|
||||
let signaling1;
|
||||
let signaling2;
|
||||
const connectionId1 = "12345";
|
||||
@@ -26,22 +57,22 @@ describe.each([
|
||||
signaling1 = new MockSignaling(1);
|
||||
signaling2 = new MockSignaling(1);
|
||||
} else {
|
||||
const path = Path.resolve(`../bin~/${serverExeName()}`);
|
||||
let cmd = `${path} -p ${portNumber}`;
|
||||
const serverPort = getPortForMode(mode, false);
|
||||
let cmd = buildServerCommand(`-p ${serverPort}`);
|
||||
if (mode == "http") {
|
||||
cmd += " -t http";
|
||||
}
|
||||
|
||||
await setup({ command: cmd, port: portNumber, usedPortAction: 'error' });
|
||||
await setup({ command: cmd, port: serverPort, usedPortAction: 'error' });
|
||||
|
||||
if (mode == "http") {
|
||||
signaling1 = new Signaling(1);
|
||||
signaling2 = new Signaling(1);
|
||||
signaling1 = createHttpSignaling(serverPort);
|
||||
signaling2 = createHttpSignaling(serverPort);
|
||||
}
|
||||
|
||||
if (mode == "websocket") {
|
||||
signaling1 = new WebSocketSignaling(1);
|
||||
signaling2 = new WebSocketSignaling(1);
|
||||
signaling1 = createWebSocketSignaling(serverPort);
|
||||
signaling2 = createWebSocketSignaling(serverPort);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,8 +81,8 @@ describe.each([
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await signaling1.stop();
|
||||
await signaling2.stop();
|
||||
await signaling1?.stop();
|
||||
await signaling2?.stop();
|
||||
signaling1 = null;
|
||||
signaling2 = null;
|
||||
|
||||
@@ -207,11 +238,7 @@ describe.each([
|
||||
});
|
||||
});
|
||||
|
||||
describe.each([
|
||||
{ mode: "mock" },
|
||||
{ mode: "http" },
|
||||
{ mode: "websocket" },
|
||||
])('signaling test in private mode', ({ mode }) => {
|
||||
describe.each(signalingModes)('signaling test in private mode', ({ mode }) => {
|
||||
let signaling1;
|
||||
let signaling2;
|
||||
const connectionId = "12345";
|
||||
@@ -226,22 +253,22 @@ describe.each([
|
||||
return;
|
||||
}
|
||||
|
||||
const path = Path.resolve(`../bin~/${serverExeName()}`);
|
||||
let cmd = `${path} -p ${portNumber} -m private`;
|
||||
const serverPort = getPortForMode(mode, true);
|
||||
let cmd = buildServerCommand(`-p ${serverPort} -m private`);
|
||||
if (mode == "http") {
|
||||
cmd += " -t http";
|
||||
}
|
||||
|
||||
await setup({ command: cmd, port: portNumber, usedPortAction: 'error' });
|
||||
await setup({ command: cmd, port: serverPort, usedPortAction: 'error' });
|
||||
|
||||
if (mode == "http") {
|
||||
signaling1 = new Signaling(1);
|
||||
signaling2 = new Signaling(1);
|
||||
signaling1 = createHttpSignaling(serverPort);
|
||||
signaling2 = createHttpSignaling(serverPort);
|
||||
}
|
||||
|
||||
if (mode == "websocket") {
|
||||
signaling1 = new WebSocketSignaling(1);
|
||||
signaling2 = new WebSocketSignaling(1);
|
||||
signaling1 = createWebSocketSignaling(serverPort);
|
||||
signaling2 = createWebSocketSignaling(serverPort);
|
||||
}
|
||||
|
||||
await signaling1.start();
|
||||
@@ -249,8 +276,8 @@ describe.each([
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await signaling1.stop();
|
||||
await signaling2.stop();
|
||||
await signaling1?.stop();
|
||||
await signaling2?.stop();
|
||||
signaling1 = null;
|
||||
signaling2 = null;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user