Merge lp:~jtv/maas/stub-model-factories into lp:~maas-committers/maas/trunk

Proposed by Jeroen T. Vermeulen
Status: Merged
Approved by: Jeroen T. Vermeulen
Approved revision: no longer in the source branch.
Merged at revision: 2905
Proposed branch: lp:~jtv/maas/stub-model-factories
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 742 lines (+174/-122)
4 files modified
src/maasserver/testing/api.py (+3/-3)
src/maasserver/testing/factory.py (+131/-79)
src/maasserver/testing/testcase.py (+1/-1)
src/maasserver/testing/tests/test_factory.py (+39/-39)
To merge this branch: bzr merge lp:~jtv/maas/stub-model-factories
Reviewer Review Type Date Requested Status
Raphaël Badin (community) Approve
Review via email: mp+233460@code.launchpad.net

Commit message

New naming scheme for test factories for model classes: test_ModelClass instead of test_model_class. This will let us draw a clear line between e.g. “create a MAC address” (make_mac_address) and “create a MACAddress model object” (make_MACAddress).

Compatibility stubs ensure that existing code still works. After that, we can update our existing tests at leisure without breaking people's pending branches. And then we can rename those remaining few getRandom* factories.

Description of the change

I had some time to wait for machines to boot etc. The scheme was agreed with Julian.

Jeroen

To post a comment you must log in.
Revision history for this message
Raphaël Badin (rvb) wrote :

A nice improvement… and a pretty mechanical change. Let's just make sure we follow up on this and remove the compatibility stubs soon.

review: Approve
Revision history for this message
Jeroen T. Vermeulen (jtv) wrote :

