示例#1
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
    def do_one_test(self,
                    script,
                    expected=status.OK,
                    message="Foo Bar",
                    args=[],
                    cleanup=True):
        result = TestResult('%s (%s)' % (script, args))
        (ret, msg, perf) = self.core.simple_query(script, args)
        if cleanup and os.name != 'nt':
            message = message.replace('"', '')
            message = message.replace('$ARG1$', '$')
            message = message.replace('$ARG2$', '$')
            message = message.replace('$ARG3$', '$')

        message = message.replace('\r', '\n')
        message = message.replace('\n\n', '\n')
        msg = msg.replace('\r', '\n')
        msg = msg.replace('\n\n', '\n')

        result.assert_equals(ret, expected,
                             'Validate return code for %s' % script)
        result.assert_equals(msg, message,
                             'Validate return message for %s' % script)
        if msg != message:
            diff = difflib.ndiff(msg.splitlines(1), message.splitlines(1))
            for l in diff:
                log_error(l)
        return result
示例#3
0
	def submit_payload(self, encryption, target, length, source, status, msg, perf, tag):
		message = plugin_pb2.SubmitRequestMessage()

		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
		line = payload.lines.add()
		line.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.assert_equals(result_code, True, 'Submission (%s) return ok status'%tag)
		result.assert_equals(err, 'Submission successful', 'Submission (%s) returned correct status'%tag)
		self.wait_and_validate(uid, result, msg, perf, '%s/spb'%tag)
		return result
示例#4
0
	def check_cli_ns(self):
		result = TestResult('Checking CLI list-ns')
		(ret, ns_msgs) = self.core.simple_exec('any', 'wmi', ['--list-all-ns', '--namespace', 'root'])
		result.assert_equals(ret, 1, 'Check that --list-all-ns returns ok')
		result.assert_equals(len(ns_msgs), 1, 'Check that --list-all-ns returns one entry')
		if len(ns_msgs) > 0:
			result.assert_contains(ns_msgs[0], 'CIMV2', 'Check that --list-all-ns contains cimv2')
		return result
示例#5
0
	def check_cli_ns(self):
		result = TestResult('Checking CLI list-ns')
		(ret, ns_msgs) = core.simple_exec('any', 'wmi', ['--list-all-ns', '--namespace', 'root'])
		result.assert_equals(ret, status.OK, 'Check that --list-all-ns returns ok')
		result.assert_equals(len(ns_msgs), 1, 'Check that --list-all-ns returns one entry')
		if len(ns_msgs) > 0:
			result.assert_contains(ns_msgs[0], 'CIMV2', 'Check that --list-all-ns contains cimv2')
		return result
示例#6
0
 def test_syntax(self, filter, syntax, expected):
     result = TestResult('Validating syntax: %s' % syntax)
     (res, msg, perf) = self.core.simple_query('CheckEventLog', [
         'file=Application', 'warn=ne:1',
         'filter=%s' % filter,
         'syntax=%s' % syntax, 'descriptions', 'scan-range=-10m'
     ])
     result.assert_equals(msg, expected,
                          "Validate message rendering syntax: %s" % msg)
     return result
示例#7
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
示例#8
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
示例#9
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
示例#10
0
	def check_cli_ls(self, ns, expected, missing):
		result = TestResult('Checking CLI list-classes %s'%ns)
		args = ['--list-classes', '--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 --list-classes returns ok')
		result.assert_equals(len(ns_msgs), 1, 'Check that --list-classes returns one entry')
		if len(ns_msgs) > 0:
			result.assert_contains(ns_msgs[0], expected, 'Check that --list-classes contains %s'%expected)
			result.assert_not_contains(ns_msgs[0], missing, 'Check that --list-classes does not contains %s'%missing)
		return result
示例#11
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
示例#12
0
	def check_cli_ls(self, ns, expected, missing):
		result = TestResult('Checking CLI list-classes %s'%ns)
		args = ['--list-classes', '--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 --list-classes returns ok')
		result.assert_equals(len(ns_msgs), 1, 'Check that --list-classes returns one entry')
		if len(ns_msgs) > 0:
			result.assert_contains(ns_msgs[0], expected, 'Check that --list-classes contains %s'%expected)
			result.assert_not_contains(ns_msgs[0], missing, 'Check that --list-classes does not contains %s'%missing)
		return result
