Skip to content

Commit 0f520b8

Browse files
committed
Added test cases
1 parent f86b565 commit 0f520b8

File tree

8 files changed

+2593
-2
lines changed

8 files changed

+2593
-2
lines changed

src/RecoveryServices/RecoveryServices.Backup.Helpers/Validations/PolicyValidations.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace Microsoft.Azure.Commands.RecoveryServices.Backup.Helpers
2525
public partial class PolicyHelpers
2626
{
2727

28-
public static void ValidateLongTermRetentionPolicyWithTieringPolicy(LongTermRetentionPolicy ltrPolicy, TieringPolicy tieringPolicy, bool isPreviousTieringPolicy = false) // check resx messages
28+
public static void ValidateLongTermRetentionPolicyWithTieringPolicy(LongTermRetentionPolicy ltrPolicy, TieringPolicy tieringPolicy, bool isPreviousTieringPolicy = false)
2929
{
3030
// To enable Archive(either TierRecommended or TierAfter), Monthly or Yearly retention needs to be set
3131
if(tieringPolicy != null && tieringPolicy.TieringMode != TieringMode.DoNotTier )

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,17 @@ public void TestAzureVmWorkloadPolicy()
3535
"Test-AzureVmWorkloadPolicy"
3636
);
3737
}
38+
39+
[Fact]
40+
[Trait(Category.AcceptanceType, Category.CheckIn)]
41+
[Trait(TestConstants.Workload, TestConstants.AzureVmWorkload)]
42+
public void TestAzureVmWorkloadSmartTieringPolicy()
43+
{
44+
TestRunner.RunTestScript(
45+
$"Import-Module {_AzureWorkloadcommonModule.AsAbsoluteLocation()}",
46+
$"Import-Module {_AzureWorkloadtestModule.AsAbsoluteLocation()}",
47+
"Test-AzureVmWorkloadSmartTieringPolicy"
48+
);
49+
}
3850
}
3951
}

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

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,57 @@ $location = "centraluseuap"
2121
$resourceGroupName = "iaasvm-pstest-rg"
2222
$vaultName = "iaasvm-pstest-vault"
2323

24+
function Test-AzureVmWorkloadSmartTieringPolicy
25+
{
26+
$location = "centraluseuap"
27+
$resourceGroupName = "hiagarg"
28+
$vaultName = "hiagaVault"
29+
$tierRecommendedPolicy = "hiagaSQLArchiveTierRecommended"
30+
$tierAfterPolicy = "hiagaSQLArchiveTierAfter"
31+
$archiveDisabledPolicy = "hiagaSQLArchiveDisabled"
32+
33+
try
34+
{
35+
$vault = Get-AzRecoveryServicesVault -ResourceGroupName $resourceGroupName -Name $vaultName
36+
37+
$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType MSSQL -BackupManagementType AzureWorkload
38+
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType MSSQL -BackupManagementType AzureWorkload
39+
40+
# error scenario - tier recommended not supported
41+
Assert-ThrowsContains { $pol = New-AzRecoveryServicesBackupProtectionPolicy -Name $tierRecommendedPolicy -WorkloadType MSSQL -BackupManagementType AzureWorkload -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $vault.ID -MoveToArchiveTier $true -TieringMode TierRecommended } `
42+
"Tiering mode TierRecommended is not supported for BackupManagementType AzureWorkload";
43+
44+
45+
# error scenario for tier after policy
46+
Assert-ThrowsContains { $pol = New-AzRecoveryServicesBackupProtectionPolicy -Name $tierAfterPolicy -WorkloadType MSSQL -BackupManagementType AzureWorkload -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $vault.ID -MoveToArchiveTier $true -TieringMode TierAllEligible -TierAfterDuration 40 -TierAfterDurationType Days } `
47+
"TierAfterDuration needs to be >= 45 Days, at least one retention policy for full backup (daily / weekly / monthly / yearly) should be >= (TierAfter + 180) days";
48+
49+
# create tier after policy
50+
$pol = New-AzRecoveryServicesBackupProtectionPolicy -Name $tierAfterPolicy -WorkloadType MSSQL -BackupManagementType AzureWorkload -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $vault.ID -MoveToArchiveTier $true -TieringMode TierAllEligible -TierAfterDuration 45 -TierAfterDurationType Days
51+
52+
Assert-True { $pol.Name -eq $tierAfterPolicy }
53+
54+
# modify policy
55+
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID | Where { $_.Name -match $tierAfterPolicy }
56+
Set-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID -Policy $pol[0] -MoveToArchiveTier $false
57+
Set-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID -Policy $pol[0] -MoveToArchiveTier $true -TieringMode TierAllEligible -TierAfterDuration 45 -TierAfterDurationType Days
58+
59+
# create archive disabled policy
60+
$pol = New-AzRecoveryServicesBackupProtectionPolicy -Name $archiveDisabledPolicy -WorkloadType MSSQL -BackupManagementType AzureWorkload -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $vault.ID -MoveToArchiveTier $false
61+
Assert-True { $pol.Name -eq $archiveDisabledPolicy }
62+
}
63+
finally
64+
{
65+
# Cleanup
66+
# Delete policy
67+
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID | Where { $_.Name -match "Archive" }
68+
69+
foreach ($policy in $pol){
70+
Remove-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID -Policy $policy -Force
71+
}
72+
}
73+
}
74+
2475
function Test-AzureVmWorkloadPolicy
2576
{
2677
$vault = Get-AzRecoveryServicesVault -ResourceGroupName $resourceGroupName -Name $vaultName

src/RecoveryServices/RecoveryServices.Backup.Test/ScenarioTests/IaasVm/PolicyTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,17 @@ public void TestAzureVMEnhancedPolicy()
5252
"Test-AzureVMEnhancedPolicy"
5353
);
5454
}
55+
56+
[Fact]
57+
[Trait(Category.AcceptanceType, Category.CheckIn)]
58+
[Trait(TestConstants.Workload, TestConstants.AzureVM)]
59+
public void TestAzureVMSmartTieringPolicy()
60+
{
61+
TestRunner.RunTestScript(
62+
$"Import-Module {_IaasVmcommonModule.AsAbsoluteLocation()}",
63+
$"Import-Module {_IaasVmtestModule.AsAbsoluteLocation()}",
64+
"Test-AzureVMSmartTieringPolicy"
65+
);
66+
}
5567
}
5668
}

