Ejemplo n.º 1
0
	def do_one_test(self, ssl=True, length=1024):
		conf = self.conf
		conf.set_int('/settings/NRPE/test_nrpe_server', 'payload length', length)
		conf.set_bool('/settings/NRPE/test_nrpe_server', 'use ssl', ssl)
		conf.set_bool('/settings/NRPE/test_nrpe_server', 'allow arguments', True)
		# TODO: conf.set_string('/settings/NRPE/test_nrpe_server', 'certificate', ssl)
		self.core.reload('test_nrpe_server')

		conf.set_string('/settings/NRPE/test_nrpe_client/targets/default', 'address', 'nrpe://127.0.0.1:35666')
		conf.set_bool('/settings/NRPE/test_nrpe_client/targets/default', 'use ssl', not ssl)
		conf.set_int('/settings/NRPE/test_nrpe_client/targets/default', 'payload length', length*3)

		conf.set_string('/settings/NRPE/test_nrpe_client/targets/invalid', 'address', 'nrpe://127.0.0.1:25666')
		conf.set_bool('/settings/NRPE/test_nrpe_client/targets/invalid', 'use ssl', not ssl)
		conf.set_int('/settings/NRPE/test_nrpe_client/targets/invalid', 'payload length', length*2)

		conf.set_string('/settings/NRPE/test_nrpe_client/targets/valid', 'address', 'nrpe://127.0.0.1:15666')
		conf.set_bool('/settings/NRPE/test_nrpe_client/targets/valid', 'use ssl', ssl)
		conf.set_int('/settings/NRPE/test_nrpe_client/targets/valid', 'payload length', length)
		self.core.reload('test_nrpe_client')
		
		result = TestResult('ssl=%s, length=%s'%(ssl, length))
		result.add_message(isOpen('127.0.0.1', 15666), 'Checking that port is open (server is up)')
		result.add(self.test_one(ssl, length, state = status.UNKNOWN, tag = 'unknown'))
		result.add(self.test_one(ssl, length, state = status.OK, tag = 'ok'))
		result.add(self.test_one(ssl, length, state = status.WARNING, tag = 'warn'))
		result.add(self.test_one(ssl, length, state = status.CRITICAL, tag = 'crit'))
		return result
Ejemplo n.º 2
0
	def submit_payload(self, encryption, target, length, source, status, msg, perf, tag):
		message = plugin_pb2.SubmitRequestMessage()
		
		message.header.version = plugin_pb2.Common.VERSION_1
		message.header.recipient_id = target
		message.channel = 'nsca_test_outbox'
		host = message.header.hosts.add()
		host.id = target
		if (target == 'valid'):
			pass
		else:
			host.address = "127.0.0.1:15667"
			enc = host.metadata.add()
			enc.key = "encryption"
			enc.value = encryption
			enc = host.metadata.add()
			enc.key = "password"
			enc.value = 'pwd-%s'%encryption
			enc = host.metadata.add()
			enc.key = "payload length"
			enc.value = '%d'%length

		uid = str(uuid.uuid4())
		payload = message.payload.add()
		payload.result = status
		payload.command = uid
		payload.message = '%s - %s'%(uid, msg)
		payload.source = source
		(result_code, err) = self.core.submit('nsca_test_outbox', message.SerializeToString())

		result = TestResult('Testing payload submission (via API): %s'%tag)
		result.add_message(result_code, 'Submission succedded %s/exec:1'%tag)
		result.add_message(len(err) == 0, 'Testing to send message using %s/sbp'%tag, err)
		self.wait_and_validate(uid, result, msg, perf, '%s/spb'%tag)
		return result
Ejemplo n.º 3
0
	def test_one_proc_int(self, proc, actual, asked):
		result = TestResult('Checking one state %d/%d'%(actual, asked))
		for s in ['eq', 'gt', 'lt', 'ne']:
			(retcode, retmessage, retperf) = core.simple_query('CheckProcState', ['ShowAll', 'critCount=%s:%d'%(s, asked), '%s=started'%proc])
			expected = self.get_expected_state(actual, s, asked)
			result.add_message(retcode == expected, 'Process: %s (%d %s %d): %s'%(proc, actual, s, asked, retmessage), 'Expected %s'%(expected))
		return result
Ejemplo n.º 4
0
	def test_one_proc_int(self, proc, actual, asked):
		result = TestResult('Checking one state %d/%d'%(actual, asked))
		for s in ['eq', 'gt', 'lt', 'ne']:
			(retcode, retmessage, retperf) = self.core.simple_query('check_process', ['empty-state=OK', 'show-all', 'crit=count %s %d'%(s, asked), "filter=exe='%s'"%proc])
			expected = self.get_expected_state(actual, s, asked)
			result.add_message(retcode == expected, 'Process: %s (%d %s %d): %s'%(proc, actual, s, asked, retmessage), '%s != %s'%(retcode, expected))
		return result
Ejemplo n.º 5
0
    def run_test_counters(self):
        result = TestResult('Checking CheckCounter')
        (result_code,
         result_message) = self.core.simple_exec('any', 'pdh',
                                                 ['--list', '--all'])
        count = 0
        data = []
        for m in result_message:
            data = m.splitlines()
            count = len(data)
        result.add_message(count > 0,
                           'Managed to retrieve counters: %d' % count)
        if len(data) == 0:
            result.add_message(False,
                               'Failed to find counters: %s' % result_message)
        counters = []

        (subres, name1) = self.check_and_lookup_index(4)
        result.add(subres)
        (subres, name2) = self.check_and_lookup_index(26)
        result.add(subres)

        result.add(self.check_counter('\\4\\26', ['ShowAll', 'MaxWarn=10']))
        result.add(
            self.check_counter('\\4\\26', ['index', 'ShowAll', 'MaxWarn=10']))
        result.add(
            self.check_counter('\\%s\\%s' % (name1, name2),
                               ['ShowAll', 'MaxWarn=10']))
        return result
Ejemplo n.º 6
0
    def run_test(self, cases=None):
        result = TestResult()
        cryptos = [
            "none", "xor", "des", "3des", "cast128", "xtea", "blowfish",
            "twofish", "rc2", "aes", "aes256", "aes192", "aes128", "serpent",
            "gost", "3way"
        ]
        for c in cryptos:
            run_l = None
            run_this = False
            if cases:
                tmp_l = None
                for case in cases:
                    if '-' in case:
                        (run_c, tmp_l) = case.split('-', 2)
                    else:
                        run_c = case
                    if c == run_c:
                        run_l = int(tmp_l) if tmp_l else None
                        run_this = True
                if not run_this:
                    result.add_message(True, 'Ignoring: %s-*' % c)
                    continue
            for l in [128, 512, 1024, 4096]:
                if not run_l or run_l == l:
                    result.add(self.test_one_crypto(c, l))
                else:
                    result.add_message(True, 'Ignoring: %s-%s' % (c, l))

        return result
Ejemplo n.º 7
0
	def submit_via_exec(self, encryption, target, length, source, status, msg, perf, tag):
		uid = str(uuid.uuid4())
	
		args = [
			#'--exec', 'submit', 
			'--alias', uid, 
			'--result', '%d'%status, 
			'--retries', '0',
			'--message', '%s - %s'%(uid, msg), 
			'--target', target,
			]
		if (target == 'valid'):
			pass
		else:
			args.extend([
				'--address', '127.0.0.1:15667',
				'--encryption', encryption,
				'--password', 'pwd-%s'%encryption,
				'--payload-length', '%d'%length,
			])
		(result_code, result_message) = self.core.simple_exec('any', 'nsca_submit', args)
		result = TestResult('Testing payload submission (via command line exec): %s'%tag)
		
		result.add_message(result_code == 0, 'Testing to send message using %s/exec:1'%tag)
		result.add_message(len(result_message) == 1, 'Testing to send message using %s/exec:2'%tag)
		if len(result_message) == 1:
			result.assert_equals(result_message[0], "Submission successful", 'Testing to send message using %s/exec:3'%tag)
		self.wait_and_validate(uid, result, msg, perf, '%s/seb'%tag)
		return result
