def test_notification_failure(submit_result, get_status, get_services): logger = FakeLogger() message = 'themessage' trap_check_name = 'thetrapcheckname' instance = 'theinstance' services = [ { 'service_description': trap_check_name, 'current_state': '0' }, { 'service_description': 'notthis' }, ] get_services.return_value = services submit_result.side_effect = RuntimeError with pytest.raises(RuntimeError): snmp_trap_handler.update_check_state( message=message, trap_check_name=trap_check_name, instance=instance, logger=logger, ) for expected in ('correct service found', 'submitting check'): assert logger.string_appears_in('debug', expected) assert not logger.string_appears_in('warn', 'in progress')
def test_only_wrong_services(submit_result, get_status, get_services): logger = FakeLogger() message = 'themessage' trap_check_name = 'thetrapcheckname' instance = 'theinstance' services = [ { 'service_description': 'notthis' }, { 'service_description': 'orthis' }, ] get_services.return_value = services result = snmp_trap_handler.update_check_state( message=message, trap_check_name=trap_check_name, instance=instance, logger=logger, ) assert result == 3 for service in services: assert logger.string_appears_in( 'debug', ('considering service', service['service_description']), ) assert logger.string_appears_in('warn', ('service', 'not found')) get_services.assert_called_once_with(instance, 'nagios status')
def test_found_already_notified(submit_result, get_status, get_services): logger = FakeLogger() message = 'themessage' trap_check_name = 'thetrapcheckname' instance = 'theinstance' services = [ { 'service_description': 'notthis' }, { 'service_description': trap_check_name, 'current_state': '2' }, ] get_services.return_value = services result = snmp_trap_handler.update_check_state( message=message, trap_check_name=trap_check_name, instance=instance, logger=logger, ) assert result == 1 assert logger.string_appears_in('debug', 'correct service found') assert logger.string_appears_in('warn', 'in progress') get_services.assert_called_once_with(instance, 'nagios status')
def test_no_services(submit_result, get_status, get_services): logger = FakeLogger() message = 'themessage' trap_check_name = 'thetrapcheckname' instance = 'theinstance' get_services.return_value = [] result = snmp_trap_handler.update_check_state( message=message, trap_check_name=trap_check_name, instance=instance, logger=logger, ) assert result == 3 assert logger.string_appears_in('warn', ('service', 'not found')) get_services.assert_called_once_with(instance, 'nagios status')
def test_not_yet_notified(submit_result, get_status, get_services): logger = FakeLogger() message = 'themessage' trap_check_name = 'thetrapcheckname' instance = 'theinstance' services = [ { 'service_description': trap_check_name, 'current_state': '0' }, { 'service_description': 'notthis' }, ] get_services.return_value = services result = snmp_trap_handler.update_check_state( message=message, trap_check_name=trap_check_name, instance=instance, logger=logger, ) assert result == 0 for expected in ('correct service found', 'submitting check', 'result submitted'): assert logger.string_appears_in('debug', expected) assert not logger.string_appears_in('warn', 'in progress') get_services.assert_called_once_with(instance, 'nagios status') submit_result.assert_called_once_with( host=instance, service=trap_check_name, status='2', output=message, )