diff --git a/lib/grntest/execution-context.rb b/lib/grntest/execution-context.rb index 5adb1e3..e3445a4 100644 --- a/lib/grntest/execution-context.rb +++ b/lib/grntest/execution-context.rb @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2016 Kouhei Sutou +# Copyright (C) 2012-2018 Kouhei Sutou # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,7 +23,9 @@ class ExecutionContext attr_accessor :on_error attr_accessor :abort_tag attr_accessor :timeout + attr_accessor :read_timeout attr_accessor :default_timeout + attr_accessor :default_read_timeout attr_writer :suppress_backtrace attr_writer :collect_query_log attr_writer :debug @@ -41,7 +43,9 @@ def initialize @on_error = :default @abort_tag = nil @timeout = 0 - @default_timeout = 0 + @read_timeout = 3 + @default_timeout = @timeout + @default_read_timeout = @read_timeout @omitted = false @suppress_backtrace = true @collect_query_log = false diff --git a/lib/grntest/executors/base-executor.rb b/lib/grntest/executors/base-executor.rb index 31cba75..0a9ebb3 100644 --- a/lib/grntest/executors/base-executor.rb +++ b/lib/grntest/executors/base-executor.rb @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2017 Kouhei Sutou +# Copyright (C) 2012-2018 Kouhei Sutou # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -39,9 +39,7 @@ def initialize(context) @loading = false @pending_command = "" @pending_load_command = nil - @current_command_name = nil @output_type = nil - @read_timeout = default_read_timeout @long_read_timeout = default_long_read_timeout @context = context @custom_important_log_levels = [] @@ -223,8 +221,8 @@ def execute_directive_read_timeout(line, content, options) new_value = timeout_value("read-timeout", line, timeout, - default_read_timeout) - @read_timeout = new_value unless new_value.nil? + @context.default_read_timeout) + @context.read_timeout = new_value unless new_value.nil? end def execute_directive_long_read_timeout(line, content, options) @@ -441,7 +439,7 @@ def extract_important_messages(log) def read_all_readable_content(output, options={}) content = "" - first_timeout = options[:first_timeout] || @read_timeout + first_timeout = options[:first_timeout] || @context.read_timeout timeout = first_timeout while IO.select([output], [], [], timeout) break if output.eof? @@ -552,10 +550,6 @@ def debug_output(output) output end - def default_read_timeout - 3 - end - def default_long_read_timeout 180 end diff --git a/lib/grntest/executors/standard-io-executor.rb b/lib/grntest/executors/standard-io-executor.rb index d8796bc..4add769 100644 --- a/lib/grntest/executors/standard-io-executor.rb +++ b/lib/grntest/executors/standard-io-executor.rb @@ -1,6 +1,4 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2013 Kouhei Sutou +# Copyright (C) 2012-2018 Kouhei Sutou # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/lib/grntest/test-runner.rb b/lib/grntest/test-runner.rb index 026da8e..8f978e0 100644 --- a/lib/grntest/test-runner.rb +++ b/lib/grntest/test-runner.rb @@ -140,7 +140,9 @@ def execute_groonga_script(result) context.output_type = @tester.output_type context.timeout = @tester.timeout context.timeout = 0 if @tester.gdb + context.read_timeout = @tester.read_timeout context.default_timeout = context.timeout + context.default_read_timeout = context.read_timeout context.suppress_backtrace = @tester.suppress_backtrace? context.debug = @tester.debug? run_groonga(context) do |executor| diff --git a/lib/grntest/tester.rb b/lib/grntest/tester.rb index 8946493..0088c9f 100644 --- a/lib/grntest/tester.rb +++ b/lib/grntest/tester.rb @@ -218,6 +218,12 @@ def create_option_parser(tester, tag) tester.timeout = timeout end + parser.on("--read-timeout=SECOND", Float, + "Timeout for each read in test", + "(#{tester.read_timeout})") do |timeout| + tester.read_timeout = timeout + end + parser.on("--[no-]debug", "Enable debug information", "(#{tester.debug?})") do |debug| @@ -266,6 +272,7 @@ def parse_name_or_pattern(name) attr_accessor :gdb, :default_gdb attr_accessor :valgrind, :default_valgrind attr_accessor :timeout + attr_accessor :read_timeout attr_writer :valgrind_gen_suppressions attr_writer :reporter, :keep_database, :use_color attr_writer :stop_on_failure @@ -303,6 +310,7 @@ def initialize initialize_debuggers initialize_memory_checkers @timeout = 5 + @read_timeout = 3 end def run(*targets)