about summary refs log tree commit homepage
path: root/test/test_server.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_server.rb')
-rw-r--r--test/test_server.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/test_server.rb b/test/test_server.rb
index 958b4f0..289770d 100644
--- a/test/test_server.rb
+++ b/test/test_server.rb
@@ -380,4 +380,32 @@ class TestServer < Testcase
     end
     [ pid, host, port ]
   end
+
+  def test_nonpersistent
+    err = @err
+    cfg = Yahns::Config.new
+    host, port = @srv.addr[3], @srv.addr[1]
+    cfg.instance_eval do
+      ru = lambda { |_| [ 200, {'Content-Length'=>'2'}, ['HI'] ] }
+      GTL.synchronize {
+        app(:rack, ru) {
+          listen "#{host}:#{port}"
+          persistent_connections false
+        }
+      }
+      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
+    c = TCPSocket.new(host, port)
+    c.write("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
+    buf = Timeout.timeout(10) { c.read }
+    assert_match(/Connection: close/, buf)
+    c.close
+  ensure
+    quit_wait(pid)
+  end
 end