示例#13
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
示例#14
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
示例#15
0
 def check_ts_query(self, task, code):
     result = TestResult('Checking task %s'%task)
     for i in [0, 1, 2, 3, 4]:
         # check_tasksched "filter=title = 'NSCPSample_CRIT'" "warn=exit_code != 3"
         args = ["filter=title = 'NSCPSample_%s'"%task, 
             "warn=exit_code = %d"%i]
         log_debug(', '.join(args))
         (ret, msg, perf) = self.core.simple_query('check_tasksched', args)
         
         if i == code:
             result.assert_equals(ret, status.WARNING, 'Verify WARN result: %s'%msg)
         else:
             result.assert_equals(ret, status.OK, 'Verify OK result: %s'%msg)
         
     return result
示例#16
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
示例#17
0
	def do_one_test(self, script, expected = status.OK, message = "Foo Bar", args=[], cleanup=True):
		result = TestResult('%s (%s)'%(script, args))
		(ret, msg, perf) = self.core.simple_query(script, args)
		if cleanup and os.name != 'nt':
			message = message.replace('"', '')
			message = message.replace('$ARG1$', '$')
			message = message.replace('$ARG2$', '$')
			message = message.replace('$ARG3$', '$')
			message = message.replace('\r', '')
		result.assert_equals(ret, expected, 'Validate return code for %s'%script)
		result.assert_equals(msg, message, 'Validate return message for %s'%script)
		if msg != message:
			diff = difflib.ndiff(msg.splitlines(1), message.splitlines(1))
			print ''.join(diff),
		return result
示例#18
0
 def check_ts_query(self, task, code):
     result = TestResult('Checking task %s'%task)
     for i in [0, 1, 2, 3, 4]:
         # check_tasksched "filter=title = 'NSCPSample_CRIT'" "warn=exit_code != 3"
         args = ["filter=title = 'NSCPSample_%s'"%task, 
             "warn=exit_code = %d"%i]
         log_debug(', '.join(args))
         (ret, msg, perf) = self.core.simple_query('check_tasksched', args)
         
         if i == code:
             result.assert_equals(ret, status.WARNING, 'Verify WARN result: %s'%msg)
         else:
             result.assert_equals(ret, status.OK, 'Verify OK result: %s'%msg)
         
     return result
示例#19
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
示例#20
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
示例#21
0
 def test_w_expected(self, filter, syntax, expected):
     result = TestResult('Validating filter: %s' % filter)
     (res, msg, perf) = Core.get().simple_query('CheckEventLog', [
         'file=Application', 'debug=true',
         'warn=ne:%d' % expected,
         'crit=ne:%d' % expected,
         'filter=%s' % filter,
         'syntax=%s' % syntax
     ])
     result.assert_equals(res, status.OK,
                          "Validate status OK for %s" % filter)
     (res, msg, perf) = Core.get().simple_query('CheckEventLog', [
         'file=Application', 'debug=true',
         'warn=eq:%d' % expected,
         'crit=ne:%d' % expected,
         'filter=%s' % filter,
         'syntax=%s' % syntax
     ])
     result.assert_equals(res, status.WARNING,
                          "Validate status OK for %s" % filter)
     (res, msg, perf) = Core.get().simple_query('CheckEventLog', [
         'file=Application', 'debug=true',
         'warn=eq:%d' % expected,
         'crit=eq:%d' % expected,
         'filter=%s' % filter,
         'syntax=%s' % syntax
     ])
     result.assert_equals(res, status.CRITICAL,
                          "Validate status CRIT for %s" % filter)
     return result