Ejemplo n.º 8
0
    def do_one_test(self, ssl=True, length=1024):
        conf = self.conf
        conf.set_int("/settings/NRPE/test_nrpe_server", "payload length", length)
        conf.set_bool("/settings/NRPE/test_nrpe_server", "use ssl", ssl)
        conf.set_bool("/settings/NRPE/test_nrpe_server", "allow arguments", True)
        # TODO: conf.set_string('/settings/NRPE/test_nrpe_server', 'certificate', ssl)
        self.core.reload("test_nrpe_server")

        conf.set_string("/settings/NRPE/test_nrpe_client/targets/default", "address", "nrpe://127.0.0.1:35666")
        conf.set_bool("/settings/NRPE/test_nrpe_client/targets/default", "use ssl", not ssl)
        conf.set_int("/settings/NRPE/test_nrpe_client/targets/default", "payload length", length * 3)

        conf.set_string("/settings/NRPE/test_nrpe_client/targets/invalid", "address", "nrpe://127.0.0.1:25666")
        conf.set_bool("/settings/NRPE/test_nrpe_client/targets/invalid", "use ssl", not ssl)
        conf.set_int("/settings/NRPE/test_nrpe_client/targets/invalid", "payload length", length * 2)

        conf.set_string("/settings/NRPE/test_nrpe_client/targets/valid", "address", "nrpe://127.0.0.1:15666")
        conf.set_bool("/settings/NRPE/test_nrpe_client/targets/valid", "use ssl", ssl)
        conf.set_int("/settings/NRPE/test_nrpe_client/targets/valid", "payload length", length)
        self.core.reload("test_nrpe_client")

        result = TestResult("ssl=%s, length=%s" % (ssl, length))
        result.add_message(isOpen("127.0.0.1", 15666), "Checking that port is open (server is up)")
        result.add(self.test_one(ssl, length, state=status.UNKNOWN, tag="unknown"))
        result.add(self.test_one(ssl, length, state=status.OK, tag="ok"))
        result.add(self.test_one(ssl, length, state=status.WARNING, tag="warn"))
        result.add(self.test_one(ssl, length, state=status.CRITICAL, tag="crit"))
        return result
Ejemplo n.º 9
0
	def test_one_crypto(self, crypto, length=512):
		log('Testing: %s %d'%(crypto, length))
		conf = self.conf
		conf.set_string('/settings/NSCA/test_nsca_server', 'encryption', '%s'%crypto)
		conf.set_string('/settings/NSCA/test_nsca_server', 'password', 'pwd-%s'%crypto)
		conf.set_int('/settings/NSCA/test_nsca_server', 'payload length', length)
		self.core.reload('test_nsca_server')
		
		conf.set_string('/settings/NSCA/test_nsca_client/targets/default', 'address', 'nsca://127.0.0.1:35667')
		conf.set_string('/settings/NSCA/test_nsca_client/targets/default', 'encryption', '%s'%crypto)
		conf.set_string('/settings/NSCA/test_nsca_client/targets/default', 'password', 'default-%s'%crypto)
		conf.set_int('/settings/NSCA/test_nsca_client/targets/default', 'payload length', length*3)

		conf.set_string('/settings/NSCA/test_nsca_client/targets/invalid', 'address', 'nsca://127.0.0.1:25667')
		conf.set_string('/settings/NSCA/test_nsca_client/targets/invalid', 'encryption', 'none')
		conf.set_string('/settings/NSCA/test_nsca_client/targets/invalid', 'password', 'invalid-%s'%crypto)
		conf.set_int('/settings/NSCA/test_nsca_client/targets/invalid', 'payload length', length*2)

		conf.set_string('/settings/NSCA/test_nsca_client/targets/valid', 'address', 'nsca://127.0.0.1:15667')
		conf.set_string('/settings/NSCA/test_nsca_client/targets/valid', 'encryption', '%s'%crypto)
		conf.set_string('/settings/NSCA/test_nsca_client/targets/valid', 'password', 'pwd-%s'%crypto)
		conf.set_int('/settings/NSCA/test_nsca_client/targets/valid', 'payload length', length)
		self.core.reload('test_nsca_client')

		
		
		result = TestResult('Testing: %s/%d'%(crypto, length))
		result.add_message(isOpen('localhost', 15667), 'Checking that port is open')
		for target in ['valid', 'test_rp', 'invalid']:
			result.add(self.test_one_crypto_full(crypto, status.UNKNOWN, 'unknown', target, length))
			result.add(self.test_one_crypto_full(crypto, status.OK, 'ok', target, length))
			result.add(self.test_one_crypto_full(crypto, status.WARNING, 'warn', target, length))
			result.add(self.test_one_crypto_full(crypto, status.CRITICAL, 'crit', target, length))
		return result
Ejemplo n.º 10
0
	def run_test(self, cases=None):
		result = TestResult()
		cryptos = ["none", "xor", "des", "3des", "cast128", "xtea", "blowfish", "twofish", "rc2", "aes", "aes256", "aes192", "aes128", "serpent", "gost", "3way"]
		for c in cryptos:
			run_l = None
			run_this = False
			if cases:
				tmp_l = None
				for case in cases:
					if '-' in case:
						(run_c, tmp_l) = case.split('-', 2)
					else:
						run_c = case
					if c == run_c:
						run_l = int(tmp_l) if tmp_l else None
						run_this = True
				if not run_this:
					result.add_message(True, 'Ignoring: %s-*'%c)
					continue
			for l in [128, 512, 1024, 4096]:
				if not run_l or run_l == l:
					result.add(self.test_one_crypto(c, l))
				else:
					result.add_message(True, 'Ignoring: %s-%s'%(c, l))
			#result.add(self.test_one_crypto(c))
		
		return result
Ejemplo n.º 11
0
	def do_one_test(self, ssl=True, length=1024):
		conf = self.conf
		conf.set_int('/settings/NRPE/test_nrpe_server', 'payload length', length)
		conf.set_bool('/settings/NRPE/test_nrpe_server', 'use ssl', ssl)
		conf.set_bool('/settings/NRPE/test_nrpe_server', 'allow arguments', True)
		# TODO: conf.set_string('/settings/NRPE/test_nrpe_server', 'certificate', ssl)
		self.core.reload('test_nrpe_server')

		conf.set_string('/settings/NRPE/test_nrpe_client/targets/default', 'address', 'nrpe://127.0.0.1:35666')
		conf.set_bool('/settings/NRPE/test_nrpe_client/targets/default', 'use ssl', not ssl)
		conf.set_int('/settings/NRPE/test_nrpe_client/targets/default', 'payload length', length*3)

		conf.set_string('/settings/NRPE/test_nrpe_client/targets/invalid', 'address', 'nrpe://127.0.0.1:25666')
		conf.set_bool('/settings/NRPE/test_nrpe_client/targets/invalid', 'use ssl', not ssl)
		conf.set_int('/settings/NRPE/test_nrpe_client/targets/invalid', 'payload length', length*2)

		conf.set_string('/settings/NRPE/test_nrpe_client/targets/valid', 'address', 'nrpe://127.0.0.1:15666')
		conf.set_bool('/settings/NRPE/test_nrpe_client/targets/valid', 'use ssl', ssl)
		conf.set_int('/settings/NRPE/test_nrpe_client/targets/valid', 'payload length', length)
		self.core.reload('test_nrpe_client')
		
		result = TestResult('ssl=%s, length=%s'%(ssl, length))
		result.add_message(isOpen('127.0.0.1', 15666), 'Checking that port is open (server is up)')
		result.add(self.test_one(ssl, length, state = status.UNKNOWN, tag = 'unknown'))
		result.add(self.test_one(ssl, length, state = status.OK, tag = 'ok'))
		result.add(self.test_one(ssl, length, state = status.WARNING, tag = 'warn'))
		result.add(self.test_one(ssl, length, state = status.CRITICAL, tag = 'crit'))
		return result
Ejemplo n.º 12
0
 def check_bound(self, filter, warn, crit, expected):
     alias = "%s/%s/%s" % (filter, warn, crit)
     result = TestResult("Checking %s" % alias)
     args = ["file=%s" % self.work_path, "column-split=,", "filter=%s" % filter, "warn=%s" % warn, "crit=%s" % crit]
     # log("Command: %s"%args)
     (ret, msg, perf) = self.core.simple_query("check_logfile", args)
     log("%s : %s -- %s" % (filter, msg, perf))
     result.add_message(ret == expected, "Check status", "Invalid check status: %s" % ret)
     return result
