Skip to content

Commit 167dca3

Browse files
author
Anil Kumar Yelam
committed
Included unit tests. Changed ExtensionPublishedName so SQL Config tab appears on Portal
1 parent 8c690f1 commit 167dca3

File tree

11 files changed

+6094
-969
lines changed

11 files changed

+6094
-969
lines changed

src/ResourceManager/Compute/Commands.Compute.Test/Commands.Compute.Test.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,9 @@
368368
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.SqlIaaSExtensionTests\TestSqlIaaSExtension.json">
369369
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
370370
</None>
371+
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.SqlIaaSExtensionTests\TestSqlIaaSExtensionWith2016Image.json">
372+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
373+
</None>
371374
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineBootDiagnosticsTests\TestLinuxVirtualMachineBootDiagnostics.json">
372375
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
373376
</None>

src/ResourceManager/Compute/Commands.Compute.Test/ScenarioTests/SqlIaaSExtensionTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,11 @@ public void TestSqlIaaSAKVExtension()
2626
ComputeTestController.NewInstance.RunPsTest(_logger, "Test-SetAzureRmVMSqlServerAKVExtension");
2727
}
2828

29+
[Fact]
30+
[Trait(Category.AcceptanceType, Category.CheckIn)]
31+
public void TestSqlIaaSExtensionWith2016Image()
32+
{
33+
ComputeTestController.NewInstance.RunPsTest(_logger, "Test-SetAzureRmVMSqlServerExtensionWith2016Image");
34+
}
2935
}
3036
}

src/ResourceManager/Compute/Commands.Compute.Test/ScenarioTests/SqlIaaSExtensionTests.ps1

Lines changed: 140 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ function Test-SetAzureRmVMSqlServerAKVExtension
7676

7777
#Do actual changes and work here
7878

79-
$extensionName = "Microsoft.SqlServer.Management.SqlIaaSAgent";
79+
$extensionName = "SqlIaaSExtension";
8080

8181
# 1) Installs the SqlIaaS extension by calling Set-AzureRmVMSqlServerExtension cmdlet on a VM.
8282

@@ -183,11 +183,131 @@ function Test-SetAzureRmVMSqlServerExtension
183183

184184
#Do actual changes and work here
185185

