Skip to content

Commit ec2a9a6

Browse files
authored
Merge pull request #11192 from xaliciayang/ayang
LTR MI cmdlets and tests
2 parents a9ee527 + 5ccf6ac commit ec2a9a6

File tree

37 files changed

+7330
-296
lines changed

37 files changed

+7330
-296
lines changed

src/Sql/Sql.Test/ScenarioTests/DataSyncTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public DataSyncTests(ITestOutputHelper output) : base(output)
2828

2929
base.resourceTypesToIgnoreApiVersion = new string[] {
3030
"Microsoft.Sql/servers",
31-
"Microsoft.Sql/managedInstances/databases"
31+
"Microsoft.Sql/managedInstances/databases"
3232
};
3333
}
3434

@@ -135,6 +135,6 @@ public void TestSyncMemberSchemaRefreshAndGet()
135135
public void TestSyncMemberRemove()
136136
{
137137
RunPowerShellTest("Test-RemoveSyncMember");
138-
}
138+
}
139139
}
140140
}

src/Sql/Sql.Test/ScenarioTests/ManagedDatabaseBackupTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,26 @@ public void ManagedDeletedDatabaseShortTermRetentionPolicy()
5252
{
5353
RunPowerShellTest("Test-ManagedDeletedDatabaseShortTermRetentionPolicy");
5454
}
55+
56+
[Fact]
57+
[Trait(Category.AcceptanceType, Category.CheckIn)]
58+
public void TestManagedInstanceLongTermRetentionPolicy()
59+
{
60+
RunPowerShellTest("Test-ManagedInstanceLongTermRetentionPolicy");
61+
}
62+
63+
[Fact]
64+
[Trait(Category.AcceptanceType, Category.CheckIn)]
65+
public void TestManagedInstanceLongTermRetentionBackup()
66+
{
67+
RunPowerShellTest("Test-ManagedInstanceLongTermRetentionBackup");
68+
}
69+
70+
[Fact]
71+
[Trait(Category.AcceptanceType, Category.CheckIn)]
72+
public void TestManagedInstanceLongTermRetentionResourceGroupBasedBackup()
73+
{
74+
RunPowerShellTest("Test-ManagedInstanceLongTermRetentionResourceGroupBasedBackup");
75+
}
5576
}
5677
}

src/Sql/Sql.Test/ScenarioTests/ManagedDatabaseBackupTests.ps1

Lines changed: 147 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ function Test-ManagedLiveDatabaseShortTermRetentionPolicy
2323
$vnetName = "cl_initial"
2424
$subnetName = "Cool"
2525

26-
# Setup VNET
26+
# Setup VNET
2727
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location
2828
$subnetId = $virtualNetwork1.Subnets.where({ $_.Name -eq $subnetName })[0].Id
2929

@@ -88,14 +88,18 @@ function Test-ManagedLiveDatabaseShortTermRetentionPolicy
8888
}
8989
}
9090

