blob: 3eb8d55690382420de2b2dc775c45633a768f369 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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()
|