示例#22
0
 def test_w_expected(self, filter, syntax, expected):
     result = TestResult('Validating filter: %s (%d)' % (filter, expected))
     (res, msg, perf) = self.core.simple_query('CheckEventLog', [
         'file=Application', 'debug=false',
         'warn=gt:%d' % expected,
         'crit=gt:%d' % expected,
         'filter=%s' % filter,
         'syntax=%s' % syntax, 'scan-range=-10m',
         'top-syntax=${status} ${count}==%d: ${list}' % expected
     ])
     result.assert_equals(res, status.OK,
                          "Validate status OK for %s" % filter)
     (res, msg, perf) = self.core.simple_query('CheckEventLog', [
         'file=Application', 'debug=false',
         'warn=eq:%d' % expected,
         'crit=gt:%d' % expected,
         'filter=%s' % filter,
         'syntax=%s' % syntax, 'scan-range=-10m',
         'top-syntax=${status} ${count}==%d: ${list}' % expected
     ])
     result.assert_equals(res, status.WARNING,
                          "Validate status OK for %s" % filter)
     (res, msg, perf) = self.core.simple_query('CheckEventLog', [
         'file=Application', 'debug=false',
         'warn=eq:%d' % expected,
         'crit=eq:%d' % expected,
         'filter=%s' % filter,
         'syntax=%s' % syntax, 'scan-range=-10m',
         'top-syntax=${status} ${count}==%d: ${list}' % expected
     ])
     result.assert_equals(res, status.CRITICAL,
                          "Validate status CRIT for %s" % filter)
     return result
示例#23
0
 def test_create(self, source, id, level, severity, category, facility,
                 arguments):
     result = TestResult(
         'Creating log message: i:%d, l:%s, s:%s, c:%d, f:%d' %
         (id, level, severity, category, facility))
     args = [
         '--source',
         source,
         '--id',
         id,  # Any number (corresponds with message identifier)								-- Identifies message
         '--level',
         level,  # error(1), warning(2), success(0), info(4), auditSuccess(8), auditFailure(10)	-- Loglevel severity (ie log level)
         '--severity',
         severity,  # success(0), informational(1), warning(2), error(3) 							-- Developer severity (ie classification)
         '--category',
         category,  #
         '--facility',
         facility  #
     ]
     for f in arguments:
         args.append('--argument')
         args.append(f)
     (ret, msg) = self.core.simple_exec('eventlog', 'insert', args)
     result.assert_equals(ret, 0, 'return code')
     result.assert_equals(len(msg), 1, 'Message length')
     if len(msg) == 1:
         result.assert_equals(msg[0], 'Message reported successfully',
                              'Status message')
     return result
示例#24
0
    def submit_payload(self, encryption, target, length, source, status, msg,
                       perf, tag):
        message = plugin_pb2.SubmitRequestMessage()

        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
        line = payload.lines.add()
        line.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.assert_equals(result_code, True,
                             'Submission (%s) return ok status' % tag)
        result.assert_equals(err, 'Submission successful',
                             'Submission (%s) returned correct status' % tag)
        self.wait_and_validate(uid, result, msg, perf, '%s/spb' % tag)
        return result
示例#25
0
	def test_w_expected(self, filter, syntax, expected):
		result = TestResult('Validating filter: %s (%d)'%(filter, expected))
		(res, msg, perf) = self.core.simple_query('CheckEventLog', ['file=Application', 'debug=false', 'warn=gt:%d'%expected, 'crit=gt:%d'%expected, 'filter=%s'%filter, 'syntax=%s'%syntax, 'scan-range=-10m', 'top-syntax=${status} ${count}==%d: ${list}'%expected])
		result.assert_equals(res, status.OK, "Validate status OK for %s"%filter)
		(res, msg, perf) = self.core.simple_query('CheckEventLog', ['file=Application', 'debug=false', 'warn=eq:%d'%expected, 'crit=gt:%d'%expected, 'filter=%s'%filter, 'syntax=%s'%syntax, 'scan-range=-10m', 'top-syntax=${status} ${count}==%d: ${list}'%expected])
		result.assert_equals(res, status.WARNING, "Validate status OK for %s"%filter)
		(res, msg, perf) = self.core.simple_query('CheckEventLog', ['file=Application', 'debug=false', 'warn=eq:%d'%expected, 'crit=eq:%d'%expected, 'filter=%s'%filter, 'syntax=%s'%syntax, 'scan-range=-10m', 'top-syntax=${status} ${count}==%d: ${list}'%expected])
		result.assert_equals(res, status.CRITICAL, "Validate status CRIT for %s"%filter)
		return result