186+
$extensionName = "SqlIaaSExtension";
187+
188+
# 1) Installs the SqlIaaS extension by calling Set-AzureRmVMSqlServerExtension cmdlet on a VM, with auto patching and auto backup settings.
189+
$aps = New-AzureRmVMSqlServerAutoPatchingConfig -Enable -DayOfWeek "Thursday" -MaintenanceWindowStartingHour 20 -MaintenanceWindowDuration 120 -PatchCategory "Important"
190+
$storageBlobUrl = "https://$stoname.blob.core.windows.net";
191+
$storageKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $rgname -Name $stoname).Key1;
192+
$storageKeyAsSecureString = ConvertTo-SecureString -String $storageKey -AsPlainText -Force;
193+
$abs = New-AzureRmVMSqlServerAutoBackupConfig -Enable -RetentionPeriodInDays 5 -ResourceGroupName $rgname -StorageUri $storageBlobUrl -StorageKey $storageKeyAsSecureString
194+
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -AutoBackupSettings $abs -ResourceGroupName $rgname -VMName $vmname -Version "1.2" -Verbose -Name $extensionName;
195+
196+
# 2) Calls Get-AzureRmVMSqlServerExtension cmdlet to check the status of the extension installation.
197+
$extension = Get-AzureRmVMSqlServerExtension -ResourceGroupName $rgname -VmName $vmName -Name $extensionName;
198+
199+
# 3) Verifies settings are correct given input
200+
Assert-AreEqual $extension.AutoPatchingSettings.DayOfWeek "Thursday"
201+
Assert-AreEqual $extension.AutoPatchingSettings.MaintenanceWindowStartingHour 20
202+
Assert-AreEqual $extension.AutoPatchingSettings.MaintenanceWindowDuration 120
203+
Assert-AreEqual $extension.AutoPatchingSettings.PatchCategory "Important"
204+
205+
Assert-AreEqual $extension.AutoBackupSettings.RetentionPeriod 5
206+
Assert-AreEqual $extension.AutoBackupSettings.Enable $true
207+
208+
# 4) Update extension values
209+
$aps = New-AzureRmVMSqlServerAutoPatchingConfig -Enable -DayOfWeek "Monday" -MaintenanceWindowStartingHour 20 -MaintenanceWindowDuration 120 -PatchCategory "Important"
210+
$abs = New-AzureRmVMSqlServerAutoBackupConfig -Enable -RetentionPeriodInDays 10 -ResourceGroupName $rgname -StorageUri $storageBlobUrl -StorageKey $storageKeyAsSecureString
211+
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -AutoBackupSettings $abs -ResourceGroupName $rgname -VMName $vmname -Version "1.2" -Verbose -Name $extensionName;
212+
213+
# 5) Verify changes
214+
215+
$extension = Get-AzureRmVMSqlServerExtension -ResourceGroupName $rgname -VmName $vmName -Name $extensionName;
216+
Assert-AreEqual $extension.AutoPatchingSettings.DayOfWeek "Monday"
217+
Assert-AreEqual $extension.AutoBackupSettings.RetentionPeriod 10
218+
219+
# 6) Test with correct Name and Version
220+
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -AutoBackupSettings $abs -ResourceGroupName $rgname -VMName $vmName -Name $extensionName -Version "1.2"
221+
222+
# 7) Test with correct Name and incorrect Version
223+
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -AutoBackupSettings $abs -ResourceGroupName $rgname -VMName $vmName -Name $extensionName -Version "1.*"
224+
}
225+
finally
226+
{
227+
# Cleanup
228+
if(Get-AzureRmResourceGroup -Name $rgname -Location $loc)
229+
{
230+
#Remove-AzureRmResourceGroup -Name $rgname -Force;
231+
}
232+
}
233+
}
234+
235+
# Test setting up VM with Sql Server 2016 image. (Includes testing for AutoBackup V2)
236+
function Test-SetAzureRmVMSqlServerExtensionWith2016Image
237+
{
238+
Set-StrictMode -Version latest; $ErrorActionPreference = 'Stop'
239+
240+
# Setup
241+
$rgname = Get-ComputeTestResourceName
242+
$loc = Get-ComputeVMLocation
243+
244+
try
245+
{
246+
# Common
247+
New-AzureRmResourceGroup -Name $rgname -Location $loc -Force;
248+
249+
# VM Profile & Hardware
250+
$vmsize = 'Standard_A2';
251+
$vmname = 'vm' + $rgname;
252+
$p = New-AzureRmVMConfig -VMName $vmname -VMSize $vmsize;
253+
Assert-AreEqual $p.HardwareProfile.VmSize $vmsize;
254+
255+
# NRP
256+
$subnet = New-AzureRmVirtualNetworkSubnetConfig -Name ('subnet' + $rgname) -AddressPrefix "10.0.0.0/24";
257+
$vnet = New-AzureRmVirtualNetwork -Force -Name ('vnet' + $rgname) -ResourceGroupName $rgname -Location $loc -AddressPrefix "10.0.0.0/16" -Subnet $subnet;
258+
$vnet = Get-AzureRmVirtualNetwork -Name ('vnet' + $rgname) -ResourceGroupName $rgname;
259+
$subnetId = $vnet.Subnets[0].Id;
260+
$pubip = New-AzureRmPublicIpAddress -Force -Name ('pubip' + $rgname) -ResourceGroupName $rgname -Location $loc -AllocationMethod Dynamic -DomainNameLabel ('pubip' + $rgname);
261+
$pubip = Get-AzureRmPublicIpAddress -Name ('pubip' + $rgname) -ResourceGroupName $rgname;
262+
$pubipId = $pubip.Id;
263+
$nic = New-AzureRmNetworkInterface -Force -Name ('nic' + $rgname) -ResourceGroupName $rgname -Location $loc -SubnetId $subnetId -PublicIpAddressId $pubip.Id;
264+
$nic = Get-AzureRmNetworkInterface -Name ('nic' + $rgname) -ResourceGroupName $rgname;
265+
$nicId = $nic.Id;
266+
267+
$p = Add-AzureRmVMNetworkInterface -VM $p -Id $nicId;
268+
Assert-AreEqual $p.NetworkProfile.NetworkInterfaces.Count 1;
269+
Assert-AreEqual $p.NetworkProfile.NetworkInterfaces[0].Id $nicId;
270+
271+
# Storage Account
272+
$stoname = 'sto' + $rgname;
273+
$stotype = 'Standard_GRS';
274+
New-AzureRmStorageAccount -ResourceGroupName $rgname -Name $stoname -Location $loc -Type $stotype;
275+
Retry-IfException { $global:stoaccount = Get-AzureRmStorageAccount -ResourceGroupName $rgname -Name $stoname; }
276+
277+
$osDiskName = 'osDisk';
278+
$osDiskCaching = 'ReadWrite';
279+
$osDiskVhdUri = "https://$stoname.blob.core.windows.net/test/os.vhd";
280+
$dataDiskVhdUri1 = "https://$stoname.blob.core.windows.net/test/data1.vhd";
281+
282+
$p = Set-AzureRmVMOSDisk -VM $p -Name $osDiskName -VhdUri $osDiskVhdUri -Caching $osDiskCaching -CreateOption FromImage;
283+
$p = Add-AzureRmVMDataDisk -VM $p -Name 'testDataDisk1' -Caching 'ReadOnly' -DiskSizeInGB 10 -Lun 1 -VhdUri $dataDiskVhdUri1 -CreateOption Empty;
284+
285+
# OS & Image
286+
$user = "localadmin";
287+
$password = $PLACEHOLDER;
288+
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force;
289+
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword);
290+
$computerName = 'test';
291+
$vhdContainer = "https://$stoname.blob.core.windows.net/test";
292+
293+
$p = Set-AzureRmVMOperatingSystem -VM $p -Windows -ComputerName $computerName -Credential $cred -ProvisionVMAgent;
294+
$p = Set-AzureRmVMSourceImage -VM $p -PublisherName MicrosoftSQLServer -Offer SQL2016-WS2012R2 -Skus Enterprise -Version "latest"
295+
296+
# Virtual Machine
297+
New-AzureRmVM -ResourceGroupName $rgname -Location $loc -VM $p;
298+
299+
#Do actual changes and work here
300+
186301
$extensionName = "Microsoft.SqlServer.Management.SqlIaaSAgent";
187302

188-
# 1) Installs the SqlIaaS extension by calling Set-AzureRmVMSqlServerExtension cmdlet on a VM.
303+
# 1) Installs the SqlIaaS extension by calling Set-AzureRmVMSqlServerExtension cmdlet on a VM, with auto patching and auto backup settings.
189304
$aps = New-AzureRmVMSqlServerAutoPatchingConfig -Enable -DayOfWeek "Thursday" -MaintenanceWindowStartingHour 20 -MaintenanceWindowDuration 120 -PatchCategory "Important"
190-
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -ResourceGroupName $rgname -VMName $vmname -Version "1.2" -Verbose -Name $extensionName;
305+
$storageBlobUrl = "https://$stoname.blob.core.windows.net";
306+
$storageKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $rgname -Name $stoname).Key1;
307+
$storageKeyAsSecureString = ConvertTo-SecureString -String $storageKey -AsPlainText -Force;
308+
$abs = New-AzureRmVMSqlServerAutoBackupConfig -Enable -RetentionPeriodInDays 5 -ResourceGroupName $rgname -StorageUri $storageBlobUrl -StorageKey $storageKeyAsSecureString `
309+
-BackupScheduleType Manual -BackupSystemDbs -FullBackupStartHour 10 -FullBackupWindowInHours 5 -FullBackupFrequency Daily -LogBackupFrequencyInMinutes 30
310+
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -AutoBackupSettings $abs -ResourceGroupName $rgname -VMName $vmname -Version "1.2" -Verbose -Name $extensionName;
191311

192312
# 2) Calls Get-AzureRmVMSqlServerExtension cmdlet to check the status of the extension installation.
193313
$extension = Get-AzureRmVMSqlServerExtension -ResourceGroupName $rgname -VmName $vmName -Name $extensionName;
@@ -198,19 +318,33 @@ function Test-SetAzureRmVMSqlServerExtension
198318
Assert-AreEqual $extension.AutoPatchingSettings.MaintenanceWindowDuration 120
199319
Assert-AreEqual $extension.AutoPatchingSettings.PatchCategory "Important"
200320

321+
Assert-AreEqual $extension.AutoBackupSettings.RetentionPeriod 5
322+
Assert-AreEqual $extension.AutoBackupSettings.Enable $true
323+
Assert-AreEqual $extension.AutoBackupSettings.BackupScheduleType "Manual"
324+
Assert-AreEqual $extension.AutoBackupSettings.FullBackupFrequency "Daily"
325+
Assert-AreEqual $extension.AutoBackupSettings.BackupSystemDbs $true
326+
Assert-AreEqual $extension.AutoBackupSettings.FullBackupStartTime 10
327+
Assert-AreEqual $extension.AutoBackupSettings.FullBackupWindowHours 5
328+
Assert-AreEqual $extension.AutoBackupSettings.LogBackupFrequency 30
329+
201330
# 4) Update extension values
202331
$aps = New-AzureRmVMSqlServerAutoPatchingConfig -Enable -DayOfWeek "Monday" -MaintenanceWindowStartingHour 20 -MaintenanceWindowDuration 120 -PatchCategory "Important"
203-
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -ResourceGroupName $rgname -VMName $vmname -Version "1.2" -Verbose -Name $extensionName;
332+
$abs = New-AzureRmVMSqlServerAutoBackupConfig -Enable -RetentionPeriodInDays 10 -ResourceGroupName $rgname -StorageUri $storageBlobUrl `
333+
-StorageKey $storageKeyAsSecureString -BackupScheduleType Automated
334+
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -AutoBackupSettings $abs -ResourceGroupName $rgname -VMName $vmname -Version "1.2" -Verbose -Name $extensionName;
204335

