Skip to content

Commit e014395

Browse files
fix: Redundant use of Get-AzLogicAppRunHistory (#395)
Co-authored-by: Pim Simons <pim.simons@codit.eu>
1 parent 5225c97 commit e014395

2 files changed

Lines changed: 11 additions & 9 deletions

File tree

src/Arcus.Scripting.LogicApps/Scripts/Disable-AzLogicAppsFromConfig.ps1

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,18 @@ function ExecuteCheckType() {
5757
}
5858

5959
try {
60-
$RunningRunsCount = Get-AzLogicAppRunHistory -ResourceGroupName $ResourceGroupName -Name $logicApp -FollowNextPageLink -ErrorAction Stop | Where-Object Status -eq "Running" | Measure-Object | ForEach-Object { $_.Count }
61-
$WaitingRunsCount = Get-AzLogicAppRunHistory -ResourceGroupName $ResourceGroupName -Name $logicApp -FollowNextPageLink -ErrorAction Stop | Where-Object Status -eq "Waiting" | Measure-Object | ForEach-Object { $_.Count }
60+
$runHistory = Get-AzLogicAppRunHistory -ResourceGroupName $ResourceGroupName -Name $logicApp -FollowNextPageLink -ErrorAction Stop
61+
$RunningRunsCount = ($runHistory | Where-Object { $_.Status -eq "Running" }).Count
62+
$WaitingRunsCount = ($runHistory | Where-Object { $_.Status -eq "Waiting" }).Count
6263
if ($RunningRunsCount -ne 0 -and $WaitingRunsCount -ne 0) {
6364
while ($RunningRunsCount -ne 0 -and $WaitingRunsCount -ne 0) {
6465
Write-Verbose "Azure Logic App '$logicApp' has Running and/or Waiting Runs, waiting 10 seconds and checking again..."
6566
Write-Debug "Number of running runs: $RunningRunsCount"
6667
Write-Debug "Number of waiting runs: $WaitingRunsCount"
67-
Start-Sleep -Second 10
68-
$RunningRunsCount = Get-AzLogicAppRunHistory -ResourceGroupName $ResourceGroupName -Name $logicApp -FollowNextPageLink -ErrorAction Stop | Where-Object Status -eq "Running" | Measure-Object | ForEach-Object { $_.Count }
69-
$WaitingRunsCount = Get-AzLogicAppRunHistory -ResourceGroupName $ResourceGroupName -Name $logicApp -FollowNextPageLink -ErrorAction Stop | Where-Object Status -eq "Waiting" | Measure-Object | ForEach-Object { $_.Count }
68+
Start-Sleep -Second 10
69+
$runHistory = Get-AzLogicAppRunHistory -ResourceGroupName $ResourceGroupName -Name $logicApp -FollowNextPageLink -ErrorAction Stop
70+
$RunningRunsCount = ($runHistory | Where-Object { $_.Status -eq "Running" }).Count
71+
$WaitingRunsCount = ($runHistory | Where-Object { $_.Status -eq "Waiting" }).Count
7072
if ($RunningRunsCount -eq 0 -and $WaitingRunsCount -eq 0) {
7173
Write-Verbose "Found no more waiting or running runs for Azure Logic App '$logicApp', executing stopType for Logic App"
7274
ExecuteStopType -resourceGroupName $ResourceGroupName -LogicAppName $logicApp -stopType $batch.stopType

src/Arcus.Scripting.Tests.Unit/Arcus.Scripting.LogicApps.tests.ps1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ InModuleScope Arcus.Scripting.LogicApps {
191191

192192
# Assert
193193
Assert-MockCalled Get-AzCachedAccessToken -Scope It -Times 1
194-
Assert-MockCalled Get-AzLogicAppRunHistory -Scope It -Times 6 -ParameterFilter { $ResourceGroupName -eq $resourceGroup }
194+
Assert-MockCalled Get-AzLogicAppRunHistory -Scope It -Times 3 -ParameterFilter { $ResourceGroupName -eq $resourceGroup }
195195
Assert-MockCalled Disable-AzLogicApp -Scope It -Exactly 0
196196
}
197197
It "Doesn't disable anything when checkType = NoWaitingOrRunningRuns but returns a zero count on an the waiting runs for stopType = None" {
@@ -216,10 +216,10 @@ InModuleScope Arcus.Scripting.LogicApps {
216216

217217
# Assert
218218
Assert-MockCalled Get-AzCachedAccessToken -Scope It -Times 1
219-
Assert-MockCalled Get-AzLogicAppRunHistory -Times 4 -ParameterFilter { $ResourceGroupName -eq $resourceGroup }
219+
Assert-MockCalled Get-AzLogicAppRunHistory -Times 2 -ParameterFilter { $ResourceGroupName -eq $resourceGroup }
220220
Assert-MockCalled Disable-AzLogicApp -Scope It -Exactly 0
221221
}
222-
It "Disbales all logic apps when checkType = NoWaitingOrRunningRuns with found waiting and no running runs for stopType = Immediate" {
222+
It "Disables all logic apps when checkType = NoWaitingOrRunningRuns with found waiting and no running runs for stopType = Immediate" {
223223
# Arrange
224224
$resourceGroup = "my-resource-group"
225225
$logicAppNames = @("snd-async", "ord-sthp-harvest-order-doublechecker", "rcv-sthp-harvest-order-af-ftp", "rcv-sthp-harvest-order-af-sft", "rcv-sthp-harvest-order-af-file")
@@ -244,7 +244,7 @@ InModuleScope Arcus.Scripting.LogicApps {
244244

245245
# Assert
246246
Assert-MockCalled Get-AzCachedAccessToken -Scope It -Times 1
247-
Assert-MockCalled Get-AzLogicAppRunHistory -Scope It -Times 10 -ParameterFilter { $ResourceGroupName -eq $resourceGroup }
247+
Assert-MockCalled Get-AzLogicAppRunHistory -Scope It -Times 5 -ParameterFilter { $ResourceGroupName -eq $resourceGroup }
248248
Assert-MockCalled Disable-AzLogicApp -Scope It -Exactly 5 -ParameterFilter { $resourceGroupName -eq $resourceGroup }
249249
}
250250
It "Disables all logic apps when checkType = NoWaitingOrRunningRuns with found waiting and running runs for stopType = Immediate" {

0 commit comments

Comments
 (0)