Ejemplo n.º 13
0
    def test_one_crypto(self, crypto, length=512):
        log('Testing: %s %d' % (crypto, length))
        conf = self.conf
        conf.set_string('/settings/NSCA/test_nsca_server', 'encryption',
                        '%s' % crypto)
        conf.set_string('/settings/NSCA/test_nsca_server', 'password',
                        'pwd-%s' % crypto)
        conf.set_int('/settings/NSCA/test_nsca_server', 'payload length',
                     length)
        self.core.reload('test_nsca_server')

        conf.set_string('/settings/NSCA/test_nsca_client/targets/default',
                        'address', 'nsca://127.0.0.1:35667')
        conf.set_string('/settings/NSCA/test_nsca_client/targets/default',
                        'encryption', '%s' % crypto)
        conf.set_string('/settings/NSCA/test_nsca_client/targets/default',
                        'password', 'default-%s' % crypto)
        conf.set_int('/settings/NSCA/test_nsca_client/targets/default',
                     'payload length', length * 3)

        conf.set_string('/settings/NSCA/test_nsca_client/targets/invalid',
                        'address', 'nsca://127.0.0.1:25667')
        conf.set_string('/settings/NSCA/test_nsca_client/targets/invalid',
                        'encryption', 'none')
        conf.set_string('/settings/NSCA/test_nsca_client/targets/invalid',
                        'password', 'invalid-%s' % crypto)
        conf.set_int('/settings/NSCA/test_nsca_client/targets/invalid',
                     'payload length', length * 2)

        conf.set_string('/settings/NSCA/test_nsca_client/targets/valid',
                        'address', 'nsca://127.0.0.1:15667')
        conf.set_string('/settings/NSCA/test_nsca_client/targets/valid',
                        'encryption', '%s' % crypto)
        conf.set_string('/settings/NSCA/test_nsca_client/targets/valid',
                        'password', 'pwd-%s' % crypto)
        conf.set_int('/settings/NSCA/test_nsca_client/targets/valid',
                     'payload length', length)
        self.core.reload('test_nsca_client')

        result = TestResult('Testing: %s/%d' % (crypto, length))
        result.add_message(isOpen('localhost', 15667),
                           'Checking that port is open')
        for target in ['valid', 'test_rp', 'invalid']:
            result.add(
                self.test_one_crypto_full(crypto, status.UNKNOWN, 'unknown',
                                          target, length))
            result.add(
                self.test_one_crypto_full(crypto, status.OK, 'ok', target,
                                          length))
            result.add(
                self.test_one_crypto_full(crypto, status.WARNING, 'warn',
                                          target, length))
            result.add(
                self.test_one_crypto_full(crypto, status.CRITICAL, 'crit',
                                          target, length))
        return result
Ejemplo n.º 14
0
	def check_bound(self, filter, warn, crit, expected):
		alias = '%s/%s/%s'%(filter, warn, crit)
		result = TestResult('Checking %s'%alias)
		args = ['file=%s'%self.work_path, 'column-split=,', 'filter=%s'%filter, 'warn=%s'%warn, 'crit=%s'%crit]
		#log("Command: %s"%args)
		(ret, msg, perf) = self.core.simple_query('check_logfile', args)
		log("Messge: %s"%msg)
		log("Perf: %s"%perf)
		result.add_message(ret == expected, 'Check status', 'Invalid check status: %s'%ret)
		return result
Ejemplo n.º 15
0
	def check_no_files(self):
		self.setup_files()
		result = TestResult('Checking no files')
		args = ['path=%s\\aaa.txt'%self.work_path]
		(ret, msg, perf) = self.core.simple_query('check_files', args)
		#log("Messge: %s"%msg)
		#log("Perf: %s"%perf)
		result.add_message(ret == status.UNKNOWN, 'Check that we get correct status back', 'Return status was wrong: %s'%ret)
		#count = self.get_count(perf)
		result.assert_equals(msg, 'No files found', 'Validate return message')
			
		return result
Ejemplo n.º 16
0
	def check_cli_query(self, query, count, check, ns = None):
		result = TestResult('Checking CLI query %s'%query)
		args = ['--select', query, '--simple']
		if ns != None:
			args.extend(['--namespace', ns])
		(ret, ns_msgs) = self.core.simple_exec('any', 'wmi', args)
		result.assert_equals(ret, 1, 'Check that --select returns ok')
		result.assert_equals(len(ns_msgs), 1, 'Check that --select returns one entry')
		if len(ns_msgs) > 0:
			result.add_message(count(ns_msgs[0].splitlines()), 'Check that it contains the right number of rows')
			result.add_message(check(ns_msgs[0]), 'Check that it contains the right data')
		return result
Ejemplo n.º 17
0
	def check_files(self, filter, text, expected):
		alias = '%s: %s'%(text, filter)
		result = TestResult('Checking %s'%alias)
		args = ['file=%s'%self.work_path, 'column-spli=,', 'filter=%s'%filter, 'warn=count gt %d'%expected, 'crit=count gt %d'%expected]
		#log("Command: %s"%args)
		(ret, msg, perf) = self.core.simple_query('check_logfile', args)
		#log("Messge: %s"%msg)
		#log("Perf: %s"%perf)
		count = self.get_count(perf)
		result.add_message(count == expected, 'Check that we get correct number of files', 'Invalid result: got %s expected %s'%(count, expected))
		result.add_message(ret == status.OK, 'Check that we get correct status back (OK)', 'We did not get a OK back as expected: %s'%ret)
		return result
Ejemplo n.º 18
0
	def check_cli_query(self, query, count, check, ns = None):
		result = TestResult('Checking CLI query %s'%query)
		args = ['--select', query, '--simple']
		if ns != None:
			args.extend(['--namespace', ns])
		(ret, ns_msgs) = core.simple_exec('any', 'wmi', args)
		result.assert_equals(ret, status.OK, 'Check that --select returns ok')
		result.assert_equals(len(ns_msgs), 1, 'Check that --select returns one entry')
		if len(ns_msgs) > 0:
			result.add_message(count(ns_msgs[0].splitlines()), 'Check that it contains the right number of rows')
			result.add_message(check(ns_msgs[0]), 'Check that it contains the right data')
		return result
Ejemplo n.º 19
0
	def run_test(self):
		result = TestResult('Checking CheckEventLog')
		cache = TestResult('Checking CheckEventLog CACHE')
		
		(res, msg, perf) = Core.get().simple_query('CheckEventLogCACHE', ['warn=eq:1', 'crit=eq:2'])
		cache.assert_equals(res, status.OK, "Validate cache is empty")
		cache.assert_equals(msg, 'Eventlog check ok', "Validate cache is ok: %s"%msg)
		
		
		a_list = ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
		result.add_message(self.test_create('Application Error', 1000, 'error', 0, 0, 0, a_list), 'Testing to create a log message')
		sleep(500)
		result.assert_equals(self.last_message, 'error Application Error: ', 'Verify that message is sent through')
		result.assert_equals(self.message_count, 1, 'Verify that onlyt one message is sent through')

		result.add_message(self.test_create('Application Error', 1000, 'info', 2, 1, 5, a_list), 'Testing to create a log message')
		sleep(500)
		result.assert_equals(self.last_message, 'info Application Error: ', 'Verify that message is sent through')
		result.assert_equals(self.message_count, 1, 'Verify that onlyt one message is sent through')

		(res, msg, perf) = Core.get().simple_query('CheckEventLogCACHE', ['warn=eq:1', 'crit=eq:2'])
		cache.assert_equals(res, status.CRITICAL, "Validate cache has items")
		cache.assert_equals(msg, 'error Application Error: , info Application Error: , eventlog: 2 = critical', "Validate cache is ok: %s"%msg)
		cache.assert_equals(perf, "'eventlog'=2;1;2", "Validate cache is ok: %s"%msg)
		(res, msg, perf) = Core.get().simple_query('CheckEventLogCACHE', ['warn=eq:1', 'crit=eq:2'])
		cache.assert_equals(res, status.OK, "Validate cache is empty (again)")
		cache.assert_equals(msg, 'Eventlog check ok', "Validate cache is ok: %s"%msg)
		
		result.add(cache)
		
		r = TestResult('Checking filters')
		r.add(self.test_w_expected('id = 1000 and generated gt 1m', '%generated%', 0))
		r.add(self.test_w_expected('id = 1000 and generated gt -1m', '%generated%', 2))
		r.add(self.test_w_expected('id = 1000 and generated gt -1m and id = 1000', '%generated%: %id%, %category%', 2))
		r.add(self.test_w_expected('id = 1000 and generated gt -1m and category = 1', '%category%', 1))
		r.add(self.test_w_expected('id = 1000 and generated gt -1m and category = 0', '%category%', 1))
		r.add(self.test_w_expected("id = 1000 and generated gt -1m and level = 'error'", '%level%', 1))
		r.add(self.test_w_expected("id = 1000 and generated gt -1m and level = 'info'", '%level%', 1))
		result.add(r)
		
		r = TestResult('Checking syntax')
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 0', '%source% - %type% - %category%', 'Application Error - error - 0'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 1', '%source% - %type% - %category%', 'Application Error - info - 1'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 0', '%facility% - %qualifier% - %customer%', '0 - 0 - 0'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 1', '%facility% - %qualifier% - %customer%', '5 - 5 - 0'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 0', '%rawid% - %severity% - %log%', '1000 - success - Application'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 1', '%rawid% - %severity% - %log%', '2147812328 - warning - Application'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 0', '%id% - %strings%', '1000 - a, a, a, a, a, a, a, a, a, a, a, a, a, '))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 1', '%id% - %strings%', '1000 - a, a, a, a, a, a, a, a, a, a, a, a, a, '))
		result.add(r)

		return result