205336
# 5) Verify changes
206337
$extension = Get-AzureRmVMSqlServerExtension -ResourceGroupName $rgname -VmName $vmName -Name $extensionName;
207338
Assert-AreEqual $extension.AutoPatchingSettings.DayOfWeek "Monday"
339+
Assert-AreEqual $extension.AutoBackupSettings.RetentionPeriod 10
340+
Assert-AreEqual $extension.AutoBackupSettings.Enable $true
341+
Assert-AreEqual $extension.AutoBackupSettings.BackupScheduleType "Automated"
208342

209343
# 6) Test with correct Name and Version
210-
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -ResourceGroupName $rgname -VMName $vmName -Name $extensionName -Version "1.2"
344+
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -AutoBackupSettings $abs -ResourceGroupName $rgname -VMName $vmName -Name $extensionName -Version "1.2"
211345

212346
# 7) Test with correct Name and incorrect Version
213-
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -ResourceGroupName $rgname -VMName $vmName -Name $extensionName -Version "1.*"
347+
Set-AzureRmVMSqlServerExtension -AutoPatchingSettings $aps -AutoBackupSettings $abs -ResourceGroupName $rgname -VMName $vmName -Name $extensionName -Version "1.*"
214348
}
215349
finally
216350
{

0 commit comments

Comments
 (0)