~allenap/maas/xxx-a-thon

« back to all changes in this revision

Viewing changes to src/maasserver/rpc/tests/test_regionservice.py

  • Committer: LaMont Jones
  • Date: 2016-03-07 23:20:52 UTC
  • mfrom: (4657.1.84 maas)
  • mto: (4657.1.93 maas)
  • mto: This revision was merged to the branch mainline in revision 4660.
  • Revision ID: lamont@canonical.com-20160307232052-rgfxbq7dujj6s093
MergeĀ fromĀ trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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).
3
3
 
4
4
"""Tests for the region's RPC implementation."""
80
80
from maasserver.utils.threads import deferToDatabase
81
81
from maastesting.matchers import (
82
82
    MockAnyCall,
 
83
    MockCalledOnce,
83
84
    MockCalledOnceWith,
84
85
    MockCallsMatch,
85
86
    Provides,
1324
1325
 
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, {
 
1334
                "system_id": None,
 
1335
                "hostname": hostname,
 
1336
                "interfaces": {},
 
1337
            })
 
1338
        yield deferToDatabase(
 
1339
            RackController.objects.get, hostname=hostname)
 
1340
 
 
1341
    @wait_for_reactor
 
1342
    @inlineCallbacks
 
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, {
 
1355
                "system_id": None,
 
1356
                "hostname": hostname,
 
1357
                "interfaces": {},
 
1358
            })
 
1359
        self.assertThat(mock_refresh, MockCalledOnce())
 
1360
 
 
1361
    @wait_for_reactor
 
1362
    @inlineCallbacks
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()
2416
2452
 
2417
2453
        params = {
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,
2423
2460
        }
2424
2461
 
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,