Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 72 lines (56 sloc) 1.47 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
BENCHMARK_ROOT = File.dirname(__FILE__)
REDIS_ROOT = File.join(BENCHMARK_ROOT, "..", "lib")

$: << REDIS_ROOT
require 'redis'
require 'benchmark'

def show_usage
  puts <<-EOL
Usage: worker.rb [read:write] <start_index> <end_index> <sleep_msec>
EOL
end

def shift_from_argv
  value = ARGV.shift
  unless value
    show_usage
    exit -1
  end
  value
end

operation = shift_from_argv.to_sym
start_index = shift_from_argv.to_i
end_index = shift_from_argv.to_i
sleep_msec = shift_from_argv.to_i
sleep_duration = sleep_msec/1000.0

redis = Redis.new

case operation
  when :initialize

    start_index.upto(end_index) do |i|
      redis[i] = 0
    end

  when :clear

    start_index.upto(end_index) do |i|
      redis.delete(i)
    end

  when :read, :write

    puts "Starting to #{operation} at segment #{end_index + 1}"

    loop do
      t1 = Time.now
      start_index.upto(end_index) do |i|
        case operation
          when :read
            redis.get(i)
          when :write
            redis.incr(i)
          else
            raise "Unknown operation: #{operation}"
        end
        sleep sleep_duration
      end
      t2 = Time.now

      requests_processed = end_index - start_index
      time = t2 - t1
      puts "#{t2.strftime("%H:%M")} [segment #{end_index + 1}] : Processed #{requests_processed} requests in #{time} seconds - #{(requests_processed/time).round} requests/sec"
    end

  else
    raise "Unknown operation: #{operation}"
end

Something went wrong with that request. Please try again.