Пример #1
0
def _test_check_winperf_phydisk(item, section_1, section_2, check_func):

    # fist call: initialize value store
    with pytest.raises(IgnoreResultsError):
        list(check_func(
            item,
            type_defs.Parameters({}),
            section_1,
        ))

    # second call: get values
    check_results = list(
        check_func(
            item,
            type_defs.Parameters({}),
            section_2,
        ))

    exp_metrics = set(
        'disk_' + k for k in DISK
        if not k.endswith('_base') and k not in ('timestamp', 'frequency'))
    for res in check_results:
        if isinstance(res, Metric):
            exp_metrics.remove(res.name)
            assert res.value > 0
    assert not exp_metrics
Пример #2
0
def test_cluster_check_diskstat_summary(value_store):
    with pytest.raises(IgnoreResultsError):
        list(
            diskstat.cluster_check_diskstat(
                'SUMMARY',
                type_defs.Parameters({}),
                {
                    'node1': {
                        'disk1': DISK_HALF,
                    },
                    'node2': {
                        'disk2': DISK_HALF,
                    },
                },
                {
                    'node1': None,
                    'node2': None,
                },
            ))
    results_cluster = list(
        diskstat.cluster_check_diskstat(
            'SUMMARY',
            type_defs.Parameters({}),
            {
                'node1': {
                    'disk1': DISK,
                },
                'node2': {
                    'disk2': DISK,
                },
            },
            {
                'node1': None,
                'node2': None,
            },
        ))
    with pytest.raises(IgnoreResultsError):
        list(
            diskstat.check_diskstat(
                'SUMMARY',
                type_defs.Parameters({}),
                {
                    'disk1': DISK_HALF,
                    'disk2': DISK_HALF,
                },
                None,
            ))
    results_non_cluster = list(
        diskstat.check_diskstat(
            'SUMMARY',
            type_defs.Parameters({}),
            {
                'disk1': DISK,
                'disk2': DISK,
            },
            None,
        ))
    assert results_cluster == results_non_cluster
Пример #3
0
def test_cluster_check_diskstat_single_item(value_store):
    with pytest.raises(IgnoreResultsError):
        list(
            diskstat.cluster_check_diskstat(
                'disk1',
                type_defs.Parameters({}),
                {
                    'node1': {
                        'disk1': DISK_HALF,
                    },
                },
                {
                    'node1': None,
                },
            ))
    results_cluster = list(
        diskstat.cluster_check_diskstat(
            'disk1',
            type_defs.Parameters({}),
            {
                'node_overwritten': {
                    'disk1': DISK_HALF,
                },
                'node1': {
                    'disk1': DISK,
                },
            },
            {
                'node_overwritten': None,
                'node1': None,
            },
        ))
    with pytest.raises(IgnoreResultsError):
        list(
            diskstat.check_diskstat(
                'disk1',
                type_defs.Parameters({}),
                {
                    'disk1': DISK_HALF,
                },
                None,
            ))
    results_non_cluster = list(
        diskstat.check_diskstat(
            'disk1',
            type_defs.Parameters({}),
            {
                'disk1': DISK,
            },
            None,
        ))
    assert results_cluster == results_non_cluster
Пример #4
0
def test_discovery_grouped_hierarchy():
    assert list(
        interfaces.discover_interfaces(
            [
                type_defs.Parameters({
                    'matching_conditions': (
                        False,
                        {
                            'portstates': ['1', '2'],
                        },
                    ),
                    "grouping": (
                        True,
                        [{
                            'group_name': 'group',
                            'member_appearance': 'alias',
                        }],
                    ),
                }),
                type_defs.Parameters({
                    'matching_conditions': (True, {}),
                    "grouping": (
                        True,
                        [{
                            'group_name': 'group',
                            'member_appearance': 'index',
                        }],
                    ),
                }),
                DEFAULT_DISCOVERY_PARAMS,
            ],
            _create_interfaces(0),
        )) == SINGLE_SERVICES + [
            Service(
                item='group',
                parameters={
                    'aggregate': {
                        'member_appearance': 'alias',
                        'inclusion_condition': {
                            'portstates': ['1', '2']
                        },
                        'exclusion_conditions': [],
                    },
                    'discovered_state': ['1'],
                    'discovered_speed': 20000000,
                },
                labels=[],
            ),
        ]
