10 @srv.close unless @srv.closed?
11 Kgio.accept_cloexec = true
12 Kgio.accept_nonblock = false
15 def test_tryaccept_success
18 b = @srv.kgio_tryaccept
19 assert_kind_of Kgio::Socket, b
20 assert_equal @host, b.kgio_addr
23 def test_tryaccept_flags
26 b = @srv.kgio_tryaccept nil, 0
27 assert_kind_of Kgio::Socket, b
28 assert_equal false, b.nonblock?
29 assert_equal 0, b.fcntl(Fcntl::F_GETFD)
32 def test_blocking_accept_flags
35 b = @srv.kgio_accept nil, 0
36 assert_kind_of Kgio::Socket, b
37 assert_equal false, b.nonblock?
38 assert_equal 0, b.fcntl(Fcntl::F_GETFD)
41 def test_tryaccept_fail
42 assert_equal nil, @srv.kgio_tryaccept
45 def test_blocking_accept
47 pid = fork { sleep 1; a = client_connect; sleep }
49 elapsed = Time.now - t0
50 assert_kind_of Kgio::Socket, b
51 assert_equal @host, b.kgio_addr
52 Process.kill(:TERM, pid)
54 assert elapsed >= 1, "elapsed: #{elapsed}"
57 def test_blocking_accept_with_nonblock_socket
60 pid = fork { sleep 1; a = client_connect; sleep }
62 elapsed = Time.now - t0
63 assert_kind_of Kgio::Socket, b
64 assert_equal @host, b.kgio_addr
65 Process.kill(:TERM, pid)
67 assert elapsed >= 1, "elapsed: #{elapsed}"
70 pid = fork { sleep 6; a = client_connect; sleep }
72 elapsed = Time.now - t0
73 assert_kind_of Kgio::Socket, b
74 assert_equal @host, b.kgio_addr
75 Process.kill(:TERM, pid)
77 assert elapsed >= 6, "elapsed: #{elapsed}"
80 pid = fork { sleep 1; a = client_connect; sleep }
82 elapsed = Time.now - t0
83 assert_kind_of Kgio::Socket, b
84 assert_equal @host, b.kgio_addr
85 Process.kill(:TERM, pid)
87 assert elapsed >= 1, "elapsed: #{elapsed}"