Ejemplo n.º 1
0
def test_cpu_loads_predictive(mocker):
    # make sure cpu_load check can handle predictive values
    mocker.patch("cmk.base.check_api._prediction.get_levels",
                 return_value=(None, (2.2, 4.2, None, None)))
    # TODO: don't mock this. Use the context managers.
    mocker.patch("cmk.base.plugin_contexts._hostname", value="unittest")
    mocker.patch("cmk.base.plugin_contexts._service_description",
                 value="unittest-sd")
    params = {
        'levels': {
            'period': 'minute',
            'horizon': 1,
            'levels_upper': ('absolute', (2.0, 4.0))
        }
    }
    section = Section(load=Load(0.5, 1.0, 1.5), num_cpus=4, num_threads=123)
    result = set(check_cpu_load(params, section))

    assert result == set((
        Result(state=State.OK,
               summary='15 min load: 1.50 (no reference for prediction yet)'),
        Result(state=State.OK, summary='15 min load per core: 0.38 (4 cores)'),
        Metric('load1', 0.5, boundaries=(0, 4.0)),
        Metric('load5', 1.0, boundaries=(0, 4.0)),
        Metric('load15', 1.5,
               levels=(2.2, 4.2)),  # those are the predicted values
    ))
Ejemplo n.º 2
0
def test_cpu_loads_fixed_levels(mocker):
    section = Section(load=Load(0.5, 1.0, 1.5), num_cpus=4, num_threads=123)
    params = {'levels': (2.0, 4.0)}
    result = set(check_cpu_load(params, section))
    assert result == set((
        Result(state=State.OK, summary='15 min load: 1.50'),
        Result(state=State.OK, summary='15 min load per core: 0.38 (4 cores)'),
        Metric('load1', 0.5, boundaries=(0, 4.0)),
        Metric('load5', 1.0, boundaries=(0, 4.0)),
        Metric('load15', 1.5, levels=(8.0, 16.0)),  # levels multiplied by num_cpus
    ))
Ejemplo n.º 3
0
def test_basic_cpu_loads():
    section = parse_cpu(STRING_TABLE)  # type: ignore[arg-type]
    assert section
    result = list(
        check_cpu_load(
            params={"levels": (5.0, 10.0)},
            section=section,
        ))
    assert result == [
        Result(state=State.OK, summary="15 min load: 0.87"),
        Metric("load15", 0.87, levels=(40.0, 80.0)),
        Result(state=State.OK, summary="15 min load per core: 0.11 (8 cores)"),
        Metric("load1", 0.88, boundaries=(0.0, 8.0)),
        Metric("load5", 0.83, boundaries=(0.0, 8.0)),
    ]