feat(low): sprint 4 Low items tutti 5 completati

codice:
- template/Validate-SetupState.ps1: docblock HTTP/Basic -> HTTPS/Basic, port 5986
- scripts/Validate-HostState.ps1 (nuovo): check ACL SSH key ci_linux, Credential Manager
  target BuildVMGuest, struttura dir F:\CI\, vmrun.exe raggiungibile

docs:
- docs/TEST-PLAN-v1.3-to-HEAD.md sezione 3.6: campi JSONL corretti (cloneSec/startSec/
  ipSec/winrmSec/destroySec/totalBootSec) per riflettere output reale di Measure-CIBenchmark.ps1
- docs/CI-FLOW.md tabella failure: 'partial artifacts' -> Get-GuestDiagnostics a diagnostics/
- docs/CHANGELOG.md (nuovo): log reverse-cronologico di tutti gli sprint completati
- plans/final-master-plan.md: tutti i Low marcati done
This commit is contained in:
Simone
2026-05-13 10:26:08 +02:00
parent e9d0f38f9f
commit 8ca3e530c5
6 changed files with 358 additions and 16 deletions
+10 -9
View File
@@ -471,22 +471,23 @@ Test-Path 'F:\CI\Logs\benchmark.jsonl'
# Expected: True, file has 5 lines (one per iteration)
# 3. Parse JSONL and examine timing breakdown
# Fields: iteration, template, snapshot, cloneSec, startSec, ipSec, winrmSec, destroySec, totalBootSec, vmIP, error
$benchmarks = Get-Content 'F:\CI\Logs\benchmark.jsonl' | ConvertFrom-Json
$benchmarks | Select iteration, phase, duration_ms | Format-Table
# Expected: Phases (clone, start, ip, winrm, destroy) with millisecond durations
$benchmarks | Select-Object iteration, cloneSec, startSec, ipSec, winrmSec, destroySec, totalBootSec | Format-Table
# Expected: one row per iteration; all Sec fields populated; totalBootSec = cloneSec+startSec+ipSec+winrmSec
# 4. Calculate statistics
$times = $benchmarks | Where phase -eq 'clone' | Select -ExpandProperty duration_ms
$avg = ($times | Measure-Object -Average).Average
$min = ($times | Measure-Object -Minimum).Minimum
$max = ($times | Measure-Object -Maximum).Maximum
Write-Host "Clone phase: avg=${avg}ms, min=${min}ms, max=${max}ms"
# 4. Calculate clone statistics (values in seconds)
$cloneTimes = $benchmarks | Select-Object -ExpandProperty cloneSec
$avg = ($cloneTimes | Measure-Object -Average).Average
$min = ($cloneTimes | Measure-Object -Minimum).Minimum
$max = ($cloneTimes | Measure-Object -Maximum).Maximum
Write-Host "Clone phase: avg=${avg}s, min=${min}s, max=${max}s"
```
**Pass Criteria**:
- [x] Script completes N iterations without error
- [x] JSONL output created with correct structure
- [x] Five phases present (clone, start, ip, winrm, destroy)
- [x] Five phase fields present (cloneSec, startSec, ipSec, winrmSec, destroySec)
- [x] Durations reasonable (clone 1-5s, start 2-5s, IP <5s, WinRM 1-3s, destroy <2s)
- [x] Variance visible across iterations (natural fluctuation)