~lutostag/ubuntu/trusty/maas/1.5.2+packagefix

« back to all changes in this revision

Viewing changes to src/provisioningserver/dhcp/tests/test_detect.py

  • Committer: Package Import Robot
  • Author(s): Andres Rodriguez
  • Date: 2014-03-28 10:43:53 UTC
  • mto: This revision was merged to the branch mainline in revision 57.
  • Revision ID: package-import@ubuntu.com-20140328104353-ekpolg0pm5xnvq2s
Tags: upstream-1.5+bzr2204
ImportĀ upstreamĀ versionĀ 1.5+bzr2204

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
from apiclient.maas_client import MAASClient
26
26
from apiclient.testing.credentials import make_api_credentials
27
27
from maastesting.factory import factory
 
28
from maastesting.matchers import MockCalledOnceWith
28
29
from maastesting.testcase import MAASTestCase
29
30
import mock
30
31
from provisioningserver import cache
450
451
            mock.sentinel, mock.sentinel)
451
452
        mocked_logging = self.patch(detect_module.logger, 'error')
452
453
        determine_cluster_interfaces(self.knowledge)
453
 
        mocked_logging.assert_called_once()
 
454
        self.assertThat(mocked_logging, MockCalledOnceWith(mock.ANY, mock.ANY))
454
455
 
455
456
    def test_determine_cluster_interfaces_catches_URLError_in_MASClient(self):
456
457
        self.patch(MAASClient, 'get').side_effect = urllib2.URLError(
457
458
            mock.sentinel.arg1)
458
459
        mocked_logging = self.patch(detect_module.logger, 'error')
459
460
        determine_cluster_interfaces(self.knowledge)
460
 
        mocked_logging.assert_called_once()
 
461
        self.assertThat(mocked_logging, MockCalledOnceWith(mock.ANY, mock.ANY))
461
462
 
462
463
    def test_determine_cluster_interfaces_catches_non_OK_response(self):
463
464
        self.patch(MAASClient, 'get').return_value = MockResponse(
464
465
            httplib.NOT_FOUND, "error text")
465
466
        mocked_logging = self.patch(detect_module.logger, 'error')
466
467
        determine_cluster_interfaces(self.knowledge)
467
 
        mocked_logging.assert_called_once()
 
468
        self.assertThat(
 
469
            mocked_logging,
 
470
            MockCalledOnceWith(mock.ANY, mock.ANY, mock.ANY))
468
471
 
469
472
    def test_update_region_controller_sets_detected_dhcp(self):
470
473
        mocked_post = self.patch(MAASClient, 'post')
471
474
        mocked_post.return_value = MockResponse()
472
475
        detected_server = factory.getRandomIPAddress()
473
476
        update_region_controller(self.knowledge, "eth0", detected_server)
474
 
        mocked_post.assert_called_once_with(
475
 
            'api/1.0/nodegroups/%s/interfaces/eth0/' % self.knowledge[
476
 
                'nodegroup_uuid'],
477
 
            'report_foreign_dhcp', foreign_dhcp_ip=detected_server)
 
477
        uuid = self.knowledge['nodegroup_uuid']
 
478
        self.assertThat(mocked_post, MockCalledOnceWith(
 
479
            'api/1.0/nodegroups/%s/interfaces/eth0/' % uuid,
 
480
            'report_foreign_dhcp', foreign_dhcp_ip=detected_server))
478
481
 
479
482
    def test_update_region_controller_clears_detected_dhcp(self):
480
483
        mocked_post = self.patch(MAASClient, 'post')
481
484
        mocked_post.return_value = MockResponse()
482
485
        detected_server = None
483
486
        update_region_controller(self.knowledge, "eth0", detected_server)
484
 
        mocked_post.assert_called_once_with(
485
 
            'api/1.0/nodegroups/%s/interfaces/eth0/' % self.knowledge[
486
 
                'nodegroup_uuid'],
487
 
            'report_foreign_dhcp', foreign_dhcp_ip='')
 
487
        uuid = self.knowledge['nodegroup_uuid']
 
488
        self.assertThat(mocked_post, MockCalledOnceWith(
 
489
            'api/1.0/nodegroups/%s/interfaces/eth0/' % uuid,
 
490
            'report_foreign_dhcp', foreign_dhcp_ip=''))
488
491
 
489
492
    def test_update_region_controller_catches_HTTPError_in_MAASClient(self):
490
493
        self.patch(MAASClient, 'post').side_effect = urllib2.HTTPError(
492
495
            mock.sentinel, mock.sentinel)
493
496
        mocked_logging = self.patch(detect_module.logger, 'error')
494
497
        update_region_controller(self.knowledge, "eth0", None)
495
 
        mocked_logging.assert_called_once()
 
498
        self.assertThat(mocked_logging, MockCalledOnceWith(mock.ANY, mock.ANY))
496
499
 
497
500
    def test_update_region_controller_catches_URLError_in_MAASClient(self):
498
501
        self.patch(MAASClient, 'post').side_effect = urllib2.URLError(
499
502
            mock.sentinel.arg1)
500
503
        mocked_logging = self.patch(detect_module.logger, 'error')
501
504
        update_region_controller(self.knowledge, "eth0", None)
502
 
        mocked_logging.assert_called_once()
 
505
        self.assertThat(mocked_logging, MockCalledOnceWith(mock.ANY, mock.ANY))
503
506
 
504
507
    def test_update_region_controller_catches_non_OK_response(self):
505
508
        mock_response = MockResponse(httplib.NOT_FOUND, "error text")
506
509
        self.patch(MAASClient, 'post').return_value = mock_response
507
510
        mocked_logging = self.patch(detect_module.logger, 'error')
508
511
        update_region_controller(self.knowledge, "eth0", None)
509
 
        mocked_logging.assert_called_once_with(
510
 
            mock.ANY, mock_response.getcode(), mock_response.read())
 
512
        self.assertThat(mocked_logging, MockCalledOnceWith(
 
513
            mock.ANY, mock_response.getcode(), mock_response.read()))
511
514
 
512
515
    def test_periodic_probe_task_exits_with_not_enough_knowledge(self):
513
516
        mocked = self.patch(detect_module, 'determine_cluster_interfaces')