Kouhei Sutou
null+****@clear*****
Tue Dec 17 22:55:37 JST 2013
Kouhei Sutou 2013-12-17 22:55:37 +0900 (Tue, 17 Dec 2013) New Revision: 84a8bbf276460d0c9f0850308c26fe4b96224d96 https://github.com/droonga/drntest/commit/84a8bbf276460d0c9f0850308c26fe4b96224d96 Message: Extract test executor main loop code Modified files: lib/drntest/test-executor.rb Modified: lib/drntest/test-executor.rb (+62 -34) =================================================================== --- lib/drntest/test-executor.rb 2013-12-17 22:49:15 +0900 (8aeef3d) +++ lib/drntest/test-executor.rb 2013-12-17 22:55:37 +0900 (3ccedf3) @@ -28,50 +28,78 @@ module Drntest end def execute - actuals = [] - logging = true Droonga::Client.open(tag: owner.tag, port: owner.port) do |client| - requests = [] + context = Context.new(client) operations.each do |operation| - case operation - when Directive - case operation.type - when :enable_logging - logging = true - requests.each do |request| - request.wait - end - requests.clear - when :disable_logging - logging = false - end - else - if logging - response = client.connection.execute(operation) - actuals << normalize_response(operation, response) - else - requests << client.connection.execute(operation, - :connect_timeout => 2) do - end - end - end - end - requests.each do |request| - request.wait + context.execute(operation) end + context.finish + context.responses end - actuals end private - def normalize_response(request, response) - normalizer = ResponseNormalizer.new(request, response) - normalizer.normalize - end - def operations loader = TestLoader.new(@owner, @test_path) loader.load end + + class Context + attr_reader :responses + + def initialize(client) + @client = client + @requests = [] + @responses = [] + @logging = true + end + + def execute(operation) + case operation + when Directive + execute_directive(operation) + else + execute_request(operation) + end + end + + def finish + consume_requests + end + + private + def execute_directive(directive) + case directive.type + when :enable_logging + @logging = true + consume_requests + when :disable_logging + @logging = false + end + end + + def execute_request(request) + if @logging + response =****@clien*****(request) + @responses << normalize_response(request, response) + else + @requests << @client.connection.execute(request, + :connect_timeout => 2) do + end + end + end + + def consume_requests + @requests.each do |request| + request.wait + end + @requests.clear + end + + def normalize_response(request, response) + normalizer = ResponseNormalizer.new(request, response) + normalizer.normalize + end + end end end -------------- next part -------------- HTML����������������������������...Download