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
+ Tests upgrading a server with recommended database
18
+ #>
19
+ function Test-ServerUpgradeWithRecommendedDatabase
20
+ {
21
+ # Setup
22
+ $server = Create- ServerForServerUpgradeTest
23
+
24
+ # Create a basic database
25
+ $databaseName = Get-DatabaseName
26
+ $database = New-AzureSqlDatabase - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName - DatabaseName $databaseName - Edition Basic - MaxSizeBytes 1 GB
27
+ Assert-AreEqual $database.DatabaseName $databaseName
28
+
29
+ try
30
+ {
31
+ $recommendedDatabase = New-Object - TypeName Microsoft.Azure.Management.Sql.Models.RecommendedDatabaseProperties
32
+ $recommendedDatabase.Name = databaseName
33
+ $recommendedDatabase.TargetEdition = " Standard"
34
+ $recommendedDatabase.TargetServiceLevelObjective = " S0"
35
+
36
+ Start-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName - ServerVersion 12.0 - ScheduleUpgradeAfterUtcDateTime ((Get-Date ).AddMinutes(1 ).ToUniversalTime()) - DatabaseCollection ($recommendedDatabase )
37
+
38
+ while ($true )
39
+ {
40
+ $upgrade = Get-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName
41
+ if ($upgrade.Status -eq " Completed" )
42
+ {
43
+ # Upgrade is successful
44
+ $server = Get-AzureSqlServer - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName
45
+ Assert-AreEqual $server.ServerVersion " 12.0"
46
+ break
47
+ }
48
+ elseif ($upgrade.Status -eq " Stopped" )
49
+ {
50
+ # Upgrade failed
51
+ $server = Get-AzureSqlServer - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName
52
+ Assert-AreEqual $server.ServerVersion " 2.0"
53
+ break
54
+ }
55
+
56
+ Start-Sleep - Seconds 1
57
+ }
58
+ }
59
+ finally
60
+ {
61
+ Remove-AzureResourceGroup - Name $server.ResourceGroupName - Force
62
+ }
63
+ }
64
+
65
+ <#
66
+ . SYNOPSIS
67
+ Tests upgrading a server and then cancel the upgrade
68
+ #>
69
+ function Test-ServerUpgradeAndCancel
70
+ {
71
+ # Setup
72
+ $server = Create- ServerForServerUpgradeTest
73
+
74
+ try
75
+ {
76
+ Start-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName - ServerVersion 12.0
77
+
78
+ $upgrade = Get-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName
79
+ Assert-AreEqual $upgrade.Status " Queued"
80
+
81
+ Stop-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName - Force
82
+
83
+ $upgrade = Get-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName
84
+ Assert-AreEqual $upgrade.Status " Cancelling"
85
+
86
+ while ($true )
87
+ {
88
+ $upgrade = Get-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName
89
+ if ($upgrade.Status -eq " Stopped" )
90
+ {
91
+ break
92
+ }
93
+
94
+ Start-Sleep - Seconds 1
95
+ }
96
+
97
+ # Upgrade is cancelled
98
+ $server = Get-AzureSqlServer - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName
99
+ Assert-AreEqual $server.ServerVersion " 2.0"
100
+ }
101
+ finally
102
+ {
103
+ Remove-AzureResourceGroup - Name $server.ResourceGroupName - Force
104
+ }
105
+ }
106
+
107
+ <#
108
+ . SYNOPSIS
109
+ Tests upgrading a server with invalid parameters
110
+ #>
111
+ function Test-ServerUpgradeNegative
112
+ {
113
+ # Setup
114
+ $server = Create- ServerForServerUpgradeTest
115
+
116
+ # Create a basic database
117
+ $databaseName = Get-DatabaseName
118
+ $database = New-AzureSqlDatabase - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName - DatabaseName $databaseName - Edition Basic - MaxSizeBytes 1 GB
119
+ Assert-AreEqual $database.DatabaseName $databaseName
120
+
121
+ try
122
+ {
123
+ Assert-Throws { Start-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName }
124
+ Assert-Throws { Start-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName - ServerVersion 13.0 }
125
+ Assert-Throws { Start-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName - ScheduleUpgradeAfterUtcDateTime ((Get-Date ).ToUniversalTime())}
126
+
127
+ $recommendedDatabase = New-Object - TypeName Microsoft.Azure.Management.Sql.Models.RecommendedDatabaseProperties
128
+ $recommendedDatabase.Name = databaseName
129
+ $recommendedDatabase.TargetEdition = " InvalidEdition"
130
+ $recommendedDatabase.TargetServiceLevelObjective = " S0"
131
+ Assert-Throws { Start-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName - DatabaseCollection ($recommendedDatabase )}
132
+
133
+ $recommendedDatabase.TargetEdition = " Premium"
134
+ $recommendedDatabase.TargetServiceLevelObjective = " S0"
135
+ Assert-Throws { Start-AzureSqlServerUpgrade - ResourceGroupName $server.ResourceGroupName - ServerName $server.ServerName - DatabaseCollection ($recommendedDatabase )}
136
+ }
137
+ finally
138
+ {
139
+ Remove-AzureResourceGroup - Name $server.ResourceGroupName - Force
140
+ }
141
+ }
142
+
143
+ <#
144
+ . SYNOPSIS
145
+ Creates a resource group and server for server upgrade tests
146
+ #>
147
+ function Create-ServerForServerUpgradeTest ()
148
+ {
149
+ $location = " West US"
150
+ $rgName = Get-ResourceGroupName
151
+
152
+ $rg = New-AzureResourceGroup - Name $rgName - Location $location
153
+
154
+ $serverName = Get-ServerName
155
+ $version = " 2.0"
156
+ $serverLogin = " testusername"
157
+ $serverPassword = " t357ingP@s5w0rd!"
158
+ $credentials = New-Object System.Management.Automation.PSCredential($serverLogin , ($serverPassword | ConvertTo-SecureString - asPlainText - Force))
159
+
160
+ $server = New-AzureSqlServer - ResourceGroupName $rgName - ServerName $serverName - Location $location - ServerVersion $version - SqlAdminCredentials $credentials
161
+ return $server
162
+ }
0 commit comments