Ejemplo n.º 20
0
    def check_files(self, filter, text, expected, extra_args):
        self.setup_files()
        alias = '%s: %s' % (text, filter)
        result = TestResult('Checking %s' % alias)
        args = [
            'path=%s' % self.work_path,
            'filter=%s' % filter, 'syntax=%filename%: %size% %write%',
            'warn=gt:1', 'crit=gt:3'
        ]
        args.extend(extra_args)
        (ret, msg, perf) = self.core.simple_query('CheckFiles', args)
        #log("Messge: %s"%msg)
        #log("Perf: %s"%perf)
        count = self.get_count(perf)
        result.add_message(
            count == expected, 'Check that we get correct number of files',
            'Invalid result: got %s expected %s' % (count, expected))
        if expected > 3:
            result.add_message(
                ret == status.CRITICAL,
                'Check that we get correct status back (CRIT)',
                'We did not get a CRIT back as expected: %s' % ret)
        elif expected > 1:
            result.add_message(
                ret == status.WARNING,
                'Check that we get correct status back (WARN)',
                'We did not get a WARN back as expected: %s' % ret)
        else:
            result.add_message(
                ret == status.OK, 'Check that we get correct status back (OK)',
                'We did not get a OK back as expected: %s' % ret)

        return result
Ejemplo n.º 21
0
    def check_no_files(self):
        self.setup_files()
        result = TestResult('Checking no files')
        args = ['path=%s\\aaa.txt' % self.work_path]
        (ret, msg, perf) = self.core.simple_query('check_files', args)
        #log("Messge: %s"%msg)
        #log("Perf: %s"%perf)
        result.add_message(ret == status.UNKNOWN,
                           'Check that we get correct status back',
                           'Return status was wrong: %s' % ret)
        #count = self.get_count(perf)
        result.assert_equals(msg, 'No files found', 'Validate return message')

        return result
Ejemplo n.º 22
0
	def check_and_lookup_index(self, index):
		result = TestResult('Validating index: %s'%index)
		(result_code, result_message) = self.core.simple_exec('any', 'pdh', ['--lookup-name', '%s'%index, '--porcelain'])
		result.assert_equals(result_code, 0, 'Result code')
		result.assert_equals(len(result_message), 1, 'result length')
		result.add_message(len(result_message[0])>0, 'result length')
		name = result_message[0]
		
		(result_code, result_message) = self.core.simple_exec('any', 'pdh', ['--lookup-index', name, '--porcelain'])
		result.assert_equals(result_code, 0, 'Result code')
		result.assert_equals(len(result_message), 1, 'result length')
		result.add_message(len(result_message[0])>0, 'result length')
		result.assert_equals(result_message[0], '%s'%index, 'result length')
	
		return result, name
Ejemplo n.º 23
0
 def test_one_proc_int(self, proc, actual, asked):
     result = TestResult('Checking one state %d/%d' % (actual, asked))
     for s in ['eq', 'gt', 'lt', 'ne']:
         (retcode, retmessage,
          retperf) = core.simple_query('CheckProcState', [
              'ShowAll',
              'critCount=%s:%d' % (s, asked),
              '%s=started' % proc
          ])
         expected = self.get_expected_state(actual, s, asked)
         result.add_message(
             retcode == expected, 'Process: %s (%d %s %d): %s' %
             (proc, actual, s, asked, retmessage),
             'Expected %s' % (expected))
     return result
Ejemplo n.º 24
0
	def run_test(self):
		result = TestResult()
		start = time()
		total_count = install_checks*time_to_run/5
		while self.stress_count < total_count:
			log('Waiting for %d: %d/%d'%(total_count, self.stress_count, self.noop_count))
			old_stress_count = self.stress_count
			old_noop_count = self.noop_count
			sleep(5000)
			result.add_message(True, 'Commands/second: %d/%d'%( (self.stress_count-old_stress_count)/5, (self.noop_count-old_noop_count)/5 ) )
		elapsed = (time() - start)
		if elapsed == 0:
			elapsed = 1
		result.add_message(True, 'Summary Collected %d instance in %d seconds: %d/s'%(self.stress_count, elapsed, self.stress_count/elapsed))
		return result
Ejemplo n.º 25
0
 def check_bound(self, filter, warn, crit, expected):
     alias = '%s/%s/%s' % (filter, warn, crit)
     result = TestResult('Checking %s' % alias)
     args = [
         'file=%s' % self.work_path, 'column-split=,',
         'filter=%s' % filter,
         'warn=%s' % warn,
         'crit=%s' % crit
     ]
     #log("Command: %s"%args)
     (ret, msg, perf) = self.core.simple_query('check_logfile', args)
     log("%s : %s -- %s" % (filter, msg, perf))
     result.add_message(ret == expected, 'Check status',
                        'Invalid check status: %s' % ret)
     return result
Ejemplo n.º 26
0
 def test_one_proc_int(self, proc, actual, asked):
     result = TestResult('Checking one state %d/%d' % (actual, asked))
     for s in ['eq', 'gt', 'lt', 'ne']:
         (retcode, retmessage,
          retperf) = self.core.simple_query('check_process', [
              'empty-state=OK', 'show-all',
              'crit=count %s %d' % (s, asked),
              "filter=exe='%s'" % proc
          ])
         expected = self.get_expected_state(actual, s, asked)
         result.add_message(
             retcode == expected, 'Process: %s (%d %s %d): %s' %
             (proc, actual, s, asked, retmessage),
             '%s != %s' % (retcode, expected))
     return result
Ejemplo n.º 27
0
    def submit_via_exec(self, encryption, target, length, source, status, msg,
                        perf, tag):
        uid = str(uuid.uuid4())

        args = [
            #'--exec', 'submit',
            '--alias',
            uid,
            '--result',
            '%d' % status,
            '--retries',
            '0',
            '--message',
            '%s - %s' % (uid, msg),
            '--target',
            target,
        ]
        if (target == 'valid'):
            pass
        else:
            args.extend([
                '--address',
                '127.0.0.1:15667',
                '--encryption',
                encryption,
                '--password',
                'pwd-%s' % encryption,
                '--payload-length',
                '%d' % length,
            ])
        (result_code,
         result_message) = self.core.simple_exec('test_nsca_client',
                                                 'nsca_submit', args)
        result = TestResult(
            'Testing payload submission (via command line exec): %s' % tag)

        result.add_message(result_code == 0,
                           'Testing to send message using %s/exec:1' % tag)
        result.add_message(
            len(result_message) == 1,
            'Testing to send message using %s/exec:2' % tag)
        if len(result_message) == 1:
            result.assert_equals(
                result_message[0], "Submission successful",
                'Testing to send message using %s/exec:3' % tag)
        self.wait_and_validate(uid, result, msg, perf, '%s/exec' % tag)
        return result
Ejemplo n.º 28
0
 def check_files(self, filter, text, expected):
     alias = "%s: %s" % (text, filter)
     result = TestResult("Checking %s" % alias)
     args = [
         "file=%s" % self.work_path,
         "column-split=,",
         "filter=%s" % filter,
         "warn=count gt %d" % expected,
         "crit=count gt %d" % expected,
     ]
     # log("Command: %s"%args)
     (ret, msg, perf) = self.core.simple_query("check_logfile", args)
     log("%s : %s -- %s" % (filter, msg, perf))
     count = self.get_count(perf)
     result.add_message(count == expected, "%s - number of files" % filter, "got %s expected %s" % (count, expected))
     result.add_message(ret == status.OK, "%s -- status", "got %s expected OK" % ret)
     return result
