[Groonga-commit] droonga/drnbench at 49e5c64 [master] Extract classes for request patterns

Back to archive index

SHIMODA Piro Hiroshi null+****@clear*****
Sat Oct 4 18:53:54 JST 2014


SHIMODA "Piro" Hiroshi	2014-10-04 18:53:54 +0900 (Sat, 04 Oct 2014)

  New Revision: 49e5c64edf53a6e413b760630befdd5f643e8861
  https://github.com/droonga/drnbench/commit/49e5c64edf53a6e413b760630befdd5f643e8861

  Message:
    Extract classes for request patterns

  Copied files:
    lib/drnbench/request-response/request-pattern.rb
      (from lib/drnbench/request-response/runner.rb)
  Modified files:
    lib/drnbench/request-response/runner.rb

  Copied: lib/drnbench/request-response/request-pattern.rb (+6 -72) 69%
===================================================================
--- lib/drnbench/request-response/runner.rb    2014-10-04 18:44:38 +0900 (cf31394)
+++ lib/drnbench/request-response/request-pattern.rb    2014-10-04 18:53:54 +0900 (4a23cbd)
@@ -13,75 +13,9 @@
 # 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 "drnbench/client/http"
-require "drnbench/client/http-droonga"
-require "drnbench/request-response/result"
-
 module Drnbench
   module RequestResponse
-    class Runner
-      attr_reader :n_clients, :result
-
-      def initialize(n_clients, config)
-        n_clients = 1 if n_clients.zero?
-        @n_clients = n_clients
-        @config = config
-
-        abstract = Abstract.new(@config.request_patterns, @config)
-        @requests = abstract.requests.shuffle
-      end
-
-      def run
-        process_requests
-        @result
-      end
-
-      private
-      def process_requests
-        requests_queue = Queue.new
-        @requests.each do |request|
-          requests_queue.push(request)
-        end
-
-        @result = Result.new(:n_clients => @n_clients,
-                             :duration => @config.duration,
-                             :n_slow_requests => @config.n_slow_requests)
-
-        client_params = {
-          :requests => requests_queue,
-          :result   => @result,
-        }
-        @clients = @n_clients.times.collect do |index|
-          client = nil
-          case****@confi*****
-          when :http
-            client = HttpClient.new(client_params, @config)
-          when :http_droonga
-            client = HttpDroongaClient.new(client_params, @config)
-          else
-            raise ArgumentError.new("Unknown mode: #{@config.mode}")
-          end
-          client.run
-          client
-        end
-
-        start_time = Time.now
-        while Time.now - start_time < @config.duration
-          sleep 1
-          if requests_queue.empty?
-            puts "WORNING: requests queue becomes empty! (#{Time.now - start_time} sec)"
-            @result.duration = Time.now - start_time
-            break
-          end
-        end
-
-        @clients.each do |client|
-          client.stop
-        end
-
-        @result
-      end
-
+    module RequestPattern
       class Abstract
         def initialize(source, config)
           @source = source
@@ -109,12 +43,12 @@ module Drnbench
           end
 
           if****@sourc*****_a?(Array)
-            if PatternsGroup.is_valid_source?(@source.first)
+            if PatternsGroup.valid_source?(@source.first)
               retur****@sourc***** do |group|
                 PatternsGroup.new(group, self)
               end
             end
-            if PatternsGroup.is_valid_source?(@source)
+            if PatternsGroup.valid_source?(@source)
               return [
                 PatternsGroup.new(@source, self),
               ]
@@ -139,9 +73,9 @@ module Drnbench
 
       class PatternsGroup
         class << self
-          def is_valid_source?(source)
+          def valid_source?(source)
             if source.is_a?(Array)
-              return Pattern.is_valid_source?(source.first)
+              return Pattern.valid_source?(source.first)
             end
             if source.is_a?(Hash)
               return source.has_key?("patterns")
@@ -210,7 +144,7 @@ module Drnbench
 
       class Pattern
         class << self
-          def is_valid_source?(source)
+          def valid_source?(source)
             return true if source.is_a?(String)
             return false if source.is_a?(Array)
             return !source.has_key?("patterns") if source.is_a?(Hash)

  Modified: lib/drnbench/request-response/runner.rb (+2 -163)
===================================================================
--- lib/drnbench/request-response/runner.rb    2014-10-04 18:44:38 +0900 (cf31394)
+++ lib/drnbench/request-response/runner.rb    2014-10-04 18:53:54 +0900 (e13aa7f)
@@ -16,6 +16,7 @@
 require "drnbench/client/http"
 require "drnbench/client/http-droonga"
 require "drnbench/request-response/result"
