azure-developer-loadtesting 1.0.0__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- azure-developer-loadtesting-1.0.0/CHANGELOG.md +72 -0
- azure-developer-loadtesting-1.0.0/LICENSE +21 -0
- azure-developer-loadtesting-1.0.0/MANIFEST.in +7 -0
- azure-developer-loadtesting-1.0.0/PKG-INFO +281 -0
- azure-developer-loadtesting-1.0.0/README.md +258 -0
- azure-developer-loadtesting-1.0.0/azure/__init__.py +1 -0
- azure-developer-loadtesting-1.0.0/azure/developer/__init__.py +1 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/__init__.py +10 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_client.py +97 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/__init__.py +26 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/_client.py +88 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/_configuration.py +71 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/_patch.py +24 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/_serialization.py +1996 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/_vendor.py +20 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/_version.py +9 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/aio/__init__.py +23 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/aio/_client.py +88 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/aio/_configuration.py +71 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/aio/_patch.py +23 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/aio/_vendor.py +17 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/aio/operations/__init__.py +21 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/aio/operations/_operations.py +6517 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/aio/operations/_patch.py +187 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/operations/__init__.py +21 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/operations/_operations.py +7242 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_generated/operations/_patch.py +195 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/_version.py +6 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/aio/__init__.py +9 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/aio/_client.py +107 -0
- azure-developer-loadtesting-1.0.0/azure/developer/loadtesting/py.typed +1 -0
- azure-developer-loadtesting-1.0.0/azure_developer_loadtesting.egg-info/PKG-INFO +281 -0
- azure-developer-loadtesting-1.0.0/azure_developer_loadtesting.egg-info/SOURCES.txt +52 -0
- azure-developer-loadtesting-1.0.0/azure_developer_loadtesting.egg-info/dependency_links.txt +1 -0
- azure-developer-loadtesting-1.0.0/azure_developer_loadtesting.egg-info/not-zip-safe +1 -0
- azure-developer-loadtesting-1.0.0/azure_developer_loadtesting.egg-info/requires.txt +5 -0
- azure-developer-loadtesting-1.0.0/azure_developer_loadtesting.egg-info/top_level.txt +1 -0
- azure-developer-loadtesting-1.0.0/pyproject.toml +6 -0
- azure-developer-loadtesting-1.0.0/samples/begin_test_run.py +52 -0
- azure-developer-loadtesting-1.0.0/samples/create_or_update_app_components.py +57 -0
- azure-developer-loadtesting-1.0.0/samples/create_or_update_test_function.py +84 -0
- azure-developer-loadtesting-1.0.0/samples/delete_load_test_function.py +46 -0
- azure-developer-loadtesting-1.0.0/samples/delete_load_test_run.py +39 -0
- azure-developer-loadtesting-1.0.0/samples/get_metrics.py +64 -0
- azure-developer-loadtesting-1.0.0/samples/upload_test_file.py +45 -0
- azure-developer-loadtesting-1.0.0/setup.cfg +4 -0
- azure-developer-loadtesting-1.0.0/setup.py +71 -0
- azure-developer-loadtesting-1.0.0/tests/conftest.py +60 -0
- azure-developer-loadtesting-1.0.0/tests/test_admin_ops.py +284 -0
- azure-developer-loadtesting-1.0.0/tests/test_async_admin_ops.py +286 -0
- azure-developer-loadtesting-1.0.0/tests/test_async_run_ops.py +286 -0
- azure-developer-loadtesting-1.0.0/tests/test_run_ops.py +289 -0
- azure-developer-loadtesting-1.0.0/tests/testcase.py +41 -0
- azure-developer-loadtesting-1.0.0/tests/testcase_async.py +26 -0
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
# -------------------------------------------------------------------------
|
|
3
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
5
|
+
# license information.
|
|
6
|
+
# -------------------------------------------------------------------------
|
|
7
|
+
import os
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
import pytest
|
|
11
|
+
from azure.core.exceptions import HttpResponseError, ResourceNotFoundError
|
|
12
|
+
|
|
13
|
+
from testcase import LoadtestingPowerShellPreparer, LoadtestingTest
|
|
14
|
+
from devtools_testutils import recorded_by_proxy, set_bodiless_matcher, set_custom_default_matcher
|
|
15
|
+
|
|
16
|
+
DISPLAY_NAME = "TestingResourcePyTest"
|
|
17
|
+
NON_EXISTING_RESOURCE = "nonexistingresource"
|
|
18
|
+
class TestLoadTestAdministrationClient(LoadtestingTest):
|
|
19
|
+
|
|
20
|
+
def setup_create_load_test(self, endpoint):
|
|
21
|
+
self.setup_load_test_id = "pytest_setup_load_test_id"
|
|
22
|
+
client = self.create_administration_client(endpoint)
|
|
23
|
+
|
|
24
|
+
client.create_or_update_test(
|
|
25
|
+
self.setup_load_test_id,
|
|
26
|
+
{
|
|
27
|
+
"description": "",
|
|
28
|
+
"displayName": DISPLAY_NAME,
|
|
29
|
+
"loadTestConfig": {
|
|
30
|
+
"engineSize": "m",
|
|
31
|
+
"engineInstances": 1,
|
|
32
|
+
"splitAllCSVs": False,
|
|
33
|
+
},
|
|
34
|
+
"secrets": {},
|
|
35
|
+
"environmentVariables": {},
|
|
36
|
+
"passFailCriteria": {"passFailMetrics": {}},
|
|
37
|
+
"keyvaultReferenceIdentityType": "SystemAssigned",
|
|
38
|
+
"keyvaultReferenceIdentityId": None,
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
def setup_upload_test_file(self, endpoint):
|
|
43
|
+
client = self.create_administration_client(endpoint)
|
|
44
|
+
self.setup_file_name = "sample.jmx"
|
|
45
|
+
client.begin_upload_test_file(self.setup_load_test_id, "sample.jmx", open(os.path.join(Path(__file__).resolve().parent, "sample.jmx"), "rb"))
|
|
46
|
+
|
|
47
|
+
def setup_app_components(self, endpoint, resource_id):
|
|
48
|
+
client = self.create_administration_client(endpoint)
|
|
49
|
+
|
|
50
|
+
client.create_or_update_app_components(
|
|
51
|
+
self.setup_load_test_id,
|
|
52
|
+
{
|
|
53
|
+
"components": {
|
|
54
|
+
resource_id: {
|
|
55
|
+
"resourceId": resource_id,
|
|
56
|
+
"resourceName": "App-Service-Sample-Demo",
|
|
57
|
+
"resourceType": "Microsoft.Web/sites",
|
|
58
|
+
"kind": "web",
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
)
|
|
63
|
+
@LoadtestingPowerShellPreparer()
|
|
64
|
+
@recorded_by_proxy
|
|
65
|
+
def test_create_or_update_load_test(self, loadtesting_endpoint, loadtesting_test_id):
|
|
66
|
+
set_bodiless_matcher()
|
|
67
|
+
|
|
68
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
69
|
+
result = client.create_or_update_test(
|
|
70
|
+
loadtesting_test_id,
|
|
71
|
+
{
|
|
72
|
+
"description": "",
|
|
73
|
+
"displayName": DISPLAY_NAME,
|
|
74
|
+
"loadTestConfig": {
|
|
75
|
+
"engineSize": "m",
|
|
76
|
+
"engineInstances": 1,
|
|
77
|
+
"splitAllCSVs": False,
|
|
78
|
+
},
|
|
79
|
+
"secrets": {},
|
|
80
|
+
"environmentVariables": {},
|
|
81
|
+
"passFailCriteria": {"passFailMetrics": {}},
|
|
82
|
+
"keyvaultReferenceIdentityType": "SystemAssigned",
|
|
83
|
+
"keyvaultReferenceIdentityId": None,
|
|
84
|
+
},
|
|
85
|
+
)
|
|
86
|
+
assert result is not None
|
|
87
|
+
|
|
88
|
+
with pytest.raises(HttpResponseError):
|
|
89
|
+
client.create_or_update_test(
|
|
90
|
+
loadtesting_test_id,
|
|
91
|
+
{
|
|
92
|
+
"description": "",
|
|
93
|
+
"displayName": DISPLAY_NAME + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
|
|
94
|
+
"loadTestConfig": {
|
|
95
|
+
"engineSize": "m",
|
|
96
|
+
"engineInstances": 1,
|
|
97
|
+
"splitAllCSVs": False,
|
|
98
|
+
},
|
|
99
|
+
"secrets": {},
|
|
100
|
+
"environmentVariables": {},
|
|
101
|
+
"passFailCriteria": {"passFailMetrics": {}},
|
|
102
|
+
"keyvaultReferenceIdentityType": "SystemAssigned",
|
|
103
|
+
"keyvaultReferenceIdentityId": None,
|
|
104
|
+
},
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
@LoadtestingPowerShellPreparer()
|
|
108
|
+
@recorded_by_proxy
|
|
109
|
+
def test_delete_load_test(self, loadtesting_endpoint):
|
|
110
|
+
set_bodiless_matcher()
|
|
111
|
+
self.setup_create_load_test(loadtesting_endpoint)
|
|
112
|
+
|
|
113
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
114
|
+
result = client.delete_test(self.setup_load_test_id)
|
|
115
|
+
assert result is None
|
|
116
|
+
|
|
117
|
+
with pytest.raises(ResourceNotFoundError):
|
|
118
|
+
client.delete_test(NON_EXISTING_RESOURCE)
|
|
119
|
+
|
|
120
|
+
@LoadtestingPowerShellPreparer()
|
|
121
|
+
@recorded_by_proxy
|
|
122
|
+
def test_get_load_test(self, loadtesting_endpoint):
|
|
123
|
+
set_bodiless_matcher()
|
|
124
|
+
self.setup_create_load_test(loadtesting_endpoint)
|
|
125
|
+
|
|
126
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
127
|
+
result = client.get_test(self.setup_load_test_id)
|
|
128
|
+
assert result is not None
|
|
129
|
+
|
|
130
|
+
with pytest.raises(ResourceNotFoundError):
|
|
131
|
+
client.get_test(NON_EXISTING_RESOURCE)
|
|
132
|
+
|
|
133
|
+
@LoadtestingPowerShellPreparer()
|
|
134
|
+
@recorded_by_proxy
|
|
135
|
+
def test_list_load_tests(self, loadtesting_endpoint):
|
|
136
|
+
set_bodiless_matcher()
|
|
137
|
+
self.setup_create_load_test(loadtesting_endpoint)
|
|
138
|
+
|
|
139
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
140
|
+
result = client.list_tests()
|
|
141
|
+
assert result is not None
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
@LoadtestingPowerShellPreparer()
|
|
145
|
+
@recorded_by_proxy
|
|
146
|
+
def test_get_test_file(self, loadtesting_endpoint):
|
|
147
|
+
set_bodiless_matcher()
|
|
148
|
+
self.setup_create_load_test(loadtesting_endpoint)
|
|
149
|
+
self.setup_upload_test_file(loadtesting_endpoint)
|
|
150
|
+
|
|
151
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
152
|
+
result = client.get_test_file(self.setup_load_test_id, self.setup_file_name)
|
|
153
|
+
assert result is not None
|
|
154
|
+
|
|
155
|
+
with pytest.raises(ResourceNotFoundError):
|
|
156
|
+
client.get_test_file(self.setup_load_test_id, "nonexistent.jmx")
|
|
157
|
+
|
|
158
|
+
@LoadtestingPowerShellPreparer()
|
|
159
|
+
@recorded_by_proxy
|
|
160
|
+
def test_delete_test_file(self, loadtesting_endpoint):
|
|
161
|
+
set_bodiless_matcher()
|
|
162
|
+
self.setup_create_load_test(loadtesting_endpoint)
|
|
163
|
+
self.setup_upload_test_file(loadtesting_endpoint)
|
|
164
|
+
|
|
165
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
166
|
+
result = client.delete_test_file(self.setup_load_test_id, self.setup_file_name)
|
|
167
|
+
assert result is None
|
|
168
|
+
|
|
169
|
+
with pytest.raises(ResourceNotFoundError):
|
|
170
|
+
client.delete_test_file(self.setup_load_test_id, "nonexistent.jmx")
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
@LoadtestingPowerShellPreparer()
|
|
174
|
+
@recorded_by_proxy
|
|
175
|
+
def list_test_files(self, loadtesting_endpoint):
|
|
176
|
+
set_bodiless_matcher()
|
|
177
|
+
self.setup_create_load_test(loadtesting_endpoint)
|
|
178
|
+
self.setup_upload_test_file(loadtesting_endpoint)
|
|
179
|
+
|
|
180
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
181
|
+
result = client.list_test_files(self.setup_load_test_id)
|
|
182
|
+
assert result is not None
|
|
183
|
+
|
|
184
|
+
with pytest.raises(ResourceNotFoundError):
|
|
185
|
+
client.list_test_files(NON_EXISTING_RESOURCE)
|
|
186
|
+
|
|
187
|
+
@LoadtestingPowerShellPreparer()
|
|
188
|
+
@recorded_by_proxy
|
|
189
|
+
def test_create_or_update_app_components(self, loadtesting_endpoint, loadtesting_test_id, loadtesting_resource_id):
|
|
190
|
+
set_bodiless_matcher()
|
|
191
|
+
|
|
192
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
193
|
+
result = client.create_or_update_app_components(
|
|
194
|
+
loadtesting_test_id,
|
|
195
|
+
{
|
|
196
|
+
"components":
|
|
197
|
+
{
|
|
198
|
+
loadtesting_resource_id:
|
|
199
|
+
{
|
|
200
|
+
"resourceId": loadtesting_resource_id,
|
|
201
|
+
"resourceName": "App-Service-Sample-Demo",
|
|
202
|
+
"resourceType": "Microsoft.Web/sites",
|
|
203
|
+
"kind": "web"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
)
|
|
208
|
+
assert result is not None
|
|
209
|
+
|
|
210
|
+
with pytest.raises(ResourceNotFoundError):
|
|
211
|
+
client.create_or_update_app_components(
|
|
212
|
+
NON_EXISTING_RESOURCE,
|
|
213
|
+
{
|
|
214
|
+
"components": {
|
|
215
|
+
loadtesting_resource_id: {
|
|
216
|
+
"resourceId": loadtesting_resource_id,
|
|
217
|
+
"resourceName": "App-Service-Sample-Demo",
|
|
218
|
+
"resourceType": "Microsoft.Web/sites",
|
|
219
|
+
"kind": "web",
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
)
|
|
224
|
+
|
|
225
|
+
@LoadtestingPowerShellPreparer()
|
|
226
|
+
@recorded_by_proxy
|
|
227
|
+
def test_get_app_components(self, loadtesting_endpoint, loadtesting_resource_id):
|
|
228
|
+
set_bodiless_matcher()
|
|
229
|
+
self.setup_create_load_test(loadtesting_endpoint)
|
|
230
|
+
self.setup_app_components(loadtesting_endpoint, loadtesting_resource_id)
|
|
231
|
+
|
|
232
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
233
|
+
result = client.get_app_components(self.setup_load_test_id)
|
|
234
|
+
assert result is not None
|
|
235
|
+
|
|
236
|
+
with pytest.raises(ResourceNotFoundError):
|
|
237
|
+
client.get_app_components(NON_EXISTING_RESOURCE)
|
|
238
|
+
|
|
239
|
+
@LoadtestingPowerShellPreparer()
|
|
240
|
+
@recorded_by_proxy
|
|
241
|
+
def test_file_upload_poller(self, loadtesting_endpoint):
|
|
242
|
+
set_bodiless_matcher()
|
|
243
|
+
self.setup_create_load_test(loadtesting_endpoint)
|
|
244
|
+
|
|
245
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
246
|
+
poller = client.begin_upload_test_file(self.setup_load_test_id, "sample.jmx",
|
|
247
|
+
open(os.path.join(Path(__file__).resolve().parent, "sample.jmx"), "rb"))
|
|
248
|
+
|
|
249
|
+
result = poller.result(1000)
|
|
250
|
+
assert poller.status() is not None
|
|
251
|
+
assert result is not None
|
|
252
|
+
assert poller.done() is True
|
|
253
|
+
|
|
254
|
+
@LoadtestingPowerShellPreparer()
|
|
255
|
+
@recorded_by_proxy
|
|
256
|
+
def test_create_or_update_server_metrics_config(self, loadtesting_endpoint, loadtesting_resource_id, loadtesting_test_id):
|
|
257
|
+
set_bodiless_matcher()
|
|
258
|
+
|
|
259
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
260
|
+
result = client.create_or_update_server_metrics_config(
|
|
261
|
+
loadtesting_test_id,
|
|
262
|
+
{
|
|
263
|
+
"metrics": {
|
|
264
|
+
loadtesting_resource_id: {
|
|
265
|
+
"resourceId": loadtesting_resource_id,
|
|
266
|
+
"metricNamespace": "microsoft.insights/components",
|
|
267
|
+
"displayDescription": "sample description",
|
|
268
|
+
"name": "requests/duration",
|
|
269
|
+
"aggregation": "Average",
|
|
270
|
+
"unit": None,
|
|
271
|
+
"resourceType": "microsoft.insights/components"
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
)
|
|
276
|
+
assert result is not None
|
|
277
|
+
|
|
278
|
+
@LoadtestingPowerShellPreparer()
|
|
279
|
+
@recorded_by_proxy
|
|
280
|
+
def test_get_server_metrics_config(self, loadtesting_endpoint, loadtesting_test_id):
|
|
281
|
+
set_bodiless_matcher()
|
|
282
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
283
|
+
result = client.get_server_metrics_config(loadtesting_test_id)
|
|
284
|
+
assert result is not None
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
# -------------------------------------------------------------------------
|
|
3
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
5
|
+
# license information.
|
|
6
|
+
# -------------------------------------------------------------------------
|
|
7
|
+
import os
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
import pytest
|
|
11
|
+
from azure.core.exceptions import HttpResponseError, ResourceNotFoundError
|
|
12
|
+
|
|
13
|
+
from testcase import LoadtestingPowerShellPreparer
|
|
14
|
+
from testcase_async import LoadtestingAsyncTest
|
|
15
|
+
from devtools_testutils import set_bodiless_matcher, set_custom_default_matcher
|
|
16
|
+
from devtools_testutils.aio import recorded_by_proxy_async
|
|
17
|
+
|
|
18
|
+
DISPLAY_NAME = "TestingResourcePyTest"
|
|
19
|
+
NON_EXISTING_RESOURCE = "nonexistingresource"
|
|
20
|
+
class TestLoadTestAdministrationClient(LoadtestingAsyncTest):
|
|
21
|
+
|
|
22
|
+
async def setup_create_load_test(self, endpoint):
|
|
23
|
+
self.setup_load_test_id = "pytest_setup_load_test_id"
|
|
24
|
+
client = self.create_administration_client(endpoint)
|
|
25
|
+
|
|
26
|
+
await client.create_or_update_test(
|
|
27
|
+
self.setup_load_test_id,
|
|
28
|
+
{
|
|
29
|
+
"description": "",
|
|
30
|
+
"displayName": DISPLAY_NAME,
|
|
31
|
+
"loadTestConfig": {
|
|
32
|
+
"engineSize": "m",
|
|
33
|
+
"engineInstances": 1,
|
|
34
|
+
"splitAllCSVs": False,
|
|
35
|
+
},
|
|
36
|
+
"secrets": {},
|
|
37
|
+
"environmentVariables": {},
|
|
38
|
+
"passFailCriteria": {"passFailMetrics": {}},
|
|
39
|
+
"keyvaultReferenceIdentityType": "SystemAssigned",
|
|
40
|
+
"keyvaultReferenceIdentityId": None,
|
|
41
|
+
}
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
async def setup_upload_test_file(self, endpoint):
|
|
45
|
+
client = self.create_administration_client(endpoint)
|
|
46
|
+
self.setup_file_name = "sample.jmx"
|
|
47
|
+
await client.begin_upload_test_file(self.setup_load_test_id, "sample.jmx", open(os.path.join(Path(__file__).resolve().parent, "sample.jmx"), "rb"))
|
|
48
|
+
|
|
49
|
+
async def setup_app_components(self, endpoint, resource_id):
|
|
50
|
+
client = self.create_administration_client(endpoint)
|
|
51
|
+
|
|
52
|
+
await client.create_or_update_app_components(
|
|
53
|
+
self.setup_load_test_id,
|
|
54
|
+
{
|
|
55
|
+
"components": {
|
|
56
|
+
resource_id: {
|
|
57
|
+
"resourceId": resource_id,
|
|
58
|
+
"resourceName": "App-Service-Sample-Demo",
|
|
59
|
+
"resourceType": "Microsoft.Web/sites",
|
|
60
|
+
"kind": "web",
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
)
|
|
65
|
+
@LoadtestingPowerShellPreparer()
|
|
66
|
+
@recorded_by_proxy_async
|
|
67
|
+
async def test_create_or_update_load_test(self, loadtesting_endpoint, loadtesting_test_id):
|
|
68
|
+
set_bodiless_matcher()
|
|
69
|
+
|
|
70
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
71
|
+
result = await client.create_or_update_test(
|
|
72
|
+
loadtesting_test_id,
|
|
73
|
+
{
|
|
74
|
+
"description": "",
|
|
75
|
+
"displayName": DISPLAY_NAME,
|
|
76
|
+
"loadTestConfig": {
|
|
77
|
+
"engineSize": "m",
|
|
78
|
+
"engineInstances": 1,
|
|
79
|
+
"splitAllCSVs": False,
|
|
80
|
+
},
|
|
81
|
+
"secrets": {},
|
|
82
|
+
"environmentVariables": {},
|
|
83
|
+
"passFailCriteria": {"passFailMetrics": {}},
|
|
84
|
+
"keyvaultReferenceIdentityType": "SystemAssigned",
|
|
85
|
+
"keyvaultReferenceIdentityId": None,
|
|
86
|
+
},
|
|
87
|
+
)
|
|
88
|
+
assert result is not None
|
|
89
|
+
|
|
90
|
+
with pytest.raises(HttpResponseError):
|
|
91
|
+
await client.create_or_update_test(
|
|
92
|
+
loadtesting_test_id,
|
|
93
|
+
{
|
|
94
|
+
"description": "",
|
|
95
|
+
"displayName": DISPLAY_NAME + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
|
|
96
|
+
"loadTestConfig": {
|
|
97
|
+
"engineSize": "m",
|
|
98
|
+
"engineInstances": 1,
|
|
99
|
+
"splitAllCSVs": False,
|
|
100
|
+
},
|
|
101
|
+
"secrets": {},
|
|
102
|
+
"environmentVariables": {},
|
|
103
|
+
"passFailCriteria": {"passFailMetrics": {}},
|
|
104
|
+
"keyvaultReferenceIdentityType": "SystemAssigned",
|
|
105
|
+
"keyvaultReferenceIdentityId": None,
|
|
106
|
+
},
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
@LoadtestingPowerShellPreparer()
|
|
110
|
+
@recorded_by_proxy_async
|
|
111
|
+
async def test_delete_load_test(self, loadtesting_endpoint):
|
|
112
|
+
set_bodiless_matcher()
|
|
113
|
+
await self.setup_create_load_test(loadtesting_endpoint)
|
|
114
|
+
|
|
115
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
116
|
+
result = await client.delete_test(self.setup_load_test_id)
|
|
117
|
+
assert result is None
|
|
118
|
+
|
|
119
|
+
with pytest.raises(ResourceNotFoundError):
|
|
120
|
+
await client.delete_test(NON_EXISTING_RESOURCE)
|
|
121
|
+
|
|
122
|
+
@LoadtestingPowerShellPreparer()
|
|
123
|
+
@recorded_by_proxy_async
|
|
124
|
+
async def test_get_load_test(self, loadtesting_endpoint):
|
|
125
|
+
set_bodiless_matcher()
|
|
126
|
+
await self.setup_create_load_test(loadtesting_endpoint)
|
|
127
|
+
|
|
128
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
129
|
+
result = await client.get_test(self.setup_load_test_id)
|
|
130
|
+
assert result is not None
|
|
131
|
+
|
|
132
|
+
with pytest.raises(ResourceNotFoundError):
|
|
133
|
+
await client.get_test(NON_EXISTING_RESOURCE)
|
|
134
|
+
|
|
135
|
+
@LoadtestingPowerShellPreparer()
|
|
136
|
+
@recorded_by_proxy_async
|
|
137
|
+
async def test_list_load_tests(self, loadtesting_endpoint):
|
|
138
|
+
set_bodiless_matcher()
|
|
139
|
+
await self.setup_create_load_test(loadtesting_endpoint)
|
|
140
|
+
|
|
141
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
142
|
+
result = client.list_tests()
|
|
143
|
+
assert result is not None
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
@LoadtestingPowerShellPreparer()
|
|
147
|
+
@recorded_by_proxy_async
|
|
148
|
+
async def test_get_test_file(self, loadtesting_endpoint):
|
|
149
|
+
set_bodiless_matcher()
|
|
150
|
+
await self.setup_create_load_test(loadtesting_endpoint)
|
|
151
|
+
await self.setup_upload_test_file(loadtesting_endpoint)
|
|
152
|
+
|
|
153
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
154
|
+
result = await client.get_test_file(self.setup_load_test_id, self.setup_file_name)
|
|
155
|
+
assert result is not None
|
|
156
|
+
|
|
157
|
+
with pytest.raises(ResourceNotFoundError):
|
|
158
|
+
await client.get_test_file(self.setup_load_test_id, "nonexistent.jmx")
|
|
159
|
+
|
|
160
|
+
@LoadtestingPowerShellPreparer()
|
|
161
|
+
@recorded_by_proxy_async
|
|
162
|
+
async def test_delete_test_file(self, loadtesting_endpoint):
|
|
163
|
+
set_bodiless_matcher()
|
|
164
|
+
await self.setup_create_load_test(loadtesting_endpoint)
|
|
165
|
+
await self.setup_upload_test_file(loadtesting_endpoint)
|
|
166
|
+
|
|
167
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
168
|
+
result = await client.delete_test_file(self.setup_load_test_id, self.setup_file_name)
|
|
169
|
+
assert result is None
|
|
170
|
+
|
|
171
|
+
with pytest.raises(ResourceNotFoundError):
|
|
172
|
+
await client.delete_test_file(self.setup_load_test_id, "nonexistent.jmx")
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
@LoadtestingPowerShellPreparer()
|
|
176
|
+
@recorded_by_proxy_async
|
|
177
|
+
async def list_test_files(self, loadtesting_endpoint):
|
|
178
|
+
set_bodiless_matcher()
|
|
179
|
+
await self.setup_create_load_test(loadtesting_endpoint)
|
|
180
|
+
await self.setup_upload_test_file(loadtesting_endpoint)
|
|
181
|
+
|
|
182
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
183
|
+
result = await client.list_test_files(self.setup_load_test_id)
|
|
184
|
+
assert result is not None
|
|
185
|
+
|
|
186
|
+
with pytest.raises(ResourceNotFoundError):
|
|
187
|
+
await client.list_test_files(NON_EXISTING_RESOURCE)
|
|
188
|
+
|
|
189
|
+
@LoadtestingPowerShellPreparer()
|
|
190
|
+
@recorded_by_proxy_async
|
|
191
|
+
async def test_create_or_update_app_components(self, loadtesting_endpoint, loadtesting_test_id, loadtesting_resource_id):
|
|
192
|
+
set_bodiless_matcher()
|
|
193
|
+
|
|
194
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
195
|
+
result = await client.create_or_update_app_components(
|
|
196
|
+
loadtesting_test_id,
|
|
197
|
+
{
|
|
198
|
+
"components":
|
|
199
|
+
{
|
|
200
|
+
loadtesting_resource_id:
|
|
201
|
+
{
|
|
202
|
+
"resourceId": loadtesting_resource_id,
|
|
203
|
+
"resourceName": "App-Service-Sample-Demo",
|
|
204
|
+
"resourceType": "Microsoft.Web/sites",
|
|
205
|
+
"kind": "web"
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
)
|
|
210
|
+
assert result is not None
|
|
211
|
+
|
|
212
|
+
with pytest.raises(ResourceNotFoundError):
|
|
213
|
+
await client.create_or_update_app_components(
|
|
214
|
+
NON_EXISTING_RESOURCE,
|
|
215
|
+
{
|
|
216
|
+
"components": {
|
|
217
|
+
loadtesting_resource_id: {
|
|
218
|
+
"resourceId": loadtesting_resource_id,
|
|
219
|
+
"resourceName": "App-Service-Sample-Demo",
|
|
220
|
+
"resourceType": "Microsoft.Web/sites",
|
|
221
|
+
"kind": "web",
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
@LoadtestingPowerShellPreparer()
|
|
228
|
+
@recorded_by_proxy_async
|
|
229
|
+
async def test_get_app_components(self, loadtesting_endpoint, loadtesting_resource_id):
|
|
230
|
+
set_bodiless_matcher()
|
|
231
|
+
await self.setup_create_load_test(loadtesting_endpoint)
|
|
232
|
+
await self.setup_app_components(loadtesting_endpoint, loadtesting_resource_id)
|
|
233
|
+
|
|
234
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
235
|
+
result = await client.get_app_components(self.setup_load_test_id)
|
|
236
|
+
assert result is not None
|
|
237
|
+
|
|
238
|
+
with pytest.raises(ResourceNotFoundError):
|
|
239
|
+
await client.get_app_components(NON_EXISTING_RESOURCE)
|
|
240
|
+
|
|
241
|
+
@LoadtestingPowerShellPreparer()
|
|
242
|
+
@recorded_by_proxy_async
|
|
243
|
+
async def test_file_upload_poller(self, loadtesting_endpoint):
|
|
244
|
+
set_bodiless_matcher()
|
|
245
|
+
await self.setup_create_load_test(loadtesting_endpoint)
|
|
246
|
+
|
|
247
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
248
|
+
poller = await client.begin_upload_test_file(self.setup_load_test_id, "sample.jmx",
|
|
249
|
+
open(os.path.join(Path(__file__).resolve().parent, "sample.jmx"), "rb"))
|
|
250
|
+
|
|
251
|
+
result = await poller.result()
|
|
252
|
+
assert poller.status() is not None
|
|
253
|
+
assert result is not None
|
|
254
|
+
assert poller.done() is True
|
|
255
|
+
|
|
256
|
+
@LoadtestingPowerShellPreparer()
|
|
257
|
+
@recorded_by_proxy_async
|
|
258
|
+
async def test_create_or_update_server_metrics_config(self, loadtesting_endpoint, loadtesting_resource_id, loadtesting_test_id):
|
|
259
|
+
set_bodiless_matcher()
|
|
260
|
+
|
|
261
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
262
|
+
result = await client.create_or_update_server_metrics_config(
|
|
263
|
+
loadtesting_test_id,
|
|
264
|
+
{
|
|
265
|
+
"metrics": {
|
|
266
|
+
loadtesting_resource_id: {
|
|
267
|
+
"resourceId": loadtesting_resource_id,
|
|
268
|
+
"metricNamespace": "microsoft.insights/components",
|
|
269
|
+
"displayDescription": "sample description",
|
|
270
|
+
"name": "requests/duration",
|
|
271
|
+
"aggregation": "Average",
|
|
272
|
+
"unit": None,
|
|
273
|
+
"resourceType": "microsoft.insights/components"
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
)
|
|
278
|
+
assert result is not None
|
|
279
|
+
|
|
280
|
+
@LoadtestingPowerShellPreparer()
|
|
281
|
+
@recorded_by_proxy_async
|
|
282
|
+
async def test_get_server_metrics_config(self, loadtesting_endpoint, loadtesting_test_id):
|
|
283
|
+
set_bodiless_matcher()
|
|
284
|
+
client = self.create_administration_client(loadtesting_endpoint)
|
|
285
|
+
result = await client.get_server_metrics_config(loadtesting_test_id)
|
|
286
|
+
assert result is not None
|