11 @srv.close unless @srv.closed?
12 FileUtils.remove_entry_secure(@tmpdir) if defined?(@tmpdir)
13 Kgio.accept_cloexec = true
14 Kgio.accept_nonblock = false
17 def test_tryaccept_success
20 b = @srv.kgio_tryaccept
21 assert_kind_of Kgio::Socket, b
22 assert_equal @host, b.kgio_addr
26 def test_tryaccept_flags
29 b = @srv.kgio_tryaccept nil, 0
30 assert_kind_of Kgio::Socket, b
31 assert_equal 0, b.fcntl(Fcntl::F_GETFD)
35 def test_blocking_accept_flags
38 b = @srv.kgio_accept nil, 0
39 assert_kind_of Kgio::Socket, b
40 assert_equal 0, b.fcntl(Fcntl::F_GETFD)
44 def test_tryaccept_fail
45 assert_equal nil, @srv.kgio_tryaccept
48 def test_blocking_accept
50 pid = fork { sleep 1; a = client_connect; sleep; a.close }
52 elapsed = Time.now - t0
53 assert_kind_of Kgio::Socket, b
54 assert_equal @host, b.kgio_addr
55 Process.kill(:KILL, pid)
57 assert elapsed >= 1, "elapsed: #{elapsed}"
60 def test_blocking_accept_with_nonblock_socket
63 pid = fork { sleep 1; a = client_connect; sleep; a.close }
65 elapsed = Time.now - t0
66 assert_kind_of Kgio::Socket, b
67 assert_equal @host, b.kgio_addr
68 Process.kill(:KILL, pid)
70 assert elapsed >= 1, "elapsed: #{elapsed}"
73 pid = fork { sleep 6; a = client_connect; sleep; a.close }
75 elapsed = Time.now - t0
76 assert_kind_of Kgio::Socket, b
77 assert_equal @host, b.kgio_addr
78 Process.kill(:KILL, pid)
80 assert elapsed >= 6, "elapsed: #{elapsed}"
83 pid = fork { sleep 1; a = client_connect; sleep; a.close }
85 elapsed = Time.now - t0
86 assert_kind_of Kgio::Socket, b
87 assert_equal @host, b.kgio_addr
88 Process.kill(:KILL, pid)
90 assert elapsed >= 1, "elapsed: #{elapsed}"