Sha256: 35c39b66a314f40d5ef6cc5b1b10888016d05664c1098d1c7d86f390d02178c0

Contents?: true

Size: 1.83 KB

Versions: 7

Compression:

Stored size: 1.83 KB

Contents

module Bench
  class Session
    include Logging
    include Timer
    attr_accessor :cookies, :last_result, :results, :thread_id, :iteration, :client_id
    
    def initialize(thread_id,iteration)
      @cookies = {}
      @results = {}
      @thread_id,@iteration = thread_id,iteration
    end
      
    def post(marker,url,headers={})
      @body = yield
      _request(marker,:_post,url,headers)
    end
    
    def get(marker,url,headers={})
      params = yield if block_given?
      url_params = url.clone
      url_params << "?" + _url_params(params) if params
      _request(marker,:_get,url_params,headers)          
    end
    
    protected
    def _request(marker,verb,url,headers)
      result = Result.new(marker,verb,url,@thread_id,@iteration)
      @results[result.marker] ||= []
      @results[result.marker] << result
      begin
        result.time = time do
          headers.merge!(:cookies => @cookies)
            result.last_response = send(verb,url,headers)
            @last_result = result  
        end
        logger.info "#{log_prefix} #{verb.to_s.upcase.gsub(/_/,'')} #{url} #{@last_result.code} #{result.time}"      
      rescue RestClient::Exception => e
        result.error = e
        logger.info "#{log_prefix} #{verb.to_s.upcase.gsub(/_/,'')} #{url}"      
        logger.error "#{log_prefix} #{e.http_code.to_s} #{e.message}\n"
        raise e
      end
      @cookies = @cookies.merge(@last_result.cookies)
      @last_result
    end
    
    def _get(url,headers)
      #logger.info "GET #{url}"
      RestClient.get(url, headers)
    end
    
    def _post(url,headers)
      #logger.info "POST #{url}"
      RestClient.post(url, @body, headers)
    end
    
    def _url_params(params)
      elements = []
      params.each do |key,value|
        elements << "#{key}=#{value}"
      end
      elements.join('&')
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rhosync-2.0.0.beta8 bench/lib/bench/session.rb
rhosync-2.0.0.beta7 bench/lib/bench/session.rb
rhosync-2.0.0.beta6 bench/lib/bench/session.rb
rhosync-2.0.0.beta4 bench/lib/bench/session.rb
rhosync-2.0.0.beta3 bench/lib/bench/session.rb
rhosync-2.0.0.beta2 bench/lib/bench/session.rb
rhosync-2.0.0.beta1 bench/lib/bench/session.rb