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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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