Skip to main content

pytest plugin to test Check_MK checks

Project description

Build Status

Plugin for py.test to test Check_MK checks.

Usage

The following example contains a test suite for the foobar check contained in the Check_MK installation (see share/doc/check_mk/skeleton_check). The check file needs to be named after its agent section, i.e. foobar.

Directory layout

├── agents
│   └── plugins
│       └── foobar_linux
├── checks
│   └── foobar
└── test
    └── test_foobar.py

Test agent

All executable files in the agents directory can be executed with the agents fixture:

def test_agent_plugin(agent):
    assert agents['plugins/foobar_linux'].run() == '<<<foobar>>>\nFOO BAR\n'

It is also possible to pass commandline arguments to the agent or agent plugin:

def test_fritzbox_agent(agents):
    assert '<<<fritz>>>' in agents['special/agent_fritzbox'].run('--timeout', '20', 'fritz.box')

Test check

Within a single test file one check file can be tested. The name of the check file is set with the test_for module-level variable.

from pytest_check_mk import OK, WARNING, CRITICAL, UNKNOWN


test_for = 'foobar'


sample_plugin_output = '''
<<<foobar>>>
FOO BAR
'''


def test_inventory(checks):
    assert checks['foobar'].inventory(sample_plugin_output) == []


def test_check(checks):
    item = None
    params = None
    assert checks['foobar'].check(item, params, sample_plugin_output) == (UNKNOWN, 'UNKNOWN - Check not implemented')


def test_settings(checks):
    assert checks['foobar'].service_description == 'FOOBAR'
    assert not checks['foobar'].has_perfdata

Test check with agent data

There is a sort of ‘ensure everything works together’ assertion. It calls both inventory and check function with a given agent output and checks that the return values match the expected format.

from pytest_check_mk.assertions import assert_inventory_and_check_works_with_check_output


test_for = 'foobar'


def test_check_with_agent_output(agent, checks):
    output = agents['plugins/foobar_linux'].run()
    assert_inventory_and_check_works_with_check_output(checks['foobar'], output)

License

This software is licensed under GPLv2.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pytest_check_mk-0.1.1-py2.py3-none-any.whl (8.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pytest_check_mk-0.1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_check_mk-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e8fc09a79cb3129adef68edab20cf01a2ce22614a8a2cadb671e5b69aa281507
MD5 b612d4d7987f2e0c0952a7d43c43aed7
BLAKE2b-256 2c5090765e135ff55a6ffad50309992d643d8e3c7307e8013469a20d6a33788b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page