about summary refs log tree commit homepage
path: root/test/test_linux.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_linux.rb')
-rw-r--r--test/test_linux.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/test_linux.rb b/test/test_linux.rb
index 5a7269d..d3c8da7 100644
--- a/test/test_linux.rb
+++ b/test/test_linux.rb
@@ -62,6 +62,32 @@ class TestLinux < Test::Unit::TestCase
     assert_equal 1, stats[addr].active
   end
 
+  def test_tcp_reuse_sock
+    nlsock = Raindrops::InetDiagSocket.new
+    s = TCPServer.new(TEST_ADDR, 0)
+    port = s.addr[1]
+    addr = "#{TEST_ADDR}:#{port}"
+    addrs = [ addr ]
+    stats = tcp_listener_stats(addrs, nlsock)
+    assert_equal 1, stats.size
+    assert_equal 0, stats[addr].queued
+    assert_equal 0, stats[addr].active
+
+    c = TCPSocket.new(TEST_ADDR, port)
+    stats = tcp_listener_stats(addrs, nlsock)
+    assert_equal 1, stats.size
+    assert_equal 1, stats[addr].queued
+    assert_equal 0, stats[addr].active
+
+    sc = s.accept
+    stats = tcp_listener_stats(addrs, nlsock)
+    assert_equal 1, stats.size
+    assert_equal 0, stats[addr].queued
+    assert_equal 1, stats[addr].active
+    ensure
+      nlsock.close
+  end
+
   def test_tcp_multi
     s1 = TCPServer.new(TEST_ADDR, 0)
     s2 = TCPServer.new(TEST_ADDR, 0)