Merge lp:~jtv/maas/dhcp-test-trivia 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: 2805
Proposed branch: lp:~jtv/maas/dhcp-test-trivia
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 121 lines (+49/-34)
1 file modified
src/maasserver/tests/test_dhcp.py (+49/-34)
To merge this branch: bzr merge lp:~jtv/maas/dhcp-test-trivia
Reviewer Review Type Date Requested Status
Julian Edwards (community) Approve
Review via email: mp+232034@code.launchpad.net

Commit message

Break up TestDHCP for manageability. Fix inappropriate ordering sensitivity in get_interfaces_managed_by test, and simplify test using HasLength.

Description of the change

Changes extracted from another branch I have up for review, to keep reviews small and effective.

Jeroen

To post a comment you must log in.
Revision history for this message
Julian Edwards (julian-edwards) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/tests/test_dhcp.py'
2--- src/maasserver/tests/test_dhcp.py 2014-08-25 03:14:30 +0000
3+++ src/maasserver/tests/test_dhcp.py 2014-08-25 07:10:50 +0000
4@@ -40,14 +40,14 @@
5 from provisioningserver import tasks
6 from provisioningserver.utils.enum import map_enum
7 from testresources import FixtureResource
8-from testtools.matchers import EndsWith
9-
10-
11-class TestDHCP(MAASServerTestCase):
12-
13- resources = (
14- ('celery', FixtureResource(CeleryFixture())),
15- )
16+from testtools.matchers import (
17+ EndsWith,
18+ HasLength,
19+ )
20+
21+
22+class TestGetInterfacesManagedBy(MAASServerTestCase):
23+ """Tests for `get_interfaces_managed_by`."""
24
25 def test_get_interfaces_managed_by_returns_managed_interfaces(self):
26 self.patch(settings, "DHCP_CONNECT", False)
27@@ -56,10 +56,9 @@
28 management=NODEGROUPINTERFACE_MANAGEMENT.DHCP)
29 self.patch(settings, "DHCP_CONNECT", True)
30 managed_interfaces = get_interfaces_managed_by(nodegroup)
31- self.assertNotEqual([], managed_interfaces)
32- self.assertEqual(1, len(managed_interfaces))
33- self.assertEqual(
34- list(nodegroup.nodegroupinterface_set.all()),
35+ self.assertThat(managed_interfaces, HasLength(1))
36+ self.assertItemsEqual(
37+ nodegroup.nodegroupinterface_set.all(),
38 managed_interfaces)
39
40 def test_get_interfaces_managed_by_returns_None_if_not_accepted(self):
41@@ -76,6 +75,14 @@
42 {status: None for status in unaccepted_statuses},
43 managed_interfaces)
44
45+
46+class TestConfigureDHCP(MAASServerTestCase):
47+ """Tests for `configure_dhcp`."""
48+
49+ resources = (
50+ ('celery', FixtureResource(CeleryFixture())),
51+ )
52+
53 def test_configure_dhcp_stops_server_if_no_managed_interface(self):
54 self.patch(settings, "DHCP_CONNECT", True)
55 self.patch(dhcp, 'stop_dhcp_server')
56@@ -191,28 +198,6 @@
57 args, kwargs = dhcp.write_dhcp_config.apply_async.call_args
58 self.assertThat(kwargs['kwargs']['omapi_key'], EndsWith('=='))
59
60- def test_dhcp_config_gets_written_when_nodegroup_becomes_active(self):
61- nodegroup = factory.make_node_group(
62- status=NODEGROUP_STATUS.PENDING,
63- management=NODEGROUPINTERFACE_MANAGEMENT.DHCP)
64- self.patch(settings, "DHCP_CONNECT", True)
65- self.patch(dhcp, 'write_dhcp_config')
66- nodegroup.accept()
67- self.assertEqual(1, dhcp.write_dhcp_config.apply_async.call_count)
68-
69- def test_dhcp_config_gets_written_when_nodegroup_name_changes(self):
70- nodegroup = factory.make_node_group(
71- status=NODEGROUP_STATUS.ACCEPTED,
72- management=NODEGROUPINTERFACE_MANAGEMENT.DHCP)
73- self.patch(settings, "DHCP_CONNECT", True)
74- self.patch(dhcp, 'write_dhcp_config')
75- new_name = factory.make_name('dns name'),
76-
77- nodegroup.name = new_name
78- nodegroup.save()
79-
80- self.assertEqual(1, dhcp.write_dhcp_config.apply_async.call_count)
81-
82 def test_write_dhcp_config_task_routed_to_nodegroup_worker(self):
83 nodegroup = factory.make_node_group(
84 status=NODEGROUP_STATUS.PENDING,
85@@ -234,6 +219,36 @@
86 args, kwargs = task.subtask.call_args
87 self.assertEqual(nodegroup.work_queue, kwargs['options']['queue'])
88
89+
90+class TestDHCPConnect(MAASServerTestCase):
91+ """Tests for DHCP signals triggered when saving a cluster interface."""
92+
93+ resources = (
94+ ('celery', FixtureResource(CeleryFixture())),
95+ )
96+
97+ def test_dhcp_config_gets_written_when_nodegroup_becomes_active(self):
98+ nodegroup = factory.make_node_group(
99+ status=NODEGROUP_STATUS.PENDING,
100+ management=NODEGROUPINTERFACE_MANAGEMENT.DHCP)
101+ self.patch(settings, "DHCP_CONNECT", True)
102+ self.patch(dhcp, 'write_dhcp_config')
103+ nodegroup.accept()
104+ self.assertEqual(1, dhcp.write_dhcp_config.apply_async.call_count)
105+
106+ def test_dhcp_config_gets_written_when_nodegroup_name_changes(self):
107+ nodegroup = factory.make_node_group(
108+ status=NODEGROUP_STATUS.ACCEPTED,
109+ management=NODEGROUPINTERFACE_MANAGEMENT.DHCP)
110+ self.patch(settings, "DHCP_CONNECT", True)
111+ self.patch(dhcp, 'write_dhcp_config')
112+ new_name = factory.make_name('dns name'),
113+
114+ nodegroup.name = new_name
115+ nodegroup.save()
116+
117+ self.assertEqual(1, dhcp.write_dhcp_config.apply_async.call_count)
118+
119 def test_dhcp_config_gets_written_when_interface_IP_changes(self):
120 nodegroup = factory.make_node_group(
121 status=NODEGROUP_STATUS.ACCEPTED,