1
# Copyright 2014-2015 Canonical Ltd. This software is licensed under the
1
# Copyright 2014-2016 Canonical Ltd. This software is licensed under the
2
2
# GNU Affero General Public License version 3 (see the file LICENSE).
4
4
"""Tests for the region's RPC implementation."""
1325
1326
@wait_for_reactor
1326
1327
@inlineCallbacks
1328
def test_register_creates_new_rack(self):
1329
protocol = self.make_Region()
1330
protocol.transport = MagicMock()
1331
hostname = factory.make_hostname()
1332
yield call_responder(
1333
protocol, RegisterRackController, {
1335
"hostname": hostname,
1338
yield deferToDatabase(
1339
RackController.objects.get, hostname=hostname)
1343
def test_register_calls_refresh_when_needed(self):
1344
protocol = self.make_Region()
1345
protocol.transport = MagicMock()
1346
mock_gethost = self.patch(protocol.transport, 'getHost')
1347
mock_gethost.return_value = IPv4Address(
1348
type='TCP', host=factory.make_ipv4_address(),
1349
port=random.randint(1, 65535))
1350
mock_refresh = self.patch(RackController, 'refresh')
1351
self.patch(regionservice, 'registerConnection')
1352
hostname = factory.make_hostname()
1353
yield call_responder(
1354
protocol, RegisterRackController, {
1356
"hostname": hostname,
1359
self.assertThat(mock_refresh, MockCalledOnce())
1327
1363
def test_register_raises_CannotRegisterRackController_when_it_cant(self):
1328
1364
patched_create = self.patch(RackController.objects, 'create')
1329
1365
patched_create.side_effect = IntegrityError()
2418
2454
'architecture': make_usable_architecture(self),
2419
'power_type': factory.make_name("power_type"),
2455
'power_type': factory.make_name('power_type'),
2420
2456
'power_parameters': dumps({}),
2421
2457
'mac_addresses': [factory.make_mac_address()],
2458
'domain': factory.make_name('domain'),
2422
2459
'hostname': None,
2431
2468
MockCalledOnceWith(
2432
2469
params['architecture'], params['power_type'],
2433
2470
params['power_parameters'], params['mac_addresses'],
2471
domain=params['domain'],
2434
2472
hostname=params['hostname']))
2435
2473
self.assertEqual(
2436
2474
create_node_function.return_value.system_id,