From d029067aa750ad75a2d79ef8e6c51b6bad55096d Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Mon, 10 Aug 2026 22:39:13 +0800 Subject: [PATCH] fix(lab): refresh first T-014 batch ETags [T-014] --- Sense/scripts/t014-capacity.ps1 | 11 +++++++---- tests/test_sense_capacity_contract.py | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Sense/scripts/t014-capacity.ps1 b/Sense/scripts/t014-capacity.ps1 index 87314eb..10d818e 100644 --- a/Sense/scripts/t014-capacity.ps1 +++ b/Sense/scripts/t014-capacity.ps1 @@ -293,7 +293,11 @@ function Invoke-BatchDesiredState( $results = @($operation.results) if ($operation.status -ne 'succeeded' -or $results.Count -ne $sourceCount -or @($results | Where-Object { $_.status -ne 'succeeded' }).Count -ne 0) { - throw "batch desired-state operation was not fully successful" + $statusCounts = @($results | Group-Object status | Sort-Object Name | + ForEach-Object { "$($_.Name):$($_.Count)" }) -join ',' + $errorCounts = @($results | Where-Object { $_.error_code } | Group-Object error_code | Sort-Object Name | + ForEach-Object { "$($_.Name):$($_.Count)" }) -join ',' + throw "batch desired-state operation was not fully successful: operation=$($operation.status), items=$($results.Count), statuses=$statusCounts, errors=$errorCounts" } return [ordered]@{ status = [string]$operation.status @@ -714,7 +718,6 @@ try { $stage = 'creating 16 disabled devices' $deviceIDs = [Collections.Generic.List[string]]::new() - $createEntries = [Collections.Generic.List[object]]::new() foreach ($index in 1..$sourceCount) { $name = 'synthetic-{0:D2}' -f $index $response = Invoke-ControlRequest 'POST' '/api/v1/sites/site-t014/devices' @(201) ([ordered]@{ @@ -729,10 +732,10 @@ try { }) @{ 'Idempotency-Key' = "t014-create-$index-$script:runNonce" } $created = Convert-ResponseJSON $response $deviceIDs.Add([string]$created.id) - $createEntries.Add([pscustomobject]@{ DeviceID = [string]$created.id; ETag = Get-ResponseETag $response }) } $stage = 'batch enabling 16 devices' - $firstEnableBatch = Invoke-BatchDesiredState 'enabled' @($createEntries) 'enable-1' + $firstEnableEntries = Get-DeviceEntries @($deviceIDs) + $firstEnableBatch = Invoke-BatchDesiredState 'enabled' $firstEnableEntries 'enable-1' $firstEnableSeconds = Wait-Convergence 'enabled' $firstEnabledInventory = Get-MediaInventory $script:productionAPIPort diff --git a/tests/test_sense_capacity_contract.py b/tests/test_sense_capacity_contract.py index 3065874..8082e9e 100644 --- a/tests/test_sense_capacity_contract.py +++ b/tests/test_sense_capacity_contract.py @@ -24,6 +24,7 @@ class SenseCapacityContractTests(unittest.TestCase): def test_exercises_real_control_api_and_quota_boundary(self): self.assertIn("/api/v1/sites/site-t014/devices:batchDesiredState", self.script) self.assertIn("desired_state = 'disabled'", self.script) + self.assertIn("$firstEnableEntries = Get-DeviceEntries @($deviceIDs)", self.script) self.assertIn("t014-overflow-17", self.script) self.assertIn("quota_exceeded", self.script) self.assertIn("'enabled'", self.script)