eventmachine 0.12.0 → 0.12.2
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/ext/cmain.cpp +27 -1
- data/ext/ed.cpp +17 -2
- data/ext/ed.h +9 -1
- data/ext/em.cpp +111 -2
- data/ext/em.h +4 -1
- data/ext/eventmachine.h +9 -2
- data/ext/rubymain.cpp +49 -1
- data/lib/eventmachine.rb +139 -15
- data/lib/eventmachine_version.rb +2 -2
- data/lib/jeventmachine.rb +30 -4
- data/lib/protocols/header_and_content.rb +8 -2
- data/lib/protocols/httpclient.rb +14 -3
- data/lib/protocols/linetext2.rb +20 -2
- data/lib/protocols/postgres.rb +261 -0
- data/lib/protocols/stomp.rb +4 -1
- data/tests/test_attach.rb +66 -0
- data/tests/test_basic.rb +38 -2
- data/tests/test_hc.rb +189 -141
- data/tests/test_httpclient.rb +22 -1
- data/tests/test_ltp2.rb +60 -1
- data/tests/test_next_tick.rb +45 -1
- data/tests/test_sasl.rb +2 -1
- data/tests/test_timers.rb +4 -2
- metadata +63 -61
data/tests/test_httpclient.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# $Id: test_httpclient.rb
|
1
|
+
# $Id: test_httpclient.rb 786 2008-09-16 07:33:27Z francis $
|
2
2
|
#
|
3
3
|
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
4
4
|
# Homepage:: http://rubyeventmachine.com
|
@@ -112,6 +112,7 @@ class TestHttpClient < Test::Unit::TestCase
|
|
112
112
|
assert ok
|
113
113
|
end
|
114
114
|
|
115
|
+
|
115
116
|
#---------------------------------------
|
116
117
|
|
117
118
|
class PostContent < EventMachine::Protocols::LineAndTextProtocol
|
@@ -189,6 +190,26 @@ class TestHttpClient < Test::Unit::TestCase
|
|
189
190
|
assert ok
|
190
191
|
end
|
191
192
|
|
193
|
+
|
194
|
+
|
195
|
+
# We can tell the client to send an HTTP/1.0 request (default is 1.1).
|
196
|
+
# This is useful for suppressing chunked responses until those are working.
|
197
|
+
def test_version_1_0
|
198
|
+
ok = false
|
199
|
+
EM.run {
|
200
|
+
c = EM::P::HttpClient.request :host => "www.bayshorenetworks.com",
|
201
|
+
:port => 80,
|
202
|
+
:version => "1.0"
|
203
|
+
c.callback {|result|
|
204
|
+
ok = true;
|
205
|
+
EventMachine.stop
|
206
|
+
}
|
207
|
+
c.errback {EventMachine.stop}
|
208
|
+
}
|
209
|
+
assert ok
|
210
|
+
end
|
211
|
+
|
212
|
+
|
192
213
|
end
|
193
214
|
|
194
215
|
|
data/tests/test_ltp2.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# $Id: test_ltp2.rb
|
1
|
+
# $Id: test_ltp2.rb 725 2008-06-29 23:04:48Z francis $
|
2
2
|
#
|
3
3
|
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
4
4
|
# Homepage:: http://rubyeventmachine.com
|
@@ -257,5 +257,64 @@ Line 4
|
|
257
257
|
assert_equal( "0" * 500, a.data )
|
258
258
|
end
|
259
259
|
|
260
|
+
|
261
|
+
|
262
|
+
# Test an end-of-binary call. Arrange to receive binary data but don't bother counting it
|
263
|
+
# as it comes. Rely on getting receive_end_of_binary_data to signal the transition back to
|
264
|
+
# line mode.
|
265
|
+
# At the present time, this isn't strictly necessary with sized binary chunks because by
|
266
|
+
# definition we accumulate them and make exactly one call to receive_binary_data, but
|
267
|
+
# we may want to support a mode in the future that would break up large chunks into multiple
|
268
|
+
# calls.
|
269
|
+
class LazyBinary
|
270
|
+
include EM::Protocols::LineText2
|
271
|
+
attr_reader :data, :end
|
272
|
+
def initialize *args
|
273
|
+
super
|
274
|
+
@data = ""
|
275
|
+
set_text_mode 1000
|
276
|
+
end
|
277
|
+
def receive_binary_data data
|
278
|
+
# we expect to get all the data in one chunk, even in the byte-by-byte case,
|
279
|
+
# because sized transfers by definition give us exactly one call to
|
280
|
+
# #receive_binary_data.
|
281
|
+
@data = data
|
282
|
+
end
|
283
|
+
def receive_end_of_binary_data
|
284
|
+
@end = true
|
285
|
+
end
|
286
|
+
end
|
287
|
+
def test_receive_end_of_binary_data
|
288
|
+
testdata = "_" * 1000
|
289
|
+
a = LazyBinary.new
|
290
|
+
testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) }
|
291
|
+
assert_equal( "_" * 1000, a.data )
|
292
|
+
assert( a.end )
|
293
|
+
end
|
294
|
+
|
295
|
+
|
296
|
+
# This tests a bug fix in which calling set_text_mode failed when called
|
297
|
+
# inside receive_binary_data.
|
298
|
+
#
|
299
|
+
class BinaryPair
|
300
|
+
include EM::Protocols::LineText2
|
301
|
+
attr_reader :sizes
|
302
|
+
def initialize *args
|
303
|
+
super
|
304
|
+
set_text_mode 1
|
305
|
+
@sizes = []
|
306
|
+
end
|
307
|
+
def receive_binary_data dt
|
308
|
+
@sizes << dt.length
|
309
|
+
set_text_mode( (dt.length == 1) ? 2 : 1 )
|
310
|
+
end
|
311
|
+
end
|
312
|
+
def test_binary_pairs
|
313
|
+
test_data = "123" * 5
|
314
|
+
a = BinaryPair.new
|
315
|
+
a.receive_data test_data
|
316
|
+
assert_equal( [1,2,1,2,1,2,1,2,1,2], a.sizes )
|
317
|
+
end
|
318
|
+
|
260
319
|
end
|
261
320
|
|
data/tests/test_next_tick.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# $Id: test_next_tick.rb
|
1
|
+
# $Id: test_next_tick.rb 697 2008-06-15 22:00:00Z francis $
|
2
2
|
#
|
3
3
|
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
4
4
|
# Homepage:: http://rubyeventmachine.com
|
@@ -55,4 +55,48 @@ class TestNextTick < Test::Unit::TestCase
|
|
55
55
|
}
|
56
56
|
assert true
|
57
57
|
end
|
58
|
+
|
59
|
+
# This illustrates the solution to a long-standing problem.
|
60
|
+
# It's now possible to correctly nest calls to EM#run.
|
61
|
+
# See the source code commentary for EM#run for more info.
|
62
|
+
#
|
63
|
+
def test_run_run
|
64
|
+
EM.run {
|
65
|
+
EM.run {
|
66
|
+
EM.next_tick {EM.stop}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
end
|
70
|
+
|
71
|
+
# We now support an additional parameter for EM#run.
|
72
|
+
# You can pass two procs to EM#run now. The first is executed as the normal
|
73
|
+
# run block. The second (if given) is scheduled for execution after the
|
74
|
+
# reactor loop completes.
|
75
|
+
# The reason for supporting this is subtle. There has always been an expectation
|
76
|
+
# that EM#run doesn't return until after the reactor loop ends. But now it's
|
77
|
+
# possible to nest calls to EM#run, which means that a nested call WILL
|
78
|
+
# RETURN. In order to write code that will run correctly either way, it's
|
79
|
+
# recommended to put any code which must execute after the reactor completes
|
80
|
+
# in the second parameter.
|
81
|
+
#
|
82
|
+
def test_run_run_2
|
83
|
+
a = proc {EM.stop}
|
84
|
+
b = proc {assert true}
|
85
|
+
EM.run a, b
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
# This illustrates that EM#run returns when it's called nested.
|
90
|
+
# This isn't a feature, rather it's something to be wary of when writing code
|
91
|
+
# that must run correctly even if EM#run is called while a reactor is already
|
92
|
+
# running.
|
93
|
+
def test_run_run_3
|
94
|
+
a = []
|
95
|
+
EM.run {
|
96
|
+
EM.run proc {EM.stop}, proc {a << 2}
|
97
|
+
a << 1
|
98
|
+
}
|
99
|
+
assert_equal( [1,2], a )
|
100
|
+
end
|
101
|
+
|
58
102
|
end
|
data/tests/test_sasl.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# $Id: test_sasl.rb
|
1
|
+
# $Id: test_sasl.rb 720 2008-06-20 23:50:59Z francis $
|
2
2
|
#
|
3
3
|
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
4
4
|
# Homepage:: http://rubyeventmachine.com
|
@@ -57,6 +57,7 @@ class TestSASL < Test::Unit::TestCase
|
|
57
57
|
|
58
58
|
c = EM.connect( Host, Port, SaslClient )
|
59
59
|
d = c.validate?( TestUser, TestPsw )
|
60
|
+
d.timeout 2
|
60
61
|
d.callback {
|
61
62
|
resp = true
|
62
63
|
EM.stop
|
data/tests/test_timers.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# $Id: test_timers.rb
|
1
|
+
# $Id: test_timers.rb 715 2008-06-20 21:26:14Z francis $
|
2
2
|
#
|
3
3
|
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
4
4
|
# Homepage:: http://rubyeventmachine.com
|
@@ -107,7 +107,7 @@ class TestTimers < Test::Unit::TestCase
|
|
107
107
|
|
108
108
|
|
109
109
|
# This test is only applicable to compiled versions of the reactor.
|
110
|
-
# Pure ruby versions have no built-in limit on the number of outstanding timers.
|
110
|
+
# Pure ruby and java versions have no built-in limit on the number of outstanding timers.
|
111
111
|
#
|
112
112
|
def test_timer_change_max_outstanding
|
113
113
|
ten_thousand_timers = proc {
|
@@ -118,6 +118,8 @@ class TestTimers < Test::Unit::TestCase
|
|
118
118
|
EM.run {
|
119
119
|
if EM.library_type == :pure_ruby
|
120
120
|
ten_thousand_timers.call
|
121
|
+
elsif EM.library_type == :java
|
122
|
+
ten_thousand_timers.call
|
121
123
|
else
|
122
124
|
assert_raise( RuntimeError ) {
|
123
125
|
ten_thousand_timers.call
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eventmachine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francis Cianfrocca
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-09-25 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -34,90 +34,92 @@ extra_rdoc_files:
|
|
34
34
|
- SPAWNED_PROCESSES
|
35
35
|
- DEFERRABLES
|
36
36
|
files:
|
37
|
+
- tests/test_attach.rb
|
38
|
+
- tests/test_basic.rb
|
39
|
+
- tests/test_defer.rb
|
40
|
+
- tests/test_epoll.rb
|
37
41
|
- tests/test_errors.rb
|
38
|
-
- tests/
|
42
|
+
- tests/test_eventables.rb
|
43
|
+
- tests/test_exc.rb
|
44
|
+
- tests/test_futures.rb
|
45
|
+
- tests/test_hc.rb
|
46
|
+
- tests/test_httpclient.rb
|
39
47
|
- tests/test_httpclient2.rb
|
40
48
|
- tests/test_kb.rb
|
49
|
+
- tests/test_ltp.rb
|
41
50
|
- tests/test_ltp2.rb
|
42
51
|
- tests/test_next_tick.rb
|
43
|
-
- tests/
|
44
|
-
- tests/
|
52
|
+
- tests/test_processes.rb
|
53
|
+
- tests/test_pure.rb
|
54
|
+
- tests/test_running.rb
|
45
55
|
- tests/test_sasl.rb
|
46
|
-
- tests/
|
47
|
-
- tests/
|
56
|
+
- tests/test_send_file.rb
|
57
|
+
- tests/test_servers.rb
|
48
58
|
- tests/test_smtpclient.rb
|
49
|
-
- tests/
|
50
|
-
- tests/
|
59
|
+
- tests/test_smtpserver.rb
|
60
|
+
- tests/test_spawn.rb
|
61
|
+
- tests/test_timers.rb
|
51
62
|
- tests/test_ud.rb
|
52
|
-
- tests/test_servers.rb
|
53
|
-
- tests/test_running.rb
|
54
|
-
- tests/test_exc.rb
|
55
|
-
- tests/test_pure.rb
|
56
|
-
- tests/test_basic.rb
|
57
|
-
- tests/test_eventables.rb
|
58
|
-
- tests/test_epoll.rb
|
59
63
|
- tests/testem.rb
|
60
|
-
-
|
61
|
-
-
|
62
|
-
-
|
63
|
-
- lib/
|
64
|
+
- lib/em
|
65
|
+
- lib/em/deferrable.rb
|
66
|
+
- lib/em/eventable.rb
|
67
|
+
- lib/em/future.rb
|
68
|
+
- lib/em/messages.rb
|
69
|
+
- lib/em/processes.rb
|
70
|
+
- lib/em/spawnable.rb
|
71
|
+
- lib/em/streamer.rb
|
64
72
|
- lib/eventmachine.rb
|
73
|
+
- lib/eventmachine_version.rb
|
65
74
|
- lib/evma
|
66
|
-
- lib/evma/reactor.rb
|
67
|
-
- lib/evma/factory.rb
|
68
75
|
- lib/evma/callback.rb
|
69
76
|
- lib/evma/container.rb
|
77
|
+
- lib/evma/factory.rb
|
70
78
|
- lib/evma/protocol.rb
|
79
|
+
- lib/evma/reactor.rb
|
80
|
+
- lib/evma.rb
|
81
|
+
- lib/jeventmachine.rb
|
82
|
+
- lib/pr_eventmachine.rb
|
71
83
|
- lib/protocols
|
72
|
-
- lib/protocols/tcptest.rb
|
73
|
-
- lib/protocols/httpcli2.rb
|
74
|
-
- lib/protocols/header_and_content.rb
|
75
|
-
- lib/protocols/saslauth.rb
|
76
|
-
- lib/protocols/stomp.rb
|
77
|
-
- lib/protocols/linetext2.rb
|
78
|
-
- lib/protocols/smtpserver.rb
|
79
|
-
- lib/protocols/line_and_text.rb
|
80
84
|
- lib/protocols/buftok.rb
|
85
|
+
- lib/protocols/header_and_content.rb
|
86
|
+
- lib/protocols/httpcli2.rb
|
81
87
|
- lib/protocols/httpclient.rb
|
88
|
+
- lib/protocols/line_and_text.rb
|
89
|
+
- lib/protocols/linetext2.rb
|
90
|
+
- lib/protocols/postgres.rb
|
91
|
+
- lib/protocols/saslauth.rb
|
82
92
|
- lib/protocols/smtpclient.rb
|
83
|
-
- lib/
|
84
|
-
- lib/
|
85
|
-
- lib/
|
86
|
-
-
|
87
|
-
- lib/em/streamer.rb
|
88
|
-
- lib/em/eventable.rb
|
89
|
-
- lib/em/processes.rb
|
90
|
-
- lib/em/deferrable.rb
|
91
|
-
- lib/em/future.rb
|
92
|
-
- lib/em/spawnable.rb
|
93
|
-
- lib/evma.rb
|
94
|
-
- ext/cmain.cpp
|
95
|
-
- ext/eventmachine_cpp.h
|
93
|
+
- lib/protocols/smtpserver.rb
|
94
|
+
- lib/protocols/stomp.rb
|
95
|
+
- lib/protocols/tcptest.rb
|
96
|
+
- ext/binder.cpp
|
96
97
|
- ext/binder.h
|
97
|
-
- ext/
|
98
|
-
- ext/
|
99
|
-
- ext/sigs.h
|
98
|
+
- ext/cmain.cpp
|
99
|
+
- ext/cplusplus.cpp
|
100
100
|
- ext/ed.cpp
|
101
|
+
- ext/ed.h
|
101
102
|
- ext/em.cpp
|
103
|
+
- ext/em.h
|
104
|
+
- ext/emwin.cpp
|
105
|
+
- ext/emwin.h
|
106
|
+
- ext/epoll.cpp
|
107
|
+
- ext/epoll.h
|
108
|
+
- ext/eventmachine.h
|
109
|
+
- ext/eventmachine_cpp.h
|
110
|
+
- ext/extconf.rb
|
111
|
+
- ext/files.cpp
|
112
|
+
- ext/files.h
|
113
|
+
- ext/kb.cpp
|
102
114
|
- ext/page.cpp
|
103
|
-
- ext/ssl.h
|
104
115
|
- ext/page.h
|
116
|
+
- ext/pipe.cpp
|
105
117
|
- ext/project.h
|
106
|
-
- ext/epoll.h
|
107
|
-
- ext/binder.cpp
|
108
|
-
- ext/ed.h
|
109
|
-
- ext/epoll.cpp
|
110
|
-
- ext/files.h
|
111
|
-
- ext/cplusplus.cpp
|
112
|
-
- ext/emwin.cpp
|
113
|
-
- ext/em.h
|
114
118
|
- ext/rubymain.cpp
|
115
|
-
- ext/
|
116
|
-
- ext/
|
119
|
+
- ext/sigs.cpp
|
120
|
+
- ext/sigs.h
|
117
121
|
- ext/ssl.cpp
|
118
|
-
- ext/
|
119
|
-
- ext/kb.cpp
|
120
|
-
- ext/emwin.h
|
122
|
+
- ext/ssl.h
|
121
123
|
- README
|
122
124
|
- RELEASE_NOTES
|
123
125
|
- COPYING
|
@@ -157,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
159
|
requirements: []
|
158
160
|
|
159
161
|
rubyforge_project: eventmachine
|
160
|
-
rubygems_version: 1.0
|
162
|
+
rubygems_version: 1.2.0
|
161
163
|
signing_key:
|
162
164
|
specification_version: 2
|
163
165
|
summary: Ruby/EventMachine library
|