+require "drnbench/request-response/request-pattern"
 
 module Drnbench
   module RequestResponse
@@ -27,7 +28,7 @@ module Drnbench
         @n_clients = n_clients
         @config = config
 
-        abstract = Abstract.new(@config.request_patterns, @config)
+        abstract = RequestPattern::Abstract.new(@config.request_patterns, @config)
         @requests = abstract.requests.shuffle
       end
 
@@ -81,168 +82,6 @@ module Drnbench
 
         @result
       end
-
-      class Abstract
-        def initialize(source, config)
-          @source = source
-          @config = config
-        end
-
-        def groups
-          @groups ||= prepare_groups
-        end
-
-        def default_group_frequency
-          1.0 / groups.size
-        end
-
-        def requests
-          @requests ||= populate_requests
-        end
-
-        private
-        def prepare_groups
-          if****@sourc*****_a?(Hash)
-            retur****@sourc***** do |group|
-              PatternsGroup.new(group, self)
-            end
-          end
-
-          if****@sourc*****_a?(Array)
-            if PatternsGroup.is_valid_source?(@source.first)
-              retur****@sourc***** do |group|
-                PatternsGroup.new(group, self)
-              end
-            end
-            if PatternsGroup.is_valid_source?(@source)
-              return [
-                PatternsGroup.new(@source, self),
-              ]
-            end
-          end
-
-          []
-        end
-
-        def populate_requests
-          requests = []
-          groups.each do |group|
-            n_requests =****@confi*****_requests * @config.end_n_clients * group.frequency
-            base_patterns = group.patterns.shuffle
-            n_requests.round.times do |count|
-              pattern = base_patterns[count % base_patterns.size]
-              requests << pattern.to_request
-            end
-          end
-        end
-      end
-
-      class PatternsGroup
-        class << self
-          def is_valid_source?(source)
-            if source.is_a?(Array)
-              return Pattern.is_valid_source?(source.first)
-            end
-            if source.is_a?(Hash)
-              return source.has_key?("patterns")
-            end
-            raise "invalid group: #{JSON.stringify(source)}"
-          end
-        end
-
-        attr_reader :abstract
-
-        def initialize(source, abstract)
-          @source = source
-          @abstract = abstract
-        end
-
-        def frequency
-          if****@sourc*****_a?(Hash) and****@sourc*****_key?("frequency")
-            return @source["frequency"].to_f
-          end
-          @abstract.default_group_frequency
-        end
-
-        def host
-          return nil unles****@sourc*****_a?(Hash)
-          @source["host"]
-        end
-
-        def port
-          return nil unles****@sourc*****_a?(Hash)
-          @source["port"]
-        end
-
-        def method
-          return nil unles****@sourc*****_a?(Hash)
-          @source["method"]
-        end
-
-        def timeout
-          return nil unles****@sourc*****_a?(Hash)
-          @source["timeout"]
-        end
-
-        def patterns
-          @patterns ||= prepare_patterns
-        end
-
-        private
-        def prepare_patterns
-          if****@sourc*****_a?(Hash)
-            if****@sourc*****_key?("pattern")
-              return [
-                Pattern.new(@source["pattern"], self),
-              ]
-            else
-              return @source["patterns"].collect do |pattern|
-                Pattern.new(pattern, self)
-              end
-            end
-          elsif****@sourc*****_a?(Array)
-            retur****@sourc***** do |pattern|
-              Pattern.new(pattern, self)
-            end
-          end
-        end
-      end
-
-      class Pattern
-        class << self
-          def is_valid_source?(source)
-            return true if source.is_a?(String)
-            return false if source.is_a?(Array)
-            return !source.has_key?("patterns") if source.is_a?(Hash)
-            raise "invalid pattern: #{JSON.stringify(source)}"
-          end
-        end
-
-        attr_reader :group
-
-        def initialize(source, group)
-          @source = source
-          @group = group
-        end
-
-        def to_request
-          @populated ||= populate
-        end
-
-        private
-        def populate
-          if****@sourc*****_a?(String)
-            request = { "path" => @source }
-          else
-            request = @source
-          end
-          request["host"] ||=****@group*****
-          request["port"] ||=****@group*****
-          request["method"] ||=****@group*****
-          request["timeout"] ||=****@group*****
-          request
-        end
-      end
     end
   end
 end
-------------- next part --------------
HTML����������������������������...
Download 



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