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
|
require 'test/minirunit.rb'
require 'socket'
UNUSED_PORT = 9999
def testServer
port = 7777
serverMessages = []
serverThread = Thread.new {
begin
server = TCPServer.new(nil, port);
while (session = server.accept)
msg = session.gets
serverMessages << msg;
if msg =~ /^quit/
session.close
test_exception(IOError) {
session.close
}
session = nil
break;
end
session.puts msg
end
rescue => e
$stderr.puts e,e.backtrace
ensure
session.close if session
server.close()
end
}
count = 0
begin
clientSocket = TCPSocket.new('localhost', port)
clientSocket.puts "quit"
test_ok nil != serverThread.join, "Server Thread did not end"
test_equal(["quit\n"], serverMessages)
return nil
rescue Errno::ECONNREFUSED
count += 1
sleep 1
retry unless count > 1
end
$stderr.puts "Waiting for server Thread"
test_fail("client could not connect")
sleep 5
end
def testNoConnection
test_exception(Errno::ECONNREFUSED) {
clientSocket = TCPSocket.new('localhost', UNUSED_PORT)
}
end
TEST_LINE = "this is a test\n"
def testSimpleEcho
clientSocket = TCPSocket.new('localhost', 7)
clientSocket.puts TEST_LINE
line = clientSocket.gets
test_equal(TEST_LINE, line)
clientSocket.close
end
testNoConnection
#testSimpleEcho
testServer
|