コード例 #1
0
ファイル: plugintest.py プロジェクト: bnrubin/pynag
class testPlugin(unittest.TestCase):
    def setUp(self):
        self.argv_store = sys.argv
        from pynag.Plugins import simple as Plugin
        self.np = Plugin()
        sys.stdout = StringIO()
        sys.stderr = StringIO()
    def tearDown(self):
        sys.argv = self.argv_store
        sys.stdout = original_stdout
        sys.stderr = original_stderr

    def run_expect(self, case, expected_exit, value):
        sys.argv = [sys.argv[0]] + case.split()
        self.np.activate()
        try:
            self.np.add_perfdata('fake', value, uom='fakes',
                                 warn=10, crit=20, minimum=-100, maximum=100)
            perfdata_string = self.np.perfdata_string()
            print perfdata_string
            self.assertEquals(perfdata_string, "| '%s'=%s%s;%s;%s;%s;%s" % (
                              'fake', value, 'fakes', 10, 20, -100, 100))
            self.np.add_message('OK', 'Some message')
            self.assertEquals(self.np.data['messages'][0], ['Some message'])
            self.np.check_range(value)
        except SystemExit, e:
            self.assertEquals(type(e), type(SystemExit()))
            self.assertEquals(e.code, expected_exit)
        except Exception, e:
            import traceback
            print traceback.format_exc()
            self.fail('unexpected exception: %s' % e)
コード例 #2
0
ファイル: plugintest.py プロジェクト: abhinav-upadhyay/pynag
class testPluginNoThreshold(unittest.TestCase):
    def setUp(self):
        self.argv_store = sys.argv
        from pynag.Plugins import simple as Plugin
        self.np = Plugin(must_threshold=False)
    def tearDown(self):
        sys.argv = self.argv_store
    def run_expect(self, case, expected_exit, value):
        sys.argv = [sys.argv[0]] + case.split()
        self.np.activate()
        try:
            self.np.check_range(value)
        except SystemExit, e:
            self.assertEquals(type(e), type(SystemExit()))
            self.assertEquals(e.code, expected_exit)
        except Exception, e:
            self.fail('unexpected exception: %s' % e)
コード例 #3
0
ファイル: test_plugins.py プロジェクト: AccelerationNet/pynag
class PluginNoThreshold(unittest.TestCase):

    def setUp(self):
        self.argv_store = sys.argv
        from pynag.Plugins import simple as Plugin
        self.np = Plugin(must_threshold=False)
        sys.stdout = StringIO()

    def tearDown(self):
        sys.argv = self.argv_store
        sys.stdout = original_stdout

    def run_expect(self, case, expected_exit, value):
        sys.argv = [sys.argv[0]] + case.split()
        self.np.activate()
        try:
            self.np.check_range(value)
        except SystemExit as e:
            self.assertEquals(type(e), type(SystemExit()))
            self.assertEquals(e.code, expected_exit)
        except Exception as e:
            self.fail('unexpected exception: %s' % e)
        else:
            self.fail('SystemExit exception expected')

    # All tests return OK since thresholds are not required
    def test_number_1(self):
        case = ''
        self.run_expect(case, 0, -23)

    def test_number_2(self):
        case = ''
        self.run_expect(case, 0, 0)

    def test_number_3(self):
        case = ''
        self.run_expect(case, 0, 2)

    def test_number_4(self):
        case = ''
        self.run_expect(case, 0, 10)

    def test_number_5(self):
        case = ''
        self.run_expect(case, 0, 15)
コード例 #4
0
ファイル: check_cpu.py プロジェクト: zothar/pynag
import os, sys

## Import plugin from nagios Module
from pynag.Plugins import simple as Plugin

## Create the plugin option
np = Plugin()

## Add a command line argument
np.add_arg("l", "load-file", "Enter a load average file", required=None)

## This starts the actual plugin activation
np.activate()

## Use a custom load average file, if specified to
if np['load-file']:
    load_file = np['load-file']
else:
    load_file = "/proc/loadavg"

if not os.path.isfile(load_file):
    np.nagios_exit("UNKNOWN", "Missing Load average file %s" % load_file)

## Get the check value
current_load = open(load_file).readline().split()[0]

## Add the perdata
np.add_perfdata("1min", current_load)