Ejemplo n.º 29
0
    def check_and_lookup_index(self, index):
        result = TestResult('Validating index: %s' % index)
        (result_code, result_message) = self.core.simple_exec(
            'any', 'pdh',
            ['--lookup-name', '%s' % index, '--porcelain'])
        result.assert_equals(result_code, 0, 'Result code')
        result.assert_equals(len(result_message), 1, 'result length')
        result.add_message(len(result_message[0]) > 0, 'result length')
        name = result_message[0]

        (result_code, result_message) = self.core.simple_exec(
            'any', 'pdh', ['--lookup-index', name, '--porcelain'])
        result.assert_equals(result_code, 0, 'Result code')
        result.assert_equals(len(result_message), 1, 'result length')
        result.add_message(len(result_message[0]) > 0, 'result length')
        result.assert_equals(result_message[0], '%s' % index, 'result length')

        return result, name
Ejemplo n.º 30
0
 def check_files(self, filter, text, expected):
     alias = '%s: %s' % (text, filter)
     result = TestResult('Checking %s' % alias)
     args = [
         'file=%s' % self.work_path, 'column-split=,',
         'filter=%s' % filter,
         'warn=count gt %d' % expected,
         'crit=count gt %d' % expected
     ]
     #log("Command: %s"%args)
     (ret, msg, perf) = self.core.simple_query('check_logfile', args)
     log("%s : %s -- %s" % (filter, msg, perf))
     count = self.get_count(perf)
     result.add_message(count == expected, '%s - number of files' % filter,
                        'got %s expected %s' % (count, expected))
     result.add_message(ret == status.OK, '%s -- status',
                        'got %s expected OK' % ret)
     return result
Ejemplo n.º 31
0
    def run_test(self):
        self.core.load_module('Scheduler', self.sched_alias)
        result = TestResult()
        start = time()

        last_major = 0
        elapsed = time()-start
        while elapsed < 60:
            if elapsed > 0:
                log("testing scheduler %d%% (collected %d instance in %d seconds)"%(elapsed/60*100, self.results_count, elapsed))
            sleep(2000)
            elapsed = time()-start
        result.add_message(True, 'Summary Collected %d instance in %d seconds: %d/s'%(self.results_count, elapsed, self.results_count/elapsed))
        self.check_one(result, "rand", 5, 10)
        self.check_one(result, "1s", 55, 65)
        self.check_one(result, "short", 10, 14)
        self.check_one(result, "30s", 1, 3)
        self.check_one(result, "explicit", 10, 14)
        self.check_one(result, "10s", 5, 7)

        return result
Ejemplo n.º 32
0
	def test_simple(self, command, code, message, perf, tag):
		result = TestResult()
		core = Core.get()
		self.reset_last()
		(ret, msg) = core.simple_submit(self.channel, '%s'%command, code, '%s'%message, '%s'%perf)
		result.add_message(ret, 'Testing channels: %s'%tag, msg)
		r1 = TestResult()
		r1.assert_equals(self.last_status, code, 'Return code')
		r1.assert_equals(self.last_message, message, 'Message')
		r1.assert_equals(self.last_perf, perf, 'Performance data')
		result.add(r1)
		
		self.set_last('', '', code, message, perf)
		(retcode, retmessage, retperf) = core.simple_query(self.channel, [])
		result.add_message(True, 'Testing queries: %s'%tag)
		r2 = TestResult()
		r2.assert_equals(self.last_status, code, 'Return code')
		r2.assert_equals(self.last_message, message, 'Message')
		r2.assert_equals(self.last_perf, perf, 'Performance data')
		result.add(r2)
		return result
Ejemplo n.º 33
0
	def test_simple(self, command, code, message, perf, tag):
		result = TestResult()
		core = Core.get()
		self.reset_last()
		(ret, msg) = core.simple_submit(self.channel, '%s'%command, code, '%s'%message, '%s'%perf)
		result.add_message(ret, 'Testing channels: %s'%tag, msg)
		r1 = TestResult()
		r1.assert_equals(self.last_status, code, 'Return code')
		r1.assert_equals(self.last_message, message, 'Message')
		r1.assert_equals(self.last_perf, perf, 'Performance data')
		result.add(r1)
		
		self.set_last('', '', code, message, perf)
		(retcode, retmessage, retperf) = core.simple_query(self.channel, [])
		result.add_message(True, 'Testing queries: %s'%tag)
		r2 = TestResult()
		r2.assert_equals(self.last_status, code, 'Return code')
		r2.assert_equals(self.last_message, message, 'Message')
		r2.assert_equals(self.last_perf, perf, 'Performance data')
		result.add(r2)
		return result
Ejemplo n.º 34
0
 def run_test(self):
     result = TestResult()
     start = time()
     total_count = install_checks * time_to_run / 5
     while self.stress_count < total_count:
         log('Waiting for %d: %d/%d' %
             (total_count, self.stress_count, self.noop_count))
         old_stress_count = self.stress_count
         old_noop_count = self.noop_count
         sleep(5000)
         result.add_message(
             True, 'Commands/second: %d/%d' %
             ((self.stress_count - old_stress_count) / 5,
              (self.noop_count - old_noop_count) / 5))
     elapsed = (time() - start)
     if elapsed == 0:
         elapsed = 1
     result.add_message(
         True, 'Summary Collected %d instance in %d seconds: %d/s' %
         (self.stress_count, elapsed, self.stress_count / elapsed))
     return result
Ejemplo n.º 35
0
	def run_test(self):
		global time_to_run, check_per_second
		result = TestResult()
		start = time()
		if isinstance(time_to_run, str) and time_to_run == 'infinate':
			time_to_run = -1
		elif isinstance(time_to_run, str):
			time_to_run = 5

		if time_to_run == -1:
			total_count = -1
		else:
			total_count = check_per_second*time_to_run

		if time_to_run != -1:
			self.background = False
			last_major = 0
			while self.results_count < total_count:
				old_stress_count = self.results_count
				old_noop_count = self.check_count
				sleep(5000)
				result.add_message(True, 'Commands/second: %d/%d'%( (self.results_count-old_stress_count)/5, (self.check_count-old_noop_count)/5 ) )
				if (self.results_count*100/total_count) > last_major + 10:
					last_major = last_major + 10
					log('%d%% Complete: %d checks per second <%d/%d>'%(self.results_count*100/total_count, (self.results_count-old_stress_count)/5, self.results_count, total_count))
			elapsed = (time() - start)
			if elapsed == 0:
				elapsed = 1
			result.add_message(True, 'Summary Collected %d instance in %d seconds: %d/s'%(self.results_count, elapsed, self.results_count/elapsed))
		else:
			self.background = True
			result.add_message(True, 'Test running in background, run py_unittest_collect to collect results at any time.')
		return result
Ejemplo n.º 36
0
	def check_counter(self, counter, args):
		result = TestResult('Checking counter: %s'%counter)
		args.append('Counter=%s'%counter)
		(retcode, retmessage, retperf) = self.core.simple_query('CheckCounter', args)
		result.add_message(retcode != status.UNKNOWN, 'Return code: %s'%retcode)
		result.add_message(len(retmessage) > 0, 'Returned message: %s'%retmessage)
		result.add_message(len(retperf) > 0, 'Performance data: %s'%retperf)
		return result
Ejemplo n.º 37
0
	def run_test_counters(self):
		result = TestResult('Checking CheckCounter')
		(result_code, result_message) = self.core.simple_exec('any', 'pdh', ['--list', '--all'])
		count = 0
		data = []
		for m in result_message:
			data = m.splitlines()
			count = len(data)
		result.add_message(count > 0, 'Managed to retrieve counters: %d'%count)
		if len(data) == 0:
			result.add_message(False, 'Failed to find counters: %s'%result_message)
		counters = []
		
		
		(subres, name1) = self.check_and_lookup_index(4)
		result.add(subres)
		(subres, name2) = self.check_and_lookup_index(26)
		result.add(subres)
		
		result.add(self.check_counter('\\4\\26', ['ShowAll', 'MaxWarn=10']))
		result.add(self.check_counter('\\4\\26', ['index', 'ShowAll', 'MaxWarn=10']))
		result.add(self.check_counter('\\%s\\%s'%(name1, name2), ['ShowAll', 'MaxWarn=10']))
		return result
