diff options
author | Azul <azul@leap.se> | 2014-04-15 17:17:36 +0200 |
---|---|---|
committer | Azul <azul@leap.se> | 2014-04-17 10:39:59 +0200 |
commit | be2971c2e615cc8a808822317d049e99f5183bdc (patch) | |
tree | ee2e77b91f661f5fa6c69f5d851eb848f38eb3b6 /test/nagios/nagios_test.py | |
parent | 44d2d031555c889b94e9738cb45740b16a4071ce (diff) |
refactor: move nagios specifs to nagios_test
nagios_test.run takes a function and executes it.
If it returns nothing or 0 and OK nagios message is printed.
If it returns sth. else this will be printed a a warning
If it raises an exception that will result in a CRITICAL report.
This way we can keep the nagios things outside the test cases and just write simple functions that either return 0, a warnign or raise a meaningful exception
Diffstat (limited to 'test/nagios/nagios_test.py')
-rw-r--r-- | test/nagios/nagios_test.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/test/nagios/nagios_test.py b/test/nagios/nagios_test.py new file mode 100644 index 0000000..3eb8d55 --- /dev/null +++ b/test/nagios/nagios_test.py @@ -0,0 +1,49 @@ +import __main__ as main +import os +import sys +import nagios_report + +def run(test): + """ + run takes a function and tries it out. + If it returns nothing or 0 everything is fine and run prints an OK message + with the function name. + >>> def this_works_fine(): return + >>> run(this_works_fine) + 0 nagios_test.py - OK - this_works_fine + 0 + >>> def this_also_works_fine(): return 0 + >>> run(this_also_works_fine) + 0 nagios_test.py - OK - this_also_works_fine + 0 + + If the function returns something else it will be printed as a warning. + >>> run(lambda : "this is a warning") + 1 nagios_test.py - WARNING - this is a warning + 1 + + Errors raised will result in a CRITICAL nagios string. + >>> def failure(): raise Exception("something went wrong") + >>> run(failure) + 2 nagios_test.py - CRITICAL - something went wrong + 2 + """ + try: + name = os.path.basename(main.__file__) + except AttributeError: + name = sys.argv[0] + ok, warn, fail, unknown = nagios_report.functions_for_system(name) + try: + warning = test() + if warning and warning != 0: + code = warn(warning) + else: + code = ok(test.__name__) + except Exception as exc: + code = fail(exc.message or str(exc)) + return code + + +if __name__ == "__main__": + import doctest + doctest.testmod() |