Пример #5
0
def test_cluster_check_bluecat_none_ok():
    assert list(
        bluecat_dns.cluster_check_bluecat_dns(
            type_defs.Parameters({
                "oper_states": {
                    "warning": [1],
                    "critical": [2, 3],
                },
            },),
            {
                'node1': {
                    'oper_state': 1,
                },
                'node2': {
                    'oper_state': 3,
                },
            },
        )) == [
            Result(
                state=state.WARN,
                details='[node1]: DNS is running normally(!)',
            ),
            Result(
                state=state.CRIT,
                details='[node2]: DNS is currently starting(!!)',
            ),
            Result(
                state=state.CRIT,
                summary='No node with OK DNS state',
            ),
        ]
Пример #6
0
def test_cluster_check_pulse_secure_users():
    assert list(
        pulse_secure_users.cluster_check_pulse_secure_users(
            type_defs.Parameters({}),
            {
                'node1': {
                    'n_users': 20
                },
                'node2': {
                    'n_users': 30
                }
            },
        )) == [
            Result(
                state=state.OK,
                details='[node1]: Pulse Secure users: 20',
            ),
            Result(
                state=state.OK,
                details='[node2]: Pulse Secure users: 30',
            ),
            Result(
                state=state.OK,
                summary='Pulse Secure users across cluster: 50',
                details='Pulse Secure users across cluster: 50',
            ),
            Metric(
                'current_users',
                50.0,
                levels=(None, None),
                boundaries=(None, None),
            ),
        ]
Пример #7
0
def test_discovery_grouped_by_agent_and_in_rules():
    ifaces = _create_interfaces(0)
    ifaces[0].group = 'group'
    ifaces[1].group = 'group'
    assert list(
        interfaces.discover_interfaces(
            [
                type_defs.Parameters({
                    'matching_conditions': (True, {}),
                    "grouping": (
                        True,
                        [{
                            'group_name': 'group',
                            'member_appearance': 'index',
                        }],
                    ),
                }),
                DEFAULT_DISCOVERY_PARAMS,
            ],
            ifaces,
        )) == SINGLE_SERVICES + [
            Service(
                item='group',
                parameters={
                    'aggregate': {
                        'member_appearance': 'index',
                        'inclusion_condition': {},
                        'exclusion_conditions': [],
                    },
                    'discovered_state': ['1'],
                    'discovered_speed': 20000000.0,
                },
                labels=[],
            ),
        ]
Пример #8
0
def test_cluster_check_bluecat_one_ok():
    assert list(
        bluecat_dns.cluster_check_bluecat_dns(
            type_defs.Parameters({
                "oper_states": {
                    "warning": [4],
                    "critical": [],
                },
            },),
            {
                'node1': {
                    'oper_state': 1,
                },
                'node2': {
                    'oper_state': 4,
                },
            },
        )) == [
            Result(
                state=state.OK,
                details='[node1]: DNS is running normally',
            ),
            Result(
                state=state.OK,
                details='[node2]: DNS is currently stopping(!)',
            ),
            Result(
                state=state.OK,
                summary='DNS is running normally on node1',
            ),
        ]
Пример #9
0
def check_bluecat_dhcp_one_lease():
    assert list(
        bluecat_dhcp.check_bluecat_dhcp(
            type_defs.Parameters(
                {
                    "oper_states": {
                        "warning": [],
                        "critical": [],
                    },
                }, ),
            {
                'oper_state': 1,
                'leases': 1,
            },
        )) == [
            Result(
                state=state.OK,
                summary="DHCP is running normally",
            ),
            Result(
                state=state.OK,
                summary="1 lease per second",
            ),
            Metric(
                'leases',
                1,
            ),
        ]
Пример #10
0
def check_bluecat_dhcp_crit():
    assert list(
        bluecat_dhcp.check_bluecat_dhcp(
            type_defs.Parameters(
                {
                    "oper_states": {
                        "warning": [],
                        "critical": [5],
                    },
                }, ),
            {
                'oper_state': 5,
                'leases': 10,
            },
        )) == [
            Result(
                state=state.CRIT,
                summary="DHCP is fault",
            ),
            Result(
                state=state.OK,
                summary="1 lease per second",
            ),
            Metric(
                'leases',
                1,
            ),
        ]