np.check_range(current_load)
コード例 #5
0
ファイル: fakeplugin.py プロジェクト: a3linux/pynag
#!/usr/bin/python

import os.path
import sys

pynagbase = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
sys.path[0] = pynagbase

# Standard init
import pynag.Plugins
from pynag.Plugins import WARNING, CRITICAL, OK, UNKNOWN, simple as Plugin

np = Plugin()

# Feed fake data for range checking
np.add_arg('F', 'fakedata', 'fake data to test thresholds', required=True)

# Activate
np.activate()

# Test supplied fake data against thresholds
np.check_range(int(np['fakedata']))

コード例 #6
0
#!/usr/bin/python

import os.path
import sys

pynagbase = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
sys.path[0] = pynagbase

# Standard init
import pynag.Plugins
from pynag.Plugins import WARNING, CRITICAL, OK, UNKNOWN, simple as Plugin

np = Plugin(must_threshold=False)

# Feed fake data for range checking
np.add_arg('F', 'fakedata', 'fake data to test thresholds', required=True)

# Activate
np.activate()

# Test supplied fake data against thresholds
np.check_range(int(np['fakedata']))
コード例 #7
0
ファイル: check_cpu.py プロジェクト: rtucker-mozilla/pynag
## This is for the custom nagios module
sys.path.insert(1, '../')
from pynag.Plugins import simple as Plugin


## Create the plugin option
np = Plugin()

## Add a command line argument
np.add_arg("l","load-file", "Enter a load average file", required=None)

## This starts the actual plugin activation
np.activate()

## Use a custom load average file, if specified to
if np['load-file']:
	load_file = np['load-file']
else:
	load_file = "/proc/loadavg"

if not os.path.isfile(load_file):
	np.nagios_exit("UNKNOWN", "Missing Load average file %s" % load_file)

## Get the check value
current_load = os.popen("cat %s" % load_file).readline().split()[0]

## Add the perdata
np.add_perfdata("1min", current_load)

