class testPluginHelper(unittest.TestCase): def setUp(self): self.argv_store = sys.argv from pynag.Plugins import PluginHelper self.my_plugin = PluginHelper() self.my_plugin.parser.add_option('-F', dest='fakedata', help='fake data to test thresholds') sys.stdout = StringIO() def tearDown(self): sys.argv = self.argv_store sys.stdout = original_stdout def run_expect(self, case, value, expected_exit): sys.argv = [sys.argv[0]] + case.split() + ('-F %s' % value).split() self.my_plugin.parse_arguments() self.my_plugin.add_status(pynag.Plugins.ok) self.my_plugin.add_summary(self.my_plugin.options.fakedata) self.my_plugin.add_metric('fakedata', self.my_plugin.options.fakedata) try: self.my_plugin.check_all_metrics() self.my_plugin.exit() except SystemExit, e: self.assertEquals(type(e), type(SystemExit())) self.assertEquals(e.code, expected_exit) except Exception, e: self.fail('unexpected exception: %s' % e)
def main(): p = PluginHelper() # Warn on inactive level = 2 service_status = get_service_status(sys.argv[1]) if loaded(service_status)[0] is False: p.exit(3, "%s - %s" % (service_status['name'], loaded(service_status)[1]), "\n" + service_status['unparsed']) active = service_status['headers']['Active'][0] if active.startswith("inactive") or active.startswith('failed'): p.add_status(level) elif active.startswith("active"): p.add_status(0) else: p.add_status(3) p.add_summary("%s - %s" % ( service_status['name'], active)) p.add_long_output("\n" + service_status['unparsed']) p.exit()
def main(): p = PluginHelper() # Warn on inactive level = 2 service_status = get_service_status(sys.argv[1]) if loaded(service_status)[0] is False: p.exit(3, "%s - %s" % (service_status['name'], loaded(service_status)[1]), "\n" + service_status['unparsed']) active = service_status['headers']['Active'][0] if active.startswith("inactive") or active.startswith('failed'): p.add_status(level) elif active.startswith("active"): p.add_status(0) else: p.add_status(3) p.add_summary("%s - %s" % (service_status['name'], active)) p.add_long_output("\n" + service_status['unparsed']) p.exit()
#!/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 from pynag.Plugins import PluginHelper, ok # Create an instance of PluginHelper() my_plugin = PluginHelper() # Feed fake data for range checking my_plugin.parser.add_option('-F', dest='fakedata', help='fake data to test thresholds') # Activate my_plugin.parse_arguments() my_plugin.add_status(ok) my_plugin.add_summary(my_plugin.options.fakedata) my_plugin.add_metric('fakedata', my_plugin.options.fakedata) my_plugin.check_all_metrics() my_plugin.exit()
#!/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 from pynag.Plugins import PluginHelper,ok # Create an instance of PluginHelper() my_plugin = PluginHelper() # Feed fake data for range checking my_plugin.parser.add_option('-F', dest='fakedata', help='fake data to test thresholds') # Activate my_plugin.parse_arguments() my_plugin.add_status(ok) my_plugin.add_summary(my_plugin.options.fakedata) my_plugin.add_metric('fakedata', my_plugin.options.fakedata) my_plugin.check_all_metrics() my_plugin.exit()
class PluginHelper(unittest.TestCase): def setUp(self): self.argv_store = sys.argv from pynag.Plugins import PluginHelper self.my_plugin = PluginHelper() self.my_plugin.parser.add_option('-F', dest='fakedata', help='fake data to test thresholds') sys.stdout = StringIO() def tearDown(self): sys.argv = self.argv_store sys.stdout = original_stdout def run_expect(self, case, value, expected_exit): sys.argv = [sys.argv[0]] + case.split() + ('-F %s' % value).split() self.my_plugin.parse_arguments() self.my_plugin.add_status(pynag.Plugins.ok) self.my_plugin.add_summary(self.my_plugin.options.fakedata) self.my_plugin.add_metric('fakedata', self.my_plugin.options.fakedata) try: self.my_plugin.check_all_metrics() self.my_plugin.exit() 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') finally: signal.alarm(0) # 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 = '--th=metric=fakedata,ok=0..10,warn=10..20' self.run_expect(case, -23, 2) def test_number_2(self): case = '--th=metric=fakedata,ok=0..10,warn=10..20' self.run_expect(case, 3, 0) def test_number_3(self): case = '--th=metric=fakedata,ok=0..10,warn=10..20' self.run_expect(case, 13, 1) def test_number_4(self): case = '--th=metric=fakedata,ok=0..10,warn=10..20' self.run_expect(case, 23, 2) # Same as above. Negative "stuff" is OK def test_number_5(self): case = '--th=metric=fakedata,ok=inf..10,warn=10..20' self.run_expect(case, '-23', 0) def test_number_6(self): case = '--th=metric=fakedata,ok=inf..10,warn=10..20' self.run_expect(case, '3', 0) def test_number_7(self): case = '--th=metric=fakedata,ok=inf..10,warn=10..20' self.run_expect(case, '13', 1) def test_number_8(self): case = '--th=metric=fakedata,ok=inf..10,warn=10..20' self.run_expect(case, '23', 2) # 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 = '--th=metric=fakedata,warn=0..10,crit=20..inf' self.run_expect(case, '-23', 0) def test_number_10(self): case = '--th=metric=fakedata,warn=0..10,crit=20..inf' self.run_expect(case, '3', 1) def test_number_11(self): case = '--th=metric=fakedata,warn=0..10,crit=20..inf' self.run_expect(case, '13', 0) def test_number_12(self): case = '--th=metric=fakedata,warn=0..10,crit=20..inf' self.run_expect(case, '23', 2) # Critical if "stuff" is less than 1 def test_number_13(self): case = '--th=metric=fakedata,ok=1..inf' self.run_expect(case, '-23', 2) def test_number_14(self): case = '--th=metric=fakedata,ok=1..inf' self.run_expect(case, '0', 2) def test_number_15(self): case = '--th=metric=fakedata,ok=1..inf' self.run_expect(case, '13', 0) def test_number_16(self): case = '--th=metric=fakedata,ok=1..inf' self.run_expect(case, '23', 0) # 1-9 is warning, negative or above 10 is critical def test_number_17(self): case = '--th=metric=fakedata,warn=1..9,crit=^0..10' self.run_expect(case, '-23', 2) def test_number_18(self): case = '--th=metric=fakedata,warn=1..9,crit=^0..10' self.run_expect(case, '0', 0) def test_number_19(self): case = '--th=metric=fakedata,warn=1..9,crit=^0..10' self.run_expect(case, '7', 1) def test_number_20(self): case = '--th=metric=fakedata,warn=1..9,crit=^0..10' self.run_expect(case, '23', 2) # The only noncritical range is 5:6 def test_number_21(self): case = '--th=metric=fakedata,ok=5..6' self.run_expect(case, '-23', 2) def test_number_22(self): case = '--th=metric=fakedata,ok=5..6' self.run_expect(case, '0', 2) def test_number_23(self): case = '--th=metric=fakedata,ok=5..6' self.run_expect(case, '2', 2) def test_number_24(self): case = '--th=metric=fakedata,ok=5..6' self.run_expect(case, '5', 0) def test_number_25(self): case = '--th=metric=fakedata,ok=5..6' self.run_expect(case, '6', 0) def test_number_26(self): case = '--th=metric=fakedata,ok=5..6' self.run_expect(case, '7', 2) # Critical if "stuff" is 10 to 20 def test_number_27(self): case = '--th=metric=fakedata,ok=^10..20' self.run_expect(case, '-23', 0) def test_number_28(self): case = '--th=metric=fakedata,ok=^10..20' self.run_expect(case, '0', 0) def test_number_29(self): case = '--th=metric=fakedata,ok=^10..20' self.run_expect(case, '2', 0) def test_number_30(self): case = '--th=metric=fakedata,ok=^10..20' self.run_expect(case, '10', 2) def test_number_31(self): case = '--th=metric=fakedata,ok=^10..20' self.run_expect(case, '15', 2) def test_number_32(self): case = '--th=metric=fakedata,ok=^10..20' self.run_expect(case, '20', 2) def test_number_33(self): case = '--th=metric=fakedata,ok=^10..20' self.run_expect(case, '23', 0) # Cmdline thresholds pass but we insert a "hardcoded" metric with thresholds # which will also be evaluated def test_number_34(self): # Extra case with hardcoded thresholds self.my_plugin.add_metric('fakedata2', value='15', warn='0..10', crit='10..inf') case = '--th=metric=fakedata,ok=0..10,warn=10..20' self.run_expect(case, 3, 2) def test_number_35(self): # Extra case with hardcoded thresholds self.my_plugin.add_metric('fakedata2', value='9', warn='0..10', crit='10..inf') case = '--th=metric=fakedata,ok=0..10,warn=10..20' self.run_expect(case, 3, 1) def test_number_36(self): # Extra case with hardcoded thresholds self.my_plugin.add_metric('fakedata2', value='-4', warn='0..10', crit='10..inf') case = '--th=metric=fakedata,ok=0..10,warn=10..20' self.run_expect(case, 3, 0) def testTimeout(self): try: self.my_plugin.set_timeout(1) time.sleep(1) self.assertTrue(False, "Code should have timed out by now") except SystemExit as e: self.assertEquals(type(e), type(SystemExit())) self.assertEquals(e.code, pynag.Plugins.unknown) self.assertTrue(True, "Timeout occured in plugin, just like expected.")