class Drnbench::RequestResponse::RequestPattern::Abstract

Public Class Methods

new(source, config) click to toggle source
# File lib/drnbench/request-response/request-pattern.rb, line 20
def initialize(source, config)
  @source = source
  @config = config
end

Public Instance Methods

default_group_frequency() click to toggle source
# File lib/drnbench/request-response/request-pattern.rb, line 29
def default_group_frequency
  1.0 / groups.size
end
groups() click to toggle source
# File lib/drnbench/request-response/request-pattern.rb, line 25
def groups
  @groups ||= prepare_groups
end
requests() click to toggle source
# File lib/drnbench/request-response/request-pattern.rb, line 33
def requests
  @requests ||= populate_requests
end

Private Instance Methods

populate_requests() click to toggle source
# File lib/drnbench/request-response/request-pattern.rb, line 64
def populate_requests
  requests = []
  groups.each do |group|
    n_requests = @config.n_requests * @config.end_n_clients * group.frequency
    base_patterns = group.patterns.shuffle
    n_requests.ceil.times do |count|
      pattern = base_patterns[count % base_patterns.size]
      if @config.default_hosts.size > 1
        @config.default_hosts.each do |host|
          request = pattern.to_request
          request["host"] ||= host
          requests << request
        end
      else
        requests << pattern.to_request
      end
    end
  end
  requests
end
prepare_groups() click to toggle source
# File lib/drnbench/request-response/request-pattern.rb, line 38
def prepare_groups
  if @source.is_a?(Array)
    if PatternsGroup.valid_source?(@source.first)
      return @source.collect do |group|
        PatternsGroup.new(group, self)
      end
    end
    if PatternsGroup.valid_source?(@source)
      return [
        PatternsGroup.new(@source, self),
      ]
    end
  elsif @source.is_a?(Hash)
    if PatternsGroup.valid_source?(@source)
      return [
        PatternsGroup.new(@source, self),
      ]
    end
    return @source.values.collect do |group|
      PatternsGroup.new(group, self)
    end
  end

  []
end