monasca-agent/tests/checks_d/test_host_alive.py

82 lines
3.1 KiB
Python

# (C) Copyright 2016 Hewlett Packard Enterprise Development LP
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from unittest import mock
import unittest
import monasca_agent.common.util as util
from monasca_agent.collector.checks_d.host_alive import HostAlive
HOST_ALIVE_STATUS = 'host_alive_status'
SUCCESS = 0
FAILURE = 1
class TestHostAlive(unittest.TestCase):
def setUp(self):
unittest.TestCase.setUp(self)
init_config = {}
agent_config = {}
self._host_alive = HostAlive('TestHostAlive', init_config, agent_config)
self._gauge = mock.Mock()
self._host_alive.gauge = self._gauge
self._host_name = 'monasca'
self._instance = {'host_name': self._host_name,
'alive_test': 'ping'}
self._base_dimensions = {
'test_type': 'ping',
'hostname': self._host_name,
'observer_host': util.get_hostname()
}
def _run_check(self, host_name, instance, ping_result):
mock_ping = mock.Mock(return_value=ping_result)
self._host_alive._test_ping = mock_ping
self._host_alive._check(instance)
mock_ping.assert_called_with(host_name, None)
def test_host_is_alive(self):
ping_result = (True, None)
self._run_check(self._host_name, self._instance, ping_result)
self._gauge.assert_called_with(HOST_ALIVE_STATUS,
SUCCESS,
dimensions=self._base_dimensions)
def test_host_is_dead(self):
error_message = '''I'm not dead yet'''
self._run_check(self._host_name, self._instance,
(False, error_message))
self._gauge.assert_called_with('host_alive_status',
FAILURE,
dimensions=self._base_dimensions,
value_meta={'error': error_message})
def test_host_is_alive_with_target_hostname(self):
check_name = 'otherMonasca'
self._instance['target_hostname'] = check_name
self._run_check(check_name, self._instance, (True, None))
self._base_dimensions['target_hostname'] = check_name
self._gauge.assert_called_with(HOST_ALIVE_STATUS,
SUCCESS,
dimensions=self._base_dimensions)
def test_host_is_alive_with_dup_target_hostname(self):
host_name = 'monasca'
self._instance['target_hostname'] = host_name
self._run_check(host_name, self._instance, (True, None))
self._gauge.assert_called_with(HOST_ALIVE_STATUS,
SUCCESS,
dimensions=self._base_dimensions)