about summary refs log tree commit homepage
path: root/test
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2013-10-26 01:58:34 +0000
committerEric Wong <normalperson@yhbt.net>2013-10-26 02:00:17 +0000
commit5d5377e094745ee76cd066d2244c52b40647d1cc (patch)
tree128abda8eeb7f096f57d6596e5622cfb9aadda46 /test
parent14b21f7a162c6f4e76d00d6d08fa9a09524997ae (diff)
downloadyahns-5d5377e094745ee76cd066d2244c52b40647d1cc.tar.gz
This reduces the amount of code we have in our tests to
improve maintainability.
Diffstat (limited to 'test')
-rw-r--r--test/server_helper.rb4
-rw-r--r--test/test_client_expire.rb17
-rw-r--r--test/test_expect_100.rb4
-rw-r--r--test/test_output_buffering.rb18
-rw-r--r--test/test_rack_hijack.rb6
-rw-r--r--test/test_reopen_logs.rb5
-rw-r--r--test/test_serve_static.rb10
-rw-r--r--test/test_server.rb35
8 files changed, 19 insertions, 80 deletions
diff --git a/test/server_helper.rb b/test/server_helper.rb
index 73d3ec8..52b08c7 100644
--- a/test/server_helper.rb
+++ b/test/server_helper.rb
@@ -73,9 +73,9 @@ module ServerHelper
 
   def mkserver(cfg)
     fork do
-      srv = Yahns::Server.new(cfg)
       ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
+      yield if block_given?
+      Yahns::Server.new(cfg).start.join
     end
   end
 end
diff --git a/test/test_client_expire.rb b/test/test_client_expire.rb
index 9e2ac54..c85441a 100644
--- a/test/test_client_expire.rb
+++ b/test/test_client_expire.rb
@@ -22,11 +22,7 @@ class TestClientExpire < Testcase
       end
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     Net::HTTP.start(host, port) { |h|
       res = h.get("/")
       assert_empty res.body
@@ -51,11 +47,7 @@ class TestClientExpire < Testcase
       end
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     f = get_tcp_client(host, port)
     s = get_tcp_client(host, port)
     req = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"
@@ -102,8 +94,7 @@ class TestClientExpire < Testcase
       end
       stderr_path err.path
     end
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
+    pid = mkserver(cfg) do
       keep = { $stderr => true, $stdout => true, $stdin => true, @srv => true }
       ObjectSpace.each_object(IO) do |obj|
         next if keep[obj]
@@ -112,8 +103,6 @@ class TestClientExpire < Testcase
         rescue IOError # could be uninitialized
         end
       end
-      Yahns::Server.new(cfg).start.join
-      exit!($!.nil?)
     end
     f = get_tcp_client(host, port)
     f.write "G"
diff --git a/test/test_expect_100.rb b/test/test_expect_100.rb
index 4c19493..868fe3a 100644
--- a/test/test_expect_100.rb
+++ b/test/test_expect_100.rb
@@ -154,12 +154,10 @@ class TestExpect100 < Testcase
         }
       }
     end
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
+    pid = mkserver(cfg) do
       $_tw_blocked = 0
       $_tw_block_on = block_on
       Yahns::HttpClient.__send__(:include, TrywriteBlocked)
-      Yahns::Server.new(cfg).start.join
     end
     c = get_tcp_client(host, port)
     if body.size > 0
diff --git a/test/test_output_buffering.rb b/test/test_output_buffering.rb
index ae9b449..b6c7500 100644
--- a/test/test_output_buffering.rb
+++ b/test/test_output_buffering.rb
@@ -58,11 +58,7 @@ class TestOutputBuffering < Testcase
       end
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
 
     case check_type
     when :curl
@@ -163,11 +159,7 @@ class TestOutputBuffering < Testcase
       end
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     threads = []
 
     # start with just a big header
@@ -261,11 +253,7 @@ class TestOutputBuffering < Testcase
       end
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     threads = []
     threads << Thread.new do
       c = get_tcp_client(host, port)
