diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-10-13 00:30:39 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-10-13 00:30:39 +0200 |
| commit | efbcff05721e71f1fdfcc30b7ee1b44ca1670762 (patch) | |
| tree | 23018295b653510900ac24b71a780d74e32a01a2 /packaging/win/build-node-runtime.ps1 | |
| parent | e9a93c21ff28daa6f4017849b42fe073a5ee2005 (diff) | |
| download | meshbay-efbcff05721e71f1fdfcc30b7ee1b44ca1670762.tar.gz | |
test(node): run the connection processes on Windows, source and frozen
Connection processes and the larger UDP receive buffer were written and
measured on Linux; nothing had run on Windows, and `meshbay-node.exe
webrtc-worker` had never run from a frozen build on any system.
- test_connection_processes.py failed on Windows (8 tests): the selector
loop the suite uses there cannot start a process. A test marked
`daemon_loop` now runs on the daemon's own loop, chosen through
pytest-asyncio's loop factories.
- The build starts both frozen executables as connection processes and
carries a connection through each (smoke-connection-process.py). The
daemon's own smoke test never signs in to a hub, which is when the
processes start.
- The warning for a receive buffer below what was asked named
net.core.rmem_max on every system; it names it on Linux only. Windows
grants the 4 MB.
Measured on an installed build in service mode, docs/WINDOWS-PORT.md §5.12:
two processes at startup and on a live change, a browser's handshake, chat,
a 200 MB download over 8 connections across both processes, an upload, a
video stream, and stop, restart and start leaving no process behind.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packaging/win/build-node-runtime.ps1')
| -rw-r--r-- | packaging/win/build-node-runtime.ps1 | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/packaging/win/build-node-runtime.ps1 b/packaging/win/build-node-runtime.ps1 index aa5e759..c6a8af1 100644 --- a/packaging/win/build-node-runtime.ps1 +++ b/packaging/win/build-node-runtime.ps1 @@ -156,9 +156,6 @@ Step "default.env copied from QE\" # --- 6. publish ---------------------------------------------------- Move-Item $frozen $OutDir Remove-Item -Recurse -Force $pyiWork, $pyiDist -ErrorAction SilentlyContinue -if ($createdVenv -and -not $KeepBuildVenv) { - Remove-Item -Recurse -Force $BuildVenv -ErrorAction SilentlyContinue -} # --- 7. smoke test ----------------------------------------------- # Capture, do NOT pipe to Select-Object -First: that stops the native process @@ -192,6 +189,19 @@ $expect = [regex]::Match((Get-Content -LiteralPath $initPy -Raw), '__version__\s if (-not $expect) { throw "cannot read __version__ from $initPy" } & (Join-Path $WinDir "smoke-node-runtime.ps1") -Exe $exe -ExpectVersion $expect +# That daemon never signs in to a hub, so it never starts a connection process +# (connection_processes above 1): a frozen node starts those as copies of +# itself, a path no source checkout takes. Both executables, since the Store +# package's node is the windowless one. Run by the build interpreter, which +# has the node's modules for the other end -- hence the venv removed after. +Step "smoke test: the frozen node as a connection process" +& $Python (Join-Path $WinDir "smoke-connection-process.py") $exe (Join-Path $OutDir "meshbay-nodew.exe") +if ($LASTEXITCODE -ne 0) { throw "a frozen connection process did not carry a connection" } + +if ($createdVenv -and -not $KeepBuildVenv) { + Remove-Item -Recurse -Force $BuildVenv -ErrorAction SilentlyContinue +} + $mb = (Get-ChildItem $OutDir -Recurse | Measure-Object Length -Sum).Sum / 1MB Write-Host "" Write-Host ("OK node-runtime ready at {0} ({1:N0} MB)" -f $OutDir, $mb) -ForegroundColor Green |