Ejemplo n.º 38
0
    def submit_payload(self, encryption, target, length, source, status, msg,
                       perf, tag):
        message = plugin_pb2.SubmitRequestMessage()

        message.header.version = plugin_pb2.Common.VERSION_1
        message.header.recipient_id = target
        message.channel = 'nsca_test_outbox'
        host = message.header.hosts.add()
        host.id = target
        if (target == 'valid'):
            pass
        else:
            host.address = "127.0.0.1:15667"
            enc = host.metadata.add()
            enc.key = "encryption"
            enc.value = encryption
            enc = host.metadata.add()
            enc.key = "password"
            enc.value = 'pwd-%s' % encryption
            enc = host.metadata.add()
            enc.key = "payload length"
            enc.value = '%d' % length

        uid = str(uuid.uuid4())
        payload = message.payload.add()
        payload.result = status
        payload.command = uid
        payload.message = '%s - %s' % (uid, msg)
        payload.source = source
        (result_code, err) = self.core.submit('nsca_test_outbox',
                                              message.SerializeToString())

        result = TestResult('Testing payload submission (via API): %s' % tag)
        result.add_message(
            len(err) == 0, 'Testing to send message using %s/sbp' % tag, err)
        self.wait_and_validate(uid, result, msg, perf, '%s/spb' % tag)
        return result
Ejemplo n.º 39
0
	def check_files(self, filter, text, expected, extra_args):
		self.setup_files()
		alias = '%s: %s'%(text, filter)
		result = TestResult('Checking %s'%alias)
		args = ['path=%s'%self.work_path, 'filter=%s'%filter, 'syntax=%filename%: %size% %write%', 'warn=gt:1', 'crit=gt:3']
		args.extend(extra_args)
		(ret, msg, perf) = core.simple_query('CheckFiles', args)
		count = self.get_count(perf)
		result.add_message(count == expected, 'Check that we get correct number of files', 'Invalid result: got %s expected %s'%(count, expected))
		if expected > 3:
			result.add_message(ret == status.CRITICAL, 'Check that we get correct status back (CRIT)', 'We did not get a CRIT back as expected: %s'%ret)
		elif expected > 1:
			result.add_message(ret == status.WARNING, 'Check that we get correct status back (WARN)', 'We did not get a WARN back as expected: %s'%ret)
		else:
			result.add_message(ret == status.OK, 'Check that we get correct status back (OK)', 'We did not get a OK back as expected: %s'%ret)
			
		return result;
Ejemplo n.º 40
0
	def submit_payload(self, alias, ssl, length, source, status, msg, perf, target):
		message = plugin_pb2.QueryRequestMessage()
		
		message.header.destination_id = target
		message.header.command = 'nrpe_forward'
		host = message.header.hosts.add()
		host.address = "127.0.0.1:15666"
		host.id = target
		if (target == 'valid'):
			pass
		else:
			enc = host.metadata.add()
			enc.key = "use ssl"
			enc.value = '%s'%ssl
			enc = host.metadata.add()
			enc.key = "payload length"
			enc.value = '%d'%length
		enc = host.metadata.add()
		enc.key = "timeout"
		enc.value = '5'

		uid = str(uuid.uuid4())
		payload = message.payload.add()
		payload.command = 'check_py_nrpe_test_s'
		payload.arguments.append(uid)
		rmsg = self.get_request(uid)
		rmsg.status = status
		rmsg.message = msg
		rmsg.perfdata = perf
		self.set_request(rmsg)
		(result_code, response) = self.core.query('ignored', message.SerializeToString())
		response_message = plugin_pb2.QueryResponseMessage()
		response_message.ParseFromString(response)
		result = TestResult('Testing NRPE: %s for %s'%(alias, target))
		
		found = False
		for i in range(0,10):
			if self.has_response(uid):
				rmsg = self.get_response(uid)
				#result.add_message(rmsg.got_response, 'Testing to recieve message using %s'%alias)
				result.add_message(rmsg.got_simple_response, 'Testing to recieve simple message using %s'%alias)
				result.add_message(len(response_message.payload) == 1, 'Verify that we only get one payload response for %s'%alias, '%s != 1'%len(response_message.payload))
				if len(response_message.payload) == 1 and len(response_message.payload[0].lines) == 1:
					result.assert_equals(response_message.payload[0].result, status, 'Verify that status is sent through %s'%alias)
					result.assert_equals(response_message.payload[0].lines[0].message, msg, 'Verify that message is sent through %s'%alias)
					#result.assert_equals(rmsg.perfdata, perf, 'Verify that performance data is sent through')
				self.del_response(uid)
				found = True
				break
			else:
				log('Waiting for %s (%s/%s)'%(uid,alias,target))
				sleep(500)
		if not found:
			result.add_message(False, 'Testing to recieve message using %s'%alias)
		return result
Ejemplo n.º 41
0
	def submit_payload(self, alias, ssl, length, source, status, msg, perf, target):
		message = plugin_pb2.QueryRequestMessage()
		
		message.header.destination_id = target
		message.header.command = 'nrpe_forward'
		host = message.header.hosts.add()
		host.address = "127.0.0.1:15666"
		host.id = target
		if (target == 'valid'):
			pass
		else:
			enc = host.metadata.add()
			enc.key = "use ssl"
			enc.value = '%s'%ssl
			enc = host.metadata.add()
			enc.key = "payload length"
			enc.value = '%d'%length
		enc = host.metadata.add()
		enc.key = "timeout"
		enc.value = '5'

		uid = str(uuid.uuid4())
		payload = message.payload.add()
		payload.command = 'check_py_nrpe_test_s'
		payload.arguments.append(uid)
		rmsg = self.get_request(uid)
		rmsg.status = status
		rmsg.message = msg
		rmsg.perfdata = perf
		self.set_request(rmsg)
		(result_code, response) = self.core.query('ignored', message.SerializeToString())
		response_message = plugin_pb2.QueryResponseMessage()
		response_message.ParseFromString(response)
		result = TestResult('Testing NRPE: %s for %s'%(alias, target))
		
		found = False
		for i in range(0,10):
			if self.has_response(uid):
				rmsg = self.get_response(uid)
				#result.add_message(rmsg.got_response, 'Testing to recieve message using %s'%alias)
				result.add_message(rmsg.got_simple_response, 'Testing to recieve simple message using %s'%alias)
				result.add_message(len(response_message.payload) == 1, 'Verify that we only get one payload response for %s'%alias, '%s != 1'%len(response_message.payload))
				if len(response_message.payload) == 1 and len(response_message.payload[0].lines) == 1:
					result.assert_equals(response_message.payload[0].result, status, 'Verify that status is sent through %s'%alias)
					result.assert_equals(response_message.payload[0].lines[0].message, msg, 'Verify that message is sent through %s'%alias)
					#result.assert_equals(rmsg.perfdata, perf, 'Verify that performance data is sent through')
				self.del_response(uid)
				found = True
				break
			else:
				log('Waiting for %s (%s/%s)'%(uid,alias,target))
				sleep(500)
		if not found:
			result.add_message(False, 'Testing to recieve message using %s'%alias)
		return result
Ejemplo n.º 42
0
 def check_counter(self, counter, args):
     result = TestResult('Checking counter: %s' % counter)
     args.append('Counter=%s' % counter)
     (retcode, retmessage,
      retperf) = self.core.simple_query('CheckCounter', args)
     result.add_message(retcode != status.UNKNOWN,
                        'Return code: %s' % retcode)
     result.add_message(
         len(retmessage) > 0, 'Returned message: %s' % retmessage)
     result.add_message(len(retperf) > 0, 'Performance data: %s' % retperf)
     return result
