diff options
Diffstat (limited to 'test/test_server.rb')
-rw-r--r-- | test/test_server.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/test_server.rb b/test/test_server.rb index 0410f65..50e739a 100644 --- a/test/test_server.rb +++ b/test/test_server.rb @@ -845,4 +845,24 @@ class TestServer < Testcase ensure quit_wait(pid) end + + def test_inherit_tcp_nodelay_set + err = @err + cfg = Yahns::Config.new + host, port = @srv.addr[3], @srv.addr[1] + @srv.setsockopt(:IPPROTO_TCP, :TCP_NODELAY, 0) + assert_equal 0, @srv.getsockopt(:IPPROTO_TCP, :TCP_NODELAY).int + cfg.instance_eval do + ru = lambda { |_| [ 200, { 'Content-Length' => '2' } , [ 'HI' ] ] } + GTL.synchronize { app(:rack, ru) { listen "#{host}:#{port}" } } + logger(Logger.new(err.path)) + end + pid = mkserver(cfg, @srv) { ENV["YAHNS_FD"] = "#{@srv.fileno}" } + run_client(host, port) { |res| assert_equal "HI", res.body } + + # TCP socket option is shared at file level, not FD level: + assert_equal 1, @srv.getsockopt(:IPPROTO_TCP, :TCP_NODELAY).int + ensure + quit_wait(pid) + end end |