[Groonga-commit] droonga/drntest at 84a8bbf [master] Extract test executor main loop code

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index