def test_missing_slave_file(self, os_path_file_mock):
     """
 Check if the status is SKIPPED when slaves file is missing.
 """
     configs = {"{{hawq-site/hawq_master_address_port}}": "5432"}
     [status, messages
      ] = alert_segment_registration_status.execute(configurations=configs)
     self.assertEqual(status, RESULT_STATE_SKIPPED)
     self.assertTrue(messages is not None and len(messages) == 1)
     self.assertEqual(messages[0],
                      'Slaves file is not present in /usr/local/hawq/etc')
 def test_missing_configs(self):
     """
 Check if the status is UNKNOWN when configs are missing.
 """
     configs = None
     [status, messages
      ] = alert_segment_registration_status.execute(configurations=configs)
     self.assertEqual(status, RESULT_STATE_UNKNOWN)
     self.assertTrue(messages is not None and len(messages) == 1)
     self.assertEqual(
         messages[0],
         'There were no configurations supplied to the script.')
    def test_successful_registration_status(self, os_path_isfile_mock,
                                            get_segment_list_ambari_mock,
                                            get_segment_list_db_mock):
        """
    Check if the status is OK if no difference in registration segment number and slaves count.
    """
        get_segment_list_ambari_mock.return_value = self.HOST_LIST_A
        get_segment_list_db_mock.return_value = self.HOST_LIST_A
        configs = {"{{hawq-site/hawq_master_address_port}}": "5432"}

        [status, messages
         ] = alert_segment_registration_status.execute(configurations=configs)
        self.assertEqual(status, RESULT_STATE_OK)
        self.assertTrue(messages is not None and len(messages) == 1)
        self.assertEqual(messages[0], 'All HAWQ Segments are registered.')
    def test_unsuccessful_empty_db_registration_status(
            self, os_path_isfile_mock, get_segment_list_ambari_mock,
            get_segment_list_db_mock):
        """
    Check if the status is WARNING if a difference is present in registration segment number and slaves count.
    """
        get_segment_list_ambari_mock.return_value = []
        get_segment_list_db_mock.return_value = self.HOST_LIST_C
        configs = {"{{hawq-site/hawq_master_address_port}}": "5432"}

        [status, messages
         ] = alert_segment_registration_status.execute(configurations=configs)
        self.assertEqual(status, RESULT_STATE_WARNING)
        self.assertTrue(messages is not None and len(messages) == 1)
        self.assertEqual(
            messages[0],
            '3 HAWQ Segments are not registered with HAWQ Master. Try restarting HAWQ service if a segment has been added/removed. Check the log file in /var/log/ambari-agent/ambari-alerts.log for more details on unregistered hosts.'
        )
    def test_exception_registration_status(self, os_path_isfile_mock,
                                           get_segment_list_ambari_mock,
                                           get_segment_list_db_mock):
        """
    Check if the status is UNKNOWN if an exception is thrown when finding registration segment number and slaves count.
    """
        get_segment_list_ambari_mock.return_value = self.HOST_LIST_A
        get_segment_list_db_mock.side_effect = Exception(
            "Exception raised to fail")
        configs = {"{{hawq-site/hawq_master_address_port}}": "5432"}

        [status, messages
         ] = alert_segment_registration_status.execute(configurations=configs)
        self.assertEqual(status, RESULT_STATE_UNKNOWN)
        self.assertTrue(messages is not None and len(messages) == 1)
        self.assertEqual(
            messages[0],
            'HAWQ Segments Registration Status cannot be determined.')