From 3fe88abecdd30ef64270ad9617bccc05e2c08243 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder <231804+danez@users.noreply.github.com> Date: Fri, 3 Jun 2022 15:40:53 +0200 Subject: [PATCH 1/2] chore: properly increase available ports --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7208f96fe2a..066e2c508df 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -66,7 +66,7 @@ jobs: # This improves Windows network performance, we need this since we open many ports in our tests - name: Increase Windows port limit and reduce time wait delay run: | - REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters /v MaxUserPort /t REG_DWORD /d 32768 /f + netsh int ipv4 set dynamicport tcp start=1025 num=64511 REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters /v TcpTimedWaitDelay /t REG_DWORD /d 30 /f if: "${{ matrix.os == 'windows-latest' && !steps.release-check.outputs.IS_RELEASE }}" - name: Git checkout From b7bcd494918fc2e076858eefd4ebf1e3b9eafcba Mon Sep 17 00:00:00 2001 From: Daniel Tschinder <231804+danez@users.noreply.github.com> Date: Fri, 3 Jun 2022 16:12:04 +0200 Subject: [PATCH 2/2] chore: only use available ports and not guess ports --- npm-shrinkwrap.json | 13 ------------- package.json | 1 - tests/integration/utils/dev-server.js | 21 +++------------------ 3 files changed, 3 insertions(+), 32 deletions(-) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index aec28be5e6d..a7e45b5d991 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -141,7 +141,6 @@ "nock": "^13.2.4", "p-timeout": "^4.0.0", "rewiremock": "^3.14.3", - "seedrandom": "^3.0.5", "serialize-javascript": "^6.0.0", "sinon": "^13.0.0", "sort-on": "^4.1.0", @@ -20012,12 +20011,6 @@ "node": ">=8" } }, - "node_modules/seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "dev": true - }, "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -38179,12 +38172,6 @@ "xmlchars": "^2.1.1" } }, - "seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "dev": true - }, "seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", diff --git a/package.json b/package.json index 7be7175ee2a..5c9eac67b63 100644 --- a/package.json +++ b/package.json @@ -336,7 +336,6 @@ "nock": "^13.2.4", "p-timeout": "^4.0.0", "rewiremock": "^3.14.3", - "seedrandom": "^3.0.5", "serialize-javascript": "^6.0.0", "sinon": "^13.0.0", "sort-on": "^4.1.0", diff --git a/tests/integration/utils/dev-server.js b/tests/integration/utils/dev-server.js index 8f38301075c..46f2147ccaf 100644 --- a/tests/integration/utils/dev-server.js +++ b/tests/integration/utils/dev-server.js @@ -5,25 +5,11 @@ const execa = require('execa') const getPort = require('get-port') const omit = require('omit.js').default const pTimeout = require('p-timeout') -const seedrandom = require('seedrandom') const cliPath = require('./cli-path') const { handleQuestions } = require('./handle-questions') const { killProcess } = require('./process') -// each process gets a starting port based on the pid -const rng = seedrandom(`${process.pid}`) -const getRandomPortStart = function () { - const startPort = Math.floor(rng() * RANDOM_PORT_SHIFT) + RANDOM_PORT_SHIFT - return startPort -} - -// To avoid collisions with frameworks ports -const RANDOM_PORT_SHIFT = 1e4 -const FRAMEWORK_PORT_SHIFT = 1e3 - -let currentPort = getRandomPortStart() - const ENVS_TO_OMIT = ['LANG', 'LC_ALL'] const getExecaOptions = ({ cwd, env }) => ({ @@ -34,15 +20,14 @@ const getExecaOptions = ({ cwd, env }) => ({ }) const startServer = async ({ cwd, offline = true, env = {}, args = [], expectFailure = false, prompt }) => { - const tryPort = currentPort - currentPort += 1 - const port = await getPort({ port: tryPort }) + const port = await getPort() + const staticPort = await getPort() const host = 'localhost' const url = `http://${host}:${port}` console.log(`Starting dev server on port: ${port} in directory ${path.basename(cwd)}`) const ps = execa( cliPath, - ['dev', offline ? '--offline' : '', '-p', port, '--staticServerPort', port + FRAMEWORK_PORT_SHIFT, ...args], + ['dev', offline ? '--offline' : '', '-p', port, '--staticServerPort', staticPort, ...args], getExecaOptions({ cwd, env }), )