Jednoduché testovací parametry pro fáze replikace
Společné testovací hodnoty
V příkladech nahraďte tyto cesty vlastními testovacími daty:
$exe = "C:\flexideo\develop-sources\1-Replikator\fxdReplicator_NET\ReplicatorHeadless\bin\Debug\ReplicatorHeadless.exe"
$instanceConfig = "C:\flexideo\test-instance\test-app.xcf"
$replicatorRoot = "C:\flexideo\replicator"
$inputXds = "C:\flexideo\test-instance\input\test.xds"
$versionFolder = "C:\flexideo\test-instance\versions\test-version"
Společná neinteraktivní část:
--instance-config "<instanceConfig>"
--replicator-root "<replicatorRoot>"
--mode parameters
--interactive false
--no-appdata-fallback true
--pause-on-message false
Význam cest:
instanceConfigje existující konfigurace testovací aplikace;replicatorRootje úplná runtime složka replikátoru sesystem.xcf, jazyky, XSLT a dalšími podpůrnými soubory;inputXdsje vstupní XDS;versionFolderje pracovní složka jedné testovací verze, kterou postupně používají fáze kompletace, tvorby DAD, tvorby stránek a instalace.
Aktuální bootstrap sice parsuje také --version, ale bez --version-folder
jeho použití zatím není implementované. Testovací sady proto záměrně používají
jen --version-folder.
1. Kontrola syntaxe XDS
Nejméně rizikový samostatný test:
& $exe `
--run-step syntax-check `
--instance-config $instanceConfig `
--replicator-root $replicatorRoot `
--input-xds $inputXds `
--mode parameters `
--interactive false `
--no-appdata-fallback true `
--pause-on-message false
$LASTEXITCODE
Potřebuje vstupní XDS, ale nepotřebuje verzi ani potvrzení instalace.
2. Kompletace XDS
První produkční fáze vytvoření verze:
& $exe `
--run-step xds-completing `
--instance-config $instanceConfig `
--replicator-root $replicatorRoot `
--input-xds $inputXds `
--version-folder $versionFolder `
--mode parameters `
--interactive false `
--no-appdata-fallback true `
--pause-on-message false
$LASTEXITCODE
Potřebuje vstupní XDS i cílovou pracovní složku verze.
3. Tvorba DAD
Navazuje na úspěšnou kompletaci XDS:
& $exe `
--run-step dad-creating `
--instance-config $instanceConfig `
--replicator-root $replicatorRoot `
--version-folder $versionFolder `
--mode parameters `
--interactive false `
--no-appdata-fallback true `
--pause-on-message false
$LASTEXITCODE
--input-xds se už nepředává. Fáze čte artefakty připravené v versionFolder.
4. Tvorba stránek
Navazuje na předchozí fáze:
& $exe `
--run-step pages-creating `
--instance-config $instanceConfig `
--replicator-root $replicatorRoot `
--version-folder $versionFolder `
--mode parameters `
--interactive false `
--no-appdata-fallback true `
--pause-on-message false
$LASTEXITCODE
Používá stejnou složku verze jako kompletace a tvorba DAD.
5. Instalace
Instalační fáze má záměrně navíc explicitní potvrzení:
& $exe `
--run-step installation `
--instance-config $instanceConfig `
--replicator-root $replicatorRoot `
--version-folder $versionFolder `
--confirm-installation true `
--mode parameters `
--interactive false `
--no-appdata-fallback true `
--pause-on-message false
$LASTEXITCODE
Bez --confirm-installation true je sada neplatná. Tento příklad používejte
jen proti izolované testovací instanci, nikoli proti produkčnímu serveru.
Spuštění přes existující harness
Načtení připravených sad:
Import-Module .\tests\headless\ReplicatorHeadlessHarness.psm1 -Force
$sets = & .\tests\headless\PhaseParameterSets.example.ps1 `
-InstanceConfig $instanceConfig `
-ReplicatorRoot $replicatorRoot `
-InputXds $inputXds `
-VersionFolder $versionFolder
Ruční spuštění jedné bezpečné fáze:
$result = Invoke-ReplicatorHeadless `
-ExePath $exe `
-Arguments $sets.SyntaxCheck `
-TimeoutSeconds 30
$result | Format-List ExitCode, StdOut, StdErr
Pro celý proces spouštějte fáze jednotlivě a po každé kontrolujte ExitCode:
foreach ($phase in 'XdsCompleting', 'DadCreating', 'PagesCreating') {
$result = Invoke-ReplicatorHeadless `
-ExePath $exe `
-Arguments $sets[$phase] `
-TimeoutSeconds 120
if ($result.ExitCode -ne 0) {
throw "Fáze $phase selhala: $($result.StdErr)"
}
}
Instalaci do této smyčky záměrně nepřidávejte automaticky. Spouštějte ji samostatně až po kontrole výstupů předchozích fází.
Očekávané exit codes
| Kód | Význam |
|---|---|
0 | úspěch |
10 | replikační/doménová chyba |
20 | technická chyba |
30 | chyba argumentů |
40 | chybějící potvrzení instalace |
99 | neošetřená výjimka |
Konkrétní sada pro Priklad
Pro lokální instanci Priklad je připravena dávka
tests/headless/Run-Priklad-Phase.cmd. Používá:
--instance-config "C:\flexideo\aplikace\Priklad\!defiinition\Priklad.xcf"
--input-xds "C:\flexideo\aplikace\Priklad\!defiinition\Priklad.xds"
--version-folder "C:\flexideo\aplikace\Priklad\!defiinition\versions\ver01-01-01\development"
--replicator-root "C:\flexideo\replicator"
config_version.xcf se nepředává jako samostatný argument. Headless replikátor
jej načte ze zadané --version-folder.
Z kořene repozitáře lze jednotlivé fáze spustit takto:
tests\headless\Run-Priklad-Phase.cmd syntax-check
tests\headless\Run-Priklad-Phase.cmd xds-completing
tests\headless\Run-Priklad-Phase.cmd dad-creating
tests\headless\Run-Priklad-Phase.cmd pages-creating
tests\headless\Run-Priklad-Phase.cmd installation CONFIRM
Bez argumentu dávka spustí pouze syntax-check. Fáze mají být spouštěny v
uvedeném pořadí. Instalace je oddělená a vyžaduje doslovný druhý argument
CONFIRM.
Bezpečnostní omezení současných testů
Otázky při chybějícím versions\updates-list.mxl jsou nyní vedené přes
rpInput.MsgBox; v neinteraktivním režimu se vypíší do konzole a neotevřou
WinForms dialog. Přesto používejte krátký timeout jako regresní ochranu.
- instalační fázi používejte jen na výslovně určené testovací instanci;
- před automatizací ověřte obsah
StdOut,StdErra skutečný exit code; syntax-checkje lokální preflight XML a známých vlastností. Neprovádí kompletaci ani kontrolu externích referencí.