예제 #1
0
 def test_build_report_for_health_document(self):
     health_document = self._get_report_ready_health_document()
     reporter = azure_helper.GoalStateHealthReporter(
         azure_helper.GoalState(mock.MagicMock(), mock.MagicMock()),
         azure_helper.AzureEndpointHttpClient(mock.MagicMock()),
         self.test_endpoint)
     generated_health_document = reporter.build_report(
         incarnation=self.default_parameters['incarnation'],
         container_id=self.default_parameters['container_id'],
         instance_id=self.default_parameters['instance_id'],
         status=self.provisioning_success_status)
     self.assertEqual(health_document, generated_health_document)
     self.assertIn(
         '<GoalStateIncarnation>{}</GoalStateIncarnation>'.format(
             str(self.default_parameters['incarnation'])),
         generated_health_document)
     self.assertIn(
         ''.join([
             '<ContainerId>', self.default_parameters['container_id'],
             '</ContainerId>'
         ]), generated_health_document)
     self.assertIn(
         ''.join([
             '<InstanceId>', self.default_parameters['instance_id'],
             '</InstanceId>'
         ]), generated_health_document)
     self.assertIn(
         ''.join(['<State>', self.provisioning_success_status, '</State>']),
         generated_health_document)
     self.assertNotIn('<Details>', generated_health_document)
     self.assertNotIn('<SubStatus>', generated_health_document)
     self.assertNotIn('<Description>', generated_health_document)
 def _get_goal_state(self, http_client=None, **kwargs):
     if http_client is None:
         http_client = mock.MagicMock()
     parameters = self.default_parameters.copy()
     parameters.update(kwargs)
     xml = GOAL_STATE_TEMPLATE.format(**parameters)
     if parameters['certificates_url'] is None:
         new_xml_lines = []
         for line in xml.splitlines():
             if 'Certificates' in line:
                 continue
             new_xml_lines.append(line)
         xml = '\n'.join(new_xml_lines)
     return azure_helper.GoalState(xml, http_client)
예제 #3
0
    def test_send_ready_signal_sends_post_request(self):
        with mock.patch.object(azure_helper.GoalStateHealthReporter,
                               'build_report') as m_build_report:
            client = azure_helper.AzureEndpointHttpClient(mock.MagicMock())
            reporter = azure_helper.GoalStateHealthReporter(
                azure_helper.GoalState(mock.MagicMock(), mock.MagicMock()),
                client, self.test_endpoint)
            reporter.send_ready_signal()

            self.assertEqual(1, self.post.call_count)
            self.assertEqual(
                mock.call(self.test_url,
                          data=m_build_report.return_value,
                          extra_headers=self.test_default_headers),
                self.post.call_args)
예제 #4
0
    def test_send_ready_signal_calls_build_report(self):
        with mock.patch.object(azure_helper.GoalStateHealthReporter,
                               'build_report') as m_build_report:
            reporter = azure_helper.GoalStateHealthReporter(
                azure_helper.GoalState(mock.MagicMock(), mock.MagicMock()),
                azure_helper.AzureEndpointHttpClient(mock.MagicMock()),
                self.test_endpoint)
            reporter.send_ready_signal()

            self.assertEqual(1, m_build_report.call_count)
            self.assertEqual(
                mock.call(incarnation=self.default_parameters['incarnation'],
                          container_id=self.default_parameters['container_id'],
                          instance_id=self.default_parameters['instance_id'],
                          status=self.provisioning_success_status),
                m_build_report.call_args)
예제 #5
0
 def test_missing_incarnation_in_goal_state_xml_raises_exc(self):
     xml = self._get_formatted_goal_state_xml_string()
     xml = re.sub('<Incarnation>.*</Incarnation>', '', xml)
     with self.assertRaises(azure_helper.InvalidGoalStateXMLException):
         azure_helper.GoalState(xml, mock.MagicMock())
예제 #6
0
 def test_invalid_goal_state_xml_raises_parse_error(self):
     xml = 'random non-xml data'
     with self.assertRaises(ElementTree.ParseError):
         azure_helper.GoalState(xml, mock.MagicMock())
예제 #7
0
 def _get_goal_state(self, m_azure_endpoint_client=None, **kwargs):
     if m_azure_endpoint_client is None:
         m_azure_endpoint_client = mock.MagicMock()
     xml = self._get_formatted_goal_state_xml_string(**kwargs)
     return azure_helper.GoalState(xml, m_azure_endpoint_client)