Skip to content

Commit bb61007

Browse files
author
Sambit Rath
committed
Added tests
1 parent d707b9a commit bb61007

File tree

5 files changed

+80
-2
lines changed

5 files changed

+80
-2
lines changed

src/RecoveryServices/RecoveryServices.Backup.Models/AzureVmWorkloadModels/AzureWorkloadRecoveryConfig.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ public class AzureWorkloadRecoveryConfig : RecoveryConfigBase
5555

5656
public string ContainerId { get; set; }
5757

58+
/// <summary>
59+
/// Full RP on which log backups will be applied
60+
/// </summary>
61+
public RecoveryPointBase FullRP { get; set; }
62+
63+
5864
public AzureWorkloadRecoveryConfig(string targetServer, string targetInstance, string restoreRequestType,
5965
RecoveryPointBase recoveryPoint, DateTime pointInTime)
6066
: base(restoreRequestType, recoveryPoint, pointInTime)

src/RecoveryServices/RecoveryServices.Backup.Providers/Providers/AzureWorkloadPsBackupProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ public RestAzureNS.AzureOperationResponse TriggerRestore()
377377
(AzureWorkloadRecoveryConfig)ProviderData[RestoreWLBackupItemParams.WLRecoveryConfig];
378378
RestoreRequestResource triggerRestoreRequest = new RestoreRequestResource();
379379

380-
if (wLRecoveryConfig.RecoveryPoint.ContainerName != null)
380+
if (wLRecoveryConfig.RecoveryPoint.ContainerName != null && wLRecoveryConfig.FullRP == null)
381381
{
382382
AzureWorkloadSQLRestoreRequest azureWorkloadSQLRestoreRequest =
383383
new AzureWorkloadSQLRestoreRequest();

src/RecoveryServices/RecoveryServices.Backup.Test/ScenarioTests/AzureWorkload/ItemTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,5 +103,14 @@ public void TestAzureVmWorkloadFullRestoreWithFiles()
103103
TestController.NewInstance.RunPsTest(
104104
_logger, PsBackupProviderTypes.AzureWorkload, "Test-AzureVmWorkloadFullRestoreWithFiles");
105105
}
106+
107+
[Fact]
108+
[Trait(Category.AcceptanceType, Category.CheckIn)]
109+
[Trait(TestConstants.Workload, TestConstants.AzureVmWorkload)]
110+
public void TestAzureVmWorkloadRestoreAsFiles()
111+
{
112+
TestController.NewInstance.RunPsTest(
113+
_logger, PsBackupProviderTypes.AzureWorkload, "Test-AzureVmWorkloadRestoreAsFiles");
114+
}
106115
}
107116
}

