11Describe ' Device Testing New/Get/Set/Remove' {
2- function Invoke-TestRetry {
3- param (
4- [Parameter (Mandatory )]
5- [scriptblock ]$ScriptBlock ,
6- [Parameter (Mandatory )]
7- [string ]$OperationName ,
8- [int ]$MaxAttempts = 8 ,
9- [int ]$DelaySeconds = 5
10- )
2+ BeforeAll {
3+ Import-Module $Module - Force
4+ Connect-LMAccount - AccessId $AccessId - AccessKey $AccessKey - AccountName $AccountName - DisableConsoleLogging - SkipCredValidation
115
12- $lastError = $null
6+ $script :InvokeTestRetry = {
7+ param (
8+ [Parameter (Mandatory )]
9+ [scriptblock ]$ScriptBlock ,
10+ [Parameter (Mandatory )]
11+ [string ]$OperationName ,
12+ [int ]$MaxAttempts = 8 ,
13+ [int ]$DelaySeconds = 5
14+ )
1315
14- for ($attempt = 1 ; $attempt -le $MaxAttempts ; $attempt ++ ) {
15- try {
16- return & $ScriptBlock
17- }
18- catch {
19- $lastError = $_
16+ $lastError = $null
2017
21- if ($attempt -lt $MaxAttempts ) {
22- Start-Sleep - Seconds $DelaySeconds
18+ for ($attempt = 1 ; $attempt -le $MaxAttempts ; $attempt ++ ) {
19+ try {
20+ return & $ScriptBlock
2321 }
24- }
25- }
22+ catch {
23+ $lastError = $_
2624
27- throw " $OperationName failed after $MaxAttempts attempts. Last error: $ ( $lastError.Exception.Message ) "
28- }
25+ if ($attempt -lt $MaxAttempts ) {
26+ Start-Sleep - Seconds $DelaySeconds
27+ }
28+ }
29+ }
2930
30- BeforeAll {
31- Import-Module $Module - Force
32- Connect-LMAccount - AccessId $AccessId - AccessKey $AccessKey - AccountName $AccountName - DisableConsoleLogging - SkipCredValidation
31+ throw " $OperationName failed after $MaxAttempts attempts. Last error: $ ( $lastError.Exception.Message ) "
32+ }
3333
3434 $script :DeviceTestSuffix = [guid ]::NewGuid().ToString(' N' ).Substring(0 , 8 )
3535 $script :DeviceTestName = " device-build-test-$ ( $script :DeviceTestSuffix ) .example.com"
@@ -41,7 +41,7 @@ Describe 'Device Testing New/Get/Set/Remove' {
4141 $Script :NewDevice = New-LMDevice - Name $script :DeviceTestName - DisplayName $script :DeviceTestDisplayName - PreferredCollectorId $PreferredCollectorId - DisableAlerting $true
4242 $Script :NewDevice | Should -Not - BeNullOrEmpty
4343
44- Invoke-TestRetry - OperationName ' Get-LMDevice by Id for newly created device' - ScriptBlock {
44+ & $ script :InvokeTestRetry - OperationName ' Get-LMDevice by Id for newly created device' - ScriptBlock {
4545 $device = Get-LMDevice - Id $Script :NewDevice.Id - ErrorAction Stop
4646 if (($device | Measure-Object ).Count -ne 1 ) {
4747 throw " Device '$ ( $Script :NewDevice.Id ) ' is not queryable yet."
@@ -88,7 +88,7 @@ Describe 'Device Testing New/Get/Set/Remove' {
8888 ($Device | Measure-Object ).Count | Should - BeGreaterThan 0
8989 }
9090 It ' When given an id should return that device' {
91- $Device = Invoke-TestRetry - OperationName ' Get-LMDevice by Id' - ScriptBlock {
91+ $Device = & $ script :InvokeTestRetry - OperationName ' Get-LMDevice by Id' - ScriptBlock {
9292 $result = Get-LMDevice - Id $Script :NewDevice.Id - ErrorAction Stop
9393 if (($result | Measure-Object ).Count -ne 1 ) {
9494 throw " Expected one device for id '$ ( $Script :NewDevice.Id ) '."
@@ -98,7 +98,7 @@ Describe 'Device Testing New/Get/Set/Remove' {
9898 ($Device | Measure-Object ).Count | Should - BeExactly 1
9999 }
100100 It ' When given a name should return all devices matching that name' {
101- $Device = Invoke-TestRetry - OperationName ' Get-LMDevice by Name' - ScriptBlock {
101+ $Device = & $ script :InvokeTestRetry - OperationName ' Get-LMDevice by Name' - ScriptBlock {
102102 $result = Get-LMDevice - Name $Script :NewDevice.Name - ErrorAction Stop
103103 if (($result | Measure-Object ).Count -lt 1 ) {
104104 throw " Device '$ ( $Script :NewDevice.Name ) ' not visible yet."
@@ -108,7 +108,7 @@ Describe 'Device Testing New/Get/Set/Remove' {
108108 ($Device | Measure-Object ).Count | Should - BeExactly 1
109109 }
110110 It ' When given a wildcard displayname should return all devices matching that wildcard value' {
111- $Device = Invoke-TestRetry - OperationName ' Get-LMDevice by wildcard DisplayName' - ScriptBlock {
111+ $Device = & $ script :InvokeTestRetry - OperationName ' Get-LMDevice by wildcard DisplayName' - ScriptBlock {
112112 $result = Get-LMDevice - DisplayName " $ ( ($Script :NewDevice.DisplayName.Split (" ." )[0 ])) *" - ErrorAction Stop
113113 if (($result | Measure-Object ).Count -lt 1 ) {
114114 throw " No devices returned for wildcard display name query."
0 commit comments