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))
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))
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()
470
MockCalledOnceWith(mock.ANY, mock.ANY, mock.ANY))
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[
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))
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[
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=''))
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))
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))
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()))
512
515
def test_periodic_probe_task_exits_with_not_enough_knowledge(self):
513
516
mocked = self.patch(detect_module, 'determine_cluster_interfaces')