Пример #11
0
def _test_check_aix_diskiod(item, section_1, section_2, check_func):
    # fist call: initialize value store
    list(check_func(
        item,
        type_defs.Parameters({}),
        section_1,
    ))

    # second call: get values
    check_results = list(
        check_func(
            item,
            type_defs.Parameters({}),
            section_2,
        ))
    for res in check_results:
        if isinstance(res, Metric):
            assert res.value > 0
Пример #12
0
def test_check_disk(value_store):
    with pytest.raises(IgnoreResultsError):
        list(aix_diskiod._check_disk(type_defs.Parameters({}), DISK))
    assert list(aix_diskiod._check_disk(type_defs.Parameters({}), DISK)) == [
        Result(state=state.OK,
               summary='Read throughput: 0.00 B/s',
               details='Read throughput: 0.00 B/s'),
        Metric('disk_read_throughput',
               0.0,
               levels=(None, None),
               boundaries=(None, None)),
        Result(state=state.OK,
               summary='Write throughput: 0.00 B/s',
               details='Write throughput: 0.00 B/s'),
        Metric('disk_write_throughput',
               0.0,
               levels=(None, None),
               boundaries=(None, None)),
    ]
Пример #13
0
def test_discovery_ungrouped_off():
    assert list(
        interfaces.discover_interfaces(
            [
                type_defs.Parameters({
                    'matching_conditions': (True, {}),
                    'discovery_single': (False, {}),
                }),
                DEFAULT_DISCOVERY_PARAMS,
            ],
            _create_interfaces(0),
        )) == []
Пример #14
0
def test_discovery_legacy_parameters():
    assert list(
        interfaces.discover_interfaces(
            [
                type_defs.Parameters(
                    {
                        'pad_portnumbers': False,
                        'item_appearance': 'alias',
                        'match_desc': ['enxe4b97ab99f99', 'vboxnet0', 'lo'],
                        'portstates': ['1', '2', '3'],
                        'porttypes': ['6'],
                        'match_alias': ['enxe4b97ab99f99', 'vboxnet0', 'lo'],
                    }),
                type_defs.Parameters({
                    'matching_conditions': (True, {}),
                    'discovery_single': (False, {}),
                }),
                DEFAULT_DISCOVERY_PARAMS,
            ],
            _create_interfaces(0),
        )) == [
            Service(
                item='enxe4b97ab99f99',
                parameters={
                    'discovered_state': ['2'],
                    'discovered_speed': 10000000,
                },
                labels=[],
            ),
            Service(
                item='vboxnet0',
                parameters={
                    'discovered_state': ['1'],
                    'discovered_speed': 10000000,
                },
                labels=[],
            ),
        ]
Пример #15
0
def test__check_disk():
    with value_store.context(CheckPluginName('_check_disk'), 'item'):
        check_disk_1 = list(
            aix_diskiod._check_disk(type_defs.Parameters({}), DISK))
        assert len(check_disk_1)
        assert isinstance(check_disk_1[0], IgnoreResults)
        assert list(aix_diskiod._check_disk(type_defs.Parameters(
            {}), DISK)) == [
                Result(state=state.OK,
                       summary='Read: 0.00 B/s',
                       details='Read: 0.00 B/s'),
                Metric('disk_read_throughput',
                       0.0,
                       levels=(None, None),
                       boundaries=(None, None)),
                Result(state=state.OK,
                       summary='Write: 0.00 B/s',
                       details='Write: 0.00 B/s'),
                Metric('disk_write_throughput',
                       0.0,
                       levels=(None, None),
                       boundaries=(None, None)),
            ]