Ejemplo n.º 43
0
    def run_test(self):
        global time_to_run, check_per_second
        result = TestResult()
        start = time()
        if isinstance(time_to_run, str) and time_to_run == 'infinate':
            time_to_run = -1
        elif isinstance(time_to_run, str):
            time_to_run = 5

        if time_to_run == -1:
            total_count = -1
        else:
            total_count = check_per_second * time_to_run

        if time_to_run != -1:
            self.background = False
            last_major = 0
            while self.results_count < total_count:
                old_stress_count = self.results_count
                old_noop_count = self.check_count
                sleep(5000)
                result.add_message(
                    True, 'Commands/second: %d/%d' %
                    ((self.results_count - old_stress_count) / 5,
                     (self.check_count - old_noop_count) / 5))
                if (self.results_count * 100 / total_count) > last_major + 10:
                    last_major = last_major + 10
                    log('%d%% Complete: %d checks per second <%d/%d>' %
                        (self.results_count * 100 / total_count,
                         (self.results_count - old_stress_count) / 5,
                         self.results_count, total_count))
            elapsed = (time() - start)
            if elapsed == 0:
                elapsed = 1
            result.add_message(
                True, 'Summary Collected %d instance in %d seconds: %d/s' %
                (self.results_count, elapsed, self.results_count / elapsed))
        else:
            self.background = True
            result.add_message(
                True,
                'Test running in background, run py_unittest_collect to collect results at any time.'
            )
        return result
Ejemplo n.º 44
0
	def run_test(self):
		result = TestResult('Checking CheckEventLog')
		cache = TestResult('Checking CheckEventLog CACHE')
		
		(res, msg, perf) = Core.get().simple_query('CheckEventLogCACHE', ['warn=eq:1', 'crit=eq:2'])
		cache.assert_equals(res, status.OK, "Validate cache is empty")
		cache.assert_equals(msg, 'Eventlog check ok', "Validate cache is ok: %s"%msg)
		
		
		a_list = ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
		result.add_message(self.test_create('Application Error', 1000, 'error', 	'success', 			0, 0, a_list), 'Testing to create a log message')
		result.add_message(self.test_create('Application Error', 1000, 'warning',  	'informational', 	1, 5, a_list), 'Testing to create a log message')
		result.add_message(self.test_create('Application Error', 1000, 'success',  	'warning', 			2, 5, a_list), 'Testing to create a log message')
		result.add_message(self.test_create('Application Error', 1000, 'info',		'error', 			3, 5, a_list), 'Testing to create a log message')
		for x in range(1,10):
			sleep(100)
			if len(self.messages) == 4:
				break
		log('Recieved %d messages.'%len(self.messages))
		result.assert_equals(len(self.messages), 4, 'Verify that all 4 messages are sent through')
		
		for msg in self.messages:
			if msg.message.startswith('X1'):
				r = TestResult('Validating message X1')
				r.assert_equals(msg.message, 'X1 warning Application Error: ', 'Verify message')
				r.assert_equals(msg.channel, 'pytest_evlog_01', 'Verify channel')
				r.assert_equals(msg.tag, '001', 'Verify tag')
				r.assert_equals(msg.status, status.WARNING, 'Verify status')
				result.add(r)
			elif msg.message.startswith('X2'):
				r = TestResult('Validating message X2')
				r.assert_equals(msg.message, 'X2 success Application Error: ', 'Verify message')
				r.assert_equals(msg.channel, 'pytest_evlog_02', 'Verify channel')
				r.assert_equals(msg.tag, '002', 'Verify tag')
				r.assert_equals(msg.status, status.CRITICAL, 'Verify status')
				result.add(r)
			elif msg.message.startswith('X3'):
				r = TestResult('Validating message X3')
				r.assert_equals(msg.message, 'X3 info Application Error: ', 'Verify message')
				r.assert_equals(msg.channel, 'pytest_evlog_01', 'Verify channel')
				r.assert_equals(msg.tag, '001', 'Verify tag')
				r.assert_equals(msg.status, status.UNKNOWN, 'Verify status')
				result.add(r)
			elif msg.message.startswith('X4'):
				r = TestResult('Validating message X4')
				r.assert_equals(msg.message, 'X4 error Application Error: ', 'Verify message')
				r.assert_equals(msg.channel, 'pytest_evlog_01', 'Verify channel')
				r.assert_equals(msg.tag, '001', 'Verify tag')
				r.assert_equals(msg.status, status.OK, 'Verify status')
				result.add(r)
		
		(res, msg, perf) = Core.get().simple_query('CheckEventLogCACHE', ['warn=eq:1', 'crit=eq:4'])
		cache.assert_equals(res, status.CRITICAL, "Validate cache has items: %s"%msg)
		cache.assert_equals(msg, 'X4 error Application Error: , X1 warning Application Error: , X2 success Application Error: , X3 info Application Error: , eventlog: 4 = critical', "Validate cache message")
		cache.assert_equals(perf, "'eventlog'=4;1;4", "Validate cache performance")
		(res, msg, perf) = Core.get().simple_query('CheckEventLogCACHE', ['warn=eq:1', 'crit=eq:2'])
		cache.assert_equals(res, status.OK, "Validate cache is empty (again)")
		cache.assert_equals(msg, 'Eventlog check ok', "Validate cache is ok: %s"%msg)
		
		result.add(cache)
		
		r = TestResult('Checking filters')
		r.add(self.test_w_expected('id = 1000 and generated gt 1m', '%generated%', 0))
		r.add(self.test_w_expected('id = 1000 and generated gt -1m', '%generated%', 4))
		r.add(self.test_w_expected('id = 1000 and generated gt -1m and id = 1000', '%generated%: %id%, %category%', 4))
		r.add(self.test_w_expected('id = 1000 and generated gt -1m and category = 1', '%category%', 1))
		r.add(self.test_w_expected('id = 1000 and generated gt -1m and category = 0', '%category%', 1))
		r.add(self.test_w_expected("id = 1000 and generated gt -1m and level = 'error'", '%level%', 1))
		r.add(self.test_w_expected("id = 1000 and generated gt -1m and level = 'info'", '%level%', 1))
		result.add(r)
		
		r = TestResult('Checking syntax')
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 0', '%source% - %type% - %category%', 'Application Error - error - 0'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 1', '%source% - %type% - %category%', 'Application Error - warning - 1'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 2', '%source% - %type% - %category%', 'Application Error - success - 2'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 3', '%source% - %type% - %category%', 'Application Error - info - 3'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 0', '%facility% - %qualifier% - %customer%', '0 - 0 - 0'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 1', '%facility% - %qualifier% - %customer%', '5 - 5 - 0'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 0', '%rawid% - %severity% - %log%', '1000 - success - Application'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 1', '%rawid% - %severity% - %log%', '1074070504 - informational - Application'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 2', '%rawid% - %severity% - %log%', '2147812328 - warning - Application'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 3', '%rawid% - %severity% - %log%', '3221554152 - error - Application'))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 0', '%id% - %strings%', '1000 - a, a, a, a, a, a, a, a, a, a, a, a, a, '))
		r.add(self.test_syntax('id = 1000 and generated gt -2m and category = 1', '%id% - %strings%', '1000 - a, a, a, a, a, a, a, a, a, a, a, a, a, '))
		result.add(r)

		return result
Ejemplo n.º 45
0
    def run_test_counters(self):
        result = TestResult('Checking CheckCounter')
        (result_code,
         result_message) = core.simple_exec('any', 'pdh',
                                            ['--list', '--porcelain'])
        count = 0
        data = []
        for m in result_message:
            data = m.splitlines()
            count = len(data)
        result.add_message(count > 0,
                           'Managed to retrieve counters: %d' % count)
        if len(data) == 0:
            result.add_message(False,
                               'Failed to find counters: %s' % result_message)
        counters = []
        for x in range(1, 10):
            try:
                str = random.choice(data)
                (alias, counter, message) = str.split(',', 2)
                (retcode, retmessage,
                 retperf) = core.simple_query('CheckCounter', [
                     'index', 'ShowAll', 'MaxWarn=10',
                     'Counter:001=%s' % counter
                 ])
                result.add_message(retcode != status.UNKNOWN,
                                   'Queried normal: %s' % counter)
                result.add_message(
                    len(retmessage) > 0,
                    'Queried normal (got message): %s' % retmessage)
                result.add_message(
                    len(retperf) > 0,
                    'Queried normal (got perf): %s' % retperf)
                if retcode != status.UNKNOWN:
                    counters.append('Counter:%d=%s' % (x, counter))
            except Exception as e:
                result.add_message(False,
                                   'Invalid counter found "%s": %s' % (str, e))

        args = ['index', 'ShowAll', 'MaxWarn=10']
        args.extend(counters)
        (retcode, retmessage,
         retperf) = core.simple_query('CheckCounter', args)
        result.add_message(
            retcode != status.UNKNOWN,
            'Queried normal list of %d counters' % len(counters))
        result.add_message(
            len(retmessage) > 0,
            'Queried normal (got message): %s' % retmessage)
        result.add_message(
            len(retperf) > 0, 'Queried normal (got perf): %s' % retperf)
        result.add_message(
            len(counters) == len(retperf.split(' ')),
            'Got all responses: %d' % len(counters))
        return result
