class HttpProfiler::Runner

Public Class Methods

new(configFileName, config) click to toggle source
# File lib/httpProfiler.rb, line 10
def initialize(configFileName, config)
  @configFileName = configFileName;
  @options = config;
  @cookies = Hash.new();
  if @options.has_key?('cookies') then
    @cookies = @options['cookies'];
    @options.delete('cookies');
  end
  @requestGroups = Hash.new();
  if @options.has_key?('requestGroups') then
    @requestGroups = @options['requestGroups'];
    @options.delete('requestGroups');
  end
end

Public Instance Methods

run() click to toggle source
# File lib/httpProfiler.rb, line 64
def run
  if @options['verbose'] then
    require 'pp';
    puts "\n\nConfiguration taken from: [#{@configFileName}]";
    puts "options:";
    pp @options;
    puts "requestGroups:";
    pp @requestGroups;
    puts "\n\n";
  end
  results = Hash.new();
  @requestGroups.each_pair do | requestGroupName, requestGroup |
    results[requestGroupName] = runRequestGroup(requestGroupName, 
                                                requestGroup.merge!(@options));
  end
  results;
end
runRequestGroup(requestGroupName, requestGroup) click to toggle source
# File lib/httpProfiler.rb, line 25
def runRequestGroup(requestGroupName, requestGroup)
  requestList = Array.new();
  @options['replications'].times do 
    requestGroup['urls'].each do | url |
      requestList.push(url);
    end    
  end

  randGen = nil;
  if requestGroup['randomize'] == 0 then
  elsif requestGroup['randomize'] < 0 then
    randGen = Random.new();
  else
    randGen = Random.new(requestGroup['randomize']);
  end
  requestList.shuffle!(random: randGen) unless randGen.nil?;

  connectTimes = Array.new();

  puts requestGroupName if @options['verbose'];
  requestList.each do | url |
    puts "\t#{url}" if @options['verbose'];
    c = Curl::Easy.new(url);
    c.follow_location = true;
    c.perform;
    connectTimes.push(c.connect_time);
    if 0 < @options['delay'] then
      puts "\t\tsleeping(#{@options['delay']})" if @options['verbose'];
      sleep(@options['delay']);
    end
  end

  [ connectTimes.min, 
    connectTimes.average,
    connectTimes.median,
    connectTimes.max,
    connectTimes.standard_deviation ]
end