Пример #16
0
def test_lnx_if_regression(
    monkeypatch,
    string_table,
    discovery_results,
    items_params_results,
):
    section = lnx_if.parse_lnx_if(string_table)

    assert list(
        lnx_if.discover_lnx_if(
            [type_defs.Parameters(interfaces.DISCOVERY_DEFAULT_PARAMETERS)],
            section,
        )) == discovery_results

    monkeypatch.setattr(interfaces, 'get_value_store', lambda: {})
    for item, par, res in items_params_results:
        assert list(
            lnx_if.check_lnx_if(
                item,
                type_defs.Parameters(par),
                section,
            )) == res

    node_name = 'node'
    for item, par, res in items_params_results:
        assert list(
            lnx_if.cluster_check_lnx_if(
                item,
                type_defs.Parameters(par),
                {node_name: section},
            )) == [
                Result(
                    state=res[0].state,
                    summary=res[0].summary.replace(' ', ' on %s: ' % node_name,
                                                   1),
                )
            ] + res[1:]
Пример #17
0
def test_check_diskstat_dict(params, disk, exp_res):
    with value_store.context('plugin', 'item'):  # type: ignore
        # we use {**disk} here because check_diskstat_dict pops items
        assert list(diskstat.check_diskstat_dict(params, {**disk}, get_value_store())) == exp_res

        if exp_res:
            exp_res[0] = Result(
                state=exp_res[0].state,
                summary="5 minutes 0 seconds average: " + exp_res[0].summary,
            )

        assert list(
            diskstat.check_diskstat_dict(type_defs.Parameters({
                **params, 'average': 300
            },), disk, get_value_store()),) == exp_res
Пример #18
0
def test_discovery_ungrouped_one():
    assert list(
        interfaces.discover_interfaces(
            [
                type_defs.Parameters({
                    'matching_conditions': (
                        False,
                        {
                            'match_index': ['5'],
                        },
                    ),
                    'discovery_single': (False, {}),
                }),
                DEFAULT_DISCOVERY_PARAMS,
            ],
            _create_interfaces(0),
        )) == SINGLE_SERVICES[1:]
Пример #19
0
def test_check_diskstat_dict(params, disk, exp_res):
    value_store: type_defs.ValueStore = {}

    assert list(diskstat.check_diskstat_dict(params, disk,
                                             value_store)) == exp_res

    if exp_res:
        exp_res[0] = Result(
            state=exp_res[0].state,
            summary="5 minutes 0 seconds average: " + exp_res[0].summary,
        )

    assert list(
        diskstat.check_diskstat_dict(
            type_defs.Parameters({
                **params, 'average': 300
            }, ), disk, value_store), ) == exp_res
Пример #20
0
def test_cluster_check_bluecat_one_ok():
    assert list(
        bluecat_dhcp.cluster_check_bluecat_dhcp(
            type_defs.Parameters(
                {
                    "oper_states": {
                        "warning": [4],
                        "critical": [],
                    },
                }, ),
            {
                'node1': {
                    'oper_state': 1,
                    'leases': 13,
                },
                'node2': {
                    'oper_state': 4,
                    'leases': 11,
                },
            },
        )
    ) == [
        Result(
            state=state.OK,
            details=
            '[node1]: DHCP is running normally\n[node1]: 13 leases per second',
        ),
        Result(
            state=state.OK,
            details=
            '[node2]: DHCP is currently stopping(!)\n[node2]: 11 leases per second',
        ),
        Result(
            state=state.OK,
            summary='DHCP is running normally on node1',
        ),
        Result(
            state=state.OK,
            summary='13 leases per second on node1',
        ),
        Metric(
            'leases',
            13,
        ),
    ]
Пример #21
0
def test_check_pulse_secure_users():
    assert list(
        pulse_secure_users.check_pulse_secure_users(
            type_defs.Parameters({}),
            {'n_users': 172},
        )) == [
            Result(
                state=state.OK,
                summary='Pulse Secure users: 172',
                details='Pulse Secure users: 172',
            ),
            Metric(
                'current_users',
                172.0,
                levels=(None, None),
                boundaries=(None, None),
            ),
        ]
Пример #22
0
def check_bluecat_dns_ok():
    assert list(
        bluecat_dns.check_bluecat_dns(
            type_defs.Parameters({
                "oper_states": {
                    "warning": [],
                    "critical": [],
                },
            },),
            {
                'oper_state': 1,
            },
        )) == [
            Result(
                state=state.OK,
                summary="DNS is running normally",
            ),
        ]
