[Groonga-commit] droonga/drntest at 551b7ee [master] Extract test load code

アーカイブの一覧に戻る

Kouhei Sutou null+****@clear*****
Tue Dec 17 22:25:06 JST 2013


Kouhei Sutou	2013-12-17 22:25:06 +0900 (Tue, 17 Dec 2013)

  New Revision: 551b7ee4e8f7c2488daad7b0fd60644c583f6733
  https://github.com/droonga/drntest/commit/551b7ee4e8f7c2488daad7b0fd60644c583f6733

  Message:
    Extract test load code

  Copied files:
    lib/drntest/test-loader.rb
      (from lib/drntest/test-executor.rb)
  Modified files:
    lib/drntest/test-executor.rb

  Modified: lib/drntest/test-executor.rb (+4 -59)
===================================================================
--- lib/drntest/test-executor.rb    2013-12-17 22:16:51 +0900 (baf2b40)
+++ lib/drntest/test-executor.rb    2013-12-17 22:25:06 +0900 (8ad2550)
@@ -15,7 +15,7 @@
 
 require "droonga/client"
 
-require "drntest/json-loader"
+require "drntest/test-loader"
 require "drntest/response-normalizer"
 
 module Drntest
@@ -34,7 +34,7 @@ module Drntest
                                     port: owner.port) do |client|
         requests = []
         test_commands.each do |test_command|
-          if test_command.is_a?(Directive)
+          if test_command.is_a?(TestLoader::Directive)
             case test_command.type
             when :enable_logging
               logging = true
@@ -64,69 +64,14 @@ module Drntest
     end
 
     private
-    def resolve_relative_path(path)
-      path = path.to_s
-      path = path[2..-1] if path[0..1] == "./"
-      Pathname(path).expand_path(@owner.base_path)
-    end
-
     def normalize_response(request, response)
       normalizer = ResponseNormalizer.new(request, response)
       normalizer.normalize
     end
 
     def test_commands
-      load_jsons(@test_path)
-    end
-
-    def load_jsons(path)
-      parser = Yajl::Parser.new
-      objects = []
-      parser.on_parse_complete = lambda do |object|
-        objects << object
-      end
-      data = ""
-      Pathname(path).read.each_line do |line|
-        data << line
-        if line[0] == "#"
-          if Directive.directive?(line)
-            directive = Directive.new(line)
-            if directive.type == :include
-              included = resolve_relative_path(directive.value)
-              included_objects = load_jsons(included)
-              objects += included_objects
-            else
-              objects << directive
-            end
-          end
-        else
-          begin
-            parser << line
-          rescue Yajl::ParseError => error
-            JSONLoader.report_error(path, data, error)
-            raise error
-          end
-        end
-      end
-      objects
-    end
-
-    class Directive
-      MATCHER = /\A\#\@([^\s]+)(?:\s+(.+))?\z/.freeze
-
-      class << self
-        def directive?(source)
-          MATCHER =~ source.strip
-        end
-      end
-
-      attr_reader :type, :value
-
-      def initialize(source)
-        MATCHER =~ source.strip
-        @value = $2
-        @type = $1.gsub("-", "_").to_sym
-      end
+      loader = TestLoader.new(@owner, @test_path)
+      loader.load
     end
   end
 end

  Copied: lib/drntest/test-loader.rb (+5 -44) 64%
===================================================================
--- lib/drntest/test-executor.rb    2013-12-17 22:16:51 +0900 (baf2b40)
+++ lib/drntest/test-loader.rb    2013-12-17 22:25:06 +0900 (f0ff57c)
@@ -13,13 +13,10 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-require "droonga/client"
-
 require "drntest/json-loader"
-require "drntest/response-normalizer"
 
 module Drntest
-  class TestExecutor
+  class TestLoader
     attr_reader :owner, :test_path
 
     def initialize(owner, test_path)
@@ -27,40 +24,8 @@ module Drntest
       @test_path = test_path
     end
 
-    def execute
-      actuals = []
-      logging = true
-      client = Droonga::Client.open(tag: owner.tag,
-                                    port: owner.port) do |client|
-        requests = []
-        test_commands.each do |test_command|
-          if test_command.is_a?(Directive)
-            case test_command.type
-            when :enable_logging
-              logging = true
-              requests.each do |request|
-                request.wait
-              end
-              requests.clear
-            when :disable_logging
-              logging = false
-            end
-            next
-          end
-          if logging
-            response = client.connection.execute(test_command)
-            actuals << normalize_response(test_command, response)
-          else
-            requests << client.connection.execute(test_command,
-                                                  :connect_timeout => 2) do
-            end
-          end
-        end
-        requests.each do |request|
-          request.wait
-        end
-      end
-      actuals
+    def load
+      load_test_file(@test_path)
     end
 
     private
@@ -75,11 +40,7 @@ module Drntest
       normalizer.normalize
     end
 
-    def test_commands
-      load_jsons(@test_path)
-    end
-
-    def load_jsons(path)
+    def load_test_file(path)
       parser = Yajl::Parser.new
       objects = []
       parser.on_parse_complete = lambda do |object|
@@ -93,7 +54,7 @@ module Drntest
             directive = Directive.new(line)
             if directive.type == :include
               included = resolve_relative_path(directive.value)
-              included_objects = load_jsons(included)
+              included_objects = load_test_file(included)
               objects += included_objects
             else
               objects << directive
-------------- next part --------------
HTML����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る