def test_ended_preemtively(): lines = """\ QMNAME(THE.ENDED.ONE) STATUS(ENDED PREEMPTIVELY) DEFAULT(NO) STANDBY(NOT APPLICABLE) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(7.5.0.2) """ section = parse_info(lines, chr(10)) check = Check(CHECK_NAME) parsed = check.run_parse(section) params: Dict[str, Any] = {} actual = list(check.run_check('THE.ENDED.ONE', params, parsed)) expected = [ (1, u'Status: ENDED PREEMPTIVELY'), (0, u'Version: 7.5.0.2'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), ] assert expected == actual lines = """\ QMNAME(THE.ENDED.ONE) STATUS(ENDED PRE-EMPTIVELY) DEFAULT(NO) STANDBY(NOT APPLICABLE) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(8.0.0.1) """ section = parse_info(lines, chr(10)) parsed = check.run_parse(section) actual = list(check.run_check('THE.ENDED.ONE', params, parsed)) expected = [ (1, u'Status: ENDED PRE-EMPTIVELY'), (0, u'Version: 8.0.0.1'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), ] assert expected == actual
def test_ended_preemtively(check_manager): lines = """\ QMNAME(MTAVBS0P) STATUS(ENDED PREEMPTIVELY) DEFAULT(NO) STANDBY(NOT APPLICABLE) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(7.5.0.2) """ section = parse_info(lines, chr(10)) check = check_manager.get_check(CHECK_NAME) parsed = check.run_parse(section) params = factory_settings['ibm_mq_managers_default_levels'] actual = list(check.run_check('MTAVBS0P', params, parsed)) expected = [ (2, u'Status: ENDED PREEMPTIVELY'), (0, u'Version: 7.5.0.2'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), ] assert expected == actual lines = """\ QMNAME(MTAVBS0P) STATUS(ENDED PRE-EMPTIVELY) DEFAULT(NO) STANDBY(NOT APPLICABLE) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(8.0.0.1) """ section = parse_info(lines, chr(10)) check = check_manager.get_check(CHECK_NAME) parsed = check.run_parse(section) params = factory_settings['ibm_mq_managers_default_levels'] actual = list(check.run_check('MTAVBS0P', params, parsed)) expected = [ (2, u'Status: ENDED PRE-EMPTIVELY'), (0, u'Version: 8.0.0.1'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), ] assert expected == actual
def test_parse(check_manager): lines = """\ QMNAME(THE.LOCAL.ONE) STATUS(RUNNING) DEFAULT(NO) STANDBY(NOT PERMITTED) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(8.0.0.6) HA() DRROLE() INSTANCE(sb112233) MODE(ACTIVE) QMNAME(THE.MULTI.INSTANCE.ONE) STATUS(RUNNING) DEFAULT(NO) STANDBY(PERMITTED) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(8.0.0.6) HA() DRROLE() INSTANCE(sb112233) MODE(ACTIVE) INSTANCE(sb112255) MODE(STANDBY) QMNAME(THE.RDQM.ONE) STATUS(RUNNING) DEFAULT(NO) STANDBY(NOT PERMITTED) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(9.1.0.4) HA(REPLICATED) DRROLE() INSTANCE(sb008877) MODE(ACTIVE) QMNAME(THE.SLEEPING.ONE) STATUS(ENDED NORMALLY) DEFAULT(NO) STANDBY(NOT APPLICABLE) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(7.5.0.1) HA() DRROLE() QMNAME(THE.CRASHED.ONE) STATUS(ENDED UNEXPECTEDLY) DEFAULT(NO) STANDBY(NOT APPLICABLE) INSTNAME(Installation2) INSTPATH(/opt/mqm9) INSTVER(9.0.0.6) HA() DRROLE() """ section = parse_info(lines, chr(10)) check = check_manager.get_check(CHECK_NAME) parsed = check.run_parse(section) assert len(parsed) == 5 attrs = parsed["THE.LOCAL.ONE"] assert attrs['STATUS'] == 'RUNNING' assert [(u'sb112233', u'ACTIVE')] == attrs['INSTANCES'] attrs = parsed["THE.MULTI.INSTANCE.ONE"] assert [(u'sb112233', u'ACTIVE'), (u'sb112255', u'STANDBY')] \ == attrs['INSTANCES'] attrs = parsed["THE.CRASHED.ONE"] assert attrs['QMNAME'] == 'THE.CRASHED.ONE' assert attrs['STATUS'] == 'ENDED UNEXPECTEDLY' assert attrs['STANDBY'] == 'NOT APPLICABLE' assert 'INSTANCES' not in attrs
def test_parse_svrconn_with_multiple_instances(check_manager): lines = """\ QMNAME(MY.TEST) STATUS(RUNNING) 5724-H72 (C) Copyright IBM Corp. 1994, 2015. Starting MQSC for queue manager MY.TEST. AMQ8417: Display Channel Status details. CHANNEL(XXXXXX.IIB.SVRCONN) CHLTYPE(SVRCONN) CONNAME(10.25.19.182) CURRENT STATUS(RUNNING) SUBSTATE(RECEIVE) AMQ8417: Display Channel Status details. CHANNEL(XXXXXX.IIB.SVRCONN) CHLTYPE(SVRCONN) CONNAME(10.25.19.183) CURRENT STATUS(RUNNING) SUBSTATE(RECEIVE) One MQSC commands read. No commands have a syntax error. All valid MQSC commands were processed. """ section = parse_info(lines, chr(10)) check = check_manager.get_check(CHECK_NAME) parsed = check.run_parse(section) attrs = parsed['MY.TEST:XXXXXX.IIB.SVRCONN'] assert attrs['CHLTYPE'] == 'SVRCONN' assert attrs['STATUS'] == 'RUNNING' # Last entry of the instances defines the values assert attrs['CONNAME'] == '10.25.19.183'
def test_parse(): lines = """\ QMNAME(MY.TEST) STATUS(RUNNING) NOW(2020-04-03T17:27:02+0200) 5724-H72 (C) Copyright IBM Corp. 1994, 2015. Starting MQSC for queue manager MY.TEST. AMQ8414: Display Channel details. CHANNEL(HERE.TO.THERE.ONE) CHLTYPE(SDR) XMITQ(HERE.TO.THERE.ONE.XMIT) AMQ8414: Display Channel details. CHANNEL(HERE.TO.THERE.TWO) CHLTYPE(SDR) XMITQ(HERE.TO.THERE.TWO.XMIT) AMQ8414: Display Channel details. CHANNEL(SYSTEM.DEF.SENDER) CHLTYPE(SDR) XMITQ( ) AMQ8417: Display Channel Status details. CHANNEL(HERE.TO.THERE.TWO) CHLTYPE(SDR) COMPRATE(0,0) COMPTIME(0,0) CONNAME(55.888.222.333(1414),22,333.444.555(1414)) EXITTIME(0,0) MONCHL(OFF) CURRENT RQMNAME( ) STATUS(RETRYING) SUBSTATE( ) XBATCHSZ(0,0) XMITQ(HERE.TO.THERE.TWO.XMIT) XQTIME(0,1) AMQ8417: Display Channel Status details. CHANNEL(HERE.TO.THERE.ONE) CHLTYPE(SDR) COMPRATE(0,0) COMPTIME(0,0) CONNAME(62.240.197.243(1414),62.240.197.244(1414)) EXITTIME(0,0) MONCHL(OFF) CURRENT RQMNAME( ) STATUS(RETRYING) SUBSTATE(MQGET) XBATCHSZ(0,0) XMITQ(HERE.TO.THERE.TWO.XMIT) XQTIME(0,1) 5 MQSC commands read. No commands have a syntax error. All valid MQSC commands were processed. """ section = parse_info(lines, chr(10)) check = Check(CHECK_NAME) parsed = check.run_parse(section) assert 2 + 1 == len(parsed) attrs = parsed['MY.TEST'] assert attrs['STATUS'] == 'RUNNING' assert attrs['NOW'] is not None attrs = parsed['MY.TEST:HERE.TO.THERE.TWO'] assert attrs['CHLTYPE'] == 'SDR' assert attrs['STATUS'] == 'RETRYING' assert attrs['CONNAME'] == '55.888.222.333(1414),22,333.444.555(1414)' assert attrs['MONCHL'] == 'OFF' attrs = parsed['MY.TEST:HERE.TO.THERE.TWO'] assert attrs['CHLTYPE'] == 'SDR' assert attrs['STATUS'] == 'RETRYING' assert attrs['CONNAME'] == '55.888.222.333(1414),22,333.444.555(1414)' assert attrs['MONCHL'] == 'OFF'
def test_parse(check_manager): lines = """\ version: 2.0.4 dspmq: OK runmqsc: Not executable """ section = parse_info(lines, chr(58)) check = check_manager.get_check(CHECK_NAME) actual = check.run_parse(section) expected = { 'version': '2.0.4', 'dspmq': 'OK', 'runmqsc': 'Not executable', } assert actual == expected
def test_parse(check_manager): lines = """\ QMNAME(MY.TEST) STATUS(RUNNING) 5724-H72 (C) Copyright IBM Corp. 1994, 2015. Starting MQSC for queue manager MY.TEST. AMQ8414: Display Channel details. CHANNEL(HERE.TO.THERE.ONE) CHLTYPE(SDR) XMITQ(HERE.TO.THERE.ONE.XMIT) AMQ8414: Display Channel details. CHANNEL(HERE.TO.THERE.TWO) CHLTYPE(SDR) XMITQ(HERE.TO.THERE.TWO.XMIT) AMQ8414: Display Channel details. CHANNEL(SYSTEM.DEF.SENDER) CHLTYPE(SDR) XMITQ( ) AMQ8417: Display Channel Status details. CHANNEL(HERE.TO.THERE.TWO) CHLTYPE(SDR) CONNAME(55.888.222.333(1414),22,333.444.555(1414)) CURRENT RQMNAME( ) STATUS(RETRYING) SUBSTATE( ) XMITQ(HERE.TO.THERE.TWO.XMIT) AMQ8417: Display Channel Status details. CHANNEL(HERE.TO.THERE.ONE) CHLTYPE(SDR) CONNAME(62.240.197.243(1414),62.240.197.244(1414)) CURRENT RQMNAME( ) STATUS(RETRYING) SUBSTATE( ) XMITQ(HERE.TO.THERE.ONE.XMIT) 5 MQSC commands read. No commands have a syntax error. All valid MQSC commands were processed. """ section = parse_info(lines, chr(10)) check = check_manager.get_check(CHECK_NAME) parsed = check.run_parse(section) assert 2 + 1 == len(parsed) attrs = parsed['MY.TEST'] assert attrs['STATUS'] == 'RUNNING' attrs = parsed['MY.TEST:HERE.TO.THERE.TWO'] assert attrs['CHLTYPE'] == 'SDR' assert attrs['STATUS'] == 'RETRYING' assert attrs['CONNAME'] == '55.888.222.333(1414),22,333.444.555(1414)' attrs = parsed['MY.TEST:HERE.TO.THERE.TWO'] assert attrs['CHLTYPE'] == 'SDR' assert attrs['STATUS'] == 'RETRYING' assert attrs['CONNAME'] == '55.888.222.333(1414),22,333.444.555(1414)'
def test_parse(): lines = """\ QMNAME(MY.TEST) STATUS(RUNNING) NOW(2020-04-03T17:27:02+0200) 5724-H72 (C) Copyright IBM Corp. 1994, 2015. Starting MQSC for queue manager MY.TEST. AMQ8409: Display Queue details. QUEUE(MY.QUEUE.ONE) TYPE(QLOCAL) MAXDEPTH(5000) AMQ8409: Display Queue details. QUEUE(MY.QUEUE.TWO) TYPE(QLOCAL) MAXDEPTH(200000) AMQ8450: Display queue status details. QUEUE(MY.QUEUE.ONE) TYPE(QUEUE) CURDEPTH(0) LGETDATE( ) LGETTIME( ) LPUTDATE( ) LPUTTIME( ) MONQ(MEDIUM) MSGAGE(0) QTIME( , ) AMQ8450: Display queue status details. QUEUE(MY.QUEUE.TWO) TYPE(QUEUE) CURDEPTH(1400) LGETDATE(2017-03-09) LGETTIME(08.49.13) LPUTDATE( ) LPUTTIME( ) OPPROCS(0) IPPROCS(5) MONQ(MEDIUM) MSGAGE(2201) QTIME(999999999, 999999999) 2 MQSC commands read. No commands have a syntax error. All valid MQSC commands were processed. """ section = parse_info(lines, chr(10)) check = Check(CHECK_NAME) parsed = check.run_parse(section) assert 2 + 1 == len(parsed) attrs = parsed['MY.TEST'] assert attrs['STATUS'] == 'RUNNING' assert attrs['NOW'] is not None attrs = parsed['MY.TEST:MY.QUEUE.TWO'] assert attrs['CURDEPTH'] == '1400' assert attrs['LGETDATE'] == '2017-03-09' assert attrs['LGETTIME'] == '08.49.13' assert attrs['CURDEPTH'] == '1400' assert attrs['MAXDEPTH'] == '200000' assert attrs['MSGAGE'] == '2201'
def test_version_mismatch(check_manager): lines = """\ QMNAME(MTAVBS0P) STATUS(RUNNING) DEFAULT(NO) STANDBY(NOT APPLICABLE) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(7.5.0.2) """ section = parse_info(lines, chr(10)) check = check_manager.get_check(CHECK_NAME) parsed = check.run_parse(section) params = factory_settings['ibm_mq_managers_default_levels'] params.update({'version': ('at_least', '8.0')}) actual = list(check.run_check('MTAVBS0P', params, parsed)) expected = [ (0, u'Status: RUNNING'), (2, u'Version: 7.5.0.2 (should be at least 8.0)'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), ] assert expected == actual
def test_version_mismatch(): lines = """\ QMNAME(THE.RUNNING.ONE) STATUS(RUNNING) DEFAULT(NO) STANDBY(NOT APPLICABLE) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(7.5.0.2) """ section = parse_info(lines, chr(10)) check = Check(CHECK_NAME) parsed = check.run_parse(section) params: Dict[str, Any] = {} params.update({'version': (('at_least', '8.0'), 2)}) actual = list(check.run_check('THE.RUNNING.ONE', params, parsed)) expected = [ (0, u'Status: RUNNING'), (2, u'Version: 7.5.0.2 (should be at least 8.0)'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), ] assert expected == actual
def test_status_wato_override(): lines = """\ QMNAME(THE.ENDED.ONE) STATUS(ENDED PRE-EMPTIVELY) DEFAULT(NO) STANDBY(NOT APPLICABLE) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(7.5.0.2) """ section = parse_info(lines, chr(10)) check = Check(CHECK_NAME) parsed = check.run_parse(section) # Factory defaults params: Dict[str, Any] = {} actual = list(check.run_check('THE.ENDED.ONE', params, parsed)) expected = [ (1, u'Status: ENDED PRE-EMPTIVELY'), (0, u'Version: 7.5.0.2'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), ] assert expected == actual # Override factory defaults params = {'mapped_states': [('ended_pre_emptively', 2)]} actual = list(check.run_check('THE.ENDED.ONE', params, parsed)) expected = [ (2, u'Status: ENDED PRE-EMPTIVELY'), (0, u'Version: 7.5.0.2'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), ] assert expected == actual # Override-does-not-match configuration params = { 'mapped_states': [('running_as_standby', 2)], 'mapped_states_default': 3, } actual = list(check.run_check('THE.ENDED.ONE', params, parsed)) expected = [ (3, u'Status: ENDED PRE-EMPTIVELY'), (0, u'Version: 7.5.0.2'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), ] assert expected == actual
def test_check_single_instance_running(check_manager): lines = """\ QMNAME(THE.LOCAL.ONE) STATUS(RUNNING) DEFAULT(NO) STANDBY(NOT PERMITTED) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(8.0.0.6) INSTANCE(sb112233) MODE(ACTIVE) """ section = parse_info(lines, chr(10)) check = check_manager.get_check(CHECK_NAME) parsed = check.run_parse(section) attrs = parsed["THE.LOCAL.ONE"] assert attrs['QMNAME'] == 'THE.LOCAL.ONE' assert attrs['STATUS'] == 'RUNNING' params = factory_settings['ibm_mq_managers_default_levels'] actual = list(check.run_check('THE.LOCAL.ONE', params, parsed)) expected = [ (0, u'Status: RUNNING'), (0, u'Version: 8.0.0.6'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), (0, u'Single-Instance: sb112233=ACTIVE'), ] assert expected == actual
def test_rdqm(): lines = """\ QMNAME(THE.RDQM.ONE) STATUS(RUNNING) DEFAULT(NO) STANDBY(NOT PERMITTED) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(9.1.0.4) HA(REPLICATED) DRROLE() INSTANCE(sb008877) MODE(ACTIVE) QMNAME(THE.STANDBY.RDQM) STATUS(RUNNING ELSEWHERE) DEFAULT(NO) STANDBY(NOT APPLICABLE) INSTNAME(Installation1) INSTPATH(/opt/mqm) INSTVER(9.2.0.0) HA(REPLICATED) DRROLE() """ section = parse_info(lines, chr(10)) check = Check(CHECK_NAME) parsed = check.run_parse(section) attrs = parsed["THE.RDQM.ONE"] assert attrs['QMNAME'] == 'THE.RDQM.ONE' assert attrs['STATUS'] == 'RUNNING' params: Dict[str, Any] = {} actual = list(check.run_check('THE.RDQM.ONE', params, parsed)) expected = [ (0, u'Status: RUNNING'), (0, u'Version: 9.1.0.4'), (0, u'Installation: /opt/mqm (Installation1), Default: NO'), (0, u'Single-Instance: sb008877=ACTIVE'), ] assert expected == actual