Пример #23
0
def check_bluecat_dns_crit():
    assert list(
        bluecat_dns.check_bluecat_dns(
            type_defs.Parameters({
                "oper_states": {
                    "warning": [],
                    "critical": [5],
                },
            },),
            {
                'oper_state': 5,
            },
        )) == [
            Result(
                state=state.CRIT,
                summary="DNS is fault",
            ),
        ]
Пример #24
0
def test_check_single_interface_averaging(value_store, item, params, result):
    with pytest.raises(IgnoreResultsError):
        list(
            interfaces.check_single_interface(
                item,
                params,
                _create_interfaces(0)[int(item) - 1],
                timestamp=0,
            ))
    assert list(
        interfaces.check_single_interface(
            item,
            type_defs.Parameters({
                **params,
                'average': 5,
            }),
            _create_interfaces(4000000)[int(item) - 1],
            timestamp=5,
        )) == result
Пример #25
0
def test_discovery_grouped_empty():
    assert list(
        interfaces.discover_interfaces(
            [
                type_defs.Parameters({
                    'matching_conditions': (
                        False,
                        {
                            'match_desc': ['non_existing'],
                        },
                    ),
                    "grouping": (
                        True,
                        [{
                            'group_name': 'group',
                            'member_appearance': 'index',
                        }],
                    ),
                }),
                DEFAULT_DISCOVERY_PARAMS,
            ],
            _create_interfaces(0),
        )) == SINGLE_SERVICES
Пример #26
0
def test_cluster_check_bluecat_none_ok():
    assert list(
        bluecat_dhcp.cluster_check_bluecat_dhcp(
            type_defs.Parameters(
                {
                    "oper_states": {
                        "warning": [1],
                        "critical": [2, 3],
                    },
                }, ),
            {
                'node1': {
                    'oper_state': 1,
                    'leases': 0,
                },
                'node2': {
                    'oper_state': 3,
                    'leases': 1,
                },
            },
        )
    ) == [
        Result(
            state=state.WARN,
            details=
            '[node1]: DHCP is running normally(!)\n[node1]: 0 leases per second',
        ),
        Result(
            state=state.CRIT,
            details=
            '[node2]: DHCP is currently starting(!!)\n[node2]: 1 lease per second',
        ),
        Result(
            state=state.CRIT,
            summary='No node with OK DHCP state',
        ),
    ]
Пример #27
0
    ),
])
def test_veritas_vcs_boil_down_states_in_cluster(states, exp_res):
    assert veritas_vcs.veritas_vcs_boil_down_states_in_cluster(
        states) == exp_res


PARAMS = type_defs.Parameters(
    {
        'map_frozen': {
            'frozen': 2,
            'tfrozen': 1
        },
        'map_states': {
            'FAULTED': 2,
            'RUNNING': 0,
            'OK': 0,
            'ONLINE': 0,
            'default': 1,
            'PARTIAL': 1,
            'OFFLINE': 1,
            'UNKNOWN': 3,
            'EXITED': 1,
        },
    }, )


