feat(burn-in): capacity burn-in harness (Test-CapacityBurnIn.ps1)
scripts/Test-CapacityBurnIn.ps1 (new): N-way parallel burn-in harness using Start-Job to launch N concurrent Invoke-CIJob.ps1 child processes for R rounds. After each round asserts: all VMs destroyed, all jobs got distinct IPs, vm-start.lock gone, ip-leases empty, wall time recorded. Params: -RepoUrl (mandatory), -IPList = @() (optional, auto-detects via VMware Tools when empty), -GiteaCredentialTarget = 'GiteaPAT', -Parallelism = 4, -Rounds = 3, -RoundTimeoutMinutes = 60, plus all Invoke-CIJob params. scripts/Start-BurnInTest.ps1 (new): lab wrapper with all default params hardcoded (template F:\CI\Templates\WinBuild2025, credentials BuildVMGuest/GiteaPAT, etc.) for daily use. Exposes -Rounds, -Parallelism, -BuildCommand, -RoundTimeoutMinutes.
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
#Requires -Version 5.1
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Wrapper di lancio per Test-CapacityBurnIn.ps1 con i parametri del lab locale.
|
||||
|
||||
.DESCRIPTION
|
||||
Esegue il burn-in a 4 job / 3 round contro il repo burnin-dummy su Gitea.
|
||||
Tutti i parametri fissi del lab sono qui hardcoded; i parametri variabili
|
||||
(Rounds, Parallelism, BuildCommand) possono essere sovrascritti da CLI.
|
||||
|
||||
Prerequisiti:
|
||||
- Repo burnin-dummy creato su Gitea (anche vuoto con branch main)
|
||||
- Credenziali guest nel Credential Manager target 'BuildVMGuest'
|
||||
- Gitea PAT nel Credential Manager target 'GiteaPAT'
|
||||
New-StoredCredential -Target 'GiteaPAT' -UserName 'ci' -Password '<pat>' -Persist LocalMachine
|
||||
- Template WinBuild2025 con snapshot BaseClean in stato powered-off
|
||||
- VMware Tools attivo nel guest (per auto-detect IP)
|
||||
|
||||
Esempi di utilizzo:
|
||||
# Run completo (3 round, 4 job paralleli)
|
||||
.\Start-BurnInTest.ps1
|
||||
|
||||
# Smoke veloce (1 round, 2 job)
|
||||
.\Start-BurnInTest.ps1 -Rounds 1 -Parallelism 2
|
||||
|
||||
# Verifica parallelismo reale (build da 2 minuti, 1 round)
|
||||
.\Start-BurnInTest.ps1 -Rounds 1 -BuildCommand 'Start-Sleep 120'
|
||||
|
||||
.PARAMETER Rounds
|
||||
Numero di round sequenziali. Default: 3.
|
||||
|
||||
.PARAMETER Parallelism
|
||||
Job concorrenti per round. Default: 4.
|
||||
|
||||
.PARAMETER BuildCommand
|
||||
Comando da eseguire nel guest come passo build.
|
||||
Default: 'exit 0' (smoke veloce — nessun build reale).
|
||||
Usare 'Start-Sleep 120' per mantenere 4 VM attive e osservare la concorrenza.
|
||||
|
||||
.PARAMETER RoundTimeoutMinutes
|
||||
Minuti massimi di attesa per ogni round prima di interrompere i job rimasti.
|
||||
Default: 60.
|
||||
#>
|
||||
param(
|
||||
[int] $Rounds = 3,
|
||||
[int] $Parallelism = 4,
|
||||
[string] $BuildCommand = 'exit 0',
|
||||
[int] $RoundTimeoutMinutes = 60
|
||||
)
|
||||
|
||||
Set-StrictMode -Version Latest
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
|
||||
& "$scriptDir\Test-CapacityBurnIn.ps1" `
|
||||
-RepoUrl 'http://10.10.20.11:3100/ci/burnin-dummy.git' `
|
||||
-Branch 'main' `
|
||||
-TemplatePath 'F:\CI\Templates\WinBuild2025\WinBuild2025.vmx' `
|
||||
-SnapshotName 'BaseClean' `
|
||||
-CloneBaseDir 'F:\CI\BuildVMs' `
|
||||
-ArtifactBaseDir 'F:\CI\Artifacts' `
|
||||
-GuestCredentialTarget 'BuildVMGuest' `
|
||||
-GiteaCredentialTarget 'GiteaPAT' `
|
||||
-VmrunPath 'C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe' `
|
||||
-GuestOS 'Auto' `
|
||||
-BuildCommand $BuildCommand `
|
||||
-Parallelism $Parallelism `
|
||||
-Rounds $Rounds `
|
||||
-RoundTimeoutMinutes $RoundTimeoutMinutes
|
||||
|
||||
exit $LASTEXITCODE
|
||||
Reference in New Issue
Block a user