示例#1
0
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
示例#4
0
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'
示例#5
0
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
示例#7
0
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)'
示例#8
0
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
示例#10
0
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
示例#11
0
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
示例#13
0
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