Well said. Thanks.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/testing/api.py'
2--- src/maasserver/testing/api.py 2014-07-18 17:05:57 +0000
3+++ src/maasserver/testing/api.py 2014-09-05 05:59:07 +0000
4@@ -41,7 +41,7 @@
5 class ExampleTest(MultipleUsersScenarios, MAASServerTestCase):
6 scenarios = [
7 ('anon', dict(userfactory=lambda: AnonymousUser())),
8- ('user', dict(userfactory=factory.make_user)),
9+ ('user', dict(userfactory=factory.make_User)),
10 ('admin', dict(userfactory=factory.make_admin)),
11 ]
12
13@@ -81,7 +81,7 @@
14
15 def setUp(self):
16 super(APITestCase, self).setUp()
17- self.logged_in_user = factory.make_user(
18+ self.logged_in_user = factory.make_User(
19 username='test', password='test')
20 self.client = OAuthAuthenticatedClient(self.logged_in_user)
21
22@@ -99,7 +99,7 @@
23 def log_in_as_normal_user(client):
24 """Log `client` in as a normal user."""
25 password = factory.make_string()
26- user = factory.make_user(password=password)
27+ user = factory.make_User(password=password)
28 client.login(username=user.username, password=password)
29 return user
30
31
32=== modified file 'src/maasserver/testing/factory.py'
33--- src/maasserver/testing/factory.py 2014-09-05 03:28:57 +0000
34+++ src/maasserver/testing/factory.py 2014-09-05 05:59:07 +0000
35@@ -223,7 +223,7 @@
36 finally:
37 NODE_TRANSITIONS[None] = valid_initial_states
38
39- def make_node(self, mac=False, hostname=None, status=None,
40+ def make_Node(self, mac=False, hostname=None, status=None,
41 architecture="i386/generic", updated=None,
42 created=None, nodegroup=None, routers=None, zone=None,
43 power_type=None, networks=None, sortable_name=False,
44@@ -244,11 +244,11 @@
45 if status is None:
46 status = NODE_STATUS.DEFAULT
47 if nodegroup is None:
48- nodegroup = self.make_node_group()
49+ nodegroup = self.make_NodeGroup()
50 if routers is None:
51 routers = [self.make_MAC()]
52 if zone is None:
53- zone = self.make_zone()
54+ zone = self.make_Zone()
55 if power_type is None:
56 power_type = 'ether_wake'
57 if power_state is None:
58@@ -267,7 +267,7 @@
59 if networks is not None:
60 node.networks.add(*networks)
61 if mac:
62- self.make_mac_address(node=node)
63+ self.make_MACAddress(node=node)
64
65 # Update the 'updated'/'created' fields with a call to 'update'
66 # preventing a call to save() from overriding the values.
67@@ -277,6 +277,8 @@
68 Node.objects.filter(id=node.id).update(created=created)
69 return reload_object(node)
70
71+ make_node = make_Node # DEPRECATED
72+
73 def get_interface_fields(self, name=None, ip=None, router_ip=None,
74 network=None, subnet_mask=None, broadcast_ip=None,
75 ip_range_low=None, ip_range_high=None,
76@@ -346,12 +348,12 @@
77 management=management,
78 interface=interface)
79
80- def make_node_group(self, name=None, uuid=None, cluster_name=None,
81- dhcp_key=None, ip=None, router_ip=None, network=None,
82- subnet_mask=None, broadcast_ip=None, ip_range_low=None,
83- ip_range_high=None, interface=None, management=None,
84- status=None, maas_url='', static_ip_range_low=None,
85- static_ip_range_high=None, **kwargs):
86+ def make_NodeGroup(self, name=None, uuid=None, cluster_name=None,
87+ dhcp_key=None, ip=None, router_ip=None, network=None,
88+ subnet_mask=None, broadcast_ip=None, ip_range_low=None,
89+ ip_range_high=None, interface=None, management=None,
90+ status=None, maas_url='', static_ip_range_low=None,
91+ static_ip_range_high=None, **kwargs):
92 """Create a :class:`NodeGroup`.
93
94 If `management` is set (to a `NODEGROUPINTERFACE_MANAGEMENT` value),
95@@ -385,9 +387,11 @@
96 static_ip_range_low=static_ip_range_low,
97 static_ip_range_high=static_ip_range_high)
98 interface_settings.update(kwargs)
99- self.make_node_group_interface(cluster, **interface_settings)
100+ self.make_NodeGroupInterface(cluster, **interface_settings)
101 return cluster
102
103+ make_node_group = make_NodeGroup # DEPRECATED
104+
105 def make_unrenamable_nodegroup_with_node(self):
106 """Create a `NodeGroup` that can't be renamed, and `Node`.
107
108@@ -400,21 +404,21 @@
109 :return: tuple: (`NodeGroup`, `Node`).
110 """
111 name = self.make_name('original-name')
112- nodegroup = self.make_node_group(
113+ nodegroup = self.make_NodeGroup(
114 name=name, status=NODEGROUP_STATUS.ACCEPTED)
115- factory.make_node_group_interface(
116+ factory.make_NodeGroupInterface(
117 nodegroup, management=NODEGROUPINTERFACE_MANAGEMENT.DHCP_AND_DNS)
118- node = self.make_node(
119+ node = self.make_Node(
120 nodegroup=nodegroup, status=NODE_STATUS.ALLOCATED)
121 return nodegroup, node
122
123- def make_node_group_interface(self, nodegroup, name=None, ip=None,
124- router_ip=None, network=None,
125- subnet_mask=None, broadcast_ip=None,
126- ip_range_low=None, ip_range_high=None,
127- interface=None, management=None,
128- static_ip_range_low=None,
129- static_ip_range_high=None, **kwargs):
130+ def make_NodeGroupInterface(self, nodegroup, name=None, ip=None,
131+ router_ip=None, network=None,
132+ subnet_mask=None, broadcast_ip=None,
133+ ip_range_low=None, ip_range_high=None,
134+ interface=None, management=None,
135+ static_ip_range_low=None,
136+ static_ip_range_high=None, **kwargs):
137 interface_settings = self.get_interface_fields(
138 name=name, ip=ip, router_ip=router_ip, network=network,
139 subnet_mask=subnet_mask, broadcast_ip=broadcast_ip,
140@@ -428,10 +432,13 @@
141 interface.save()
142 return interface
143
144+ make_node_group_interface = make_NodeGroupInterface # DEPRECATED
145+
146 def make_node_commission_result(self, node=None, name=None,
147 script_result=None, data=None):
148+ """Create a `NodeResult` as one would see from commissioning a node."""
149 if node is None:
150- node = self.make_node()
151+ node = self.make_Node()
152 if name is None:
153 name = "ncrname-" + self.make_string(92)
154 if data is None:
155@@ -446,8 +453,9 @@
156
157 def make_node_install_result(self, node=None, name=None,
158 script_result=None, data=None):
159+ """Create a `NodeResult` as one would see from installing a node."""
160 if node is None:
161- node = self.make_node()
162+ node = self.make_Node()
163 if name is None:
164 name = "ncrname-" + self.make_string(92)
165 if data is None:
166@@ -464,11 +472,11 @@
167 """Generate a random MAC address, in the form of a MAC object."""
168 return MAC(self.getRandomMACAddress())
169
170- def make_mac_address(self, address=None, node=None, networks=None,
171- **kwargs):
172- """Create a MACAddress model object."""
173+ def make_MACAddress(self, address=None, node=None, networks=None,
174+ **kwargs):
175+ """Create a `MACAddress` model object."""
176 if node is None:
177- node = self.make_node()
178+ node = self.make_Node()
179 if address is None:
180 address = self.getRandomMACAddress()
181 mac = MACAddress(mac_address=MAC(address), node=node, **kwargs)
182@@ -477,6 +485,8 @@
183 mac.networks.add(*networks)
184 return mac
185
186+ make_mac_address = make_MACAddress # DEPRECATED
187+
188 def make_node_with_mac_attached_to_nodegroupinterface(
189 self, management=NODEGROUPINTERFACE_MANAGEMENT.DHCP,
190 network=None, disable_ipv4=False, **kwargs):
191@@ -487,17 +497,17 @@
192 """
193 nodegroup = kwargs.pop("nodegroup", None)
194 if nodegroup is None:
195- nodegroup = self.make_node_group()
196- node = self.make_node(
197+ nodegroup = self.make_NodeGroup()
198+ node = self.make_Node(
199 mac=True, nodegroup=nodegroup, disable_ipv4=disable_ipv4, **kwargs)
200- ngi = self.make_node_group_interface(
201+ ngi = self.make_NodeGroupInterface(
202 nodegroup, network=network, management=management)
203 mac = node.get_primary_mac()
204 mac.cluster_interface = ngi
205 mac.save()
206 return node
207
208- def make_staticipaddress(self, ip=None, alloc_type=IPADDRESS_TYPE.AUTO,
209+ def make_StaticIPAddress(self, ip=None, alloc_type=IPADDRESS_TYPE.AUTO,
210 mac=None, user=None):
211 """Create and return a StaticIPAddress model object.
212
213@@ -513,10 +523,12 @@
214 mac_address=mac, ip_address=ipaddress).save()
215 return ipaddress
216
217- def make_dhcp_lease(self, nodegroup=None, ip=None, mac=None):
218+ make_staticipaddress = make_StaticIPAddress # DEPRECATED
219+
220+ def make_DHCPLease(self, nodegroup=None, ip=None, mac=None):
221 """Create a :class:`DHCPLease`."""
222 if nodegroup is None:
223- nodegroup = self.make_node_group()
224+ nodegroup = self.make_NodeGroup()
225 if ip is None:
226 ip = self.getRandomIPAddress()
227 if mac is None:
228@@ -525,10 +537,12 @@
229 lease.save()
230 return lease
231
232+ make_dhcp_lease = make_DHCPLease # DEPRECATED
233+
234 def make_email(self):
235 return '%s@example.com' % self.make_string(10)
236
237- def make_user(self, username=None, password='test', email=None):
238+ def make_User(self, username=None, password='test', email=None):
239 if username is None:
240 username = self.make_username()
241 if email is None:
242@@ -536,14 +550,18 @@
243 return User.objects.create_user(
244 username=username, password=password, email=email)
245
246- def make_sshkey(self, user, key_string=None):
247+ make_user = make_User # DEPRECATED
248+
249+ def make_SSHKey(self, user, key_string=None):
250 if key_string is None:
251 key_string = get_data('data/test_rsa0.pub')
252 key = SSHKey(key=key_string, user=user)
253 key.save()
254 return key
255
256- def make_tag(self, name=None, definition=None, comment='',
257+ make_sshkey = make_SSHKey # DEPRECATED
258+
259+ def make_Tag(self, name=None, definition=None, comment='',
260 kernel_opts=None, created=None, updated=None):
261 if name is None:
262 name = self.make_name('tag')
263@@ -562,6 +580,8 @@
264 Tag.objects.filter(id=tag.id).update(created=created)
265 return reload_object(tag)
266
267+ make_tag = make_Tag # DEPRECATED
268+
269 def make_user_with_keys(self, n_keys=2, user=None, **kwargs):
270 """Create a user with n `SSHKey`. If user is not None, use this user
271 instead of creating one.
272@@ -574,7 +594,7 @@
273 "add more keys in src/maasserver/tests/data/."
274 % MAX_PUBLIC_KEYS)
275 if user is None:
276- user = self.make_user(**kwargs)
277+ user = self.make_User(**kwargs)
278 keys = []
279 for i in range(n_keys):
280 key_string = get_data('data/test_rsa%d.pub' % i)
281@@ -597,7 +617,7 @@
282 "add more keys in src/maasserver/tests/data/."
283 % MAX_PUBLIC_KEYS)
284 if user is None:
285- user = self.make_user(**kwargs)
286+ user = self.make_User(**kwargs)
287 keys = []
288 for i in range(n_keys):
289 key_string = get_data('data/test_x509_%d.pem' % i)
290@@ -614,10 +634,12 @@
291 return User.objects.create_superuser(
292 username, password=password, email=email)
293
294- def make_file_storage(self, filename=None, content=None, owner=None):
295+ def make_FileStorage(self, filename=None, content=None, owner=None):
296 fake_file = self.make_file_upload(filename, content)
297 return FileStorage.objects.save_file(fake_file.name, fake_file, owner)
298
299+ make_file_storage = make_FileStorage # DEPRECATED
300+
301 def make_oauth_header(self, **kwargs):
302 """Fake an OAuth authorization header.
303
304@@ -638,10 +660,10 @@
305 return "OAuth " + ", ".join([
306 '%s="%s"' % (key, value) for key, value in items.items()])
307
308- def make_boot_image(self, osystem=None, architecture=None,
309- subarchitecture=None, release=None, purpose=None,
310- nodegroup=None, label=None, supported_subarches=None,
311- xinstall_path=None, xinstall_type=None):
312+ def make_BootImage(self, osystem=None, architecture=None,
313+ subarchitecture=None, release=None, purpose=None,
314+ nodegroup=None, label=None, supported_subarches=None,
315+ xinstall_path=None, xinstall_type=None):
316 if osystem is None:
317 osystem = self.make_name('os')
318 if architecture is None:
319@@ -653,7 +675,7 @@
320 if purpose is None:
321 purpose = self.make_name('purpose')
322 if nodegroup is None:
323- nodegroup = self.make_node_group()
324+ nodegroup = self.make_NodeGroup()
325 if label is None:
326 label = self.make_name('label')
327 if supported_subarches is None:
328@@ -675,6 +697,8 @@
329 xinstall_type=xinstall_type,
330 )
331
332+ make_boot_image = make_BootImage # DEPRECATED
333+
334 def make_boot_images_for_node_with_purposes(self, node, purposes):
335 osystem = node.get_osystem()
336 series = node.get_distro_series()
337@@ -688,14 +712,14 @@
338 xinstall_path = None
339 xinstall_type = None
340 images.append(
341- self.make_boot_image(
342+ self.make_BootImage(
343 osystem=osystem, architecture=arch,
344 subarchitecture=subarch, release=series, purpose=purpose,
345 nodegroup=node.nodegroup, xinstall_path=xinstall_path,
346 xinstall_type=xinstall_type))
347 return images
348
349- def make_commissioning_script(self, name=None, content=None):
350+ def make_CommissioningScript(self, name=None, content=None):
351 if name is None:
352 name = self.make_name('script')
353 if content is None:
354@@ -703,9 +727,11 @@
355 return CommissioningScript.objects.create(
356 name=name, content=Bin(content))
357
358- def make_download_progress(self, nodegroup=None, filename=None,
359- size=NO_VALUE, bytes_downloaded=NO_VALUE,
360- error=None):
361+ make_commissioning_script = make_CommissioningScript # DEPRECATED
362+
363+ def make_DownloadProgress(self, nodegroup=None, filename=None,
364+ size=NO_VALUE, bytes_downloaded=NO_VALUE,
365+ error=None):
366 """Create a `DownloadProgress` in some poorly-defined state.
367
368 If you have specific wishes about the object's state, you'll want to
369@@ -715,7 +741,7 @@
370 known. The default picks either a random number, or None.
371 """
372 if nodegroup is None:
373- nodegroup = self.make_node_group()
374+ nodegroup = self.make_NodeGroup()
375 if filename is None:
376 filename = self.make_name('download')
377 if size is NO_VALUE:
378@@ -741,10 +767,12 @@
379 nodegroup=nodegroup, filename=filename, size=size,
380 bytes_downloaded=bytes_downloaded)
381
382+ make_download_progress = make_DownloadProgress # DEPRECATED
383+
384 def make_download_progress_initial(self, nodegroup=None, filename=None,
385 size=NO_VALUE):
386 """Create a `DownloadProgress` as reported before a download."""
387- return self.make_download_progress(
388+ return self.make_DownloadProgress(
389 nodegroup=nodegroup, filename=filename, size=size,
390 bytes_downloaded=None, error='')
391
392@@ -753,7 +781,7 @@
393 """Create a `DownloadProgress` indicating success."""
394 if size is None:
395 size = random.randint(0, 1000000000)
396- return self.make_download_progress(
397+ return self.make_DownloadProgress(
398 nodegroup=nodegroup, filename=filename, size=size,
399 bytes_downloaded=size, error='')
400
401@@ -773,7 +801,7 @@
402 else:
403 max_size = size
404 bytes_downloaded = random.randint(0, max_size - 1)
405- return self.make_download_progress(
406+ return self.make_DownloadProgress(
407 nodegroup=nodegroup, filename=filename, size=size,
408 bytes_downloaded=bytes_downloaded, error='')
409
410@@ -787,7 +815,7 @@
411 nodegroup=nodegroup, filename=filename, size=size,
412 bytes_downloaded=bytes_downloaded, error=error)
413
414- def make_zone(self, name=None, description=None, nodes=None,
415+ def make_Zone(self, name=None, description=None, nodes=None,
416 sortable_name=False):
417 """Create a physical `Zone`.
418
419@@ -809,6 +837,8 @@
420 zone.node_set.add(*nodes)
421 return zone
422
423+ make_zone = make_Zone
424+
425 def make_vlan_tag(self, allow_none=False, but_not=None):
426 """Create a random VLAN tag.
427
428@@ -832,7 +862,7 @@
429 raise maastesting.factory.TooManyRandomRetries(
430 "Could not find an available VLAN tag.")
431
432- def make_network(self, name=None, network=None, vlan_tag=NO_VALUE,
433+ def make_Network(self, name=None, network=None, vlan_tag=NO_VALUE,
434 description=None, sortable_name=False,
435 disjoint_from=None, default_gateway=None):
436 """Create a `Network`.
437@@ -881,7 +911,9 @@
438 network.save()
439 return network
440
441- def make_networks(self, number, with_vlans=True, **kwargs):
442+ make_network = make_Network # DEPRECATED
443+
444+ def make_Networks(self, number, with_vlans=True, **kwargs):
445 """Create multiple networks.
446
447 This avoids accidentally clashing VLAN tags.
448@@ -905,12 +937,14 @@
449 networks = []
450 for tag in vlan_tags:
451 networks.append(
452- self.make_network(
453+ self.make_Network(
454 vlan_tag=tag, disjoint_from=networks, **kwargs))
455 return networks
456
457- def make_boot_source(self, url=None, keyring_filename=None,
458- keyring_data=None):
459+ make_networks = make_Networks # DEPRECATED
460+
461+ def make_BootSource(self, url=None, keyring_filename=None,
462+ keyring_data=None):
463 """Create a new `BootSource`."""
464 if url is None:
465 url = "http://%s.com" % self.make_name('source-url')
466@@ -927,12 +961,14 @@
467 boot_source.save()
468 return boot_source
469
470- def make_boot_source_selection(self, boot_source=None, os=None,
471- release=None, arches=None, subarches=None,
472- labels=None):
473+ make_boot_source = make_BootSource # DEPRECATED
474+
475+ def make_BootSourceSelection(self, boot_source=None, os=None,
476+ release=None, arches=None, subarches=None,
477+ labels=None):
478 """Create a `BootSourceSelection`."""
479 if boot_source is None:
480- boot_source = self.make_boot_source()
481+ boot_source = self.make_BootSource()
482 if os is None:
483 os = self.make_name('os')
484 if release is None:
485@@ -955,8 +991,10 @@
486 boot_source_selection.save()
487 return boot_source_selection
488
489- def make_license_key(self, osystem=None, distro_series=None,
490- license_key=None):
491+ make_boot_source_selection = make_BootSourceSelection # DEPRECATED
492+
493+ def make_LicenseKey(self, osystem=None, distro_series=None,
494+ license_key=None):
495 if osystem is None:
496 osystem = factory.make_name('osystem')
497 if distro_series is None:
498@@ -968,7 +1006,9 @@
499 distro_series=distro_series,
500 license_key=license_key)
501
502- def make_event_type(self, name=None, level=None, description=None):
503+ make_license_key = make_LicenseKey # DEPRECATED
504+
505+ def make_EventType(self, name=None, level=None, description=None):
506 if name is None:
507 name = self.make_name('name', size=20)
508 if description is None:
509@@ -979,14 +1019,18 @@
510 return EventType.objects.create(
511 name=name, description=description, level=level)
512
513- def make_event(self, node=None, type=None):
514+ make_event_type = make_EventType # DEPRECATED
515+
516+ def make_Event(self, node=None, type=None):
517 if node is None:
518- node = self.make_node()
519+ node = self.make_Node()
520 if type is None:
521- type = self.make_event_type()
522+ type = self.make_EventType()
523 return Event.objects.create(node=node, type=type)
524
525- def make_large_file(self, content=None, size=512):
526+ make_event = make_Event # DEPRECATED
527+
528+ def make_LargeFile(self, content=None, size=512):
529 """Create `LargeFile`.
530
531 :param content: Data to store in large file object.
532@@ -1006,8 +1050,10 @@
533 return LargeFile.objects.create(
534 sha256=sha256, total_size=size, content=largeobject)
535
536- def make_boot_resource(self, rtype=None, name=None, architecture=None,
537- extra=None):
538+ make_large_file = make_LargeFile # DEPRECATED
539+
540+ def make_BootResource(self, rtype=None, name=None, architecture=None,
541+ extra=None):
542 if rtype is None:
543 rtype = self.pick_enum(BOOT_RESOURCE_TYPE)
544 if name is None:
545@@ -1029,7 +1075,9 @@
546 return BootResource.objects.create(
547 rtype=rtype, name=name, architecture=architecture, extra=extra)
548
549- def make_boot_resource_set(self, resource, version=None, label=None):
550+ make_boot_resource = make_BootResource # DEPRECATED
551+
552+ def make_BootResourceSet(self, resource, version=None, label=None):
553 if version is None:
554 version = self.make_name('version')
555 if label is None:
556@@ -1037,8 +1085,10 @@
557 return BootResourceSet.objects.create(
558 resource=resource, version=version, label=label)
559
560- def make_boot_resource_file(self, resource_set, largefile, filename=None,
561- filetype=None, extra=None):
562+ make_boot_resource_set = make_BootResourceSet # DEPRECATED
563+
564+ def make_BootResourceFile(self, resource_set, largefile, filename=None,
565+ filetype=None, extra=None):
566 if filename is None:
567 filename = self.make_name('name')
568 if filetype is None:
569@@ -1052,20 +1102,22 @@
570 resource_set=resource_set, largefile=largefile, filename=filename,
571 filetype=filetype, extra=extra)
572
573+ make_boot_resource_file = make_BootResourceFile # DEPRECATED
574+
575 def make_boot_resource_file_with_content(
576 self, resource_set, filename=None, filetype=None, extra=None,
577 content=None, size=512):
578- largefile = self.make_large_file(content=content, size=size)
579- return self.make_boot_resource_file(
580+ largefile = self.make_LargeFile(content=content, size=size)
581+ return self.make_BootResourceFile(
582 resource_set, largefile, filename=filename, filetype=filetype,
583 extra=extra)
584
585 def make_usable_boot_resource(
586 self, rtype=None, name=None, architecture=None,
587 extra=None, version=None, label=None):
588- resource = self.make_boot_resource(
589+ resource = self.make_BootResource(
590 rtype=rtype, name=name, architecture=architecture, extra=extra)
591- resource_set = self.make_boot_resource_set(
592+ resource_set = self.make_BootResourceSet(
593 resource, version=version, label=label)
594 filetypes = COMMISSIONABLE_SET.union(INSTALL_SET)
595 filetypes.add(random.choice(XINSTALL_TYPES))
596
597=== modified file 'src/maasserver/testing/testcase.py'
598--- src/maasserver/testing/testcase.py 2014-09-03 06:24:38 +0000
599+++ src/maasserver/testing/testcase.py 2014-09-05 05:59:07 +0000
600@@ -84,7 +84,7 @@
601 if as_admin:
602 user = factory.make_admin(password=password)
603 else:
604- user = factory.make_user(password=password)
605+ user = factory.make_User(password=password)
606 self.client.login(username=user.username, password=password)
607 self.logged_in_user = user
608
609
610=== modified file 'src/maasserver/testing/tests/test_factory.py'
611--- src/maasserver/testing/tests/test_factory.py 2014-08-13 21:49:35 +0000
612+++ src/maasserver/testing/tests/test_factory.py 2014-09-05 05:59:07 +0000
613@@ -84,46 +84,46 @@
614 self.assertEqual(
615 10, factory.pick_choice(options, but_not=but_not))
616
617- def test_make_node_creates_nodegroup_if_none_given(self):
618+ def test_make_Node_creates_nodegroup_if_none_given(self):
619 existing_nodegroup_ids = set(
620 nodegroup.id for nodegroup in NodeGroup.objects.all())
621- new_node = factory.make_node()
622+ new_node = factory.make_Node()
623 self.assertIsNotNone(new_node.nodegroup)
624 self.assertNotIn(new_node.nodegroup.id, existing_nodegroup_ids)
625
626- def test_make_node_uses_given_nodegroup(self):
627- nodegroup = factory.make_node_group()
628+ def test_make_Node_uses_given_nodegroup(self):
629+ nodegroup = factory.make_NodeGroup()
630 self.assertEqual(
631- nodegroup, factory.make_node(nodegroup=nodegroup).nodegroup)
632-
633- def test_make_zone_returns_physical_zone(self):
634- self.assertIsNotNone(factory.make_zone())
635-
636- def test_make_zone_assigns_name(self):
637- name = factory.make_zone().name
638+ nodegroup, factory.make_Node(nodegroup=nodegroup).nodegroup)
639+
640+ def test_make_Zone_returns_physical_zone(self):
641+ self.assertIsNotNone(factory.make_Zone())
642+
643+ def test_make_Zone_assigns_name(self):
644+ name = factory.make_Zone().name
645 self.assertIsNotNone(name)
646 self.assertNotEqual(0, len(name))
647
648- def test_make_zone_returns_unique_zone(self):
649- self.assertNotEqual(factory.make_zone(), factory.make_zone())
650+ def test_make_Zone_returns_unique_zone(self):
651+ self.assertNotEqual(factory.make_Zone(), factory.make_Zone())
652
653- def test_make_zone_adds_nodes(self):
654- node = factory.make_node()
655- zone = factory.make_zone(nodes=[node])
656+ def test_make_Zone_adds_nodes(self):
657+ node = factory.make_Node()
658+ zone = factory.make_Zone(nodes=[node])
659 node = reload_object(node)
660 self.assertEqual(zone, node.zone)
661
662- def test_make_zone_does_not_add_other_nodes(self):
663- previous_zone = factory.make_zone()
664- node = factory.make_node(zone=previous_zone)
665- factory.make_zone(nodes=[factory.make_node()])
666+ def test_make_Zone_does_not_add_other_nodes(self):
667+ previous_zone = factory.make_Zone()
668+ node = factory.make_Node(zone=previous_zone)
669+ factory.make_Zone(nodes=[factory.make_Node()])
670 node = reload_object(node)
671 self.assertEqual(previous_zone, node.zone)
672
673- def test_make_zone_adds_no_nodes_by_default(self):
674- previous_zone = factory.make_zone()
675- node = factory.make_node(zone=previous_zone)
676- factory.make_zone()
677+ def test_make_Zone_adds_no_nodes_by_default(self):
678+ previous_zone = factory.make_Zone()
679+ node = factory.make_Node(zone=previous_zone)
680+ factory.make_Zone()
681 node = reload_object(node)
682 self.assertEqual(previous_zone, node.zone)
683
684@@ -144,43 +144,43 @@
685 for _ in range(1000)
686 })
687
688- def test_make_network_lowers_names_if_sortable_name(self):
689- networks = factory.make_networks(10, sortable_name=True)
690+ def test_make_Networks_lowers_names_if_sortable_name(self):
691+ networks = factory.make_Networks(10, sortable_name=True)
692 self.assertEqual(
693 [network.name.lower() for network in networks],
694 [network.name for network in networks])
695
696- def test_make_networks_generates_desired_number_of_networks(self):
697+ def test_make_Networks_generates_desired_number_of_networks(self):
698 number = random.randint(1, 20)
699- networks = factory.make_networks(number)
700+ networks = factory.make_Networks(number)
701 self.assertEqual(number, len(networks))
702 self.assertIsInstance(networks[0], Network)
703 self.assertIsInstance(networks[-1], Network)
704
705- def test_make_networks_passes_on_keyword_arguments(self):
706+ def test_make_Networks_passes_on_keyword_arguments(self):
707 description = factory.make_string()
708- [network] = factory.make_networks(1, description=description)
709+ [network] = factory.make_Networks(1, description=description)
710 self.assertEqual(description, network.description)
711
712- def test_make_networks_includes_VLANs_by_default(self):
713+ def test_make_Networks_includes_VLANs_by_default(self):
714 class FakeNetwork:
715 def __init__(self, vlan_tag, *args, **kwargs):
716 self.vlan_tag = vlan_tag
717- self.patch(factory, 'make_network', FakeNetwork)
718+ self.patch(factory, 'make_Network', FakeNetwork)
719 self.patch(random, 'randint', FakeRandInt(random.randint, 0, 1))
720- networks = factory.make_networks(100)
721+ networks = factory.make_Networks(100)
722 self.assertEqual({None, 1}, {network.vlan_tag for network in networks})
723
724- def test_make_networks_excludes_VLANs_if_not_with_vlans(self):
725+ def test_make_Networks_excludes_VLANs_if_not_with_vlans(self):
726 class FakeNetwork:
727 def __init__(self, vlan_tag, *args, **kwargs):
728 self.vlan_tag = vlan_tag
729- self.patch(factory, 'make_network', FakeNetwork)
730+ self.patch(factory, 'make_Network', FakeNetwork)
731 self.patch(random, 'randint', FakeRandInt(random.randint, 0, 1))
732- networks = factory.make_networks(100, with_vlans=False)
733+ networks = factory.make_Networks(100, with_vlans=False)
734 self.assertEqual({None}, {network.vlan_tag for network in networks})
735
736- def test_make_networks_gives_up_if_random_tags_keep_clashing(self):
737- self.patch(factory, 'make_network')
738+ def test_make_Networks_gives_up_if_random_tags_keep_clashing(self):
739+ self.patch(factory, 'make_Network')
740 self.patch(random, 'randint', lambda *args: 1)
741- self.assertRaises(TooManyRandomRetries, factory.make_networks, 2)
742+ self.assertRaises(TooManyRandomRetries, factory.make_Networks, 2)