Merge ~adam-collard/maas:less-testtools into maas:master
- Git
- lp:~adam-collard/maas
- less-testtools
- Merge into master
Proposed by
Adam Collard
Status: | Merged |
---|---|
Approved by: | Adam Collard |
Approved revision: | 4e7ad7e674ecf182a46a255f26dca354a87e0757 |
Merge reported by: | MAAS Lander |
Merged at revision: | not available |
Proposed branch: | ~adam-collard/maas:less-testtools |
Merge into: | maas:master |
Diff against target: |
998 lines (+170/-222) 10 files modified
src/provisioningserver/drivers/hardware/tests/test_seamicro.py (+21/-37) src/provisioningserver/drivers/hardware/tests/test_ucsm.py (+40/-68) src/provisioningserver/drivers/hardware/tests/test_virsh.py (+32/-37) src/provisioningserver/drivers/hardware/tests/test_vmware.py (+32/-29) src/provisioningserver/drivers/osystem/tests/test_centos.py (+1/-3) src/provisioningserver/drivers/osystem/tests/test_esxi.py (+1/-3) src/provisioningserver/drivers/osystem/tests/test_rhel.py (+1/-3) src/provisioningserver/tests/test_monkey.py (+39/-36) src/provisioningserver/utils/tests/test_events.py (+1/-3) src/provisioningserver/utils/tests/test_text.py (+2/-3) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
MAAS Lander | Approve | ||
Anton Troyanov | Approve | ||
Review via email: mp+457042@code.launchpad.net |
Commit message
refactor(pserv/*): replace testtools' expectThat with unittest
refactor(
Description of the change
To post a comment you must log in.
Revision history for this message
Anton Troyanov (troyanov) : | # |
review:
Approve
Revision history for this message
MAAS Lander (maas-lander) wrote : | # |
UNIT TESTS
-b less-testtools lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas
STATUS: SUCCESS
COMMIT: 4e7ad7e674ecf18
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/src/provisioningserver/drivers/hardware/tests/test_seamicro.py b/src/provisioningserver/drivers/hardware/tests/test_seamicro.py |
2 | index f06111c..0907960 100644 |
3 | --- a/src/provisioningserver/drivers/hardware/tests/test_seamicro.py |
4 | +++ b/src/provisioningserver/drivers/hardware/tests/test_seamicro.py |
5 | @@ -14,11 +14,6 @@ from twisted.internet.threads import deferToThread |
6 | |
7 | from maastesting import get_testing_timeout |
8 | from maastesting.factory import factory |
9 | -from maastesting.matchers import ( |
10 | - MockCalledOnceWith, |
11 | - MockCalledWith, |
12 | - MockCallsMatch, |
13 | -) |
14 | from maastesting.testcase import MAASTestCase, MAASTwistedRunTest |
15 | from provisioningserver.drivers.hardware import seamicro |
16 | from provisioningserver.drivers.hardware.seamicro import ( |
17 | @@ -39,9 +34,9 @@ from provisioningserver.utils.twisted import asynchronous |
18 | class FakeResponse: |
19 | def __init__(self, response_code, response, is_json=False): |
20 | self.response_code = response_code |
21 | - self.response = response |
22 | if is_json: |
23 | - self.response = json.dumps(response) |
24 | + response = json.dumps(response) |
25 | + self.response = response |
26 | |
27 | def getcode(self): |
28 | return self.response_code |
29 | @@ -163,7 +158,7 @@ class TestSeaMicroAPIV09(MAASTestCase): |
30 | def assert_put_power_called(self, mock, idx, new_status, *params): |
31 | location = "servers/%d" % idx |
32 | params = ["action=%s" % new_status] + list(params) |
33 | - self.assertThat(mock, MockCalledOnceWith(location, params=params)) |
34 | + mock.assert_called_once_with(location, params=params) |
35 | |
36 | def test_put_server_power_on_using_pxe(self): |
37 | token = factory.make_string() |
38 | @@ -251,12 +246,11 @@ class TestSeaMicro(MAASTestCase): |
39 | password, |
40 | "ipmi", |
41 | ) |
42 | - self.assertThat( |
43 | - mock, |
44 | - MockCallsMatch( |
45 | + mock.assert_has_calls( |
46 | + [ |
47 | call("v2.0", ip, username, password), |
48 | call("v0.9", ip, username, password), |
49 | - ), |
50 | + ] |
51 | ) |
52 | |
53 | def test_find_seamicro15k_servers_restapi(self): |
54 | @@ -269,9 +263,7 @@ class TestSeaMicro(MAASTestCase): |
55 | password, |
56 | "restapi", |
57 | ) |
58 | - self.assertThat( |
59 | - mock, MockCalledOnceWith("v0.9", ip, username, password) |
60 | - ) |
61 | + mock.assert_called_once_with("v0.9", ip, username, password) |
62 | |
63 | def test_find_seamicro15k_servers_restapi2(self): |
64 | mock, ip, username, password = self.configure_get_seamicro15k_api() |
65 | @@ -283,9 +275,7 @@ class TestSeaMicro(MAASTestCase): |
66 | password, |
67 | "restapi2", |
68 | ) |
69 | - self.assertThat( |
70 | - mock, MockCalledOnceWith("v2.0", ip, username, password) |
71 | - ) |
72 | + mock.assert_called_once_with("v2.0", ip, username, password) |
73 | |
74 | def configure_api_v09_login(self, token=None): |
75 | token = token or factory.make_string() |
76 | @@ -349,17 +339,14 @@ class TestSeaMicro(MAASTestCase): |
77 | "power_pass": password, |
78 | "power_user": username, |
79 | } |
80 | - self.expectThat( |
81 | - mock_create_node, |
82 | - MockCalledWith( |
83 | - last["serverMacAddr"], |
84 | - "amd64", |
85 | - "sm15k", |
86 | - power_params, |
87 | - domain=domain, |
88 | - ), |
89 | + mock_create_node.assert_called_with( |
90 | + last["serverMacAddr"], |
91 | + "amd64", |
92 | + "sm15k", |
93 | + power_params, |
94 | + domain=domain, |
95 | ) |
96 | - self.expectThat(mock_commission_node, MockCalledWith(system_id, user)) |
97 | + mock_commission_node.assert_called_with(system_id, user) |
98 | |
99 | def test_power_control_seamicro15k_v09(self): |
100 | self.configure_api_v09_login() |
101 | @@ -369,9 +356,7 @@ class TestSeaMicro(MAASTestCase): |
102 | mock = self.patch(SeaMicroAPIV09, "power_server") |
103 | |
104 | power_control_seamicro15k_v09(ip, username, password, "25", "on") |
105 | - self.assertThat( |
106 | - mock, MockCalledOnceWith("25/0", POWER_STATUS.ON, do_pxe=True) |
107 | - ) |
108 | + mock.assert_called_once_with("25/0", POWER_STATUS.ON, do_pxe=True) |
109 | |
110 | def test_power_control_seamicro15k_v09_retry_failure(self): |
111 | self.configure_api_v09_login() |
112 | @@ -439,9 +424,8 @@ class TestSeaMicro(MAASTestCase): |
113 | ) |
114 | self.assertEqual(2, mock_create_node.call_count) |
115 | |
116 | - self.expectThat( |
117 | - mock_create_node, |
118 | - MockCallsMatch( |
119 | + mock_create_node.assert_has_calls( |
120 | + [ |
121 | call( |
122 | fake_server_0.get_fake_macs(), |
123 | "amd64", |
124 | @@ -468,9 +452,9 @@ class TestSeaMicro(MAASTestCase): |
125 | }, |
126 | domain=None, |
127 | ), |
128 | - ), |
129 | + ] |
130 | ) |
131 | - self.expectThat(mock_commission_node, MockCalledWith(system_id, user)) |
132 | + mock_commission_node.assert_called_with(system_id, user) |
133 | |
134 | def test_power_control_seamicro15k_v2(self): |
135 | ip = factory.make_ipv4_address() |
136 | @@ -487,7 +471,7 @@ class TestSeaMicro(MAASTestCase): |
137 | mock_get_api.return_value = fake_client |
138 | |
139 | power_control_seamicro15k_v2(ip, username, password, "0", "on") |
140 | - self.assertThat(mock_power_on, MockCalledOnceWith(using_pxe=True)) |
141 | + mock_power_on.assert_called_once_with(using_pxe=True) |
142 | |
143 | def test_power_control_seamicro15k_v2_raises_error_when_api_None(self): |
144 | ip = factory.make_ipv4_address() |
145 | diff --git a/src/provisioningserver/drivers/hardware/tests/test_ucsm.py b/src/provisioningserver/drivers/hardware/tests/test_ucsm.py |
146 | index ebac33b..87f6a16 100644 |
147 | --- a/src/provisioningserver/drivers/hardware/tests/test_ucsm.py |
148 | +++ b/src/provisioningserver/drivers/hardware/tests/test_ucsm.py |
149 | @@ -10,17 +10,11 @@ import urllib.parse |
150 | import urllib.request |
151 | |
152 | from lxml.etree import Element, SubElement, XML |
153 | -from testtools.matchers import Equals |
154 | from twisted.internet.defer import inlineCallbacks |
155 | from twisted.internet.threads import deferToThread |
156 | |
157 | from maastesting import get_testing_timeout |
158 | from maastesting.factory import factory |
159 | -from maastesting.matchers import ( |
160 | - MockCalledOnceWith, |
161 | - MockCallsMatch, |
162 | - MockNotCalled, |
163 | -) |
164 | from maastesting.testcase import MAASTestCase, MAASTwistedRunTest |
165 | from provisioningserver.drivers.hardware import ucsm |
166 | from provisioningserver.drivers.hardware.ucsm import ( |
167 | @@ -142,7 +136,7 @@ class TestLogin(MAASTestCase): |
168 | api, mock = make_api_patch_call(self, user=user, password=password) |
169 | api.login() |
170 | fields = {"inName": user, "inPassword": password} |
171 | - self.assertThat(mock, MockCalledOnceWith("aaaLogin", fields)) |
172 | + mock.assert_called_once_with("aaaLogin", fields) |
173 | |
174 | |
175 | class TestLogout(MAASTestCase): |
176 | @@ -157,7 +151,7 @@ class TestLogout(MAASTestCase): |
177 | cookie = api.cookie |
178 | api.logout() |
179 | fields = {"inCookie": cookie} |
180 | - self.assertThat(mock, MockCalledOnceWith("aaaLogout", fields)) |
181 | + mock.assert_called_once_with("aaaLogout", fields) |
182 | |
183 | |
184 | class TestConfigResolveClass(MAASTestCase): |
185 | @@ -166,9 +160,7 @@ class TestConfigResolveClass(MAASTestCase): |
186 | api, mock = make_api_patch_call(self) |
187 | api.config_resolve_class(class_id) |
188 | fields = {"cookie": api.cookie, "classId": class_id} |
189 | - self.assertThat( |
190 | - mock, MockCalledOnceWith("configResolveClass", fields, ANY) |
191 | - ) |
192 | + mock.assert_called_once_with("configResolveClass", fields, ANY) |
193 | |
194 | def test_with_filters(self): |
195 | class_id = make_class() |
196 | @@ -192,18 +184,14 @@ class TestConfigResolveChildren(MAASTestCase): |
197 | api, mock = make_api_patch_call(self) |
198 | api.config_resolve_children(dn, class_id) |
199 | fields = {"inDn": dn, "classId": class_id, "cookie": api.cookie} |
200 | - self.assertThat( |
201 | - mock, MockCalledOnceWith("configResolveChildren", fields) |
202 | - ) |
203 | + mock.assert_called_once_with("configResolveChildren", fields) |
204 | |
205 | def test_no_class_id(self): |
206 | dn = make_dn() |
207 | api, mock = make_api_patch_call(self) |
208 | api.config_resolve_children(dn) |
209 | fields = {"inDn": dn, "cookie": api.cookie} |
210 | - self.assertThat( |
211 | - mock, MockCalledOnceWith("configResolveChildren", fields) |
212 | - ) |
213 | + mock.assert_called_once_with("configResolveChildren", fields) |
214 | |
215 | def test_return_response(self): |
216 | api, mock = make_api_patch_call(self) |
217 | @@ -219,7 +207,7 @@ class TestConfigConfMo(MAASTestCase): |
218 | api, mock = make_api_patch_call(self) |
219 | api.config_conf_mo(dn, config_items) |
220 | fields = {"dn": dn, "cookie": api.cookie} |
221 | - self.assertThat(mock, MockCalledOnceWith("configConfMo", fields, ANY)) |
222 | + mock.assert_called_once_with("configConfMo", fields, ANY) |
223 | in_configs = mock.call_args[0][2] |
224 | self.assertEqual(config_items, in_configs[0][:]) |
225 | |
226 | @@ -240,10 +228,8 @@ class TestCall(MAASTestCase): |
227 | mock_send_request.return_value = response |
228 | |
229 | api._call(name, fields, children) |
230 | - self.assertThat( |
231 | - mock_make_request_data, MockCalledOnceWith(name, fields, children) |
232 | - ) |
233 | - self.assertThat(mock_send_request, MockCalledOnceWith(request)) |
234 | + mock_make_request_data.assert_called_once_with(name, fields, children) |
235 | + mock_send_request.assert_called_once_with(request) |
236 | |
237 | |
238 | class TestSendRequest(MAASTestCase): |
239 | @@ -266,7 +252,7 @@ class TestConfigResolveDn(MAASTestCase): |
240 | test_dn = make_dn() |
241 | fields = {"cookie": api.cookie, "dn": test_dn} |
242 | api.config_resolve_dn(test_dn) |
243 | - self.assertThat(mock, MockCalledOnceWith("configResolveDn", fields)) |
244 | + mock.assert_called_once_with("configResolveDn", fields) |
245 | |
246 | |
247 | class TestGetServers(MAASTestCase): |
248 | @@ -292,7 +278,7 @@ class TestGetServers(MAASTestCase): |
249 | api = make_api() |
250 | mock = self.patch(api, "config_resolve_class") |
251 | get_servers(api, uuid) |
252 | - self.assertThat(mock, MockCalledOnceWith("computeItem", ANY)) |
253 | + mock.assert_called_once_with("computeItem", ANY) |
254 | |
255 | |
256 | class TestProbeLanBootOptions(MAASTestCase): |
257 | @@ -309,16 +295,11 @@ class TestProbeLanBootOptions(MAASTestCase): |
258 | ) |
259 | mock_config_resolve_children.return_value = fake_result |
260 | self.assertEqual(1, len(probe_lan_boot_options(api, server))) |
261 | - self.assertThat( |
262 | - mock_config_resolve_children, |
263 | - MockCalledOnceWith(sentinel.profile_get), |
264 | - ) |
265 | - self.assertThat( |
266 | - mock_service_profile.get, MockCalledOnceWith("operBootPolicyName") |
267 | - ) |
268 | - self.assertThat( |
269 | - mock_get_service_profile, MockCalledOnceWith(api, server) |
270 | + mock_config_resolve_children.assert_called_once_with( |
271 | + sentinel.profile_get |
272 | ) |
273 | + mock_service_profile.get.assert_called_once_with("operBootPolicyName") |
274 | + mock_get_service_profile.assert_called_once_with(api, server) |
275 | |
276 | |
277 | class TestGetChildren(MAASTestCase): |
278 | @@ -340,7 +321,7 @@ class TestGetChildren(MAASTestCase): |
279 | in_element = Element("test", {"dn": parent_dn}) |
280 | class_id = search_class |
281 | get_children(api, in_element, class_id) |
282 | - self.assertThat(mock, MockCalledOnceWith(parent_dn, search_class)) |
283 | + mock.assert_called_once_with(parent_dn, search_class) |
284 | |
285 | |
286 | class TestGetMacs(MAASTestCase): |
287 | @@ -359,12 +340,11 @@ class TestGetMacs(MAASTestCase): |
288 | |
289 | mock.side_effect = fake_get_children |
290 | macs = get_macs(api, server) |
291 | - self.assertThat( |
292 | - mock, |
293 | - MockCallsMatch( |
294 | + mock.assert_has_calls( |
295 | + [ |
296 | call(api, server, "adaptorUnit"), |
297 | call(api, adaptor, "adaptorHostEthIf"), |
298 | - ), |
299 | + ] |
300 | ) |
301 | self.assertEqual([mac], macs) |
302 | |
303 | @@ -374,7 +354,7 @@ class TestProbeServers(MAASTestCase): |
304 | api = make_api() |
305 | mock = self.patch(ucsm, "get_servers") |
306 | probe_servers(api) |
307 | - self.assertThat(mock, MockCalledOnceWith(api)) |
308 | + mock.assert_called_once_with(api) |
309 | |
310 | def test_returns_results(self): |
311 | servers = [{"uuid": factory.make_UUID()}] |
312 | @@ -415,7 +395,7 @@ class TestGetServerPowerControl(MAASTestCase): |
313 | dn = make_dn() |
314 | server = Element("computeItem", {"assignedToDn": dn}) |
315 | power_control = get_server_power_control(api, server) |
316 | - self.assertThat(mock, MockCalledOnceWith(dn, "lsPower")) |
317 | + mock.assert_called_once_with(dn, "lsPower") |
318 | self.assertEqual("lsPower", power_control.tag) |
319 | |
320 | |
321 | @@ -427,7 +407,7 @@ class TestSetServerPowerControl(MAASTestCase): |
322 | config_conf_mo_mock = self.patch(api, "config_conf_mo") |
323 | state = "state" |
324 | set_server_power_control(api, power_control, state) |
325 | - self.assertThat(config_conf_mo_mock, MockCalledOnceWith(power_dn, ANY)) |
326 | + config_conf_mo_mock.assert_called_once_with(power_dn, ANY) |
327 | power_change = config_conf_mo_mock.call_args[0][1][0] |
328 | self.assertEqual(power_change.tag, "lsPower") |
329 | self.assertEqual({"state": state, "dn": power_dn}, power_change.attrib) |
330 | @@ -443,9 +423,9 @@ class TestLoggedIn(MAASTestCase): |
331 | |
332 | with logged_in(url, username, password) as api: |
333 | self.assertEqual(mock.return_value, api) |
334 | - self.assertThat(api.login, MockCalledOnceWith()) |
335 | + api.login() |
336 | |
337 | - self.assertThat(mock.return_value.logout, MockCalledOnceWith()) |
338 | + mock.return_value.logout.assert_called_once_with() |
339 | |
340 | |
341 | class TestValidGetPowerCommand(MAASTestCase): |
342 | @@ -498,10 +478,9 @@ class TestPowerControlUCSM(MAASTestCase): |
343 | ucsm, "set_server_power_control" |
344 | ) |
345 | power_control_ucsm("url", "username", "password", uuid, "off") |
346 | - self.assertThat(get_servers_mock, MockCalledOnceWith(api, uuid)) |
347 | - self.assertThat( |
348 | - set_server_power_control_mock, |
349 | - MockCalledOnceWith(api, power_control, state), |
350 | + get_servers_mock.assert_called_once_with(api, uuid) |
351 | + set_server_power_control_mock.assert_called_once_with( |
352 | + api, power_control, state |
353 | ) |
354 | |
355 | |
356 | @@ -517,8 +496,8 @@ class TestUCSMPowerState(MAASTestCase): |
357 | get_servers_mock.return_value = [make_server("off")] |
358 | |
359 | power_state = power_state_ucsm(url, username, password, uuid) |
360 | - self.expectThat(get_servers_mock, MockCalledOnceWith(api, uuid)) |
361 | - self.expectThat(power_state, Equals("off")) |
362 | + get_servers_mock.assert_called_once_with(api, uuid) |
363 | + self.assertEqual(power_state, "off") |
364 | |
365 | def test_power_state_get_on(self): |
366 | url = factory.make_name("url") |
367 | @@ -531,8 +510,8 @@ class TestUCSMPowerState(MAASTestCase): |
368 | get_servers_mock.return_value = [make_server("on")] |
369 | |
370 | power_state = power_state_ucsm(url, username, password, uuid) |
371 | - self.expectThat(get_servers_mock, MockCalledOnceWith(api, uuid)) |
372 | - self.expectThat(power_state, Equals("on")) |
373 | + get_servers_mock.assert_called_once_with(api, uuid) |
374 | + self.assertEqual(power_state, "on") |
375 | |
376 | def test_power_state_error_on_unknown_state(self): |
377 | url = factory.make_name("url") |
378 | @@ -576,23 +555,18 @@ class TestProbeAndEnlistUCSM(MAASTestCase): |
379 | yield deferToThread( |
380 | probe_and_enlist_ucsm, user, url, username, password, True, domain |
381 | ) |
382 | - self.expectThat( |
383 | - set_lan_boot_default_mock, MockCalledOnceWith(api, server_element) |
384 | - ) |
385 | - self.expectThat(probe_servers_mock, MockCalledOnceWith(api)) |
386 | + set_lan_boot_default_mock.assert_called_once_with(api, server_element) |
387 | + probe_servers_mock.assert_called_once_with(api) |
388 | params = { |
389 | "power_address": url, |
390 | "power_user": username, |
391 | "power_pass": password, |
392 | "uuid": server[0]["uuid"], |
393 | } |
394 | - self.expectThat( |
395 | - create_node_mock, |
396 | - MockCalledOnceWith(server[1], "amd64", "ucsm", params, domain), |
397 | - ) |
398 | - self.expectThat( |
399 | - commission_node_mock, MockCalledOnceWith(system_id, user) |
400 | + create_node_mock.assert_called_once_with( |
401 | + server[1], "amd64", "ucsm", params, domain |
402 | ) |
403 | + commission_node_mock.assert_called_once_with(system_id, user) |
404 | |
405 | |
406 | class TestGetServiceProfile(MAASTestCase): |
407 | @@ -605,7 +579,7 @@ class TestGetServiceProfile(MAASTestCase): |
408 | "configResolveDn", "lsServer", "outConfig" |
409 | ) |
410 | service_profile = get_service_profile(api, server) |
411 | - self.assertThat(mock, MockCalledOnceWith(test_dn)) |
412 | + mock.assert_called_once_with(test_dn) |
413 | self.assertEqual(mock.return_value[0], service_profile) |
414 | |
415 | |
416 | @@ -646,7 +620,7 @@ class TestsForStripRoKeys(MAASTestCase): |
417 | attributes = {key: "DC" for key in RO_KEYS} |
418 | |
419 | elements = [ |
420 | - Element("Element%d" % i, attributes) |
421 | + Element(f"Element{i}", attributes) |
422 | for i in range(random.randint(0, 10)) |
423 | ] |
424 | |
425 | @@ -667,7 +641,7 @@ class TestMakePolicyChange(MAASTestCase): |
426 | mock.return_value = boot_profile_response[0] |
427 | change = make_policy_change(boot_profile_response) |
428 | self.assertIsNone(change) |
429 | - self.assertThat(mock, MockCalledOnceWith(boot_profile_response)) |
430 | + mock.assert_called_once_with(boot_profile_response) |
431 | |
432 | def test_change_lan_to_top_priority(self): |
433 | boot_profile_response = Element("outConfigs") |
434 | @@ -694,7 +668,7 @@ class TestSetLanBootDefault(MAASTestCase): |
435 | self.patch(ucsm, "make_policy_change").return_value = None |
436 | config_conf_mo = self.patch(api, "config_conf_mo") |
437 | set_lan_boot_default(api, server) |
438 | - self.assertThat(config_conf_mo, MockNotCalled()) |
439 | + config_conf_mo.assert_not_called() |
440 | |
441 | def test_with_change(self): |
442 | api = make_api() |
443 | @@ -707,6 +681,4 @@ class TestSetLanBootDefault(MAASTestCase): |
444 | self.patch(ucsm, "make_policy_change").return_value = test_change |
445 | config_conf_mo = self.patch(api, "config_conf_mo") |
446 | set_lan_boot_default(api, server) |
447 | - self.assertThat( |
448 | - config_conf_mo, MockCalledOnceWith(test_dn, [test_change]) |
449 | - ) |
450 | + config_conf_mo.assert_called_once_with(test_dn, [test_change]) |
451 | diff --git a/src/provisioningserver/drivers/hardware/tests/test_virsh.py b/src/provisioningserver/drivers/hardware/tests/test_virsh.py |
452 | index 0711efa..5c124a0 100644 |
453 | --- a/src/provisioningserver/drivers/hardware/tests/test_virsh.py |
454 | +++ b/src/provisioningserver/drivers/hardware/tests/test_virsh.py |
455 | @@ -11,13 +11,11 @@ from unittest.mock import call |
456 | |
457 | from lxml import etree |
458 | import pexpect |
459 | -from testtools.testcase import ExpectedException |
460 | from twisted.internet.defer import inlineCallbacks |
461 | from twisted.internet.threads import deferToThread |
462 | |
463 | from maastesting import get_testing_timeout |
464 | from maastesting.factory import factory |
465 | -from maastesting.matchers import MockCalledOnceWith, MockCallsMatch |
466 | from maastesting.testcase import MAASTestCase, MAASTwistedRunTest |
467 | from provisioningserver.drivers.hardware import virsh |
468 | from provisioningserver.utils.arch import KERNEL_TO_DEBIAN_ARCHITECTURES |
469 | @@ -130,7 +128,7 @@ class TestVirshSSH(MAASTestCase): |
470 | conn = self.configure_virshssh_pexpect(virsh_outputs) |
471 | mock_sendline = self.patch(conn, "sendline") |
472 | conn.login(poweraddr=None) |
473 | - self.assertThat(mock_sendline, MockCalledOnceWith("yes")) |
474 | + mock_sendline.assert_called_once_with("yes") |
475 | |
476 | def test_login_with_password(self): |
477 | virsh_outputs = [ |
478 | @@ -140,7 +138,7 @@ class TestVirshSSH(MAASTestCase): |
479 | fake_password = factory.make_name("password") |
480 | mock_sendline = self.patch(conn, "sendline") |
481 | conn.login(poweraddr=None, password=fake_password) |
482 | - self.assertThat(mock_sendline, MockCalledOnceWith(fake_password)) |
483 | + mock_sendline.assert_called_once_with(fake_password) |
484 | |
485 | def test_login_missing_password(self): |
486 | virsh_outputs = [ |
487 | @@ -149,22 +147,22 @@ class TestVirshSSH(MAASTestCase): |
488 | conn = self.configure_virshssh_pexpect(virsh_outputs) |
489 | mock_close = self.patch(conn, "close") |
490 | self.assertFalse(conn.login(poweraddr=None, password=None)) |
491 | - self.assertThat(mock_close, MockCalledOnceWith()) |
492 | + mock_close.assert_called_once_with() |
493 | |
494 | def test_login_invalid(self): |
495 | virsh_outputs = [factory.make_string()] |
496 | conn = self.configure_virshssh_pexpect(virsh_outputs) |
497 | mock_close = self.patch(conn, "close") |
498 | self.assertFalse(conn.login(poweraddr=None)) |
499 | - self.assertThat(mock_close, MockCalledOnceWith()) |
500 | + mock_close.assert_called_once_with() |
501 | |
502 | def test_logout(self): |
503 | conn = self.configure_virshssh_pexpect() |
504 | mock_sendline = self.patch(conn, "sendline") |
505 | mock_close = self.patch(conn, "close") |
506 | conn.logout() |
507 | - self.assertThat(mock_sendline, MockCalledOnceWith("quit")) |
508 | - self.assertThat(mock_close, MockCalledOnceWith()) |
509 | + mock_sendline.assert_called_once_with("quit") |
510 | + mock_close.assert_called_once_with() |
511 | |
512 | def test_prompt(self): |
513 | virsh_outputs = ["virsh # "] |
514 | @@ -185,8 +183,8 @@ class TestVirshSSH(MAASTestCase): |
515 | mock_sendline = self.patch(conn, "sendline") |
516 | mock_prompt = self.patch(conn, "prompt") |
517 | output = conn.run(cmd) |
518 | - self.assertThat(mock_sendline, MockCalledOnceWith(expected)) |
519 | - self.assertThat(mock_prompt, MockCalledOnceWith()) |
520 | + mock_sendline.assert_called_once_with(expected) |
521 | + mock_prompt.assert_called_once_with() |
522 | self.assertEqual("\n".join(names), output) |
523 | |
524 | def test_list(self): |
525 | @@ -242,11 +240,8 @@ class TestVirshSSH(MAASTestCase): |
526 | c_utf8_environment = get_env_with_locale() |
527 | mock_spawn = self.patch(pexpect.spawn, "__init__") |
528 | self.configure_virshssh("") |
529 | - self.assertThat( |
530 | - mock_spawn, |
531 | - MockCalledOnceWith( |
532 | - None, timeout=30, maxread=2000, env=c_utf8_environment |
533 | - ), |
534 | + mock_spawn.assert_called_once_with( |
535 | + None, timeout=30, maxread=2000, env=c_utf8_environment |
536 | ) |
537 | |
538 | |
539 | @@ -359,15 +354,12 @@ class TestVirsh(MAASTestCase): |
540 | |
541 | # Check that login was called with the provided poweraddr and |
542 | # password. |
543 | - self.expectThat( |
544 | - mock_login, MockCalledOnceWith(poweraddr, fake_password) |
545 | - ) |
546 | + mock_login.assert_called_once_with(poweraddr, fake_password) |
547 | |
548 | # Check that the create command had the correct parameters for |
549 | # each machine. |
550 | - self.expectThat( |
551 | - mock_create_node, |
552 | - MockCallsMatch( |
553 | + mock_create_node.assert_has_calls( |
554 | + [ |
555 | call( |
556 | fake_macs[0], |
557 | fake_arch, |
558 | @@ -408,24 +400,25 @@ class TestVirsh(MAASTestCase): |
559 | domain, |
560 | machines[4], |
561 | ), |
562 | - ), |
563 | + ] |
564 | ) |
565 | |
566 | # The first and last machine should have poweroff called on it, as it |
567 | # was initial in the on state. |
568 | - self.expectThat( |
569 | - mock_poweroff, MockCallsMatch(call(machines[0]), call(machines[3])) |
570 | - ) |
571 | + mock_poweroff.assert_has_calls([call(machines[0]), call(machines[3])]) |
572 | |
573 | - self.assertThat(mock_logout, MockCalledOnceWith()) |
574 | - self.expectThat( |
575 | - mock_commission_node, |
576 | - MockCallsMatch( |
577 | + mock_logout.assert_called_once_with() |
578 | + mock_commission_node.assert_has_calls( |
579 | + [ |
580 | call(system_id, user), |
581 | + call().wait(30), |
582 | call(system_id, user), |
583 | + call().wait(30), |
584 | call(system_id, user), |
585 | + call().wait(30), |
586 | call(system_id, user), |
587 | - ), |
588 | + call().wait(30), |
589 | + ] |
590 | ) |
591 | |
592 | @inlineCallbacks |
593 | @@ -434,7 +427,9 @@ class TestVirsh(MAASTestCase): |
594 | poweraddr = factory.make_name("poweraddr") |
595 | mock_login = self.patch(virsh.VirshSSH, "login") |
596 | mock_login.return_value = False |
597 | - with ExpectedException(virsh.VirshError): |
598 | + with self.assertRaisesRegex( |
599 | + virsh.VirshError, r"^Failed to login to virsh console\.$" |
600 | + ): |
601 | yield deferToThread( |
602 | virsh.probe_virsh_and_enlist, |
603 | user, |
604 | @@ -469,9 +464,9 @@ class TestVirshPowerControl(MAASTestCase): |
605 | machine = factory.make_name("machine") |
606 | virsh.power_control_virsh(poweraddr, machine, "on") |
607 | |
608 | - self.assertThat(mock_login, MockCalledOnceWith(poweraddr, None)) |
609 | - self.assertThat(mock_state, MockCalledOnceWith(machine)) |
610 | - self.assertThat(mock_poweron, MockCalledOnceWith(machine)) |
611 | + mock_login.assert_called_once_with(poweraddr, None) |
612 | + mock_state.assert_called_once_with(machine) |
613 | + mock_poweron.assert_called_once_with(machine) |
614 | |
615 | def test_power_control_off(self): |
616 | mock_login = self.patch(virsh.VirshSSH, "login") |
617 | @@ -484,9 +479,9 @@ class TestVirshPowerControl(MAASTestCase): |
618 | machine = factory.make_name("machine") |
619 | virsh.power_control_virsh(poweraddr, machine, "off") |
620 | |
621 | - self.assertThat(mock_login, MockCalledOnceWith(poweraddr, None)) |
622 | - self.assertThat(mock_state, MockCalledOnceWith(machine)) |
623 | - self.assertThat(mock_poweroff, MockCalledOnceWith(machine)) |
624 | + mock_login.assert_called_once_with(poweraddr, None) |
625 | + mock_state.assert_called_once_with(machine) |
626 | + mock_poweroff.assert_called_once_with(machine) |
627 | |
628 | def test_power_control_bad_domain(self): |
629 | mock_login = self.patch(virsh.VirshSSH, "login") |
630 | diff --git a/src/provisioningserver/drivers/hardware/tests/test_vmware.py b/src/provisioningserver/drivers/hardware/tests/test_vmware.py |
631 | index 433b452..a52a93e 100644 |
632 | --- a/src/provisioningserver/drivers/hardware/tests/test_vmware.py |
633 | +++ b/src/provisioningserver/drivers/hardware/tests/test_vmware.py |
634 | @@ -7,8 +7,6 @@ |
635 | |
636 | import random |
637 | |
638 | -from testtools import ExpectedException |
639 | -from testtools.matchers import Equals, Is, IsInstance, Not |
640 | from twisted.internet.defer import inlineCallbacks |
641 | from twisted.internet.threads import deferToThread |
642 | |
643 | @@ -16,10 +14,6 @@ from maastesting import get_testing_timeout |
644 | from maastesting.factory import factory |
645 | from maastesting.testcase import MAASTestCase, MAASTwistedRunTest |
646 | from provisioningserver.drivers.hardware import vmware |
647 | -from provisioningserver.drivers.hardware.vmware import ( |
648 | - VMwarePyvmomiAPI, |
649 | - VMwareVMNotFound, |
650 | -) |
651 | from provisioningserver.utils.twisted import asynchronous |
652 | |
653 | |
654 | @@ -53,8 +47,7 @@ class FakeVmomiVMRuntime: |
655 | |
656 | |
657 | class FakeVmomiVMConfigHardwareDevice: |
658 | - def __init__(self): |
659 | - pass |
660 | + pass |
661 | |
662 | |
663 | class FakeVmomiNic(FakeVmomiVMConfigHardwareDevice): |
664 | @@ -246,35 +239,36 @@ class TestVMwarePyvmomi(MAASTestCase): |
665 | |
666 | def test_api_connection(self): |
667 | mock_vmomi_api = self.configure_vmomi_api(servers=0) |
668 | - api = VMwarePyvmomiAPI( |
669 | + api = vmware.VMwarePyvmomiAPI( |
670 | factory.make_hostname(), |
671 | factory.make_username(), |
672 | factory.make_username(), |
673 | ) |
674 | api.connect() |
675 | - self.expectThat( |
676 | - api.service_instance, IsInstance(FakeVmomiServiceInstance) |
677 | - ) |
678 | - self.expectThat(api.is_connected(), Equals(True)) |
679 | + self.assertIsInstance(api.service_instance, FakeVmomiServiceInstance) |
680 | + self.assertTrue(api.is_connected()) |
681 | api.disconnect() |
682 | - self.expectThat(mock_vmomi_api.SmartConnect.called, Equals(True)) |
683 | - self.expectThat(mock_vmomi_api.Disconnect.called, Equals(True)) |
684 | + self.assertTrue(mock_vmomi_api.SmartConnect.called) |
685 | + self.assertTrue(mock_vmomi_api.Disconnect.called) |
686 | |
687 | def test_api_failed_connection(self): |
688 | mock_vmomi_api = self.patch(vmware, "vmomi_api") |
689 | mock_vmomi_api.SmartConnect.return_value = None |
690 | - api = VMwarePyvmomiAPI( |
691 | + api = vmware.VMwarePyvmomiAPI( |
692 | factory.make_hostname(), |
693 | factory.make_username(), |
694 | factory.make_username(), |
695 | ) |
696 | - with ExpectedException(vmware.VMwareAPIConnectionFailed): |
697 | + with self.assertRaisesRegex( |
698 | + vmware.VMwareAPIConnectionFailed, |
699 | + "^Could not connect to VMware service API$", |
700 | + ): |
701 | api.connect() |
702 | - self.expectThat(api.service_instance, Is(None)) |
703 | - self.expectThat(api.is_connected(), Equals(False)) |
704 | + self.assertIsNone(api.service_instance) |
705 | + self.assertFalse(api.is_connected()) |
706 | api.disconnect() |
707 | - self.expectThat(mock_vmomi_api.SmartConnect.called, Equals(True)) |
708 | - self.expectThat(mock_vmomi_api.Disconnect.called, Equals(True)) |
709 | + self.assertTrue(mock_vmomi_api.SmartConnect.called) |
710 | + self.assertTrue(mock_vmomi_api.Disconnect.called) |
711 | |
712 | def test_get_vmware_servers_empty(self): |
713 | self.configure_vmomi_api(servers=0) |
714 | @@ -285,7 +279,7 @@ class TestVMwarePyvmomi(MAASTestCase): |
715 | port=8443, |
716 | protocol="https", |
717 | ) |
718 | - self.expectThat(servers, Equals({})) |
719 | + self.assertEqual(servers, {}) |
720 | |
721 | def test_get_vmware_servers(self): |
722 | self.configure_vmomi_api(servers=10) |
723 | @@ -294,7 +288,7 @@ class TestVMwarePyvmomi(MAASTestCase): |
724 | factory.make_username(), |
725 | factory.make_username(), |
726 | ) |
727 | - self.expectThat(servers, Not(Equals({}))) |
728 | + self.assertNotEqual(servers, {}) |
729 | |
730 | def test_get_server_by_instance_uuid(self): |
731 | mock_vmomi_api = self.configure_vmomi_api( |
732 | @@ -336,7 +330,10 @@ class TestVMwarePyvmomi(MAASTestCase): |
733 | mock_vmomi_api = self.configure_vmomi_api( |
734 | servers=1, has_instance_uuid=True, has_uuid=True |
735 | ) |
736 | - with ExpectedException(VMwareVMNotFound): |
737 | + with self.assertRaisesRegex( |
738 | + vmware.VMwareVMNotFound, |
739 | + "^Failed to find VM; need a UUID or a VM name for power control$", |
740 | + ): |
741 | vmware._find_vm_by_uuid_or_name(mock_vmomi_api, None, None) |
742 | |
743 | def test_power_control_missing_server_raises_VMwareVMNotFound(self): |
744 | @@ -346,7 +343,10 @@ class TestVMwarePyvmomi(MAASTestCase): |
745 | host = factory.make_hostname() |
746 | username = factory.make_username() |
747 | password = factory.make_username() |
748 | - with ExpectedException(VMwareVMNotFound): |
749 | + with self.assertRaisesRegex( |
750 | + vmware.VMwareVMNotFound, |
751 | + "^Failed to find VM; need a UUID or a VM name for power control$", |
752 | + ): |
753 | vmware.power_control_vmware( |
754 | host, username, password, None, None, "on" |
755 | ) |
756 | @@ -358,7 +358,10 @@ class TestVMwarePyvmomi(MAASTestCase): |
757 | host = factory.make_hostname() |
758 | username = factory.make_username() |
759 | password = factory.make_username() |
760 | - with ExpectedException(VMwareVMNotFound): |
761 | + with self.assertRaisesRegex( |
762 | + vmware.VMwareVMNotFound, |
763 | + "^Failed to find VM; need a UUID or a VM name for power control$", |
764 | + ): |
765 | vmware.power_query_vmware(host, username, password, None, None) |
766 | |
767 | def test_power_control(self): |
768 | @@ -399,7 +402,7 @@ class TestVMwarePyvmomi(MAASTestCase): |
769 | state = vmware.power_query_vmware( |
770 | host, username, password, vm_name, uuid |
771 | ) |
772 | - self.expectThat(state, Equals("on")) |
773 | + self.assertEqual(state, "on") |
774 | |
775 | # turn off a set of VMs, then verify they are off |
776 | for uuid in instance_uuids: |
777 | @@ -410,9 +413,9 @@ class TestVMwarePyvmomi(MAASTestCase): |
778 | state = vmware.power_query_vmware( |
779 | host, username, password, vm_name, uuid |
780 | ) |
781 | - self.expectThat(state, Equals("off")) |
782 | + self.assertEqual(state, "off") |
783 | |
784 | - self.expectThat(servers, Not(Equals({}))) |
785 | + self.assertNotEqual(servers, {}) |
786 | |
787 | @inlineCallbacks |
788 | def test_probe_and_enlist(self): |
789 | diff --git a/src/provisioningserver/drivers/osystem/tests/test_centos.py b/src/provisioningserver/drivers/osystem/tests/test_centos.py |
790 | index aabc7f9..ccc1b4d 100644 |
791 | --- a/src/provisioningserver/drivers/osystem/tests/test_centos.py |
792 | +++ b/src/provisioningserver/drivers/osystem/tests/test_centos.py |
793 | @@ -6,8 +6,6 @@ |
794 | |
795 | from itertools import product |
796 | |
797 | -from testtools.matchers import Equals |
798 | - |
799 | from maastesting.factory import factory |
800 | from maastesting.testcase import MAASTestCase |
801 | from provisioningserver.drivers.osystem.centos import ( |
802 | @@ -53,4 +51,4 @@ class TestCentOS(MAASTestCase): |
803 | } |
804 | osystem = CentOS() |
805 | for name, title in name_titles.items(): |
806 | - self.expectThat(osystem.get_release_title(name), Equals(title)) |
807 | + self.assertEqual(osystem.get_release_title(name), title) |
808 | diff --git a/src/provisioningserver/drivers/osystem/tests/test_esxi.py b/src/provisioningserver/drivers/osystem/tests/test_esxi.py |
809 | index 8b60360..cea57d1 100644 |
810 | --- a/src/provisioningserver/drivers/osystem/tests/test_esxi.py |
811 | +++ b/src/provisioningserver/drivers/osystem/tests/test_esxi.py |
812 | @@ -6,8 +6,6 @@ |
813 | |
814 | from itertools import product |
815 | |
816 | -from testtools.matchers import Equals |
817 | - |
818 | from maastesting.factory import factory |
819 | from maastesting.testcase import MAASTestCase |
820 | from provisioningserver.drivers.osystem import BOOT_IMAGE_PURPOSE |
821 | @@ -47,4 +45,4 @@ class TestESXi(MAASTestCase): |
822 | } |
823 | osystem = ESXi() |
824 | for name, title in name_titles.items(): |
825 | - self.expectThat(osystem.get_release_title(name), Equals(title)) |
826 | + self.assertEqual(osystem.get_release_title(name), title) |
827 | diff --git a/src/provisioningserver/drivers/osystem/tests/test_rhel.py b/src/provisioningserver/drivers/osystem/tests/test_rhel.py |
828 | index 709aee9..fc2acd7 100644 |
829 | --- a/src/provisioningserver/drivers/osystem/tests/test_rhel.py |
830 | +++ b/src/provisioningserver/drivers/osystem/tests/test_rhel.py |
831 | @@ -6,8 +6,6 @@ |
832 | |
833 | from itertools import product |
834 | |
835 | -from testtools.matchers import Equals |
836 | - |
837 | from maastesting.factory import factory |
838 | from maastesting.testcase import MAASTestCase |
839 | from provisioningserver.drivers.osystem.rhel import ( |
840 | @@ -51,4 +49,4 @@ class TestRHEL(MAASTestCase): |
841 | } |
842 | osystem = RHELOS() |
843 | for name, title in name_titles.items(): |
844 | - self.expectThat(osystem.get_release_title(name), Equals(title)) |
845 | + self.assertEqual(osystem.get_release_title(name), title) |
846 | diff --git a/src/provisioningserver/tests/test_monkey.py b/src/provisioningserver/tests/test_monkey.py |
847 | index 3c38d49..7ddc0ff 100644 |
848 | --- a/src/provisioningserver/tests/test_monkey.py |
849 | +++ b/src/provisioningserver/tests/test_monkey.py |
850 | @@ -5,7 +5,6 @@ |
851 | |
852 | |
853 | from testtools.deferredruntest import assert_fails_with |
854 | -from testtools.matchers import Equals |
855 | from twisted.internet.defer import Deferred |
856 | from twisted.internet.threads import deferToThread |
857 | |
858 | @@ -38,58 +37,62 @@ class TestAugmentDeferToThreadPool(MAASTestCase): |
859 | |
860 | class TestPatchedURI(MAASTestCase): |
861 | def test_parses_URL_with_hostname(self): |
862 | - hostname = factory.make_name("host").encode("ascii") |
863 | - path = factory.make_name("path").encode("ascii") |
864 | - uri = get_patched_URI().fromBytes(b"http://%s/%s" % (hostname, path)) |
865 | - self.expectThat(uri.host, Equals(hostname)) |
866 | - self.expectThat(uri.path, Equals(b"/%s" % path)) |
867 | - self.expectThat(uri.port, Equals(80)) |
868 | + hostname = factory.make_name("host") |
869 | + path = factory.make_name("path") |
870 | + uri = get_patched_URI().fromBytes( |
871 | + f"http://{hostname}/{path}".encode("utf-8") |
872 | + ) |
873 | + self.assertEqual(uri.host, hostname.encode("utf-8")) |
874 | + self.assertEqual(uri.path, f"/{path}".encode("utf-8")) |
875 | + self.assertEqual(uri.port, 80) |
876 | |
877 | def test_parses_URL_with_hostname_and_port(self): |
878 | - hostname = factory.make_name("host").encode("ascii") |
879 | + hostname = factory.make_name("host") |
880 | port = factory.pick_port() |
881 | - path = factory.make_name("path").encode("ascii") |
882 | + path = factory.make_name("path") |
883 | uri = get_patched_URI().fromBytes( |
884 | - b"http://%s:%d/%s" % (hostname, port, path) |
885 | + f"http://{hostname}:{port}/{path}".encode("utf-8") |
886 | ) |
887 | - self.expectThat(uri.host, Equals(hostname)) |
888 | - self.expectThat(uri.path, Equals(b"/%s" % path)) |
889 | - self.expectThat(uri.port, Equals(port)) |
890 | + self.assertEqual(uri.host, hostname.encode("utf-8")) |
891 | + self.assertEqual(uri.path, f"/{path}".encode("utf-8")) |
892 | + self.assertEqual(uri.port, port) |
893 | |
894 | def test_parses_URL_with_IPv4_address(self): |
895 | - ip = factory.make_ipv4_address().encode("ascii") |
896 | + ip = factory.make_ipv4_address() |
897 | path = factory.make_name("path").encode("ascii") |
898 | - uri = get_patched_URI().fromBytes(b"http://%s/%s" % (ip, path)) |
899 | - self.expectThat(uri.host, Equals(ip)) |
900 | - self.expectThat(uri.path, Equals(b"/%s" % path)) |
901 | - self.expectThat(uri.port, Equals(80)) |
902 | + uri = get_patched_URI().fromBytes( |
903 | + f"http://{ip}/{path}".encode("utf-8") |
904 | + ) |
905 | + self.assertEqual(uri.host, ip.encode("utf-8")) |
906 | + self.assertEqual(uri.path, f"/{path}".encode("utf-8")) |
907 | + self.assertEqual(uri.port, 80) |
908 | |
909 | def test_parses_URL_with_IPv4_address_and_port(self): |
910 | - ip = factory.make_ipv4_address().encode("ascii") |
911 | + ip = factory.make_ipv4_address() |
912 | port = factory.pick_port() |
913 | - path = factory.make_name("path").encode("ascii") |
914 | + path = factory.make_name("path") |
915 | uri = get_patched_URI().fromBytes( |
916 | - b"http://%s:%d/%s" % (ip, port, path) |
917 | + f"http://{ip}:{port}/{path}".encode("utf-8") |
918 | ) |
919 | - self.expectThat(uri.host, Equals(ip)) |
920 | - self.expectThat(uri.path, Equals(b"/%s" % path)) |
921 | - self.expectThat(uri.port, Equals(port)) |
922 | + self.assertEqual(uri.host, ip.encode("utf-8")) |
923 | + self.assertEqual(uri.path, f"/{path}".encode("utf-8")) |
924 | + self.assertEqual(uri.port, port) |
925 | |
926 | def test_parses_URL_with_IPv6_address(self): |
927 | - ip = factory.make_ipv6_address().encode("ascii") |
928 | - path = factory.make_name("path").encode("ascii") |
929 | - uri = get_patched_URI().fromBytes(b"http://[%s]/%s" % (ip, path)) |
930 | - self.expectThat(uri.host, Equals(b"%s" % ip)) |
931 | - self.expectThat(uri.path, Equals(b"/%s" % path)) |
932 | - self.expectThat(uri.port, Equals(80)) |
933 | + ip = factory.make_ipv6_address() |
934 | + path = factory.make_name("path") |
935 | + uri = get_patched_URI().fromBytes(f"http://[{ip}]/{path}".encode()) |
936 | + self.assertEqual(uri.host, ip.encode("utf-8")) |
937 | + self.assertEqual(uri.path, f"/{path}".encode("utf-8")) |
938 | + self.assertEqual(uri.port, 80) |
939 | |
940 | def test_parses_URL_with_IPv6_address_and_port(self): |
941 | - ip = factory.make_ipv6_address().encode("ascii") |
942 | + ip = factory.make_ipv6_address() |
943 | port = factory.pick_port() |
944 | - path = factory.make_name("path").encode("ascii") |
945 | + path = factory.make_name("path") |
946 | uri = get_patched_URI().fromBytes( |
947 | - b"http://[%s]:%d/%s" % (ip, port, path) |
948 | + f"http://[{ip}]:{port}/{path}".encode() |
949 | ) |
950 | - self.expectThat(uri.host, Equals(b"%s" % ip)) |
951 | - self.expectThat(uri.path, Equals(b"/%s" % path)) |
952 | - self.expectThat(uri.port, Equals(port)) |
953 | + self.assertEqual(uri.host, ip.encode("utf-8")) |
954 | + self.assertEqual(uri.path, f"/{path}".encode("utf-8")) |
955 | + self.assertEqual(uri.port, port) |
956 | diff --git a/src/provisioningserver/utils/tests/test_events.py b/src/provisioningserver/utils/tests/test_events.py |
957 | index c9a677f..c3c64bb 100644 |
958 | --- a/src/provisioningserver/utils/tests/test_events.py |
959 | +++ b/src/provisioningserver/utils/tests/test_events.py |
960 | @@ -6,8 +6,6 @@ |
961 | |
962 | from unittest.mock import MagicMock, sentinel |
963 | |
964 | -from testtools.matchers import IsInstance |
965 | - |
966 | from maastesting.factory import factory |
967 | from maastesting.testcase import MAASTestCase |
968 | from provisioningserver.utils.events import Event, EventGroup |
969 | @@ -64,4 +62,4 @@ class TestEventGroup(MAASTestCase): |
970 | events = [factory.make_name("event") for _ in range(3)] |
971 | group = EventGroup(*events) |
972 | for event in events: |
973 | - self.expectThat(getattr(group, event), IsInstance(Event)) |
974 | + self.assertIsInstance(getattr(group, event), Event) |
975 | diff --git a/src/provisioningserver/utils/tests/test_text.py b/src/provisioningserver/utils/tests/test_text.py |
976 | index 5e6f949..c585619 100644 |
977 | --- a/src/provisioningserver/utils/tests/test_text.py |
978 | +++ b/src/provisioningserver/utils/tests/test_text.py |
979 | @@ -8,7 +8,6 @@ from itertools import repeat |
980 | import string |
981 | |
982 | import hypothesis.strategies |
983 | -from testtools.matchers import Equals |
984 | |
985 | from maastesting.factory import factory |
986 | from maastesting.testcase import MAASTestCase |
987 | @@ -111,9 +110,9 @@ class TestNormalizeToCommaListScenarios(MAASTestCase): |
988 | |
989 | def test_scenarios(self): |
990 | unquoted = normalise_to_comma_list(self.test_input) |
991 | - self.expectThat(unquoted, Equals(self.unquoted)) |
992 | + self.assertEqual(unquoted, self.unquoted) |
993 | quoted = normalise_to_comma_list(self.test_input, quoted=True) |
994 | - self.expectThat(quoted, Equals(self.quoted)) |
995 | + self.assertEqual(quoted, self.quoted) |
996 | |
997 | |
998 | class TestSplitStringList(MAASTestCase): |
UNIT TESTS
-b less-testtools lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas
STATUS: FAILED maas-ci. internal: 8080/job/ maas-tester/ 4199/console 590eb5ba1dc8704 6584d1a02e
LOG: http://
COMMIT: ceddd187e1b20f2