last pass before testing
This commit is contained in:
@@ -59,3 +59,9 @@ Artifacts:
|
|||||||
4. Inspect the captured websocket events and exported fixtures.
|
4. Inspect the captured websocket events and exported fixtures.
|
||||||
5. Convert the best captures into sanitized checked-in fixtures and tests.
|
5. Convert the best captures into sanitized checked-in fixtures and tests.
|
||||||
6. Keep Node available to compare any surprising turn behavior before changing infrastructure.
|
6. Keep Node available to compare any surprising turn behavior before changing infrastructure.
|
||||||
|
|
||||||
|
Useful helper scripts:
|
||||||
|
|
||||||
|
- [scripts/cloud/Invoke-LiveJiboPrep.ps1](C:/Projects/JiboExperiments/OpenJibo/scripts/cloud/Invoke-LiveJiboPrep.ps1)
|
||||||
|
- [scripts/cloud/Get-WebSocketCaptureSummary.ps1](C:/Projects/JiboExperiments/OpenJibo/scripts/cloud/Get-WebSocketCaptureSummary.ps1)
|
||||||
|
- [scripts/cloud/Import-WebSocketCaptureFixture.ps1](C:/Projects/JiboExperiments/OpenJibo/scripts/cloud/Import-WebSocketCaptureFixture.ps1)
|
||||||
|
|||||||
75
OpenJibo/scripts/cloud/Import-WebSocketCaptureFixture.ps1
Normal file
75
OpenJibo/scripts/cloud/Import-WebSocketCaptureFixture.ps1
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$SourcePath,
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$FixtureName,
|
||||||
|
[string]$DestinationDirectory = "..\..\src\Jibo.Cloud\node\fixtures\websocket",
|
||||||
|
[switch]$Overwrite
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
function Redact-Object {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
$Value
|
||||||
|
)
|
||||||
|
|
||||||
|
if ($null -eq $Value) {
|
||||||
|
return $null
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($Value -is [string]) {
|
||||||
|
if ($Value -match "token" -or $Value -match "bearer" -or $Value -match "session") {
|
||||||
|
return "[redacted]"
|
||||||
|
}
|
||||||
|
|
||||||
|
return $Value
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($Value -is [System.Collections.IEnumerable] -and -not ($Value -is [string])) {
|
||||||
|
$items = @()
|
||||||
|
foreach ($item in $Value) {
|
||||||
|
$items += ,(Redact-Object -Value $item)
|
||||||
|
}
|
||||||
|
|
||||||
|
return $items
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($Value.PSObject -and $Value.PSObject.Properties.Count -gt 0) {
|
||||||
|
$result = [ordered]@{}
|
||||||
|
foreach ($property in $Value.PSObject.Properties) {
|
||||||
|
if ($property.Name -match "token" -or $property.Name -match "authorization") {
|
||||||
|
$result[$property.Name] = "[redacted]"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
$result[$property.Name] = Redact-Object -Value $property.Value
|
||||||
|
}
|
||||||
|
|
||||||
|
return [pscustomobject]$result
|
||||||
|
}
|
||||||
|
|
||||||
|
return $Value
|
||||||
|
}
|
||||||
|
|
||||||
|
$resolvedSourcePath = Resolve-Path -LiteralPath $SourcePath -ErrorAction Stop
|
||||||
|
$resolvedDestinationDirectory = [System.IO.Path]::GetFullPath((Join-Path $PSScriptRoot $DestinationDirectory))
|
||||||
|
New-Item -ItemType Directory -Force -Path $resolvedDestinationDirectory | Out-Null
|
||||||
|
|
||||||
|
$fixture = Get-Content -LiteralPath $resolvedSourcePath -Raw | ConvertFrom-Json -Depth 50
|
||||||
|
$sanitized = Redact-Object -Value $fixture
|
||||||
|
$sanitized.name = $FixtureName
|
||||||
|
$sanitized.session.token = "[redacted]"
|
||||||
|
|
||||||
|
$destinationPath = Join-Path $resolvedDestinationDirectory ($FixtureName + ".flow.json")
|
||||||
|
if ((Test-Path -LiteralPath $destinationPath) -and -not $Overwrite) {
|
||||||
|
throw "Destination fixture already exists: $destinationPath. Use -Overwrite to replace it."
|
||||||
|
}
|
||||||
|
|
||||||
|
$json = $sanitized | ConvertTo-Json -Depth 50
|
||||||
|
[System.IO.File]::WriteAllText($destinationPath, $json + [Environment]::NewLine)
|
||||||
|
|
||||||
|
Write-Host "Imported sanitized websocket fixture:"
|
||||||
|
Write-Host " - source: $resolvedSourcePath"
|
||||||
|
Write-Host " - destination: $destinationPath"
|
||||||
44
OpenJibo/scripts/cloud/Invoke-LiveJiboPrep.ps1
Normal file
44
OpenJibo/scripts/cloud/Invoke-LiveJiboPrep.ps1
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
param(
|
||||||
|
[string]$BaseUrl = "https://localhost:5001",
|
||||||
|
[string[]]$ExpectedHosts = @(
|
||||||
|
"api.jibo.com",
|
||||||
|
"api-socket.jibo.com",
|
||||||
|
"neo-hub.jibo.com"
|
||||||
|
),
|
||||||
|
[string]$CaptureDirectory = "..\..\src\Jibo.Cloud\dotnet\src\Jibo.Cloud.Api\bin\Debug\net10.0\captures\websocket"
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
Write-Host "OpenJibo live Jibo prep"
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
Write-Host "1. HTTP health check"
|
||||||
|
try {
|
||||||
|
$health = Invoke-RestMethod -Uri ($BaseUrl.TrimEnd("/") + "/health") -Method Get
|
||||||
|
$health | ConvertTo-Json -Depth 5
|
||||||
|
} catch {
|
||||||
|
Write-Error "Health check failed against $BaseUrl. Start the .NET cloud and verify TLS/routing before continuing. $_"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "2. Expected robot-facing hosts"
|
||||||
|
$ExpectedHosts | ForEach-Object { Write-Host " - $_" }
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "3. Capture directory"
|
||||||
|
$resolvedCaptureDirectory = [System.IO.Path]::GetFullPath((Join-Path $PSScriptRoot $CaptureDirectory))
|
||||||
|
Write-Host " - $resolvedCaptureDirectory"
|
||||||
|
if (-not (Test-Path -LiteralPath $resolvedCaptureDirectory)) {
|
||||||
|
New-Item -ItemType Directory -Force -Path $resolvedCaptureDirectory | Out-Null
|
||||||
|
Write-Host " - created"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "4. Live-run checklist"
|
||||||
|
Write-Host " - keep the Ubuntu/Jibo routing setup in place"
|
||||||
|
Write-Host " - keep the Node server available as a fallback"
|
||||||
|
Write-Host " - point Jibo at the .NET server using the same controlled network settings"
|
||||||
|
Write-Host " - perform one startup check, one chat turn, and one joke turn"
|
||||||
|
Write-Host " - after the run, inspect capture output with scripts/cloud/Get-WebSocketCaptureSummary.ps1"
|
||||||
|
Write-Host " - import the best exported fixture with scripts/cloud/Import-WebSocketCaptureFixture.ps1"
|
||||||
@@ -8,3 +8,7 @@ These scripts help exercise the new .NET hosted cloud locally.
|
|||||||
Replays a sanitized HTTP fixture against a running local instance.
|
Replays a sanitized HTTP fixture against a running local instance.
|
||||||
- `Get-WebSocketCaptureSummary.ps1`
|
- `Get-WebSocketCaptureSummary.ps1`
|
||||||
Summarizes captured websocket telemetry events and exported live-run fixtures from the .NET cloud.
|
Summarizes captured websocket telemetry events and exported live-run fixtures from the .NET cloud.
|
||||||
|
- `Invoke-LiveJiboPrep.ps1`
|
||||||
|
Runs a small readiness checklist before the first physical Jibo test against the .NET cloud.
|
||||||
|
- `Import-WebSocketCaptureFixture.ps1`
|
||||||
|
Sanitizes an exported websocket capture fixture and copies it into the checked-in websocket fixture set.
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"OpenJibo": {
|
||||||
|
"Telemetry": {
|
||||||
|
"Enabled": true,
|
||||||
|
"ExportFixtures": true,
|
||||||
|
"DirectoryPath": "captures/websocket"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user