示例#26
0
	def test_w_expected(self, filter, syntax, expected):
		result = TestResult('Validating filter: %s'%filter)
		(res, msg, perf) = Core.get().simple_query('CheckEventLog', ['file=Application', 'debug=true', 'warn=ne:%d'%expected, 'crit=ne:%d'%expected, 'filter=%s'%filter, 'syntax=%s'%syntax])
		result.assert_equals(res, status.OK, "Validate status OK for %s"%filter)
		(res, msg, perf) = Core.get().simple_query('CheckEventLog', ['file=Application', 'debug=true', 'warn=eq:%d'%expected, 'crit=ne:%d'%expected, 'filter=%s'%filter, 'syntax=%s'%syntax])
		result.assert_equals(res, status.WARNING, "Validate status OK for %s"%filter)
		(res, msg, perf) = Core.get().simple_query('CheckEventLog', ['file=Application', 'debug=true', 'warn=eq:%d'%expected, 'crit=eq:%d'%expected, 'filter=%s'%filter, 'syntax=%s'%syntax])
		result.assert_equals(res, status.CRITICAL, "Validate status CRIT for %s"%filter)
		return result
示例#27
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
示例#28
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
示例#29
0
	def test_create(self, source, id, level, severity, category, facility, arguments):
		result = TestResult('Creating log message: i:%d, l:%s, s:%s, c:%d, f:%d'%(id, level, severity, category, facility))
		args = ['--source', source, 
					'--id', id,				# Any number (corresponds with message identifier)								-- Identifies message
					'--level', level,		# error(1), warning(2), success(0), info(4), auditSuccess(8), auditFailure(10)	-- Loglevel severity (ie log level)
					'--severity', severity,	# success(0), informational(1), warning(2), error(3) 							-- Developer severity (ie classification)
					'--category', category,	#
					'--facility', facility	#
					]
		for f in arguments:
			args.append('--argument')
			args.append(f)
		(ret, msg) = self.core.simple_exec('eventlog', 'insert', args)
		result.assert_equals(ret, 0, 'return code')
		result.assert_equals(len(msg), 1, 'Message length')
		if len(msg) == 1:
			result.assert_equals(msg[0], 'Message reported successfully', 'Status message')
		return result
示例#30
0
    def run_test(self):
        result = TestResult('Checking CheckEventLog')
        cache = TestResult('Checking CheckEventLog CACHE')

        sleep(2000)

        #(res, msg, perf) = self.core.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(
            self.test_create('Application Error', 1000, 'error', 'success', 0,
                             0, a_list))
        result.add(
            self.test_create('Application Error', 1000, 'warning',
                             'informational', 1, 5, a_list))
        result.add(
            self.test_create('Application Error', 1000, 'success', 'warning',
                             2, 5, a_list))
        result.add(
            self.test_create('Application Error', 1000, 'info', 'error', 3, 5,
                             a_list))
        for x in range(1, 10):
            log('Waiting...%d/4.' % len(self.messages))
            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) = self.core.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) = self.core.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 = 'warning'",
                '%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 - information - 2'))
        r.add(
            self.test_syntax('id = 1000 and generated gt -2m and category = 3',
                             '%source% - %type% - %category%',
                             'Application Error - information - 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
示例#31
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
示例#32
0
	def test_syntax(self, filter, syntax, expected):
		result = TestResult('Validating syntax: %s'%syntax)
		(res, msg, perf) = Core.get().simple_query('CheckEventLog', ['file=Application', 'warn=ne:1', 'filter=%s'%filter, 'syntax=%s'%syntax, 'descriptions'])
		result.assert_equals(msg, expected, "Validate message rendering syntax: %s"%msg)
		return result
示例#33
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