def main(args): if show_help(args): return # show the command list if args['list_commands']: print_commands() # no need to process further return # show the filter list if args['list_filters']: print_filters() # no need to process further return # create a Log instance and parse the log file log_file = Log( logfile=args['log'], ) # apply the time frame filter if args['start'] or args['delta']: start = args['start'] or '' delta = args['delta'] or '' filter_func = filters.filter_time_frame(start, delta) log_file = log_file.filter(filter_func) # apply all other filters given if args['filters']: for filter_data in args['filters']: arg = filter_data[1] or '' filter_func = getattr(filters, 'filter_{0}'.format(filter_data[0])) log_file = log_file.filter( filter_func(arg), reverse=args['negate_filter'], ) # run all commands for command in args['commands']: string = 'command: {0}'.format(command) print(string) print('=' * len(string)) cmd = getattr(log_file, 'cmd_{0}'.format(command)) result = cmd() print(result) return log_file # return the log_file object so that tests can inspect it
def test_negate_filter(self): """Check that reversing a filter output works as expected.""" filter_func = filters.filter_ssl() log_file = Log(logfile='haproxy/tests/files/connection.log') # total number of log lines self.assertEqual(log_file.cmd_counter(), 12) # only SSL lines only_ssl = log_file.filter(filter_func) self.assertEqual(only_ssl.cmd_counter(), 7) # non SSL lines non_ssl = log_file.filter(filter_func, reverse=True) self.assertEqual(non_ssl.cmd_counter(), 5) # we did get all lines? self.assertEqual(log_file.cmd_counter(), only_ssl.cmd_counter() + non_ssl.cmd_counter())
def test_negate_filter(self): """Check that reversing a filter output works as expected.""" filter_func = filters.filter_ssl() log_file = Log( logfile='haproxy/tests/files/connection.log', ) # total number of log lines self.assertEqual(log_file.cmd_counter(), 12) # only SSL lines only_ssl = log_file.filter(filter_func) self.assertEqual(only_ssl.cmd_counter(), 7) # non SSL lines non_ssl = log_file.filter(filter_func, reverse=True) self.assertEqual(non_ssl.cmd_counter(), 5) # we did get all lines? self.assertEqual( log_file.cmd_counter(), only_ssl.cmd_counter() + non_ssl.cmd_counter() )