def test_check_veritas_vcs():
    assert list(veritas_vcs.check_veritas_vcs('minions', PARAMS, SECTION)) == [
        Result(
            state=state.OK,
            summary='running',
Пример #28
0
    Metric,
    Result,
    Service,
    state,
    type_defs,
)
from cmk.base.plugins.agent_based.utils import diskstat


@pytest.mark.parametrize(
    "params,exp_res",
    [
        (
            [
                type_defs.Parameters({
                    'summary': True,
                },),
            ],
            [
                Service(item='SUMMARY'),
            ],
        ),
        (
            [
                type_defs.Parameters({
                    'summary': True,
                    'physical': True,
                },),
            ],
            [
                Service(item='SUMMARY'),
Пример #29
0
def test_check_multiple_interfaces_group_simple(value_store):
    params = type_defs.Parameters({
        'errors': (0.01, 0.1),
        'traffic': [('both', ('upper', ('perc', (5.0, 20.0))))],
        'aggregate': {
            'member_appearance': 'index',
            'inclusion_condition': {},
            'exclusion_conditions': [],
        },
        'discovered_state': ['1'],
        'discovered_speed':
        20000000,
        'state': ['8'],
        'speed':
        123456,
    })
    with pytest.raises(IgnoreResultsError):
        list(
            interfaces.check_multiple_interfaces(
                'group',
                params,
                _create_interfaces(0),
                timestamp=0,
            ))
    assert list(
        interfaces.check_multiple_interfaces(
            'group',
            params,
            _create_interfaces(4000000),
            timestamp=5,
        )
    ) == [
        Result(state=state.OK, summary='Group Status (degraded)'),
        Result(
            state=state.OK,
            summary=
            'Members: [1 (up), 2 (down), 3 (down), 4 (down), 5 (up), 6 (up)]'),
        Result(state=state.WARN,
               summary='10 MBit/s (wrong speed, expected: 123 kBit/s)'),
        Metric('in',
               800000.0,
               levels=(62500.0, 250000.0),
               boundaries=(0.0, 1250000.0)),
        Metric('inmcast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('inbcast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('inucast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('innucast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('indisc', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('inerr', 0.0, levels=(0.01, 0.1), boundaries=(None, None)),
        Metric('out',
               3200000.0,
               levels=(62500.0, 250000.0),
               boundaries=(0.0, 1250000.0)),
        Metric('outmcast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('outbcast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('outucast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('outnucast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('outdisc', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('outerr', 0.0, levels=(0.01, 0.1), boundaries=(None, None)),
        Metric('outqlen', 0.0, levels=(None, None), boundaries=(None, None)),
        Result(
            state=state.CRIT,
            summary='In: 800 kB/s (warn/crit at 62.5 kB/s/250 kB/s) (64.0%)'),
        Result(
            state=state.CRIT,
            summary='Out: 3.20 MB/s (warn/crit at 62.5 kB/s/250 kB/s) (256.0%)'
        ),
    ]
Пример #30
0
def test_check_multiple_interfaces_group_by_agent(value_store):
    params = type_defs.Parameters({
        'errors': (0.01, 0.1),
        'traffic': [('both', ('upper', ('perc', (5.0, 20.0))))],
        'aggregate': {
            'member_appearance': 'index',
        },
        'discovered_state': ['1'],
        'discovered_speed':
        20000000
    })
    with pytest.raises(IgnoreResultsError):
        ifaces = _create_interfaces(0)
        ifaces[3].group = 'group'
        ifaces[5].group = 'group'
        list(
            interfaces.check_multiple_interfaces(
                'group',
                params,
                ifaces,
                timestamp=0,
            ))

    ifaces = _create_interfaces(4000000)
    ifaces[3].group = 'group'
    ifaces[5].group = 'group'
    assert list(
        interfaces.check_multiple_interfaces(
            'group',
            params,
            ifaces,
            timestamp=5,
        )
    ) == [
        Result(state=state.CRIT,
               summary='Group Status (degraded)',
               details='Group Status (degraded)'),
        Result(state=state.OK,
               summary='Members: [4 (down), 6 (up)]',
               details='Members: [4 (down), 6 (up)]'),
        Result(state=state.OK,
               summary='assuming 20 MBit/s',
               details='assuming 20 MBit/s'),
        Metric('in',
               800000.0,
               levels=(
                   125000.0, 500000.0),
               boundaries=(0.0, 2500000.0)),
        Metric('inmcast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('inbcast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('inucast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('innucast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('indisc', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('inerr', 0.0, levels=(0.01, 0.1), boundaries=(None, None)),
        Metric('out',
               3200000.0,
               levels=(
                   125000.0, 500000.0),
               boundaries=(0.0, 2500000.0)),
        Metric('outmcast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('outbcast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('outucast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('outnucast', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('outdisc', 0.0, levels=(None, None), boundaries=(None, None)),
        Metric('outerr', 0.0, levels=(0.01, 0.1), boundaries=(None, None)),
        Metric('outqlen', 0.0, levels=(None, None), boundaries=(None, None)),
        Result(
            state=state.CRIT,
            summary='In: 800 kB/s (warn/crit at 125 kB/s/500 kB/s) (32.0%)',
            details='In: 800 kB/s (warn/crit at 125 kB/s/500 kB/s) (32.0%)'),
        Result(
            state=state.CRIT,
            summary='Out: 3.20 MB/s (warn/crit at 125 kB/s/500 kB/s) (128.0%)',
            details='Out: 3.20 MB/s (warn/crit at 125 kB/s/500 kB/s) (128.0%)'
        ),
    ]