91+
<#
92+
.SYNOPSIS
93+
Test LTR Policy functions for MI
94+
#>
9195
function Test-ManagedDeletedDatabaseShortTermRetentionPolicy
9296
{
9397
# Setup
9498
$rg = Create-ResourceGroupForTest
9599
$vnetName = "cl_initial"
96100
$subnetName = "Cool"
97101

98-
# Setup VNET
102+
# Setup VNET
99103
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location
100104
$subnetId = $virtualNetwork1.Subnets.where({ $_.Name -eq $subnetName })[0].Id
101105

@@ -130,7 +134,7 @@ function Test-ManagedDeletedDatabaseShortTermRetentionPolicy
130134
Remove-AzSqlInstanceDatabase -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -Name $managedDatabaseName -Force
131135

132136
# Get deleted database
133-
$deletedDatabases = Get-AzSqlDeletedInstanceDatabaseBackup -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -DatabaseName $managedDatabaseName
137+
$deletedDatabases = Get-AzSqlDeletedInstanceDatabaseBackup -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -DatabaseName $managedDatabaseName
134138

135139
# Set retention to 29, test default parameter providing.
136140
$retention = 29
@@ -173,4 +177,143 @@ function Test-ManagedDeletedDatabaseShortTermRetentionPolicy
173177
{
174178
Remove-ResourceGroupForTest $rg
175179
}
176-
}
180+
}
181+
<#
182+
.SYNOPSIS
183+
Test long term retention for managed databases.
184+
#>
185+
function Test-ManagedInstanceLongTermRetentionPolicy()
186+
{
187+
# Setup
188+
$resourceGroupName = "cl_stage_sea_cv"
189+
$managedInstanceName = "seageodr-gen5-gp"
190+
$weeklyRetention = "P1W"
191+
$zeroRetention = "PT0S"
192+
193+
try
194+
{
195+
# create test database
196+
$databaseName = "ps-ltr-policy-test-1"
197+
$database = New-AzSqlInstanceDatabase -ResourceGroupName $resourceGroupName -InstanceName $managedInstanceName -Name $databaseName
198+
199+
Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy -ResourceGroupName $resourceGroupName -InstanceName $managedInstanceName -DatabaseName $databaseName -WeeklyRetention $weeklyRetention
200+
$policy = Get-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy -ResourceGroup $resourceGroupName -InstanceName $managedInstanceName -DatabaseName $databaseName
201+
Assert-AreEqual $policy.WeeklyRetention $weeklyRetention
202+
Assert-AreEqual $policy.MonthlyRetention $zeroRetention
203+
Assert-AreEqual $policy.YearlyRetention $zeroRetention
204+
}
205+
finally
206+
{
207+
Remove-ResourceGroupForTest $resourceGroup
208+
}
209+
}
210+
211+
<#
212+
.SYNOPSIS
213+
Test long term retention backup commands for managed databases.
214+
#>
215+
function Test-ManagedInstanceLongTermRetentionBackup
216+
{
217+
218+
# MANUAL INSTRUCTIONS
219+
# Create a server and database and fill in the appropriate information below
220+
# Set the weekly retention on the database so that the first backup gets picked up, for example:
221+
# Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy -ResourceGroup $resourceGroup -ServerName $serverName -DatabaseName $databaseName -WeeklyRetention P1W
222+
# Wait about 18 hours until it gets properly copied and you see the backup when run get backups, for example:
223+
# Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -DatabaeName $databaseName
224+
$resourceGroup = "cl_stage_sea_cv"
225+
$locationName = "southeastasia"
226+
$managedInstanceName = "seageodr-gen5-gp"
227+
$databaseName = "ps-test-1"
228+
$databaseWithRemovableBackup = "ps-test-2";
229+
230+
# Basic Get Tests
231+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName
232+
Assert-AreNotEqual $backups.Count 0
233+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName
234+
Assert-AreNotEqual $backups.Count 0
235+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -DatabaseName $databaseName
236+
Assert-AreNotEqual $backups.Count 0
237+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -DatabaseName $databaseName -BackupName $backups[0].BackupName
238+
Assert-AreNotEqual $backups.Count 0
239+
240+
# Test Get Optional Parameters
241+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -DatabaseName $databaseName -OnlyLatestPerDatabase
242+
Assert-AreNotEqual $backups.Count 0
243+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -OnlyLatestPerDatabase -DatabaseState All
244+
Assert-AreNotEqual $backups.Count 0
245+
246+
# Test Get Piping with Optional Parameters
247+
$backups = Get-AzSqlInstanceDatabase -ResourceGroup $resourceGroup -InstanceName $managedInstanceName -Name $databaseName | Get-AzSqlInstanceDatabaseLongTermRetentionBackup -OnlyLatestPerDatabase
248+
Assert-AreNotEqual $backups.Count 0
249+
250+
# Restore Test
251+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName
252+
$restoredDatabase = "ps-test-restore-2"
253+
$db = Restore-AzSqlInstanceDatabase -FromLongTermRetentionBackup -ResourceId $backups[0].ResourceId -TargetResourceGroupName $resourceGroup -TargetInstanceName $managedInstanceName -TargetInstanceDatabaseName $restoredDatabase
254+
Assert-AreEqual $db.Name $restoredDatabase
255+
256+
# Test Remove Backup
257+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -DatabaseName $databaseWithRemovableBackup
258+
$initialBackups = $backups.Count
259+
Remove-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -DatabaseName $databaseWithRemovableBackup -BackupName $backups[0].BackupName -Force
260+
$backups = Get-AzSqlInstanceDatabase -ResourceGroup $resourceGroup -InstanceName $managedInstanceName -Name $databaseWithRemovableBackup | Get-AzSqlInstanceDatabaseLongTermRetentionBackup
261+
$expectedBackups = $initialBackups-1
262+
Assert-AreEqual $expectedBackups $backups.Count
263+
264+
# drop the restored db
265+
Remove-AzSqlInstanceDatabase -ResourceGroupName $resourceGroup -InstanceName $managedInstanceName -Name $restoredDatabase -Force
266+
}
267+
268+
<#
269+
.SYNOPSIS
270+
Test long term retention backup commands for managed databases (using resource group).
271+
#>
272+
function Test-ManagedInstanceLongTermRetentionResourceGroupBasedBackup
273+
{
274+
# MANUAL INSTRUCTIONS
275+
# Create a server and database and fill in the appropriate information below
276+
# Set the weekly retention on the database so that the first backup gets picked up, for example:
277+
# Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy -ResourceGroup $resourceGroup -ServerName $serverName -DatabaseName $databaseName -WeeklyRetention P1W
278+
# Wait about 18 hours until it gets properly copied and you see the backup when run get backups, for example:
279+
# Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -ServerName $serverName -DatabaeName $databaseName -ResourceGroupName $resourceGroup
280+
$resourceGroup = "cl_stage_sea_cv"
281+
$locationName = "southeastasia"
282+
$managedInstanceName = "seageodr-gen5-gp"
283+
$databaseName = "ps-test-3"
284+
285+
# Basic Get Tests
286+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -ResourceGroupName $resourceGroup
287+
Assert-AreNotEqual $backups.Count 0
288+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -ResourceGroupName $resourceGroup
289+
Assert-AreNotEqual $backups.Count 0
290+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -DatabaseName $databaseName -ResourceGroupName $resourceGroup
291+
Assert-AreNotEqual $backups.Count 0
292+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -DatabaseName $databaseName -BackupName $backups[0].BackupName -ResourceGroupName $resourceGroup
293+
Assert-AreNotEqual $backups.Count 0
294+
295+
# Test Get Piping
296+
$backups = Get-AzSqlInstanceDatabase -ResourceGroup $resourceGroup -InstanceName $managedInstanceName -Name $databaseName | Get-AzSqlInstanceDatabaseLongTermRetentionBackup
297+
Assert-AreNotEqual $backups.Count 0
298+
$backups = Get-AzSqlInstanceDatabase -ResourceGroup $resourceGroup -InstanceName $managedInstanceName -Name $databaseName | Get-AzSqlInstanceDatabaseLongTermRetentionBackup -BackupName $backups[0].BackupName
299+
Assert-AreNotEqual $backups.Count 0
300+
301+
# Test Get Optional Parameters
302+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -DatabaseName $databaseName -ResourceGroupName $resourceGroup -OnlyLatestPerDatabase
303+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -ResourceGroupName $resourceGroup -DatabaseState All
304+
Assert-AreNotEqual $backups.Count 0
305+
306+
# Test Get Piping with Optional Parameters
307+
$backups = Get-AzSqlInstanceDatabase -ResourceGroup $resourceGroup -InstanceName $managedInstanceName -Name $databaseName | Get-AzSqlInstanceDatabaseLongTermRetentionBackup -OnlyLatestPerDatabase
308+
Assert-AreNotEqual $backups.Count 0
309+
310+
# Restore Test
311+
$restoredDatabase = "ps-test-restore-with-rg-2"
312+
$backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -ResourceGroupName $resourceGroup
313+
$db = Restore-AzSqlInstanceDatabase -FromLongTermRetentionBackup -ResourceId $backups[0].ResourceId -TargetResourceGroupName $resourceGroup -TargetInstanceName $managedInstanceName -TargetInstanceDatabaseName $restoredDatabase
314+
Assert-AreEqual $db.Name $restoredDatabase
315+
316+
# drop the restored db
317+
Remove-AzSqlInstanceDatabase -ResourceGroupName $resourceGroup -InstanceName $managedInstanceName -Name $restoredDatabase -Force
318+
}
319+

src/Sql/Sql.Test/ScenarioTests/ManagedDatabaseCrudScenarioTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public void TestRemoveManagedDatabase()
6262
RunPowerShellTest("Test-RemoveManagedDatabase");
6363
}
6464

65-
[Fact]
65+
[Fact(Skip = "Skip due to long setup time for managed instance")]
6666
[Trait(Category.AcceptanceType, Category.CheckIn)]
6767
public void TestRestoreManagedDatabase()
6868
{

src/Sql/Sql.Test/ScenarioTests/VulnerabilityAssessmentTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ protected override void SetupManagementClients(RestTestFramework.MockContext con
3333
public VulnerabilityAssessmentTests(ITestOutputHelper output) : base(output)
3434
{
3535
base.resourceTypesToIgnoreApiVersion = new string[] {
36-
"Microsoft.Sql/servers"
36+
"Microsoft.Sql/servers",
37+
"Microsoft.Sql/managedInstances",
38+
"Microsoft.Sql/managedInstances/databases"
3739
};
3840
}
3941

@@ -95,4 +97,4 @@ public void VulnerabilityAssessmentScanConvertTest()
9597

9698
#endregion
9799
}
98-
}
100+
}

0 commit comments

Comments
 (0)