src/RecoveryServices/RecoveryServices.Backup.Test/ScenarioTests/IaasVm/PolicyTests.ps1

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,60 @@ $oldResourceGroupName = "sambit_rg"
2626
$oldVaultName = "sambit"
2727
$oldPolicyName = "iaasvmretentioncheck"
2828

29+
function Test-AzureVMSmartTieringPolicy
30+
{
31+
$location = "centraluseuap"
32+
$resourceGroupName = "hiagarg"
33+
$vaultName = "hiagaVault"
34+
$tierRecommendedPolicy = "hiagaVMArchiveTierRecomm"
35+
$tierAfterPolicy = "hiagaVMArchiveTierAfter"
36+
37+
try
38+
{
39+
$vault = Get-AzRecoveryServicesVault -ResourceGroupName $resourceGroupName -Name $vaultName
40+
41+
$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType AzureVM -BackupManagementType AzureVM -PolicySubType Enhanced -ScheduleRunFrequency Weekly
42+
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType AzureVM -BackupManagementType AzureVM -ScheduleRunFrequency Weekly
43+
44+
# create tier recommended policy
45+
$pol = New-AzRecoveryServicesBackupProtectionPolicy -Name $tierRecommendedPolicy -WorkloadType AzureVM -BackupManagementType AzureVM -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $vault.ID -MoveToArchiveTier $true -TieringMode TierRecommended
46+
47+
Assert-True { $pol.Name -eq $tierRecommendedPolicy }
48+
49+
# error scenario for tier after policy
50+
Assert-ThrowsContains { $pol = New-AzRecoveryServicesBackupProtectionPolicy -Name $tierAfterPolicy -WorkloadType AzureVM -BackupManagementType AzureVM -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $vault.ID -MoveToArchiveTier $true -TieringMode TierAllEligible -TierAfterDuration 2 -TierAfterDurationType Months } `
51+
"TierAfterDuration needs to be >= 3 months, at least one of monthly or yearly retention should be >= (TierAfterDuration + 6) months";
52+
53+
# create tier after policy
54+
$pol = New-AzRecoveryServicesBackupProtectionPolicy -Name $tierAfterPolicy -WorkloadType AzureVM -BackupManagementType AzureVM -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $vault.ID -MoveToArchiveTier $true -TieringMode TierAllEligible -TierAfterDuration 3 -TierAfterDurationType Months
55+
56+
Assert-True { $pol.Name -eq $tierAfterPolicy }
57+
58+
# modify policy
59+
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID | Where { $_.Name -match $tierRecommendedPolicy }
60+
Set-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID -Policy $pol[0] -MoveToArchiveTier $false
61+
Set-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID -Policy $pol[0] -MoveToArchiveTier $true -TieringMode TierRecommended
62+
63+
# error scenario for retention policy
64+
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID | Where { $_.Name -match $tierRecommendedPolicy }
65+
$pol.RetentionPolicy.IsYearlyScheduleEnabled = $false
66+
$pol.RetentionPolicy.MonthlySchedule.DurationCountInMonths = 8
67+
68+
Assert-ThrowsContains { Set-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID -Policy $pol -RetentionPolicy $pol.RetentionPolicy } `
69+
"At least one of monthly or yearly retention should be >= 9 months as smart tiering is enabled for this policy. Please modify retention or disable smart tiering. Please note that disabling smart tiering may involve additional costs";
70+
}
71+
finally
72+
{
73+
# Cleanup
74+
# Delete policy
75+
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID | Where { $_.Name -match "Archive" }
76+
77+
foreach ($policy in $pol){
78+
Remove-AzRecoveryServicesBackupProtectionPolicy -VaultId $vault.ID -Policy $policy -Force
79+
}
80+
}
81+
}
82+
2983
function Test-AzureVMEnhancedPolicy
3084
{
3185
$location = "centraluseuap"

0 commit comments

Comments
 (0)