np.check_range(current_load)
コード例 #8
0
ファイル: test_plugins.py プロジェクト: AccelerationNet/pynag
class Plugin(unittest.TestCase):

    def setUp(self):
        self.argv_store = sys.argv
        from pynag.Plugins import simple as Plugin
        self.np = Plugin()
        sys.stdout = StringIO()
        sys.stderr = StringIO()

    def tearDown(self):
        sys.argv = self.argv_store
        sys.stdout = original_stdout
        sys.stderr = original_stderr

    def run_expect(self, case, expected_exit, value):
        sys.argv = [sys.argv[0]] + case.split()
        self.np.activate()
        try:
            self.np.add_perfdata('fake', value, uom='fakes',
                                 warn=10, crit=20, minimum=-100, maximum=100)
            perfdata_string = self.np.perfdata_string()
            print(perfdata_string)
            self.assertEquals(perfdata_string, "| '%s'=%s%s;%s;%s;%s;%s" % (
                              'fake', value, 'fakes', 10, 20, -100, 100))
            self.np.add_message('OK', 'Some message')
            self.assertEquals(self.np.data['messages'][0], ['Some message'])
            self.np.check_range(value)
        except SystemExit as e:
            self.assertEquals(type(e), type(SystemExit()))
            self.assertEquals(e.code, expected_exit)
        except Exception as e:
            import traceback
            print(traceback.format_exc())
            self.fail('unexpected exception: %s' % e)
        else:
            self.fail('SystemExit exception expected')

    # Throws SystemExit, required parameter not set when activating
    def test_add_arg_req_missing(self):
        self.np.add_arg('F', 'fakedata',
                        'fake data to test thresholds', required=True)
        self.assertRaises(SystemExit, self.np.activate)

    def test_add_arg_req(self):
        self.np.add_arg('F', 'fakedata',
                        'fake data to test thresholds', required=True)
        sys.argv = [sys.argv[0]] + '-F 100 -w 1 -c 2'.split()
        self.np.activate()

    def test_add_arg(self):
        self.np.add_arg('F', 'fakedata',
                        'fake data to test thresholds', required=False)
        sys.argv = [sys.argv[0]] + '-w 1 -c 2'.split()
        self.np.activate()

    def test_codestring_to_int(self):
        code = self.np.code_string2int('OK')
        self.assertEquals(code, 0, "OK did not map to 0")

        code = self.np.code_string2int('WARNING')
        self.assertEquals(code, 1, "WARNING did not map to 1")

        code = self.np.code_string2int('CRITICAL')
        self.assertEquals(code, 2, "CRITICAL did not map to 2")

        code = self.np.code_string2int('UNKNOWN')
        self.assertEquals(code, 3, "UNKNOWN did not map to 3")

    # Critical if "stuff" is over 20, else warn if over 10
    # (will be critical if "stuff" is less than 0)
    def test_number_1(self):
        case = '-w 10 -c 20'
        self.run_expect(case, 2, -23)

    def test_number_2(self):
        case = '-w 10 -c 20'
        self.run_expect(case, 0, 3)

    def test_number_3(self):
        case = '-w 10 -c 20'
        self.run_expect(case, 1, 13)

    def test_number_4(self):
        case = '-w 10 -c 20'
        self.run_expect(case, 2, 23)

    # Same as above. Negative "stuff" is OK
    def test_number_5(self):
        case = '-w ~:10 -c ~:20'
        self.run_expect(case, 0, -23)

    def test_number_6(self):
        case = '-w ~:10 -c ~:20'
        self.run_expect(case, 0, 3)

    def test_number_7(self):
        case = '-w ~:10 -c ~:20'
        self.run_expect(case, 1, 13)

    def test_number_8(self):
        case = '-w ~:10 -c ~:20'
        self.run_expect(case, 2, 23)

    # Critical if "stuff" is over 20, else warn if "stuff" is below 10
    # (will be critical if "stuff" is less than 0)
    def test_number_9(self):
        case = '-w 10: -c 20'
        self.run_expect(case, 2, -23)

    def test_number_10(self):
        case = '-w 10: -c 20'
        self.run_expect(case, 1, 3)

    def test_number_11(self):
        case = '-w 10: -c 20'
        self.run_expect(case, 0, 13)

    def test_number_12(self):
        case = '-w 10: -c 20'
        self.run_expect(case, 2, 23)

    # Critical if "stuff" is less than 1
    def test_number_13(self):
        case = '-c 1:'
        self.run_expect(case, 2, -23)

    def test_number_14(self):
        case = '-c 1:'
        self.run_expect(case, 2, 0)

    def test_number_15(self):
        case = '-c 1:'
        self.run_expect(case, 0, 13)

    def test_number_16(self):
        case = '-c 1:'
        self.run_expect(case, 0, 23)

    # 1-9 is warning, negative or above 10 is critical
    def test_number_17(self):
        case = '-w ~:0 -c 10'
        self.run_expect(case, 2, -23)

    def test_number_18(self):
        case = '-w ~:0 -c 10'
        self.run_expect(case, 0, 0)

    def test_number_19(self):
        case = '-w ~:0 -c 10'
        self.run_expect(case, 1, 7)

    def test_number_20(self):
        case = '-w ~:0 -c 10'
        self.run_expect(case, 2, 23)

    # The only noncritical range is 5:6
    def test_number_21(self):
        case = '-c 5:6'
        self.run_expect(case, 2, -23)

    def test_number_22(self):
        case = '-c 5:6'
        self.run_expect(case, 2, 0)

    def test_number_23(self):
        case = '-c 5:6'
        self.run_expect(case, 2, 2)

    def test_number_24(self):
        case = '-c 5:6'
        self.run_expect(case, 0, 5)

    def test_number_25(self):
        case = '-c 5:6'
        self.run_expect(case, 0, 6)

    # Critical if "stuff" is 10 to 20
    def test_number_26(self):
        case = '-c @10:20'
        self.run_expect(case, 0, -23)

    def test_number_27(self):
        case = '-c @10:20'
        self.run_expect(case, 0, 0)

    def test_number_28(self):
        case = '-c @10:20'
        self.run_expect(case, 0, 2)

    def test_number_29(self):
        case = '-c @10:20'
        self.run_expect(case, 2, 10)

    def test_number_30(self):
        case = '-c @10:20'
        self.run_expect(case, 2, 15)

    def test_number_31(self):
        case = '-c @10:20'
        self.run_expect(case, 2, 20)

    def test_number_32(self):
        case = '-c @10:20'
        self.run_expect(case, 0, 23)