Skip to content

Commit 69dd420

Browse files
committed
fix scoping for retry function
1 parent f16b861 commit 69dd420

2 files changed

Lines changed: 59 additions & 60 deletions

File tree

Tests/LMDevice.Tests.ps1

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
Describe '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."

Tests/LMUptimeDevice.Tests.ps1

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,35 @@
11
Describe 'Uptime Device Testing New/Get/Set/Remove' {
2+
BeforeAll {
3+
Import-Module $Module -Force
4+
Connect-LMAccount -AccessId $AccessId -AccessKey $AccessKey -AccountName $AccountName -DisableConsoleLogging -SkipCredValidation
25

3-
function Invoke-TestRetry {
4-
param(
5-
[Parameter(Mandatory)]
6-
[scriptblock]$ScriptBlock,
7-
[Parameter(Mandatory)]
8-
[string]$OperationName,
9-
[int]$MaxAttempts = 8,
10-
[int]$DelaySeconds = 5
11-
)
12-
13-
$lastError = $null
14-
15-
for ($attempt = 1; $attempt -le $MaxAttempts; $attempt++) {
16-
try {
17-
return & $ScriptBlock
18-
}
19-
catch {
20-
$lastError = $_
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+
)
15+
16+
$lastError = $null
17+
18+
for ($attempt = 1; $attempt -le $MaxAttempts; $attempt++) {
19+
try {
20+
return & $ScriptBlock
21+
}
22+
catch {
23+
$lastError = $_
2124

22-
if ($attempt -lt $MaxAttempts) {
23-
Start-Sleep -Seconds $DelaySeconds
25+
if ($attempt -lt $MaxAttempts) {
26+
Start-Sleep -Seconds $DelaySeconds
27+
}
2428
}
2529
}
26-
}
2730

28-
throw "$OperationName failed after $MaxAttempts attempts. Last error: $($lastError.Exception.Message)"
29-
}
30-
31-
BeforeAll {
32-
Import-Module $Module -Force
33-
Connect-LMAccount -AccessId $AccessId -AccessKey $AccessKey -AccountName $AccountName -DisableConsoleLogging -SkipCredValidation
31+
throw "$OperationName failed after $MaxAttempts attempts. Last error: $($lastError.Exception.Message)"
32+
}
3433

3534
$script:UptimeDeviceName = "Uptime.Build.Test." + ([guid]::NewGuid().ToString('N').Substring(0, 8))
3635
$script:UptimeDomain = "uptime-" + ([guid]::NewGuid().ToString('N').Substring(0, 6)) + ".example.com"
@@ -52,7 +51,7 @@ Describe 'Uptime Device Testing New/Get/Set/Remove' {
5251
$script:NewUptimeDevice.deviceType | Should -Be 18
5352
($script:NewUptimeDevice.customProperties | Where-Object { $_.name -eq 'testprop' }).value | Should -BeExactly 'BuildTest'
5453

55-
Invoke-TestRetry -OperationName 'Get-LMUptimeDevice by Name for newly created web uptime device' -ScriptBlock {
54+
& $script:InvokeTestRetry -OperationName 'Get-LMUptimeDevice by Name for newly created web uptime device' -ScriptBlock {
5655
$device = Get-LMUptimeDevice -Name $script:NewUptimeDevice.name -Type uptimewebcheck -ErrorAction Stop
5756
if (($device | Measure-Object).Count -lt 1) {
5857
throw "Device '$($script:NewUptimeDevice.name)' not visible yet."
@@ -71,7 +70,7 @@ Describe 'Uptime Device Testing New/Get/Set/Remove' {
7170
$script:NewPingDevice | Should -Not -BeNullOrEmpty
7271
$script:NewPingDevice.deviceType | Should -Be 19
7372

74-
Invoke-TestRetry -OperationName 'Get-LMUptimeDevice by Name for newly created ping uptime device' -ScriptBlock {
73+
& $script:InvokeTestRetry -OperationName 'Get-LMUptimeDevice by Name for newly created ping uptime device' -ScriptBlock {
7574
$device = Get-LMUptimeDevice -Name $script:NewPingDevice.name -Type uptimepingcheck -ErrorAction Stop
7675
if (($device | Measure-Object).Count -lt 1) {
7776
throw "Device '$($script:NewPingDevice.name)' not visible yet."
@@ -111,7 +110,7 @@ Describe 'Uptime Device Testing New/Get/Set/Remove' {
111110
}
112111

113112
It 'When given a name should return devices matching that name' {
114-
$device = Invoke-TestRetry -OperationName 'Get-LMUptimeDevice by Name' -ScriptBlock {
113+
$device = & $script:InvokeTestRetry -OperationName 'Get-LMUptimeDevice by Name' -ScriptBlock {
115114
$result = Get-LMUptimeDevice -Name $script:NewUptimeDevice.name -Type uptimewebcheck -ErrorAction Stop
116115
if (($result | Measure-Object).Count -lt 1) {
117116
throw "Device '$($script:NewUptimeDevice.name)' not visible yet."
@@ -152,7 +151,7 @@ Describe 'Uptime Device Testing New/Get/Set/Remove' {
152151
It 'When given a name, removes the uptime device from LogicMonitor' {
153152
if ($script:NewPingDevice) {
154153
{
155-
Invoke-TestRetry -OperationName 'Remove-LMUptimeDevice by Name' -ScriptBlock {
154+
& $script:InvokeTestRetry -OperationName 'Remove-LMUptimeDevice by Name' -ScriptBlock {
156155
Remove-LMUptimeDevice -Name $script:NewPingDevice.name -Confirm:$false -HardDelete $true -ErrorAction Stop | Out-Null
157156
} | Out-Null
158157
} | Should -Not -Throw

0 commit comments

Comments
 (0)