12
12
# limitations under the License.
13
13
# ----------------------------------------------------------------------------------
14
14
15
- # Snapshots require a Premium app to exist for several hours.
16
- # Deploy a Premium app and update these global variables to re-record the snapshots tests.
17
- $snapshotRgName = ' web2'
18
- $snapshotAppName = ' nkprem'
19
- $snapshotAppSlot = ' staging'
20
-
21
- # Restoring a deleted web app requires an app to have a snapshot available.
22
- # Deploy a web app and wait at least an hour for a snapshot.
23
- # Update these global variables to re-record Test-RestoreDeletedWebApp.
24
- $undeleteRgName = ' web2'
25
- $undeleteAppName = ' undeletesrc'
26
- $undeleteSlot = ' testslot'
27
-
28
15
# !!! Storage keys and SAS URIs will be stored in the backup test recordings !!!
29
16
# To find them, open the json files in a text editor and search for "listkeys"
30
17
# to find the storage keys. Search for StorageAccountUrl to find the SAS URIs.
@@ -342,48 +329,134 @@ function Test-EditAndGetWebAppBackupConfigurationPiping
342
329
343
330
function Test-GetWebAppSnapshot
344
331
{
345
- # Test named parameters
346
- $snapshots = Get-AzWebAppSnapshot - ResourceGroupName $snapshotRgName - Name $snapshotAppName - UseDisasterRecovery
347
- Assert-True { $snapshots.Length -gt 0 }
348
- Assert-NotNull $snapshots [0 ]
349
- Assert-NotNull $snapshots [0 ].SnapshotTime
350
- Assert-AreEqual ' Production' $snapshots [0 ].Slot
351
-
352
- # Test positional parameters
353
- $snapshots = Get-AzWebAppSnapshot $snapshotRgName $snapshotAppName
354
- Assert-True { $snapshots.Length -gt 0 }
355
- Assert-NotNull $snapshots [0 ]
356
- Assert-NotNull $snapshots [0 ].SnapshotTime
357
- Assert-AreEqual ' Production' $snapshots [0 ].Slot
358
-
359
- # Test snapshots for slots
360
- $snapshots = Get-AzWebAppSnapshot - ResourceGroupName $snapshotRgName - Name $snapshotAppName - Slot $snapshotAppSlot
361
- Assert-True { $snapshots.Length -gt 0 }
362
- Assert-NotNull $snapshots [0 ]
363
- Assert-NotNull $snapshots [0 ].SnapshotTime
364
- Assert-AreEqual $snapshotAppSlot $snapshots [0 ].Slot
365
-
366
- # Test piping
367
- $app = Get-AzWebApp - ResourceGroupName $snapshotRgName - Name $snapshotAppName
368
- $snapshots = $app | Get-AzWebAppSnapshot
369
- Assert-True { $snapshots.Length -gt 0 }
370
- Assert-NotNull $snapshots [0 ]
371
- Assert-NotNull $snapshots [0 ].SnapshotTime
372
- Assert-AreEqual ' Production' $snapshots [0 ].Slot
332
+ # Setup
333
+ $rgname = Get-ResourceGroupName
334
+ $wname = Get-WebsiteName
335
+ $slotName = " staging"
336
+ $location = Get-WebLocation
337
+ $whpName = Get-WebHostPlanName
338
+ $tier = " Premium"
339
+ $isRecordMode = ((Get-WebsitesTestMode ) -ne ' Playback' )
340
+
341
+ try
342
+ {
343
+ New-AzResourceGroup - Name $rgname - Location $location
344
+ New-AzAppServicePlan - ResourceGroupName $rgname - Name $whpName - Location $location - Tier $tier
345
+ $app = New-AzWebApp - ResourceGroupName $rgname - Name $wname - Location $location - AppServicePlan $whpName
346
+ New-AzWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName
347
+
348
+ # Wait for at least 1 snapshot to exist
349
+ while ($snap -eq $null )
350
+ {
351
+ $snap = Get-AzWebAppSnapshot $app
352
+ if ($isRecordMode )
353
+ {
354
+ Start-Sleep - Seconds 60
355
+ }
356
+ }
357
+
358
+ # Test named parameters
359
+ $snapshots = Get-AzWebAppSnapshot - ResourceGroupName $rgname - Name $wname - UseDisasterRecovery
360
+ Assert-True { $snapshots.Length -gt 0 }
361
+ Assert-NotNull $snapshots [0 ]
362
+ Assert-NotNull $snapshots [0 ].SnapshotTime
363
+ Assert-AreEqual ' Production' $snapshots [0 ].Slot
364
+
365
+ # Test positional parameters
366
+ $snapshots = Get-AzWebAppSnapshot $rgname $wname
367
+ Assert-True { $snapshots.Length -gt 0 }
368
+ Assert-NotNull $snapshots [0 ]
369
+ Assert-NotNull $snapshots [0 ].SnapshotTime
370
+ Assert-AreEqual ' Production' $snapshots [0 ].Slot
371
+
372
+ # Test snapshots for slots
373
+ $snapshots = Get-AzWebAppSnapshot - ResourceGroupName $rgname - Name $wname - Slot $slotName
374
+ Assert-True { $snapshots.Length -gt 0 }
375
+ Assert-NotNull $snapshots [0 ]
376
+ Assert-NotNull $snapshots [0 ].SnapshotTime
377
+ Assert-AreEqual $slotName $snapshots [0 ].Slot
378
+
379
+ # Test piping
380
+ $app = Get-AzWebApp - ResourceGroupName $rgname - Name $wname
381
+ $snapshots = $app | Get-AzWebAppSnapshot
382
+ Assert-True { $snapshots.Length -gt 0 }
383
+ Assert-NotNull $snapshots [0 ]
384
+ Assert-NotNull $snapshots [0 ].SnapshotTime
385
+ Assert-AreEqual ' Production' $snapshots [0 ].Slot
386
+
387
+ }
388
+ finally
389
+ {
390
+ # Cleanup
391
+ Remove-AzWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName - Force
392
+ Remove-AzWebApp - ResourceGroupName $rgname - Name $wname - Force
393
+ Remove-AzAppServicePlan - ResourceGroupName $rgname - Name $whpName - Force
394
+ Remove-AzResourceGroup - Name $rgname - Force
395
+ }
373
396
}
374
397
375
398
function Test-RestoreWebAppSnapshot
376
399
{
377
- # Test overwrite
378
- $snapshot = (Get-AzWebAppSnapshot $snapshotRgName $snapshotAppName )[0 ]
379
- Restore-AzWebAppSnapshot - ResourceGroupName $snapshotRgName - Name $snapshotAppName - InputObject $snapshot - Force - RecoverConfiguration
400
+ # Setup
401
+ $rgname = Get-ResourceGroupName
402
+ $wname = Get-WebsiteName
403
+ $slotName = " staging"
404
+ $location = Get-WebLocation
405
+ $whpName = Get-WebHostPlanName
406
+ $tier = " Premium"
407
+ $isRecordMode = ((Get-WebsitesTestMode ) -ne ' Playback' )
408
+
409
+ try
410
+ {
411
+ New-AzResourceGroup - Name $rgname - Location $location
412
+ New-AzAppServicePlan - ResourceGroupName $rgname - Name $whpName - Location $location - Tier $tier
413
+ $app = New-AzWebApp - ResourceGroupName $rgname - Name $wname - Location $location - AppServicePlan $whpName
414
+ New-AzWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName
415
+
416
+ # Wait for at least 1 snapshot to exist
417
+ while ($snap -eq $null )
418
+ {
419
+ $snap = Get-AzWebAppSnapshot $app
420
+ if ($isRecordMode )
421
+ {
422
+ Start-Sleep - Seconds 60
423
+ }
424
+ }
380
425
381
- # Test restore to target slot
382
- Restore-AzWebAppSnapshot $snapshotRgName $snapshotAppName $snapshotAppSlot $snapshot - RecoverConfiguration - UseDisasterRecovery - Force
426
+ # Test overwrite
427
+ $snapshot = (Get-AzWebAppSnapshot $rgname $wname )[0 ]
428
+ Restore-AzWebAppSnapshot - ResourceGroupName $rgname - Name $wname - InputObject $snapshot - Force - RecoverConfiguration
383
429
384
- # Test piping and background job
385
- $job = $snapshot | Restore-AzWebAppSnapshot - Force - AsJob
386
- $job | Wait-Job
430
+ if ($isRecordMode )
431
+ {
432
+ Start-Sleep - Seconds 600
433
+ }
434
+
435
+ # Test restore to target slot
436
+ Restore-AzWebAppSnapshot $rgname $wname $slotName $snapshot - RecoverConfiguration - UseDisasterRecovery - Force
437
+
438
+ if ($isRecordMode )
439
+ {
440
+ Start-Sleep - Seconds 600
441
+ }
442
+
443
+ # Test piping and background job
444
+ $job = $snapshot | Restore-AzWebAppSnapshot - Force - AsJob
445
+ $job | Wait-Job
446
+
447
+ if ($isRecordMode )
448
+ {
449
+ Start-Sleep - Seconds 600
450
+ }
451
+ }
452
+ finally
453
+ {
454
+ # Cleanup
455
+ Remove-AzWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName - Force
456
+ Remove-AzWebApp - ResourceGroupName $rgname - Name $wname - Force
457
+ Remove-AzAppServicePlan - ResourceGroupName $rgname - Name $whpName - Force
458
+ Remove-AzResourceGroup - Name $rgname - Force
459
+ }
387
460
}
388
461
389
462
function Test-GetDeletedWebApp
@@ -402,16 +475,16 @@ function Test-GetDeletedWebApp
402
475
New-AzResourceGroup - Name $rgname - Location $location
403
476
New-AzAppServicePlan - ResourceGroupName $rgname - Name $whpName - Location $location - Tier $tier
404
477
New-AzWebApp - ResourceGroupName $rgname - Name $wname - Location $location - AppServicePlan $whpName
405
- New-AzWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName - AppServicePlan $planName
478
+ New-AzWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName
406
479
Remove-AzWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName - Force
407
480
Remove-AzWebApp - ResourceGroupName $rgname - Name $wname - Force
408
481
409
- $deletedApp = Get-AzDeletedWebApp - ResourceGroupName $rgname - Name $wname - Slot " Production"
482
+ $deletedApp = Get-AzDeletedWebApp - ResourceGroupName $rgname - Name $wname - Slot " Production" - Location $location
410
483
Assert-NotNull $deletedApp
411
484
Assert-AreEqual $rgname $deletedApp.ResourceGroupName
412
485
Assert-AreEqual $wname $deletedApp.Name
413
486
414
- $deletedSlot = Get-AzDeletedWebApp - ResourceGroupName $rgname - Name $wname - Slot $slotName
487
+ $deletedSlot = Get-AzDeletedWebApp - ResourceGroupName $rgname - Name $wname - Slot $slotName - Location $location
415
488
Assert-NotNull $deletedSlot
416
489
Assert-AreEqual $rgname $deletedSlot.ResourceGroupName
417
490
Assert-AreEqual $wname $deletedSlot.Name
@@ -432,22 +505,52 @@ function Test-RestoreDeletedWebAppToExisting
432
505
$wname = Get-WebsiteName
433
506
$slotName = " staging"
434
507
$appWithSlotName = " $wname /$slotName "
508
+ $delName = Get-WebsiteName
509
+ $delSlot = " testslot"
435
510
$location = Get-WebLocation
436
511
$whpName = Get-WebHostPlanName
437
- $tier = " Standard"
512
+ $tier = " Premium"
513
+ $isRecordMode = ((Get-WebsitesTestMode ) -ne ' Playback' )
438
514
439
515
try
440
516
{
441
517
New-AzResourceGroup - Name $rgname - Location $location
442
518
New-AzAppServicePlan - ResourceGroupName $rgname - Name $whpName - Location $location - Tier $tier
443
519
New-AzWebApp - ResourceGroupName $rgname - Name $wname - Location $location - AppServicePlan $whpName
444
- New-AzWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName - AppServicePlan $planName
520
+ New-AzWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName
521
+
522
+ # Make a webapp and delete it once a snapshot is available
523
+ $tmpApp = New-AzWebApp - ResourceGroupName $rgname - Name $delName - Location $location - AppServicePlan $whpName
524
+ New-AzWebAppSlot - ResourceGroupName $rgname - Name $delName - Slot $delSlot
525
+
526
+ while ($snap -eq $null )
527
+ {
528
+ $snap = Get-AzWebAppSnapshot $tmpApp
529
+ if ($isRecordMode )
530
+ {
531
+ Start-Sleep - Seconds 60
532
+ }
533
+ }
534
+
535
+ Remove-AzWebAppSlot - ResourceGroupName $rgname - Name $delName - Slot $delSlot - Force
536
+ Remove-AzWebApp - ResourceGroupName $rgname - Name $delName - Force
537
+
538
+ $deletedApp = Get-AzDeletedWebApp - ResourceGroupName $rgname - Name $delName - Slot " Production"
445
539
446
- $deletedApp = Get-AzDeletedWebApp - ResourceGroupName $undeleteRgName - Name $undeleteAppName - Slot " Production"
447
540
# Test the InputObject parameter set
448
541
$restoredApp = Restore-AzDeletedWebApp $deletedApp - TargetResourceGroupName $rgname - TargetName $wname - Force
542
+ if ($isRecordMode )
543
+ {
544
+ # Need extra time for restore operation to resolve globally
545
+ Start-Sleep - Seconds 900
546
+ }
547
+
449
548
# Test the FromDeletedResourceName parameter set
450
- $restoredSlot = Restore-AzDeletedWebApp - ResourceGroupName $undeleteRgName - Name $undeleteAppName - Slot $undeleteSlot - TargetResourceGroupName $rgname - TargetName $wname - TargetSlot $slotName - Force
549
+ $restoredSlot = Restore-AzDeletedWebApp - ResourceGroupName $rgname - Name $delName - Slot $delSlot - TargetResourceGroupName $rgname - TargetName $wname - TargetSlot $slotName - Force
550
+ if ($isRecordMode )
551
+ {
552
+ Start-Sleep - Seconds 900
553
+ }
451
554
452
555
Assert-NotNull $restoredApp
453
556
Assert-AreEqual $rgname $restoredApp.ResourceGroup
@@ -473,14 +576,30 @@ function Test-RestoreDeletedWebAppToNew
473
576
$rgname = Get-ResourceGroupName
474
577
$location = Get-WebLocation
475
578
$whpName = Get-WebHostPlanName
476
- $tier = " Standard"
579
+ $tier = " Premium"
580
+ $delName = Get-WebsiteName
581
+ $isRecordMode = ((Get-WebsitesTestMode ) -ne ' Playback' )
477
582
478
583
try
479
584
{
480
585
# Setup
481
586
New-AzResourceGroup - Name $rgname - Location $location
482
587
New-AzAppServicePlan - ResourceGroupName $rgname - Name $whpName - Location $location - Tier $tier
483
- $deletedApp = Get-AzDeletedWebApp - ResourceGroupName $undeleteRgName - Name $undeleteAppName - Slot " Production"
588
+
589
+ # Make a webapp and delete it once a snapshot is available
590
+ $tmpApp = New-AzWebApp - ResourceGroupName $rgname - Name $delName - Location $location - AppServicePlan $whpName
591
+ while ($snap -eq $null )
592
+ {
593
+ $snap = Get-AzWebAppSnapshot $tmpApp
594
+ if ($isRecordMode )
595
+ {
596
+ Start-Sleep - Seconds 60
597
+ }
598
+ }
599
+
600
+ Remove-AzWebApp - ResourceGroupName $rgname - Name $delName - Force
601
+ $deletedApp = Get-AzDeletedWebApp - ResourceGroupName $rgname - Name $delName - Slot " Production"
602
+
484
603
# Test piping the deleted app
485
604
$job = $deletedApp | Restore-AzDeletedWebApp - TargetResourceGroupName $rgname - TargetAppServicePlanName $whpName - UseDisasterRecovery - Force - AsJob
486
605
$result = $job | Wait-Job
@@ -489,12 +608,18 @@ function Test-RestoreDeletedWebAppToNew
489
608
$restoredApp = $job | Receive-Job
490
609
Assert-NotNull $restoredApp
491
610
Assert-AreEqual $rgname $restoredApp.ResourceGroup
492
- Assert-AreEqual $undeleteAppName $restoredApp.Name
611
+ Assert-AreEqual $delName $restoredApp.Name
612
+
613
+ if ($isRecordMode )
614
+ {
615
+ # Need extra time for restore operation to resolve globally, or cleanup will be blocked
616
+ Start-Sleep - Seconds 900
617
+ }
493
618
}
494
619
finally
495
620
{
496
621
# Cleanup
497
- Remove-AzWebApp - ResourceGroupName $rgname - Name $undeleteAppName - Force
622
+ Remove-AzWebApp - ResourceGroupName $rgname - Name $delName - Force
498
623
Remove-AzAppServicePlan - ResourceGroupName $rgname - Name $whpName - Force
499
624
Remove-AzResourceGroup - Name $rgname - Force
500
625
}
0 commit comments