Skip to main content

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:

  • instanceConfig je existující konfigurace testovací aplikace;
  • replicatorRoot je úplná runtime složka replikátoru se system.xcf, jazyky, XSLT a dalšími podpůrnými soubory;
  • inputXds je vstupní XDS;
  • versionFolder je 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ódVýznam
0úspěch
10replikační/doménová chyba
20technická chyba
30chyba argumentů
40chybějící potvrzení instalace
99neoš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, StdErr a skutečný exit code;
  • syntax-check je lokální preflight XML a známých vlastností. Neprovádí kompletaci ani kontrolu externích referencí.