Class: SlowServer::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/slow_server/client.rb

Instance Method Summary collapse

Instance Method Details

#chunk_sizeObject



11
12
13
# File 'lib/slow_server/client.rb', line 11

def chunk_size
  (request_body.size / config.chunks.to_f).round
end

#chunksObject



15
16
17
# File 'lib/slow_server/client.rb', line 15

def chunks
  request_body.scan(/.{1,#{chunk_size}}/m)
end

#configObject



7
8
9
# File 'lib/slow_server/client.rb', line 7

def config
  @config ||= ClientConfig.new
end

#get_response(socket) ⇒ Object



36
37
38
39
40
41
# 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_bodyObject



19
20
21
22
23
24
# 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) ⇒ Object



26
27
28
29
30
31
32
33
34
# 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

#startObject



43
44
45
46
47
48
49
50
# 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