~rvb/maas/transaction-1.7-bug-1409852

« back to all changes in this revision

Viewing changes to src/provisioningserver/pserv_services/tests/test_dhcp_probe_service.py

merged upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
55
55
            region.GetClusterInterfaces, region.ReportForeignDHCPServer)
56
56
        return protocol, connecting
57
57
 
 
58
    def make_cluster_interface_values(self, ip=None):
 
59
        """Return a dict describing a cluster interface."""
 
60
        if ip is None:
 
61
            ip = factory.getRandomIPAddress()
 
62
        return {
 
63
            'name': factory.make_name('interface'),
 
64
            'interface': factory.make_name('eth'),
 
65
            'ip': ip,
 
66
            }
 
67
 
58
68
    def test_is_called_every_interval(self):
59
69
        clock = Clock()
60
70
        service = PeriodicDHCPProbeService(
85
95
 
86
96
    def test_probe_is_initiated_in_new_thread(self):
87
97
        clock = Clock()
88
 
        interface = {
89
 
            'name': 'eth0',
90
 
            'ip': '192.168.1.1',
91
 
            }
 
98
        interface = self.make_cluster_interface_values()
92
99
        rpc_service = Mock()
93
100
        rpc_client = rpc_service.getClient.return_value
94
101
        rpc_client.side_effect = [
108
115
        self.assertThat(
109
116
            deferToThread, MockCalledOnceWith(
110
117
                dhcp_probe_service.probe_interface,
111
 
                interface['name'], interface['ip']))
 
118
                interface['interface'], interface['ip']))
112
119
 
113
120
    @defer.inlineCallbacks
114
121
    def test_exits_gracefully_if_cant_get_interfaces(self):
146
153
            region.ReportForeignDHCPServer.commandName]
147
154
        protocol.GetClusterInterfaces.return_value = {
148
155
            'interfaces': [
149
 
                {'name': 'eth0', 'ip': '192.168.0.1'},
150
 
            ]}
 
156
                self.make_cluster_interface_values(ip='192.168.0.1'),
 
157
                ],
 
158
            }
151
159
 
152
160
        rpc_service = Mock()
153
161
        rpc_service.getClient.return_value = getRegionClient()
188
196
        deferToThread.return_value = defer.succeed(
189
197
            [foreign_dhcp_ip])
190
198
 
191
 
        interface = {
192
 
            'name': factory.make_name('interface'),
193
 
            'ip': factory.getRandomIPAddress(),
 
199
        interface = self.make_cluster_interface_values()
 
200
        protocol.GetClusterInterfaces.return_value = {
 
201
            'interfaces': [interface],
194
202
            }
195
 
        protocol.GetClusterInterfaces.return_value = {
196
 
            'interfaces': [interface]}
197
203
 
198
204
        rpc_service = Mock()
199
205
        rpc_service.getClient.return_value = getRegionClient()
220
226
            dhcp_probe_service, 'deferToThread')
221
227
        deferToThread.return_value = defer.succeed([])
222
228
 
223
 
        interface = {
224
 
            'name': factory.make_name('interface'),
225
 
            'ip': factory.getRandomIPAddress(),
 
229
        interface = self.make_cluster_interface_values()
 
230
        protocol.GetClusterInterfaces.return_value = {
 
231
            'interfaces': [interface],
226
232
            }
227
 
        protocol.GetClusterInterfaces.return_value = {
228
 
            'interfaces': [interface]}
229
233
 
230
234
        rpc_service = Mock()
231
235
        rpc_service.getClient.return_value = getRegionClient()