src/RecoveryServices/RecoveryServices.Backup.Test/ScenarioTests/AzureWorkload/ItemTests.ps1

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ $containerName = "psbvtsqlvm"
1616
$resourceGroupName = "pstestwlRG1bca8"
1717
$vaultName = "pstestwlRSV1bca8"
1818
$resourceId = "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pscloudtestrg/providers/Microsoft.Compute/virtualMachines/psbvtsqlvm"
19+
$filepath = "C:\"
20+
$restoreAsFilesVault = "iaasvmsqlworkloadexistingvault1"
1921
$resourceIdForFileDB = $resourceId
2022
$policyName = "HourlyLogBackup"
2123
$instanceName = "sqlinstance;mssqlserver"
@@ -602,4 +604,51 @@ function Test-AzureVmWorkloadFullRestoreWithFiles
602604
{
603605
Cleanup-Vault $vault $item $container
604606
}
607+
}
608+
609+
function Test-AzureVmWorkloadRestoreAsFiles
610+
{
611+
$vault = Get-AzRecoveryServicesVault -Name $restoreAsFilesVault
612+
613+
$container = Get-AzRecoveryServicesBackupContainer `
614+
-VaultId $vault.ID `
615+
-ContainerType "AzureVMAppContainer";
616+
617+
$item = Get-AzRecoveryServicesBackupItem `
618+
-VaultId $vault.ID `
619+
-BackupManagementType "AzureWorkload" `
620+
-WorkloadType "MSSQL";
621+
622+
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -VaultId $vault.ID -Item $item
623+
$time = get-date -Year 2020 -Month 1 -Day 30 -Minute 5
624+
$config = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig `
625+
-VaultId $vault.ID -PointInTime $time -Item $item -RestoreAsFiles `
626+
-FilePath $filepath -TargetContainer $container -FromFull $rp[3];
627+
628+
$restorejob1 = Restore-AzRecoveryServicesBackupItem `
629+
-VaultId $vault.ID `
630+
-WLRecoveryConfig $config | Wait-AzureRmRecoveryServicesBackupJob -VaultId $vault.ID;
631+
632+
Assert-True { $restorejob1.Status -eq "Completed" }
633+
634+
$config = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig `
635+
-VaultId $vault.ID -RecoveryPoint $rp[0] -Item $item -RestoreAsFiles `
636+
-FilePath $filepath -TargetContainer $container;
637+
638+
$restorejob2 = Restore-AzRecoveryServicesBackupItem `
639+
-VaultId $vault.ID `
640+
-WLRecoveryConfig $config | Wait-AzureRmRecoveryServicesBackupJob -VaultId $vault.ID
641+
642+
Assert-True { $restorejob2.Status -eq "Completed" }
643+
644+
$config = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig `
645+
-VaultId $vault.ID -PointInTime $time -Item $item -RestoreAsFiles `
646+
-FilePath $filepath -TargetContainer $container;
647+
648+
$restorejob3 = Restore-AzRecoveryServicesBackupItem `
649+
-VaultId $vault.ID `
650+
-WLRecoveryConfig $config | Wait-AzureRmRecoveryServicesBackupJob -VaultId $vault.ID
651+
652+
Assert-True { $restorejob3.Status -eq "Completed" }
653+
605654
}

src/RecoveryServices/RecoveryServices.Backup/Cmdlets/Restore/GetAzureRmRecoveryServicesBackupWorkloadRecoveryConfig.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public class GetAzureRmRecoveryServicesBackupWorkloadRecoveryConfig : RSBackupVa
9898
/// Specify Recovery point from which logs will be applies
9999
/// </summary>
100100
[Parameter(Mandatory = false)]
101-
public RecoveryPointBase FromFul { get; set; }
101+
public RecoveryPointBase FromFull { get; set; }
102102

103103
/// <summary>
104104
/// Specify Recovery point from which logs will be applies
@@ -264,6 +264,7 @@ public override void ExecuteCmdlet()
264264
azureWorkloadRecoveryConfig.RestoreRequestType = "Alternate WL Restore";
265265
azureWorkloadRecoveryConfig.RecoveryMode = "FileRecovery";
266266
azureWorkloadRecoveryConfig.FilePath = FilePath;
267+
azureWorkloadRecoveryConfig.FullRP = FromFull;
267268
}
268269
RecoveryConfigBase baseobj = azureWorkloadRecoveryConfig;
269270
WriteObject(baseobj);
@@ -447,6 +448,19 @@ public AzureWorkloadRecoveryConfig GetConfigObject()
447448
{
448449
restoreRequestType = "Alternate WL Restore";
449450
targetServer = TargetContainer.Name;
451+
if(recoveryPoint == null && FromFull == null)
452+
{
453+
Models.AzureWorkloadRecoveryPoint azureWorkloadRecoveryPoint = new Models.AzureWorkloadRecoveryPoint()
454+
{
455+
Id = Item.Id + "/recoveryPoints/DefaultRangeRecoveryPoint",
456+
RecoveryPointId = "DefaultRangeRecoveryPoint"
457+
};
458+
recoveryPoint = azureWorkloadRecoveryPoint;
459+
}
460+
else if(FromFull != null)
461+
{
462+
recoveryPoint = FromFull;
463+
}
450464
}
451465

452466
return new AzureWorkloadRecoveryConfig(targetServer, parentName, restoreRequestType, recoveryPoint, pointInTime);

0 commit comments

Comments
 (0)