diff --git a/test/test_rack_hijack.rb b/test/test_rack_hijack.rb
index 8376692..03c3051 100644
--- a/test/test_rack_hijack.rb
+++ b/test/test_rack_hijack.rb
@@ -53,11 +53,7 @@ class TestRackHijack < Testcase
       GTL.synchronize { app(:rack, HIJACK_APP) { listen "#{host}:#{port}" } }
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     res = Net::HTTP.start(host, port) { |h| h.get("/hijack_req") }
     assert_equal "request.hijacked", res.body
     assert_equal 200, res.code.to_i
diff --git a/test/test_reopen_logs.rb b/test/test_reopen_logs.rb
index 4ca6e66..8acac6b 100644
--- a/test/test_reopen_logs.rb
+++ b/test/test_reopen_logs.rb
@@ -32,10 +32,7 @@ class TestReopenLogs < Testcase
       end
       worker_processes 1 if worker
     end
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      Yahns::Server.new(cfg).start.join
-    end
+    pid = mkserver(cfg)
     Net::HTTP.start(host, port) do |http|
       res = http.request(Net::HTTP::Get.new("/aaa"))
       assert_equal 200, res.code.to_i
diff --git a/test/test_serve_static.rb b/test/test_serve_static.rb
index 95c07bc..6cb337e 100644
--- a/test/test_serve_static.rb
+++ b/test/test_serve_static.rb
@@ -19,11 +19,7 @@ class TestServeStatic < Testcase
       end
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     gplv3 = File.read("COPYING")
     Net::HTTP.start(host, port) do |http|
       res = http.request(Net::HTTP::Get.new("/COPYING"))
@@ -47,12 +43,10 @@ class TestServeStatic < Testcase
       end
       logger(Logger.new(err.path))
     end
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
+    pid = mkserver(cfg) do
       $_tw_blocked = 0
       $_tw_block_on = [1]
       Yahns::HttpClient.__send__(:include, TrywriteBlocked)
-      Yahns::Server.new(cfg).start.join
     end
     gplv3 = File.read("COPYING")
     Net::HTTP.start(host, port) do |http|
diff --git a/test/test_server.rb b/test/test_server.rb
index d87f617..d10a70e 100644
--- a/test/test_server.rb
+++ b/test/test_server.rb
@@ -18,11 +18,7 @@ class TestServer < Testcase
       GTL.synchronize { app(:rack, ru) { listen "#{host}:#{port}" } }
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     run_client(host, port) { |res| assert_equal "HI", res.body }
     c = get_tcp_client(host, port)
 
@@ -80,11 +76,7 @@ class TestServer < Testcase
       end
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     c = get_tcp_client(host, port)
     buf = "PUT / HTTP/1.0\r\nContent-Length: 2\r\n\r\nHI"
     c.write(buf)
@@ -159,11 +151,7 @@ class TestServer < Testcase
       end
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     c = get_tcp_client(host, port)
     buf = "PUT / HTTP/1.0\r\nTrailer:xbt\r\nTransfer-Encoding: chunked\r\n\r\n"
     c.write(buf)
@@ -344,11 +332,7 @@ class TestServer < Testcase
       GTL.synchronize { app(:rack, ru.path) { listen "#{host}:#{port}" } }
       logger(Logger.new(File.open(err.path, "a")))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     [ pid, host, port ]
   end
 
@@ -366,11 +350,7 @@ class TestServer < Testcase
       }
       logger(Logger.new(err.path))
     end
-    srv = Yahns::Server.new(cfg)
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      srv.start.join
-    end
+    pid = mkserver(cfg)
     c = get_tcp_client(host, port)
     c.write("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
     buf = Timeout.timeout(10) { c.read }
@@ -401,10 +381,7 @@ class TestServer < Testcase
       stderr_path err.path
       stdout_path out.path
     end
-    pid = fork do
-      ENV["YAHNS_FD"] = @srv.fileno.to_s
-      Yahns::Server.new(cfg).start.join
-    end
+    pid = mkserver(cfg)
     c = get_tcp_client(host, port)
     c.write("GET / HTTP/1.0\r\nHost: example.com\r\n\r\n")
     buf = Timeout.timeout(10) { c.read }