kgio 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +9 -0
- data/.gitignore +20 -0
- data/COPYING +165 -0
- data/GIT-VERSION-GEN +40 -0
- data/GNUmakefile +191 -0
- data/HACKING +66 -0
- data/ISSUES +36 -0
- data/LICENSE +18 -0
- data/README +68 -0
- data/Rakefile +169 -0
- data/TODO +1 -0
- data/ext/kgio/extconf.rb +21 -0
- data/ext/kgio/kgio_ext.c +1066 -0
- data/ext/kgio/missing/accept4.h +54 -0
- data/ext/kgio/missing/ancient_ruby.h +19 -0
- data/ext/kgio/my_fileno.h +36 -0
- data/ext/kgio/nonblock.h +15 -0
- data/ext/kgio/sock_for_fd.h +66 -0
- data/kgio.gemspec +36 -0
- data/lib/kgio.rb +18 -0
- data/setup.rb +1586 -0
- data/test/lib_read_write.rb +240 -0
- data/test/lib_server_accept.rb +70 -0
- data/test/test_connect_fd_leak.rb +23 -0
- data/test/test_pipe_popen.rb +14 -0
- data/test/test_pipe_read_write.rb +9 -0
- data/test/test_socketpair_read_write.rb +9 -0
- data/test/test_tcp_client_read_server_write.rb +13 -0
- data/test/test_tcp_connect.rb +73 -0
- data/test/test_tcp_server.rb +16 -0
- data/test/test_tcp_server_read_client_write.rb +13 -0
- data/test/test_unix_client_read_server_write.rb +17 -0
- data/test/test_unix_connect.rb +75 -0
- data/test/test_unix_server.rb +20 -0
- data/test/test_unix_server_read_client_write.rb +17 -0
- metadata +130 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
require './test/lib_server_accept'
|
2
|
+
|
3
|
+
class TestKgioTCPServer < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@host = ENV["TEST_HOST"] || '127.0.0.1'
|
7
|
+
@srv = Kgio::TCPServer.new(@host, 0)
|
8
|
+
@port = @srv.addr[1]
|
9
|
+
end
|
10
|
+
|
11
|
+
def client_connect
|
12
|
+
TCPSocket.new(@host, @port)
|
13
|
+
end
|
14
|
+
|
15
|
+
include LibServerAccept
|
16
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require './test/lib_read_write'
|
2
|
+
|
3
|
+
class TesTcpServerReadClientWrite < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@host = ENV["TEST_HOST"] || '127.0.0.1'
|
6
|
+
@srv = Kgio::TCPServer.new(@host, 0)
|
7
|
+
@port = @srv.addr[1]
|
8
|
+
@wr = Kgio::TCPSocket.new(@host, @port)
|
9
|
+
@rd = @srv.kgio_accept
|
10
|
+
end
|
11
|
+
|
12
|
+
include LibReadWriteTest
|
13
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require './test/lib_read_write'
|
2
|
+
require 'tempfile'
|
3
|
+
|
4
|
+
class TestUnixServerReadClientWrite < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
tmp = Tempfile.new('kgio_unix')
|
7
|
+
@path = tmp.path
|
8
|
+
File.unlink(@path)
|
9
|
+
tmp.close rescue nil
|
10
|
+
@srv = Kgio::UNIXServer.new(@path)
|
11
|
+
@rd = Kgio::UNIXSocket.new(@path)
|
12
|
+
@wr = @srv.kgio_tryaccept
|
13
|
+
end
|
14
|
+
|
15
|
+
include LibReadWriteTest
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'io/nonblock'
|
3
|
+
$-w = true
|
4
|
+
require 'kgio'
|
5
|
+
require 'tempfile'
|
6
|
+
|
7
|
+
class SubSocket < Kgio::Socket
|
8
|
+
attr_accessor :foo
|
9
|
+
def wait_writable
|
10
|
+
@foo = "waited"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class TestKgioUnixConnect < Test::Unit::TestCase
|
15
|
+
|
16
|
+
def setup
|
17
|
+
tmp = Tempfile.new('kgio_unix')
|
18
|
+
@path = tmp.path
|
19
|
+
File.unlink(@path)
|
20
|
+
tmp.close rescue nil
|
21
|
+
@srv = Kgio::UNIXServer.new(@path)
|
22
|
+
@addr = Socket.pack_sockaddr_un(@path)
|
23
|
+
end
|
24
|
+
|
25
|
+
def teardown
|
26
|
+
@srv.close unless @srv.closed?
|
27
|
+
File.unlink(@path)
|
28
|
+
Kgio.accept_cloexec = true
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_unix_socket_new_invalid
|
32
|
+
assert_raises(ArgumentError) { Kgio::UNIXSocket.new('*' * 1024 * 1024) }
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_unix_socket_new
|
36
|
+
sock = Kgio::UNIXSocket.new(@path)
|
37
|
+
assert_instance_of Kgio::UNIXSocket, sock
|
38
|
+
ready = IO.select(nil, [ sock ])
|
39
|
+
assert_equal sock, ready[1][0]
|
40
|
+
assert_equal nil, sock.kgio_write("HELLO")
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_new
|
44
|
+
sock = Kgio::Socket.new(@addr)
|
45
|
+
assert_instance_of Kgio::Socket, sock
|
46
|
+
ready = IO.select(nil, [ sock ])
|
47
|
+
assert_equal sock, ready[1][0]
|
48
|
+
assert_equal nil, sock.kgio_write("HELLO")
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_start
|
52
|
+
sock = Kgio::Socket.start(@addr)
|
53
|
+
assert_instance_of Kgio::Socket, sock
|
54
|
+
ready = IO.select(nil, [ sock ])
|
55
|
+
assert_equal sock, ready[1][0]
|
56
|
+
assert_equal nil, sock.kgio_write("HELLO")
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_socket_start
|
60
|
+
Kgio::wait_writable = :wait_writable
|
61
|
+
sock = SubSocket.start(@addr)
|
62
|
+
assert_nil sock.foo
|
63
|
+
ready = IO.select(nil, [ sock ])
|
64
|
+
assert_equal sock, ready[1][0]
|
65
|
+
assert_equal nil, sock.kgio_write("HELLO")
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_wait_writable_set
|
69
|
+
Kgio::wait_writable = :wait_writable
|
70
|
+
sock = SubSocket.new(@addr)
|
71
|
+
assert_kind_of Kgio::Socket, sock
|
72
|
+
assert_instance_of SubSocket, sock
|
73
|
+
assert_equal nil, sock.kgio_write("HELLO")
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
require './test/lib_server_accept'
|
3
|
+
|
4
|
+
class TestKgioUNIXServer < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
tmp = Tempfile.new('kgio_unix')
|
8
|
+
@path = tmp.path
|
9
|
+
File.unlink(@path)
|
10
|
+
tmp.close rescue nil
|
11
|
+
@srv = Kgio::UNIXServer.new(@path)
|
12
|
+
@host = '127.0.0.1'
|
13
|
+
end
|
14
|
+
|
15
|
+
def client_connect
|
16
|
+
UNIXSocket.new(@path)
|
17
|
+
end
|
18
|
+
|
19
|
+
include LibServerAccept
|
20
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require './test/lib_read_write'
|
2
|
+
require 'tempfile'
|
3
|
+
|
4
|
+
class TestUnixServerReadClientWrite < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
tmp = Tempfile.new('kgio_unix')
|
7
|
+
@path = tmp.path
|
8
|
+
File.unlink(@path)
|
9
|
+
tmp.close rescue nil
|
10
|
+
@srv = Kgio::UNIXServer.new(@path)
|
11
|
+
@wr = Kgio::UNIXSocket.new(@path)
|
12
|
+
@rd = @srv.kgio_tryaccept
|
13
|
+
end
|
14
|
+
|
15
|
+
include LibReadWriteTest
|
16
|
+
end
|
17
|
+
|
metadata
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kgio
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 21
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 1.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- kgio hackers
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-09-28 00:00:00 +00:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: |-
|
23
|
+
kgio provides non-blocking I/O methods for Ruby without raising
|
24
|
+
exceptions on EAGAIN and EINPROGRESS. It is intended for use with the
|
25
|
+
Unicorn and Rainbows! Rack servers, but may be used by other
|
26
|
+
applications.
|
27
|
+
email: mongrel-unicorn@rubyforge.org
|
28
|
+
executables: []
|
29
|
+
|
30
|
+
extensions:
|
31
|
+
- ext/kgio/extconf.rb
|
32
|
+
extra_rdoc_files:
|
33
|
+
- LICENSE
|
34
|
+
- README
|
35
|
+
- TODO
|
36
|
+
- NEWS
|
37
|
+
- ChangeLog
|
38
|
+
- ISSUES
|
39
|
+
- HACKING
|
40
|
+
- lib/kgio.rb
|
41
|
+
- ext/kgio/kgio_ext.c
|
42
|
+
files:
|
43
|
+
- .document
|
44
|
+
- .gitignore
|
45
|
+
- .manifest
|
46
|
+
- COPYING
|
47
|
+
- ChangeLog
|
48
|
+
- GIT-VERSION-FILE
|
49
|
+
- GIT-VERSION-GEN
|
50
|
+
- GNUmakefile
|
51
|
+
- HACKING
|
52
|
+
- ISSUES
|
53
|
+
- LICENSE
|
54
|
+
- NEWS
|
55
|
+
- README
|
56
|
+
- Rakefile
|
57
|
+
- TODO
|
58
|
+
- ext/kgio/extconf.rb
|
59
|
+
- ext/kgio/kgio_ext.c
|
60
|
+
- ext/kgio/missing/accept4.h
|
61
|
+
- ext/kgio/missing/ancient_ruby.h
|
62
|
+
- ext/kgio/my_fileno.h
|
63
|
+
- ext/kgio/nonblock.h
|
64
|
+
- ext/kgio/sock_for_fd.h
|
65
|
+
- kgio.gemspec
|
66
|
+
- lib/kgio.rb
|
67
|
+
- setup.rb
|
68
|
+
- test/lib_read_write.rb
|
69
|
+
- test/lib_server_accept.rb
|
70
|
+
- test/test_connect_fd_leak.rb
|
71
|
+
- test/test_pipe_popen.rb
|
72
|
+
- test/test_pipe_read_write.rb
|
73
|
+
- test/test_socketpair_read_write.rb
|
74
|
+
- test/test_tcp_client_read_server_write.rb
|
75
|
+
- test/test_tcp_connect.rb
|
76
|
+
- test/test_tcp_server.rb
|
77
|
+
- test/test_tcp_server_read_client_write.rb
|
78
|
+
- test/test_unix_client_read_server_write.rb
|
79
|
+
- test/test_unix_connect.rb
|
80
|
+
- test/test_unix_server.rb
|
81
|
+
- test/test_unix_server_read_client_write.rb
|
82
|
+
has_rdoc: true
|
83
|
+
homepage: http://unicorn.bogomips.org/kgio/
|
84
|
+
licenses: []
|
85
|
+
|
86
|
+
post_install_message:
|
87
|
+
rdoc_options:
|
88
|
+
- -t
|
89
|
+
- kinder, gentler I/O for Ruby
|
90
|
+
require_paths:
|
91
|
+
- lib
|
92
|
+
- ext
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
hash: 3
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
version: "0"
|
102
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
hash: 3
|
108
|
+
segments:
|
109
|
+
- 0
|
110
|
+
version: "0"
|
111
|
+
requirements: []
|
112
|
+
|
113
|
+
rubyforge_project: rainbows
|
114
|
+
rubygems_version: 1.3.7
|
115
|
+
signing_key:
|
116
|
+
specification_version: 3
|
117
|
+
summary: kinder, gentler I/O for Ruby
|
118
|
+
test_files:
|
119
|
+
- test/test_unix_connect.rb
|
120
|
+
- test/test_pipe_read_write.rb
|
121
|
+
- test/test_unix_server.rb
|
122
|
+
- test/test_socketpair_read_write.rb
|
123
|
+
- test/test_tcp_server.rb
|
124
|
+
- test/test_unix_server_read_client_write.rb
|
125
|
+
- test/test_tcp_connect.rb
|
126
|
+
- test/test_connect_fd_leak.rb
|
127
|
+
- test/test_tcp_server_read_client_write.rb
|
128
|
+
- test/test_unix_client_read_server_write.rb
|
129
|
+
- test/test_tcp_client_read_server_write.rb
|
130
|
+
- test/test_pipe_popen.rb
|