@@ -217,6 +217,126 @@ function Test-LoadBalancerCRUD-PublicTcpReset
217
217
}
218
218
}
219
219
220
+ <#
221
+ . SYNOPSIS
222
+ Tests creating a public Load balancer with EnableConnectionTracking for lb rule.
223
+ #>
224
+ function Test-LoadBalancerCRUD-EnableConnectionTracking
225
+ {
226
+ # Setup
227
+ $rgname = Get-ResourceGroupName
228
+ $vnetName = Get-ResourceName
229
+ $subnetName = Get-ResourceName
230
+ $publicIpName = Get-ResourceName
231
+ $domainNameLabel = Get-ResourceName
232
+ $lbName = Get-ResourceName
233
+ $frontendName = Get-ResourceName
234
+ $backendAddressPoolName = Get-ResourceName
235
+ $probeName = Get-ResourceName
236
+ $inboundNatRuleName = Get-ResourceName
237
+ $lbruleName = Get-ResourceName
238
+ $lbruleName2 = Get-ResourceName
239
+ $lbruleName3 = Get-ResourceName
240
+ $rglocation = Get-ProviderLocation ResourceManagement
241
+ $resourceTypeParent = " Microsoft.Network/loadBalancers"
242
+ $location = Get-ProviderLocation $resourceTypeParent
243
+
244
+
245
+ try
246
+ {
247
+ # Create the resource group
248
+ $resourceGroup = New-AzResourceGroup - Name $rgname - Location $rglocation - Tags @ { testtag = " testval" }
249
+
250
+ # Create the Virtual Network
251
+ $subnet = New-AzVirtualNetworkSubnetConfig - Name $subnetName - AddressPrefix 10.0 .1.0 / 24
252
+ $vnet = New-AzVirtualNetwork - Name $vnetName - ResourceGroupName $rgname - Location $location - AddressPrefix 10.0 .0.0 / 16 - Subnet $subnet
253
+
254
+ # Create the publicip
255
+ $publicip = New-AzPublicIpAddress - ResourceGroupName $rgname - name $publicIpName - location $location - AllocationMethod Static - DomainNameLabel $domainNameLabel - Sku Standard
256
+
257
+ # Create LoadBalancer
258
+ $frontend = New-AzLoadBalancerFrontendIpConfig - Name $frontendName - PublicIpAddress $publicip
259
+ $backendAddressPool = New-AzLoadBalancerBackendAddressPoolConfig - Name $backendAddressPoolName
260
+ $probe = New-AzLoadBalancerProbeConfig - Name $probeName - RequestPath healthcheck.aspx - Protocol https - Port 80 - IntervalInSeconds 15 - ProbeCount 2 - ProbeThreshold 2
261
+ $lbrule = New-AzLoadBalancerRuleConfig - Name $lbruleName - FrontendIPConfiguration $frontend - BackendAddressPool $backendAddressPool - Probe $probe - Protocol Udp - FrontendPort 80 - BackendPort 80 - IdleTimeoutInMinutes 15 - EnableFloatingIP - EnableTcpReset - LoadDistribution SourceIP - DisableOutboundSNAT - EnableConnectionTracking
262
+ $actualLb = New-AzLoadBalancer - Name $lbName - ResourceGroupName $rgname - Location $location - FrontendIpConfiguration $frontend - BackendAddressPool $backendAddressPool - Probe $probe - InboundNatRule $inboundNatRule - LoadBalancingRule $lbrule - Sku Standard
263
+
264
+ $expectedLb = Get-AzLoadBalancer - Name $lbName - ResourceGroupName $rgname
265
+
266
+ # Verification
267
+ Assert-AreEqual $expectedLb.ResourceGroupName $actualLb.ResourceGroupName
268
+ Assert-AreEqual $expectedLb.Name $actualLb.Name
269
+ Assert-AreEqual $expectedLb.Location $actualLb.Location
270
+ Assert-AreEqualObjectProperties $expectedLb.Sku $actualLb.Sku
271
+ Assert-AreEqual " Succeeded" $expectedLb.ProvisioningState
272
+ Assert-NotNull $expectedLb.ResourceGuid
273
+ Assert-AreEqual 1 @ ($expectedLb.FrontendIPConfigurations ).Count
274
+
275
+ Assert-AreEqual $frontendName $expectedLb.FrontendIPConfigurations [0 ].Name
276
+ Assert-AreEqual $publicip.Id $expectedLb.FrontendIPConfigurations [0 ].PublicIpAddress.Id
277
+ Assert-Null $expectedLb.FrontendIPConfigurations [0 ].PrivateIpAddress
278
+
279
+ Assert-AreEqual $backendAddressPoolName $expectedLb.BackendAddressPools [0 ].Name
280
+
281
+ Assert-AreEqual $probeName $expectedLb.Probes [0 ].Name
282
+ Assert-AreEqual $probe.RequestPath $expectedLb.Probes [0 ].RequestPath
283
+ Assert-AreEqual " https" $expectedLb.Probes [0 ].Protocol
284
+ Assert-AreEqual $probe.ProbeThreshold $expectedLb.Probes [0 ].ProbeThreshold
285
+
286
+ Assert-AreEqual $lbruleName $expectedLb.LoadBalancingRules [0 ].Name
287
+ Assert-AreEqual $expectedLb.FrontendIPConfigurations [0 ].Id $expectedLb.LoadBalancingRules [0 ].FrontendIPConfiguration.Id
288
+ Assert-AreEqual $expectedLb.BackendAddressPools [0 ].Id $expectedLb.LoadBalancingRules [0 ].BackendAddressPool.Id
289
+ Assert-AreEqual true $expectedLb.LoadBalancingRules [0 ].EnableConnectionTracking
290
+
291
+ # List
292
+ $list = Get-AzLoadBalancer - ResourceGroupName $rgname
293
+ Assert-AreEqual 1 @ ($list ).Count
294
+ Assert-AreEqual $expectedLb.Etag $list [0 ].Etag
295
+ Assert-AreEqualObjectProperties $expectedLb.Sku $list [0 ].Sku
296
+ Assert-AreEqual $expectedLb.FrontendIPConfigurations [0 ].Etag $list [0 ].FrontendIPConfigurations[0 ].Etag
297
+ Assert-AreEqual $expectedLb.BackendAddressPools [0 ].Etag $list [0 ].BackendAddressPools[0 ].Etag
298
+ Assert-AreEqual $expectedLb.InboundNatRules [0 ].Etag $list [0 ].InboundNatRules[0 ].Etag
299
+ Assert-AreEqual $expectedLb.Probes [0 ].Etag $list [0 ].Probes[0 ].Etag
300
+ Assert-AreEqual $expectedLb.LoadBalancingRules [0 ].Etag $list [0 ].LoadBalancingRules[0 ].Etag
301
+
302
+ # Test Set Command
303
+ $expectedLb | Set-AzLoadBalancerRuleConfig - Name $lbruleName - FrontendIPConfiguration $frontend - BackendAddressPool $backendAddressPool - Probe $probe - Protocol Udp - FrontendPort 80 - BackendPort 80 - IdleTimeoutInMinutes 15 - EnableFloatingIP - EnableTcpReset - LoadDistribution SourceIP - DisableOutboundSNAT
304
+ $expectedLb | Set-AzLoadBalancer
305
+
306
+ $expectedLb = Get-AzLoadBalancer - Name $lbName - ResourceGroupName $rgname
307
+ Assert-AreEqual false $expectedLb.LoadBalancingRules [0 ].EnableConnectionTracking
308
+
309
+ $expectedLb | Set-AzLoadBalancerRuleConfig - Name $lbruleName - FrontendIPConfiguration $frontend - BackendAddressPool $backendAddressPool - Probe $probe - Protocol Udp - FrontendPort 80 - BackendPort 80 - IdleTimeoutInMinutes 15 - EnableFloatingIP - EnableTcpReset - LoadDistribution SourceIP - DisableOutboundSNAT - EnableConnectionTracking
310
+ $expectedLb | Set-AzLoadBalancer
311
+
312
+ $expectedLb = Get-AzLoadBalancer - Name $lbName - ResourceGroupName $rgname
313
+ Assert-AreEqual true $expectedLb.LoadBalancingRules [0 ].EnableConnectionTracking
314
+
315
+ # Test Add Command
316
+ $expectedLb | Add-AzLoadBalancerRuleConfig - Name $lbruleName2 - FrontendIPConfiguration $frontend - BackendAddressPool $backendAddressPool - Probe $probe - Protocol Udp - FrontendPort 81 - BackendPort 81 - IdleTimeoutInMinutes 15 - EnableFloatingIP - EnableTcpReset - LoadDistribution SourceIP - DisableOutboundSNAT - EnableConnectionTracking
317
+ $expectedLb | Set-AzLoadBalancer
318
+ $expectedLb = Get-AzLoadBalancer - Name $lbName - ResourceGroupName $rgname
319
+ Assert-AreEqual true $expectedLb.LoadBalancingRules [1 ].EnableConnectionTracking
320
+
321
+ $expectedLb | Add-AzLoadBalancerRuleConfig - Name $lbruleName3 - FrontendIPConfiguration $frontend - BackendAddressPool $backendAddressPool - Probe $probe - Protocol Udp - FrontendPort 82 - BackendPort 82 - IdleTimeoutInMinutes 15 - EnableFloatingIP - EnableTcpReset - LoadDistribution SourceIP - DisableOutboundSNAT
322
+ $expectedLb | Set-AzLoadBalancer
323
+ $expectedLb = Get-AzLoadBalancer - Name $lbName - ResourceGroupName $rgname
324
+ Assert-AreEqual false $expectedLb.LoadBalancingRules [2 ].EnableConnectionTracking
325
+
326
+ # Delete
327
+ $deleteLb = Remove-AzLoadBalancer - Name $lbName - ResourceGroupName $rgname - PassThru - Force
328
+ Assert-AreEqual true $deleteLb
329
+
330
+ $list = Get-AzLoadBalancer - ResourceGroupName $rgname
331
+ Assert-AreEqual 0 @ ($list ).Count
332
+ }
333
+ finally
334
+ {
335
+ # Cleanup
336
+ Clean - ResourceGroup $rgname
337
+ }
338
+ }
339
+
220
340
<#
221
341
. SYNOPSIS
222
342
Tests creating an internal Load balancer with dynamic ip.
0 commit comments