Ejemplo n.º 46
0
    def run_test(self):
        result = TestResult('Checking CheckEventLog')
        cache = TestResult('Checking CheckEventLog CACHE')

        (res, msg, perf) = Core.get().simple_query('CheckEventLogCACHE',
                                                   ['warn=eq:1', 'crit=eq:2'])
        cache.assert_equals(res, status.OK, "Validate cache is empty")
        cache.assert_equals(msg, 'Eventlog check ok',
                            "Validate cache is ok: %s" % msg)

        a_list = [
            'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'
        ]
        result.add_message(
            self.test_create('Application Error', 1000, 'error', 'success', 0,
                             0, a_list), 'Testing to create a log message')
        result.add_message(
            self.test_create('Application Error', 1000, 'warning',
                             'informational', 1, 5, a_list),
            'Testing to create a log message')
        result.add_message(
            self.test_create('Application Error', 1000, 'success', 'warning',
                             2, 5, a_list), 'Testing to create a log message')
        result.add_message(
            self.test_create('Application Error', 1000, 'info', 'error', 3, 5,
                             a_list), 'Testing to create a log message')
        for x in range(1, 10):
            sleep(100)
            if len(self.messages) == 4:
                break
        log('Recieved %d messages.' % len(self.messages))
        result.assert_equals(len(self.messages), 4,
                             'Verify that all 4 messages are sent through')

        for msg in self.messages:
            if msg.message.startswith('X1'):
                r = TestResult('Validating message X1')
                r.assert_equals(msg.message, 'X1 warning Application Error: ',
                                'Verify message')
                r.assert_equals(msg.channel, 'pytest_evlog_01',
                                'Verify channel')
                r.assert_equals(msg.tag, '001', 'Verify tag')
                r.assert_equals(msg.status, status.WARNING, 'Verify status')
                result.add(r)
            elif msg.message.startswith('X2'):
                r = TestResult('Validating message X2')
                r.assert_equals(msg.message, 'X2 success Application Error: ',
                                'Verify message')
                r.assert_equals(msg.channel, 'pytest_evlog_02',
                                'Verify channel')
                r.assert_equals(msg.tag, '002', 'Verify tag')
                r.assert_equals(msg.status, status.CRITICAL, 'Verify status')
                result.add(r)
            elif msg.message.startswith('X3'):
                r = TestResult('Validating message X3')
                r.assert_equals(msg.message, 'X3 info Application Error: ',
                                'Verify message')
                r.assert_equals(msg.channel, 'pytest_evlog_01',
                                'Verify channel')
                r.assert_equals(msg.tag, '001', 'Verify tag')
                r.assert_equals(msg.status, status.UNKNOWN, 'Verify status')
                result.add(r)
            elif msg.message.startswith('X4'):
                r = TestResult('Validating message X4')
                r.assert_equals(msg.message, 'X4 error Application Error: ',
                                'Verify message')
                r.assert_equals(msg.channel, 'pytest_evlog_01',
                                'Verify channel')
                r.assert_equals(msg.tag, '001', 'Verify tag')
                r.assert_equals(msg.status, status.OK, 'Verify status')
                result.add(r)

        (res, msg, perf) = Core.get().simple_query('CheckEventLogCACHE',
                                                   ['warn=eq:1', 'crit=eq:4'])
        cache.assert_equals(res, status.CRITICAL,
                            "Validate cache has items: %s" % msg)
        cache.assert_equals(
            msg,
            'X4 error Application Error: , X1 warning Application Error: , X2 success Application Error: , X3 info Application Error: , eventlog: 4 = critical',
            "Validate cache message")
        cache.assert_equals(perf, "'eventlog'=4;1;4",
                            "Validate cache performance")
        (res, msg, perf) = Core.get().simple_query('CheckEventLogCACHE',
                                                   ['warn=eq:1', 'crit=eq:2'])
        cache.assert_equals(res, status.OK, "Validate cache is empty (again)")
        cache.assert_equals(msg, 'Eventlog check ok',
                            "Validate cache is ok: %s" % msg)

        result.add(cache)

        r = TestResult('Checking filters')
        r.add(
            self.test_w_expected('id = 1000 and generated gt 1m',
                                 '%generated%', 0))
        r.add(
            self.test_w_expected('id = 1000 and generated gt -1m',
                                 '%generated%', 4))
        r.add(
            self.test_w_expected(
                'id = 1000 and generated gt -1m and id = 1000',
                '%generated%: %id%, %category%', 4))
        r.add(
            self.test_w_expected(
                'id = 1000 and generated gt -1m and category = 1',
                '%category%', 1))
        r.add(
            self.test_w_expected(
                'id = 1000 and generated gt -1m and category = 0',
                '%category%', 1))
        r.add(
            self.test_w_expected(
                "id = 1000 and generated gt -1m and level = 'error'",
                '%level%', 1))
        r.add(
            self.test_w_expected(
                "id = 1000 and generated gt -1m and level = 'info'", '%level%',
                1))
        result.add(r)

        r = TestResult('Checking syntax')
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 0',
                             '%source% - %type% - %category%',
                             'Application Error - error - 0'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 1',
                             '%source% - %type% - %category%',
                             'Application Error - warning - 1'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 2',
                             '%source% - %type% - %category%',
                             'Application Error - success - 2'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 3',
                             '%source% - %type% - %category%',
                             'Application Error - info - 3'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 0',
                             '%facility% - %qualifier% - %customer%',
                             '0 - 0 - 0'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 1',
                             '%facility% - %qualifier% - %customer%',
                             '5 - 5 - 0'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 0',
                             '%rawid% - %severity% - %log%',
                             '1000 - success - Application'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 1',
                             '%rawid% - %severity% - %log%',
                             '1074070504 - informational - Application'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 2',
                             '%rawid% - %severity% - %log%',
                             '2147812328 - warning - Application'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 3',
                             '%rawid% - %severity% - %log%',
                             '3221554152 - error - Application'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 0',
                             '%id% - %strings%',
                             '1000 - a, a, a, a, a, a, a, a, a, a, a, a, a, '))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 1',
                             '%id% - %strings%',
                             '1000 - a, a, a, a, a, a, a, a, a, a, a, a, a, '))
        result.add(r)

        return result
Ejemplo n.º 47
0
	def run_test_counters(self):
		result = TestResult('Checking CheckCounter')
		(result_code, result_message) = core.simple_exec('any', 'pdh', ['--list', '--porcelain'])
		count = 0
		data = []
		for m in result_message:
			data = m.splitlines()
			count = len(data)
		result.add_message(count > 0, 'Managed to retrieve counters: %d'%count)
		if len(data) == 0:
			result.add_message(False, 'Failed to find counters: %s'%result_message)
		counters = []
		for x in range(1,10):
			try:
				str = random.choice(data)
				(alias, counter, message) = str.split(',', 2)
				(retcode, retmessage, retperf) = core.simple_query('CheckCounter', ['index', 'ShowAll', 'MaxWarn=10', 'Counter:001=%s'%counter])
				result.add_message(retcode != status.UNKNOWN, 'Queried normal: %s'%counter)
				result.add_message(len(retmessage) > 0, 'Queried normal (got message): %s'%retmessage)
				result.add_message(len(retperf) > 0, 'Queried normal (got perf): %s'%retperf)
				if retcode != status.UNKNOWN:
					counters.append('Counter:%d=%s'%(x, counter))
			except Exception as e:
				result.add_message(False, 'Invalid counter found "%s": %s'%(str, e))

		args = ['index', 'ShowAll', 'MaxWarn=10']
		args.extend(counters)
		(retcode, retmessage, retperf) = core.simple_query('CheckCounter', args)
		result.add_message(retcode != status.UNKNOWN, 'Queried normal list of %d counters'%len(counters))
		result.add_message(len(retmessage) > 0, 'Queried normal (got message): %s'%retmessage)
		result.add_message(len(retperf) > 0, 'Queried normal (got perf): %s'%retperf)
		result.add_message(len(counters) == len(retperf.split(' ')), 'Got all responses: %d'%len(counters))
		return result