def test_pick_default_log_mode(): with mock.patch('paasta_tools.cli.cmds.logs.LogReader.tail_logs', autospec=True) as tail_logs: args, _ = parse_args(["logs"]) fake_reader = logs.LogReader() fake_reader.SUPPORTS_TAILING = True logs.pick_default_log_mode(args, fake_reader, service=None, levels=None, components=None, clusters=None, instances=None) # Only supports tailing so that's the one that should be used assert tail_logs.call_count == 1 with mock.patch('paasta_tools.cli.cmds.logs.LogReader.print_logs_by_time', autospec=True) as logs_by_time: args, _ = parse_args(["logs"]) fake_reader = logs.LogReader() fake_reader.SUPPORTS_TAILING = True fake_reader.SUPPORTS_TIME = True logs.pick_default_log_mode(args, fake_reader, service=None, levels=None, components=None, clusters=None, instances=None) # Supports tailing and time, but time should be prioritized assert logs_by_time.call_count == 1 with mock.patch('paasta_tools.cli.cmds.logs.LogReader.print_last_n_logs', autospec=True) as logs_by_lines: args, _ = parse_args(["logs"]) fake_reader = logs.LogReader() fake_reader.SUPPORTS_TAILING = True fake_reader.SUPPORTS_TIME = True fake_reader.SUPPORTS_LINE_COUNT = True logs.pick_default_log_mode(args, fake_reader, service=None, levels=None, components=None, clusters=None, instances=None) # Supports tailing , time and line counts. Line counts should be prioritized assert logs_by_lines.call_count == 1
def test_validate_filtering_args_with_invalid_inputs(): fake_reader = logs.LogReader() fake_reader.SUPPORTS_TAILING = False args, _ = parse_args(["logs", "--tail"]) assert not logs.validate_filtering_args(args, fake_reader) fake_reader.SUPPORTS_TIME = False args, _ = parse_args(["logs", "--from", "1w"]) assert not logs.validate_filtering_args(args, fake_reader) fake_reader.SUPPORTS_LINE_COUNT = False args, _ = parse_args(["logs", "-l", "200"]) assert not logs.validate_filtering_args(args, fake_reader) fake_reader.SUPPORTS_LINE_OFFSET = False args, _ = parse_args(["logs", "-o", "23"]) assert not logs.validate_filtering_args(args, fake_reader) fake_reader.SUPPORTS_TAILING = True fake_reader.SUPPORTS_LINE_COUNT = True fake_reader.SUPPORTS_LINE_OFFSET = True fake_reader.SUPPORTS_TIME = True # Can't tail and specify lines at the same time args, _ = parse_args(["logs", "-l", "200", "--tail"]) assert not logs.validate_filtering_args(args, fake_reader) # Can't tail and specify time at the same time args, _ = parse_args(["logs", "--tail", "--from", "1w"]) assert not logs.validate_filtering_args(args, fake_reader) # Can't use both time and lines at the same time args, _ = parse_args(["logs", "--from", "1w", "-l", "100"]) assert not logs.validate_filtering_args(args, fake_reader)
def test_validate_filtering_args_with_valid_inputs(): fake_reader = logs.LogReader() fake_reader.SUPPORTS_TAILING = True fake_reader.SUPPORTS_LINE_COUNT = True fake_reader.SUPPORTS_TIME = True fake_reader.SUPPORTS_LINE_OFFSET = True # No arguments, completely valid args, _ = parse_args(["logs"]) assert logs.validate_filtering_args(args, fake_reader) # Tailing args, _ = parse_args(["logs", "--tail"]) assert logs.validate_filtering_args(args, fake_reader) # Specify number of lines args, _ = parse_args(["logs", "-l", "200"]) assert logs.validate_filtering_args(args, fake_reader) # Specify number of lines and lines to offset by args, _ = parse_args(["logs", "-l", "200", "-o", "23"]) assert logs.validate_filtering_args(args, fake_reader) # Specify a time args, _ = parse_args(["logs", "--from", "1w"]) assert logs.validate_filtering_args(args, fake_reader)