def test_GET
nconns = 16; nreqs = 4
nconns.times do
cli_sock, svr_sock = tcp_socketpair
begin
@queue.push(svr_sock)
nreqs.times do |i|
cli_sock << "GET / HTTP/1.1\r\n"
cli_sock << "Host: localhost:8080\r\n"
cli_sock << "Connection: close\r\n" if (i + 1 == nreqs)
cli_sock << "\r\n"
cli_sock.flush
assert_equal("HTTP/1.1 200 OK\r\n", cli_sock.gets("\n"))
assert_equal("Connection: close\r\n", cli_sock.gets("\n")) if (i + 1 == nreqs)
assert_equal("Content-Length: 26\r\n", cli_sock.gets("\n"))
assert_equal("Content-Type: text/html\r\n", cli_sock.gets("\n"))
assert_match(cli_sock.gets("\n"), Regexp.compile(Regexp.quote("Date: ") + "(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} GMT" + Regexp.quote("\r\n")))
assert_equal("Server: #{Rucy::SERVER_TOKEN_LIST}\r\n", cli_sock.gets("\n"))
assert_equal("\r\n", cli_sock.gets("\n"))
assert_equal("<html>Hello world.</html>\n", cli_sock.read(26))
end
assert_equal('', cli_sock.read)
assert(cli_sock.eof?)
ensure
cli_sock.close
end
end
end