class SlowServer::Client

Public Instance Methods

chunk_size() click to toggle source
# File lib/slow_server/client.rb, line 11
def chunk_size
  (request_body.size / config.chunks.to_f).round
end
chunks() click to toggle source
# File lib/slow_server/client.rb, line 15
def chunks
  request_body.scan(/.{1,#{chunk_size}}/m)
end
config() click to toggle source
# File lib/slow_server/client.rb, line 7
def config
  @config ||= ClientConfig.new
end
get_response(socket) click to toggle source
# File lib/slow_server/client.rb, line 36
def get_response(socket)
  response = socket.read
  headers,body = response.split("\r\n\r\n", 2)
  STDERR.puts "\n"
  print body
end
request_body() click to toggle source
# File lib/slow_server/client.rb, line 19
def request_body
  [].tap do |req|
    req << [config.request_method, config.request_uri].join(" ")
    req += config.request_headers
  end.join("\n")
end
send_request(socket) click to toggle source
# File lib/slow_server/client.rb, line 26
def send_request(socket)
  chunks.each do |chunk|
    STDERR.puts "Sending #{chunk_size} bytes"
    socket.print chunk
    STDERR.puts "Waiting for #{config.chunk_delay} seconds"
    sleep config.chunk_delay
  end
  socket.print("\r\n\r\n")
end
start() click to toggle source
# File lib/slow_server/client.rb, line 43
def start
  TCPSocket.open(config.host, config.port) do |socket|
    STDERR.puts "Waiting for #{config.response_delay} seconds"
    sleep config.response_delay
    send_request(socket)
    get_response(socket)
  end
end