1
+ # ----------------------------------------------------------------------------------
2
+ #
3
+ # Copyright Microsoft Corporation
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ # ----------------------------------------------------------------------------------
14
+
15
+ <#
16
+ . SYNOPSIS
17
+ Test the basic usage of the Set/Get/Remove virtual machine diagnostics extension command
18
+ #>
19
+ function Test-DiagnosticsExtensionBasic
20
+ {
21
+ $rgname = Get-ComputeTestResourceName
22
+ $loc = Get-ComputeVMLocation
23
+
24
+ try
25
+ {
26
+ # Setup
27
+ $vm = Create- VirtualMachine - rgname $rgname - loc $loc
28
+ $vmname = $vm.Name
29
+
30
+ # This is the storage name defined in config file
31
+ $storagename = ' definedinconfigstorage'
32
+ $storagetype = ' Standard_GRS'
33
+ New-AzureRmStorageAccount - ResourceGroupName $rgname - Name $storagename - Location $loc - Type $storagetype
34
+
35
+ # If diagnostics extension already exist, remove it
36
+ $extension = Get-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
37
+ if ($extension ) {
38
+ Remove-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
39
+ $extension = Get-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
40
+ Assert-Null $extension
41
+ }
42
+
43
+ # Test Set and Get command. It should use the storage account defined in configuration file
44
+ Set-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname - DiagnosticsConfigurationPath ' .\ConfigFiles\DiagnosticsExtensionConfig.xml'
45
+ $extension = Get-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
46
+
47
+ Assert-NotNull $extension
48
+ Assert-AreEqual $extension.Publisher ' Microsoft.Azure.Diagnostics'
49
+ Assert-AreEqual $extension.ExtensionType ' IaaSDiagnostics'
50
+ Assert-AreEqual $extension.Name ' Microsoft.Insights.VMDiagnosticsSettings'
51
+ $settings = $extension.PublicSettings | ConvertFrom-Json
52
+ Assert-AreEqual $settings.storageAccount $storagename
53
+
54
+ # Test Remove command.
55
+ Remove-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
56
+ $extension = Get-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
57
+ Assert-Null $extension
58
+ }
59
+ finally
60
+ {
61
+ # Cleanup
62
+ Clean - ResourceGroup $rgname
63
+ }
64
+ }
65
+
66
+ <#
67
+ . SYNOPSIS
68
+ Test specifying storage account name in command line.
69
+ The diagnostic extension should use this name instead of the one defined in config file.
70
+ #>
71
+ function Test-DiagnosticsExtensionSepcifyStorageAccountName
72
+ {
73
+ $rgname = Get-ComputeTestResourceName
74
+ $loc = Get-ComputeVMLocation
75
+
76
+ try
77
+ {
78
+ # Setup
79
+ $vm = Create- VirtualMachine - rgname $rgname - loc $loc
80
+ $vmname = $vm.Name
81
+
82
+ # This storage name will be used in command line directly when set diagnostics extension
83
+ $storagename = ' definedincommandline'
84
+ $storagetype = ' Standard_GRS'
85
+ New-AzureRmStorageAccount - ResourceGroupName $rgname - Name $storagename - Location $loc - Type $storagetype
86
+
87
+ # If diagnostics extension already exist, remove it
88
+ $extension = Get-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
89
+ if ($extension ) {
90
+ Remove-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
91
+ $extension = Get-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
92
+ Assert-Null $extension
93
+ }
94
+
95
+ Set-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname - DiagnosticsConfigurationPath ' .\ConfigFiles\DiagnosticsExtensionConfig.xml' - StorageAccountName $storagename
96
+ $extension = Get-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
97
+
98
+ Assert-NotNull $extension
99
+ Assert-AreEqual $extension.Publisher ' Microsoft.Azure.Diagnostics'
100
+ Assert-AreEqual $extension.ExtensionType ' IaaSDiagnostics'
101
+ Assert-AreEqual $extension.Name ' Microsoft.Insights.VMDiagnosticsSettings'
102
+ $settings = $extension.PublicSettings | ConvertFrom-Json
103
+ Assert-AreEqual $settings.storageAccount $storagename
104
+ }
105
+ finally
106
+ {
107
+ # Cleanup
108
+ Clean - ResourceGroup $rgname
109
+ }
110
+ }
111
+
112
+ <#
113
+ . SYNOPSIS
114
+ Test the case if we can't list the storage account key, the command should fail.
115
+ #>
116
+ function Test-DiagnosticsExtensionCantListSepcifyStorageAccountKey
117
+ {
118
+ $rgname = Get-ComputeTestResourceName
119
+ $loc = Get-ComputeVMLocation
120
+
121
+ try
122
+ {
123
+ # Setup
124
+ $vm = Create- VirtualMachine - rgname $rgname - loc $loc
125
+ $vmname = $vm.Name
126
+
127
+ # If diagnostics extension already exist, remove it
128
+ $extension = Get-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
129
+ if ($extension ) {
130
+ Remove-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
131
+ $extension = Get-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname
132
+ Assert-Null $extension
133
+ }
134
+
135
+ # Get a random storage account name, which we can't list the key
136
+ $storagename = ' notexiststorage'
137
+ Assert-ThrowsContains `
138
+ { Set-AzureRmVMDiagnosticsExtension - ResourceGroupName $rgname - VMName $vmname - DiagnosticsConfigurationPath ' .\ConfigFiles\DiagnosticsExtensionConfig.xml' - StorageAccountName $storagename } `
139
+ ' Failed to list storage account key'
140
+ }
141
+ finally
142
+ {
143
+ # Cleanup
144
+ Clean - ResourceGroup $rgname
145
+ }
146
+ }
0 commit comments