mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.0 KiB
99 lines
2.0 KiB
16 years ago
|
#!/usr/bin/env ruby
|
||
16 years ago
|
require 'socket'
|
||
16 years ago
|
|
||
|
def test(description)
|
||
|
pid = fork do
|
||
|
exec(File.dirname(__FILE__) + "/echo")
|
||
|
end
|
||
|
|
||
16 years ago
|
puts "#{description}: "
|
||
16 years ago
|
begin
|
||
|
sleep 0.5 # give time for the server to start
|
||
|
yield(pid)
|
||
|
rescue
|
||
16 years ago
|
puts "\033[1;31mFAIL\033[m"
|
||
16 years ago
|
raise $!
|
||
|
ensure
|
||
|
`kill -9 #{pid}`
|
||
|
end
|
||
16 years ago
|
puts "\033[1;32mPASS\033[m"
|
||
16 years ago
|
end
|
||
|
|
||
|
test("make sure echo server works") do
|
||
|
socket = TCPSocket.open("localhost", 5000)
|
||
|
w = socket.write("hello");
|
||
|
raise "error" unless w == 5
|
||
|
|
||
|
got = socket.recv(5);
|
||
|
raise "error" unless got == "hello"
|
||
|
|
||
|
socket.close
|
||
|
end
|
||
|
|
||
|
test("doing nothing should not timeout the server") do |pid|
|
||
|
10.times do
|
||
|
print "."
|
||
|
STDOUT.flush
|
||
|
if Process.waitpid(pid, Process::WNOHANG)
|
||
|
raise "server died when it shouldn't have"
|
||
|
end
|
||
|
sleep 1
|
||
|
end
|
||
|
puts ""
|
||
|
end
|
||
|
|
||
|
test("connecting and doing nothing to should timeout in 5 seconds") do |pid|
|
||
|
socket = TCPSocket.open("localhost", 5000)
|
||
|
i = 0
|
||
|
10.times do
|
||
|
print "."
|
||
|
STDOUT.flush
|
||
|
break if Process.waitpid(pid, Process::WNOHANG)
|
||
|
sleep 1
|
||
|
i+=1
|
||
|
end
|
||
|
puts ""
|
||
|
raise "died too soon (after #{i} seconds)" if i < 5
|
||
|
raise "died too late (after #{i} seconds)" if i > 6
|
||
|
end
|
||
|
|
||
|
|
||
|
test("connecting and writing once to should timeout in 5 seconds") do |pid|
|
||
|
socket = TCPSocket.open("localhost", 5000)
|
||
|
w = socket.write("hello");
|
||
|
raise "error" unless w == 5
|
||
|
|
||
|
i = 0
|
||
|
10.times do
|
||
|
print "."
|
||
|
STDOUT.flush
|
||
|
break if Process.waitpid(pid, Process::WNOHANG)
|
||
|
sleep 1
|
||
|
i+=1
|
||
|
end
|
||
|
puts ""
|
||
|
raise "died too soon (after #{i} seconds)" if i < 5
|
||
|
raise "died too late (after #{i} seconds)" if i > 6
|
||
|
end
|
||
|
|
||
|
test("connecting waiting 3, writing once to should timeout in 8 seconds") do |pid|
|
||
|
socket = TCPSocket.open("localhost", 5000)
|
||
|
|
||
|
sleep 3
|
||
|
|
||
|
w = socket.write("hello");
|
||
|
raise "error" unless w == 5
|
||
|
|
||
|
i = 0
|
||
|
10.times do
|
||
|
print "."
|
||
|
STDOUT.flush
|
||
|
break if Process.waitpid(pid, Process::WNOHANG)
|
||
|
sleep 1
|
||
|
i+=1
|
||
|
end
|
||
|
puts ""
|
||
|
raise "died too soon (after #{i} seconds)" if i < 5
|
||
|
raise "died too late (after #{i} seconds)" if i > 6
|
||
|
end
|