#!/usr/local/bin/ruby #this script is for testing the server #add all clients to this group to kill $group_id = 0; #all server to this group to pass on signals $server_group_id = 0; def get_new_port myport = 1000 + rand(5000) port = myport.to_s() puts "Testing on port "+port return port end def test1 port = get_new_port puts "Testing with one client..." server_pid = fork do exec("./server "+port+" >> /dev/null") end sleep 3.0 request_pid = fork do exec("./440request_client 127.0.0.1 "+port+" aadInDGqoCgOM >> tempfile") end sleep 2.0 client1_pid = fork do exec("./440worker_client 127.0.0.1 "+port+" >> /dev/null") end $group_id = Process.getpgid(client1_pid) Process.waitpid(request_pid) Process.kill("SIGTERM", server_pid); sleep 2.0 grep_pid = fork do exec("cat tempfile | grep \"ADghb\" >> /dev/null") end Process.waitpid(grep_pid) return_val = $? if(return_val == 0) puts "Test1 passed." else puts "Test1 failed." end end def test2 port = get_new_port puts "Testing with multiple clients..." server_pid = fork do exec("./server "+port+" >> /dev/null") end sleep 2.0 request_pid = fork do exec("./440request_client 127.0.0.1 "+port+" aadInDGqoCgOM >> tempfile") end sleep 2.0 f1 = IO.popen("./440worker_client 127.0.0.1 "+port+" >> /dev/null") client1_pid = f1.pid f2 = IO.popen("./440worker_client 127.0.0.1 "+port+" >> /dev/null") client2_pid = f2.pid f3 = IO.popen("./440worker_client 127.0.0.1 "+port+" >> /dev/null") client3_pid = f3.pid Process.waitpid(request_pid) Process.kill("SIGTERM", server_pid); sleep 2.0 grep_pid = fork do exec("cat tempfile | grep \"ADghb\" >> /dev/null") end Process.waitpid(grep_pid) return_val = $? if(return_val == 0) puts "Test2 passed." else puts "Test2 failed." end end def test3 port = get_new_port puts "Testing single client failure..." server_pid = fork do exec("./server "+port+" >> /dev/null") end sleep 2.0 request_pid = fork do exec("./440request_client 127.0.0.1 "+port+" aadInDGqoCgOM >> tempfile") end f = IO.popen("./440worker_client 127.0.0.1 "+port+" >> /dev/null") client_pid = f.pid Process.kill("SIGKILL", client_pid) Process.wait(client_pid) client_pid = fork do Process.setpgid(0, $group_id) exec("./440worker_client 127.0.0.1 "+port+" >> /dev/null") end Process.waitpid(request_pid) Process.kill("SIGTERM", server_pid); sleep 2.0 grep_pid = fork do exec("cat tempfile | grep \"ADghb\" >> /dev/null") end Process.waitpid(grep_pid) return_val = $? if(return_val == 0) puts "Test3 passed." else puts "Test3 failed." end end def test4 port = get_new_port puts "Testing multiple clients with LOSSY..." server_pid = fork do exec("./server "+port+" >> /dev/null") end sleep 2.0 request_pid = fork do exec("./440request_client 127.0.0.1 "+port+" aadInDGqoCgOM >> tempfile") end sleep 2.0 f1 = IO.popen("./440worker_client 127.0.0.1 "+port+" >> /dev/null") client1_pid = f1.pid f2 = IO.popen("./440worker_client 127.0.0.1 "+port+" >> /dev/null") client2_pid = f2.pid f3 = IO.popen("./440worker_client 127.0.0.1 "+port+" >> /dev/null") client3_pid = f3.pid Process.waitpid(request_pid) Process.kill("SIGTERM", server_pid); sleep 2.0 grep_pid = fork do exec("cat tempfile | grep \"ADghb\" >> /dev/null") end Process.waitpid(grep_pid) return_val = $? if(return_val == 0) puts "Test4 passed." else puts "Test4 failed." end end def test5 port = get_new_port puts "Testing multiple clients with LOSSY...one dies" server_pid = fork do exec("./server "+port+" >> /dev/null") end sleep 2.0 request_pid = fork do exec("./440request_client 127.0.0.1 "+port+" aadInDGqoCgOM >> tempfile") end sleep 2.0 f1 = IO.popen("./440worker_client 127.0.0.1 "+port+" >> /dev/null") client1_pid = f1.pid f2 = IO.popen("./440worker_client 127.0.0.1 "+port+" >> /dev/null") client2_pid = f2.pid f3 = IO.popen("./440worker_client 127.0.0.1 "+port+" >> /dev/null") client3_pid = f3.pid Process.kill("SIGKILL", client2_pid) Process.waitpid(request_pid) Process.kill("SIGTERM", server_pid); sleep 3.0 grep_pid = fork do exec("cat tempfile | grep \"ADghb\" >> /dev/null") end Process.waitpid(grep_pid) return_val = $? if(return_val == 0) puts "Test5 passed." else puts "Test5 failed." end end ENV['LOSSY'] = '0' test1 system("rm tempfile") test2 system("rm tempfile") test3 system("rm tempfile") ENV['LOSSY'] = '10' test4 system("rm tempfile") test5 system("rm tempfile") #kill any remaining clients Process.kill("-SIGKILL", $group_id)