def test_oid_for_message_and_instance(): logger = FakeLogger() config_name = 'instance_and_message_oid' lookups = { 'instanceoid': 'lookedupinstance', 'messageoid': 'lookedupmessage', } oid_lookup = FakeOidLookup(lookups=lookups) result = snmp_trap_handler.determine_action( oid=config_name, oid_lookup=oid_lookup, logger=logger, ) expected_path = CONF_PATH.format(oid=config_name) assert logger.string_appears_in('debug', expected_path) assert logger.string_appears_in('debug', 'loading instance') assert logger.string_appears_in('debug', 'loading oid_for_message') assert result['instance'] == { 'oid': lookups['instanceoid'], 'finder': re.compile(u'testfinder'), } assert result['oid_for_message'] == lookups['messageoid']
def test_reaction_not_defined(nagios_utils, exit, snmp_utils, logging_utils): target_type = 'missing' trap_name = 'just_oid_for_message' lookups = deepcopy(BASE_LOOKUPS) lookups[BASIC_NOTIFICATION_TRAP_VALUE] = trap_name logger = FakeLogger() oid_lookup = FakeOidLookup(lookups=lookups) stdin = FakeStdin(deepcopy(BASIC_NOTIFICATION)) logging_utils.Logger.return_value = logger snmp_utils.OIDLookup.return_value = oid_lookup snmp_trap_handler.sys.stdin = stdin nagios_utils.get_target_type_for_instance.return_value = target_type snmp_trap_handler.main() logging_utils.Logger.assert_called_once_with( 'cloudify_nagios_snmp_trap_handler') assert logger.string_appears_in('info', ( 'trap', trap_name, 'from', NOTIFICATION_SOURCE, )) assert logger.string_appears_in('debug', 'looking up target type') assert logger.string_appears_in('debug', ('target type', target_type)) assert logger.string_appears_in('info', 'no reaction')
def test_just_oid_for_message(): logger = FakeLogger() config_name = 'just_oid_for_message' oid_lookup = FakeOidLookup(default='looked_up_message_oid') result = snmp_trap_handler.determine_action( oid=config_name, oid_lookup=oid_lookup, logger=logger, ) expected_path = CONF_PATH.format(oid=config_name) assert logger.string_appears_in('debug', expected_path) assert not logger.string_appears_in('debug', 'loading instance') assert logger.string_appears_in('debug', 'loading oid_for_message') assert result['oid_for_message'] == 'looked_up_message_oid'
def test_verbose_reaction(nagios_utils, exit, snmp_utils, logging_utils, get_check_name): target_type = 'test_main_instance' trap_name = 'test_main_instance' check_name = 'thecheck' lookups = deepcopy(BASE_LOOKUPS) lookups[VERBOSE_NOTIFICATION_TRAP_VALUE] = trap_name logger = FakeLogger() oid_lookup = FakeOidLookup(lookups=lookups) stdin = FakeStdin(deepcopy(VERBOSE_NOTIFICATION)) logging_utils.Logger.return_value = logger snmp_utils.OIDLookup.return_value = oid_lookup snmp_trap_handler.sys.stdin = stdin nagios_utils.get_target_type_for_instance.return_value = target_type get_check_name.return_value = check_name nagios_utils.get_services_for_host.return_value = [{ "service_description": check_name, "current_state": "0", }] snmp_trap_handler.main() logging_utils.Logger.assert_called_once_with( 'cloudify_nagios_snmp_trap_handler') assert logger.string_appears_in('info', ( 'trap', trap_name, 'from', NOTIFICATION_SOURCE, )) assert logger.string_appears_in('debug', 'looking up target type') assert logger.string_appears_in('debug', ('target type', target_type)) assert logger.string_appears_in('info', ('reaction defined', 'updating', 'check')) exit.assert_called_once_with(0)
def test_trap_in_details(): logger = FakeLogger() lookups = { 'system.sysUpTime.0': 'uptime', 'enterprises.52312.900.0.0.1': 'cloudifything', snmp_trap_handler.SNMP_TRAP_OID: 'snmptrap', 'snmp.1.1.4.1.0': 'snmptrap', } oid_lookup = FakeOidLookup(lookups=lookups) raw_details = [ { 'raw_oid': 'system.sysUpTime.0', 'value': '1234' }, { 'raw_oid': 'snmp.1.1.4.1.0', 'value': 'enterprises.52312.900.0.0.1' }, ] result = snmp_trap_handler.normalise_oids_and_get_trap_value( raw_details=raw_details, oid_lookup=oid_lookup, logger=logger, ) assert result == ( 'cloudifything', { lookups['system.sysUpTime.0']: '1234', lookups['snmp.1.1.4.1.0']: 'enterprises.52312.900.0.0.1', }, ) assert logger.string_appears_in('debug', ('trap identity', 'cloudifything')) assert logger.string_appears_in('debug', ('uptime', '1234'))
def test_no_trap(): logger = FakeLogger() lookups = { 'system.sysUpTime.0': 'uptime', } oid_lookup = FakeOidLookup(lookups=lookups) raw_details = [ { 'raw_oid': 'system.sysUpTime.0', 'value': '1234' }, ] result = snmp_trap_handler.normalise_oids_and_get_trap_value( raw_details=raw_details, oid_lookup=oid_lookup, logger=logger, ) assert result == (None, {lookups['system.sysUpTime.0']: '1234'}) assert not logger.string_appears_in('debug', 'trap identity') assert logger.string_appears_in('debug', ('uptime', '1234'))