39 lines
2.4 KiB
Diff
39 lines
2.4 KiB
Diff
--- original
|
|
+++ private
|
|
@@ -1,9 +1,9 @@
|
|
#requires -Version 7.0
|
|
param([Parameter(Mandatory=$true)][string]$ServerExe)
|
|
$ErrorActionPreference = 'Stop'
|
|
-$taskRoot = (Resolve-Path (Join-Path $PSScriptRoot '../../..')).Path
|
|
+$taskRoot = $PSScriptRoot
|
|
$exe = (Resolve-Path -LiteralPath $ServerExe).Path
|
|
-$runRoot = Join-Path $taskRoot ('.local/rest-coverage-' + (Get-Date -Format 'yyyyMMdd-HHmmss'))
|
|
+$runRoot = Join-Path $taskRoot 'rest'
|
|
$storePath = Join-Path $runRoot 'store'
|
|
New-Item -ItemType Directory -Path $runRoot,$storePath | Out-Null
|
|
$payload = Get-Content -LiteralPath (Join-Path $PSScriptRoot 'coverage-probe.json') -Raw | ConvertFrom-Json -AsHashtable
|
|
@@ -23,6 +23,7 @@
|
|
function Start-ProbeServer {
|
|
$script:launch++
|
|
$startOptions = @{
|
|
+ WorkingDirectory = Join-Path $PSScriptRoot 'unrelated-cwd'
|
|
FilePath = $exe
|
|
ArgumentList = @('--bind',"127.0.0.1:$probePort",'--data-dir',('"'+$storePath+'"'),'--token-file',('"'+$tokenPath+'"'))
|
|
PassThru = $true
|
|
@@ -32,6 +33,7 @@
|
|
# WindowStyle is Windows-only; Unix keeps the child attached to this probe.
|
|
if ($IsWindows) { $startOptions.WindowStyle = 'Hidden' }
|
|
$script:probeProcess = Start-Process @startOptions
|
|
+ @{pid=$script:probeProcess.Id;exe=$exe;arguments=$startOptions.ArgumentList;cwd=$startOptions.WorkingDirectory;PATH=$env:PATH;started=(Get-Date -Format o)} | ConvertTo-Json -Depth 10 | Set-Content (Join-Path $runRoot "server-$script:launch.launch.json")
|
|
for ($attempt = 0; $attempt -lt 40; $attempt++) {
|
|
if ($script:probeProcess.HasExited) { throw 'Probe server exited before readiness' }
|
|
try { $ready=Invoke-WebRequest "$base/health/ready" -TimeoutSec 1; if ($ready.StatusCode -eq 200) { return } } catch {}
|
|
@@ -44,6 +46,7 @@
|
|
Stop-Process -InputObject $script:probeProcess
|
|
$script:probeProcess.WaitForExit()
|
|
}
|
|
+ if ($null -ne $script:probeProcess) { @{pid=$script:probeProcess.Id;has_exited=$script:probeProcess.HasExited;exit_code=$script:probeProcess.ExitCode;stopped=(Get-Date -Format o);method='owned probe Stop-Process after assertions'} | ConvertTo-Json | Set-Content (Join-Path $runRoot "server-$script:launch.stop.json") }
|
|
$script:probeProcess = $null
|
|
}
|
|
function Call-Probe([string]$name,[string]$method,[string]$path,$body=$null,[string]$etag='',[int]$expectedStatus=200) {
|