sidekick-client 0.2.1 → 0.2.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/VERSION +1 -1
- data/lib/sidekick/client/sidekick_client.rb +0 -3
- data/lib/sidekick/shared/sidekick_queue_publisher.rb +1 -1
- data/sidekick-client.gemspec +1 -158
- metadata +1 -158
- data/lib/ext/eventmachine-0.12.10/.gitignore +0 -14
- data/lib/ext/eventmachine-0.12.10/README +0 -82
- data/lib/ext/eventmachine-0.12.10/Rakefile +0 -374
- data/lib/ext/eventmachine-0.12.10/docs/COPYING +0 -60
- data/lib/ext/eventmachine-0.12.10/docs/ChangeLog +0 -211
- data/lib/ext/eventmachine-0.12.10/docs/DEFERRABLES +0 -133
- data/lib/ext/eventmachine-0.12.10/docs/EPOLL +0 -141
- data/lib/ext/eventmachine-0.12.10/docs/GNU +0 -281
- data/lib/ext/eventmachine-0.12.10/docs/INSTALL +0 -13
- data/lib/ext/eventmachine-0.12.10/docs/KEYBOARD +0 -38
- data/lib/ext/eventmachine-0.12.10/docs/LEGAL +0 -25
- data/lib/ext/eventmachine-0.12.10/docs/LIGHTWEIGHT_CONCURRENCY +0 -70
- data/lib/ext/eventmachine-0.12.10/docs/PURE_RUBY +0 -75
- data/lib/ext/eventmachine-0.12.10/docs/RELEASE_NOTES +0 -94
- data/lib/ext/eventmachine-0.12.10/docs/SMTP +0 -2
- data/lib/ext/eventmachine-0.12.10/docs/SPAWNED_PROCESSES +0 -89
- data/lib/ext/eventmachine-0.12.10/docs/TODO +0 -8
- data/lib/ext/eventmachine-0.12.10/eventmachine.gemspec +0 -40
- data/lib/ext/eventmachine-0.12.10/examples/ex_channel.rb +0 -43
- data/lib/ext/eventmachine-0.12.10/examples/ex_queue.rb +0 -2
- data/lib/ext/eventmachine-0.12.10/examples/helper.rb +0 -2
- data/lib/ext/eventmachine-0.12.10/ext/binder.cpp +0 -125
- data/lib/ext/eventmachine-0.12.10/ext/binder.h +0 -46
- data/lib/ext/eventmachine-0.12.10/ext/cmain.cpp +0 -827
- data/lib/ext/eventmachine-0.12.10/ext/cplusplus.cpp +0 -202
- data/lib/ext/eventmachine-0.12.10/ext/ed.cpp +0 -1893
- data/lib/ext/eventmachine-0.12.10/ext/ed.h +0 -424
- data/lib/ext/eventmachine-0.12.10/ext/em.cpp +0 -2282
- data/lib/ext/eventmachine-0.12.10/ext/em.h +0 -232
- data/lib/ext/eventmachine-0.12.10/ext/emwin.cpp +0 -300
- data/lib/ext/eventmachine-0.12.10/ext/emwin.h +0 -94
- data/lib/ext/eventmachine-0.12.10/ext/epoll.cpp +0 -26
- data/lib/ext/eventmachine-0.12.10/ext/epoll.h +0 -25
- data/lib/ext/eventmachine-0.12.10/ext/eventmachine.h +0 -122
- data/lib/ext/eventmachine-0.12.10/ext/eventmachine_cpp.h +0 -96
- data/lib/ext/eventmachine-0.12.10/ext/extconf.rb +0 -148
- data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/extconf.rb +0 -83
- data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/mapper.cpp +0 -214
- data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/mapper.h +0 -59
- data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/rubymain.cpp +0 -127
- data/lib/ext/eventmachine-0.12.10/ext/files.cpp +0 -94
- data/lib/ext/eventmachine-0.12.10/ext/files.h +0 -65
- data/lib/ext/eventmachine-0.12.10/ext/kb.cpp +0 -81
- data/lib/ext/eventmachine-0.12.10/ext/page.cpp +0 -107
- data/lib/ext/eventmachine-0.12.10/ext/page.h +0 -51
- data/lib/ext/eventmachine-0.12.10/ext/pipe.cpp +0 -349
- data/lib/ext/eventmachine-0.12.10/ext/project.h +0 -151
- data/lib/ext/eventmachine-0.12.10/ext/rubymain.cpp +0 -1166
- data/lib/ext/eventmachine-0.12.10/ext/sigs.cpp +0 -89
- data/lib/ext/eventmachine-0.12.10/ext/sigs.h +0 -32
- data/lib/ext/eventmachine-0.12.10/ext/ssl.cpp +0 -460
- data/lib/ext/eventmachine-0.12.10/ext/ssl.h +0 -94
- data/lib/ext/eventmachine-0.12.10/java/.classpath +0 -8
- data/lib/ext/eventmachine-0.12.10/java/.project +0 -17
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactor.java +0 -570
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactorException.java +0 -40
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableChannel.java +0 -69
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableDatagramChannel.java +0 -189
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableSocketChannel.java +0 -364
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Application.java +0 -194
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Connection.java +0 -74
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/ConnectionFactory.java +0 -37
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/DefaultConnectionFactory.java +0 -46
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/PeriodicTimer.java +0 -38
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Timer.java +0 -54
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ApplicationTest.java +0 -109
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ConnectTest.java +0 -148
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/EMTest.java +0 -80
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestDatagrams.java +0 -53
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestServers.java +0 -75
- data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestTimers.java +0 -90
- data/lib/ext/eventmachine-0.12.10/lib/em/buftok.rb +0 -138
- data/lib/ext/eventmachine-0.12.10/lib/em/callback.rb +0 -26
- data/lib/ext/eventmachine-0.12.10/lib/em/channel.rb +0 -57
- data/lib/ext/eventmachine-0.12.10/lib/em/connection.rb +0 -564
- data/lib/ext/eventmachine-0.12.10/lib/em/deferrable.rb +0 -192
- data/lib/ext/eventmachine-0.12.10/lib/em/file_watch.rb +0 -54
- data/lib/ext/eventmachine-0.12.10/lib/em/future.rb +0 -61
- data/lib/ext/eventmachine-0.12.10/lib/em/messages.rb +0 -66
- data/lib/ext/eventmachine-0.12.10/lib/em/process_watch.rb +0 -44
- data/lib/ext/eventmachine-0.12.10/lib/em/processes.rb +0 -119
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/header_and_content.rb +0 -138
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/httpclient.rb +0 -263
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/httpclient2.rb +0 -590
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/line_and_text.rb +0 -125
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/linetext2.rb +0 -161
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/memcache.rb +0 -323
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/object_protocol.rb +0 -45
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/postgres3.rb +0 -247
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/saslauth.rb +0 -175
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/smtpclient.rb +0 -357
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/smtpserver.rb +0 -547
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/socks4.rb +0 -66
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/stomp.rb +0 -200
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols/tcptest.rb +0 -53
- data/lib/ext/eventmachine-0.12.10/lib/em/protocols.rb +0 -36
- data/lib/ext/eventmachine-0.12.10/lib/em/queue.rb +0 -61
- data/lib/ext/eventmachine-0.12.10/lib/em/spawnable.rb +0 -85
- data/lib/ext/eventmachine-0.12.10/lib/em/streamer.rb +0 -130
- data/lib/ext/eventmachine-0.12.10/lib/em/timers.rb +0 -56
- data/lib/ext/eventmachine-0.12.10/lib/em/version.rb +0 -3
- data/lib/ext/eventmachine-0.12.10/lib/eventmachine.rb +0 -1592
- data/lib/ext/eventmachine-0.12.10/lib/evma/callback.rb +0 -32
- data/lib/ext/eventmachine-0.12.10/lib/evma/container.rb +0 -75
- data/lib/ext/eventmachine-0.12.10/lib/evma/factory.rb +0 -77
- data/lib/ext/eventmachine-0.12.10/lib/evma/protocol.rb +0 -87
- data/lib/ext/eventmachine-0.12.10/lib/evma/reactor.rb +0 -48
- data/lib/ext/eventmachine-0.12.10/lib/evma.rb +0 -32
- data/lib/ext/eventmachine-0.12.10/lib/jeventmachine.rb +0 -257
- data/lib/ext/eventmachine-0.12.10/lib/pr_eventmachine.rb +0 -1022
- data/lib/ext/eventmachine-0.12.10/setup.rb +0 -1585
- data/lib/ext/eventmachine-0.12.10/tasks/cpp.rake_example +0 -77
- data/lib/ext/eventmachine-0.12.10/tests/client.crt +0 -31
- data/lib/ext/eventmachine-0.12.10/tests/client.key +0 -51
- data/lib/ext/eventmachine-0.12.10/tests/test_attach.rb +0 -126
- data/lib/ext/eventmachine-0.12.10/tests/test_basic.rb +0 -284
- data/lib/ext/eventmachine-0.12.10/tests/test_channel.rb +0 -63
- data/lib/ext/eventmachine-0.12.10/tests/test_connection_count.rb +0 -35
- data/lib/ext/eventmachine-0.12.10/tests/test_defer.rb +0 -47
- data/lib/ext/eventmachine-0.12.10/tests/test_epoll.rb +0 -160
- data/lib/ext/eventmachine-0.12.10/tests/test_error_handler.rb +0 -35
- data/lib/ext/eventmachine-0.12.10/tests/test_errors.rb +0 -82
- data/lib/ext/eventmachine-0.12.10/tests/test_exc.rb +0 -55
- data/lib/ext/eventmachine-0.12.10/tests/test_file_watch.rb +0 -49
- data/lib/ext/eventmachine-0.12.10/tests/test_futures.rb +0 -198
- data/lib/ext/eventmachine-0.12.10/tests/test_get_sock_opt.rb +0 -30
- data/lib/ext/eventmachine-0.12.10/tests/test_handler_check.rb +0 -37
- data/lib/ext/eventmachine-0.12.10/tests/test_hc.rb +0 -218
- data/lib/ext/eventmachine-0.12.10/tests/test_httpclient.rb +0 -218
- data/lib/ext/eventmachine-0.12.10/tests/test_httpclient2.rb +0 -153
- data/lib/ext/eventmachine-0.12.10/tests/test_inactivity_timeout.rb +0 -50
- data/lib/ext/eventmachine-0.12.10/tests/test_kb.rb +0 -60
- data/lib/ext/eventmachine-0.12.10/tests/test_ltp.rb +0 -182
- data/lib/ext/eventmachine-0.12.10/tests/test_ltp2.rb +0 -317
- data/lib/ext/eventmachine-0.12.10/tests/test_next_tick.rb +0 -133
- data/lib/ext/eventmachine-0.12.10/tests/test_object_protocol.rb +0 -37
- data/lib/ext/eventmachine-0.12.10/tests/test_pause.rb +0 -70
- data/lib/ext/eventmachine-0.12.10/tests/test_pending_connect_timeout.rb +0 -48
- data/lib/ext/eventmachine-0.12.10/tests/test_process_watch.rb +0 -48
- data/lib/ext/eventmachine-0.12.10/tests/test_processes.rb +0 -128
- data/lib/ext/eventmachine-0.12.10/tests/test_proxy_connection.rb +0 -92
- data/lib/ext/eventmachine-0.12.10/tests/test_pure.rb +0 -125
- data/lib/ext/eventmachine-0.12.10/tests/test_queue.rb +0 -44
- data/lib/ext/eventmachine-0.12.10/tests/test_running.rb +0 -42
- data/lib/ext/eventmachine-0.12.10/tests/test_sasl.rb +0 -72
- data/lib/ext/eventmachine-0.12.10/tests/test_send_file.rb +0 -242
- data/lib/ext/eventmachine-0.12.10/tests/test_servers.rb +0 -76
- data/lib/ext/eventmachine-0.12.10/tests/test_smtpclient.rb +0 -83
- data/lib/ext/eventmachine-0.12.10/tests/test_smtpserver.rb +0 -85
- data/lib/ext/eventmachine-0.12.10/tests/test_spawn.rb +0 -322
- data/lib/ext/eventmachine-0.12.10/tests/test_ssl_args.rb +0 -79
- data/lib/ext/eventmachine-0.12.10/tests/test_ssl_methods.rb +0 -50
- data/lib/ext/eventmachine-0.12.10/tests/test_ssl_verify.rb +0 -82
- data/lib/ext/eventmachine-0.12.10/tests/test_timers.rb +0 -162
- data/lib/ext/eventmachine-0.12.10/tests/test_ud.rb +0 -36
- data/lib/ext/eventmachine-0.12.10/tests/testem.rb +0 -31
- data/lib/ext/eventmachine-0.12.10/web/whatis +0 -7
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../lib")
|
|
2
|
-
require 'eventmachine'
|
|
3
|
-
require 'socket'
|
|
4
|
-
require 'test/unit'
|
|
5
|
-
|
|
6
|
-
class TestPause < Test::Unit::TestCase
|
|
7
|
-
TestHost = "127.0.0.1"
|
|
8
|
-
TestPort = 9070
|
|
9
|
-
|
|
10
|
-
def setup
|
|
11
|
-
assert(!EM.reactor_running?)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def teardown
|
|
15
|
-
assert(!EM.reactor_running?)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
#-------------------------------------
|
|
19
|
-
|
|
20
|
-
def test_pause_resume
|
|
21
|
-
test = self
|
|
22
|
-
server = nil
|
|
23
|
-
|
|
24
|
-
s_rx = c_rx = 0
|
|
25
|
-
|
|
26
|
-
EM.run do
|
|
27
|
-
EM.start_server TestHost, TestPort, Module.new {
|
|
28
|
-
define_method :post_init do
|
|
29
|
-
server = self
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
define_method :receive_data do |data|
|
|
33
|
-
s_rx += 1
|
|
34
|
-
|
|
35
|
-
EM.add_periodic_timer(0.01) { send_data 'hi' }
|
|
36
|
-
send_data 'hi'
|
|
37
|
-
|
|
38
|
-
# pause server, now no outgoing data will actually
|
|
39
|
-
# be sent and no more incoming data will be received
|
|
40
|
-
pause
|
|
41
|
-
end
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
c = EM.connect TestHost, TestPort, Module.new {
|
|
45
|
-
define_method :receive_data do |data|
|
|
46
|
-
c_rx += 1
|
|
47
|
-
end
|
|
48
|
-
}
|
|
49
|
-
EM.add_periodic_timer(0.01) { c.send_data 'hi' }
|
|
50
|
-
|
|
51
|
-
EM.add_timer(1) do
|
|
52
|
-
test.assert_equal 1, s_rx
|
|
53
|
-
test.assert_equal 0, c_rx
|
|
54
|
-
test.assert server.paused?
|
|
55
|
-
|
|
56
|
-
# resume server, queued outgoing and incoming data will be flushed
|
|
57
|
-
server.resume
|
|
58
|
-
|
|
59
|
-
test.assert ! server.paused?
|
|
60
|
-
|
|
61
|
-
EM.add_timer(1) do
|
|
62
|
-
test.assert server.paused?
|
|
63
|
-
test.assert s_rx >= 2
|
|
64
|
-
test.assert c_rx >= 1
|
|
65
|
-
EM.stop_event_loop
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
$:.unshift "../lib"
|
|
2
|
-
require 'eventmachine'
|
|
3
|
-
require 'test/unit'
|
|
4
|
-
|
|
5
|
-
class TestPendingConnectTimeout < Test::Unit::TestCase
|
|
6
|
-
|
|
7
|
-
def test_default
|
|
8
|
-
$timeout = nil
|
|
9
|
-
EM.run {
|
|
10
|
-
c = EM.connect("127.0.0.1", 54321)
|
|
11
|
-
$timeout = c.pending_connect_timeout
|
|
12
|
-
EM.stop
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
assert_equal(20.0, $timeout)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_set_and_get
|
|
19
|
-
$timeout = nil
|
|
20
|
-
EM.run {
|
|
21
|
-
c = EM.connect("1.2.3.4", 54321)
|
|
22
|
-
c.pending_connect_timeout = 2.5
|
|
23
|
-
$timeout = c.pending_connect_timeout
|
|
24
|
-
EM.stop
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
assert_equal(2.5, $timeout)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
module TimeoutHandler
|
|
31
|
-
def unbind
|
|
32
|
-
EM.stop
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def test_for_real
|
|
37
|
-
$timeout = nil
|
|
38
|
-
EM.run {
|
|
39
|
-
EM.heartbeat_interval = 0.1
|
|
40
|
-
$start = Time.now
|
|
41
|
-
c = EM.connect("1.2.3.4", 54321, TimeoutHandler)
|
|
42
|
-
c.pending_connect_timeout = 5
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
assert_in_delta(5, (Time.now - $start), 0.3)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
$:.unshift "../lib"
|
|
2
|
-
require 'eventmachine'
|
|
3
|
-
require 'test/unit'
|
|
4
|
-
|
|
5
|
-
class TestProcessWatch < Test::Unit::TestCase
|
|
6
|
-
module ParentProcessWatcher
|
|
7
|
-
def process_forked
|
|
8
|
-
$forked = true
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
module ChildProcessWatcher
|
|
13
|
-
def process_exited
|
|
14
|
-
$exited = true
|
|
15
|
-
end
|
|
16
|
-
def unbind
|
|
17
|
-
$unbind = true
|
|
18
|
-
EM.stop
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def setup
|
|
23
|
-
EM.kqueue = true if EM.kqueue?
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def teardown
|
|
27
|
-
EM.kqueue = false if EM.kqueue?
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def test_events
|
|
31
|
-
EM.run{
|
|
32
|
-
# watch ourselves for a fork notification
|
|
33
|
-
EM.watch_process(Process.pid, ParentProcessWatcher)
|
|
34
|
-
$fork_pid = fork{ sleep }
|
|
35
|
-
child = EM.watch_process($fork_pid, ChildProcessWatcher)
|
|
36
|
-
$pid = child.pid
|
|
37
|
-
|
|
38
|
-
EM.add_timer(0.5){
|
|
39
|
-
Process.kill('TERM', $fork_pid)
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
assert_equal($pid, $fork_pid)
|
|
44
|
-
assert($forked)
|
|
45
|
-
assert($exited)
|
|
46
|
-
assert($unbind)
|
|
47
|
-
end
|
|
48
|
-
end
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
# $Id$
|
|
2
|
-
#
|
|
3
|
-
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
|
4
|
-
# Homepage:: http://rubyeventmachine.com
|
|
5
|
-
# Date:: 8 April 2006
|
|
6
|
-
#
|
|
7
|
-
# See EventMachine and EventMachine::Connection for documentation and
|
|
8
|
-
# usage examples.
|
|
9
|
-
#
|
|
10
|
-
#----------------------------------------------------------------------------
|
|
11
|
-
#
|
|
12
|
-
# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
|
|
13
|
-
# Gmail: blackhedd
|
|
14
|
-
#
|
|
15
|
-
# This program is free software; you can redistribute it and/or modify
|
|
16
|
-
# it under the terms of either: 1) the GNU General Public License
|
|
17
|
-
# as published by the Free Software Foundation; either version 2 of the
|
|
18
|
-
# License, or (at your option) any later version; or 2) Ruby's License.
|
|
19
|
-
#
|
|
20
|
-
# See the file COPYING for complete licensing information.
|
|
21
|
-
#
|
|
22
|
-
#---------------------------------------------------------------------------
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
$:.unshift "../lib"
|
|
28
|
-
require 'eventmachine'
|
|
29
|
-
require 'test/unit'
|
|
30
|
-
|
|
31
|
-
class TestProcesses < Test::Unit::TestCase
|
|
32
|
-
|
|
33
|
-
# EM::DeferrableChildProcess is a sugaring of a common use-case
|
|
34
|
-
# involving EM::popen.
|
|
35
|
-
# Call the #open method on EM::DeferrableChildProcess, passing
|
|
36
|
-
# a command-string. #open immediately returns an EM::Deferrable
|
|
37
|
-
# object. It also schedules the forking of a child process, which
|
|
38
|
-
# will execute the command passed to #open.
|
|
39
|
-
# When the forked child terminates, the Deferrable will be signalled
|
|
40
|
-
# and execute its callbacks, passing the data that the child process
|
|
41
|
-
# wrote to stdout.
|
|
42
|
-
#
|
|
43
|
-
def test_deferrable_child_process
|
|
44
|
-
ls = ""
|
|
45
|
-
EM.run {
|
|
46
|
-
d = EM::DeferrableChildProcess.open( "ls -ltr" )
|
|
47
|
-
d.callback {|data_from_child|
|
|
48
|
-
ls = data_from_child
|
|
49
|
-
EM.stop
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
assert( ls.length > 0)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def setup
|
|
56
|
-
$out = nil
|
|
57
|
-
$status = nil
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def test_em_system
|
|
61
|
-
EM.run{
|
|
62
|
-
EM.system('ls'){ |out,status| $out, $status = out, status; EM.stop }
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
assert( $out.length > 0 )
|
|
66
|
-
assert_equal($status.exitstatus, 0)
|
|
67
|
-
assert_equal($status.class, Process::Status)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_em_system_pid
|
|
71
|
-
$pids = []
|
|
72
|
-
|
|
73
|
-
EM.run{
|
|
74
|
-
$pids << EM.system('echo hi', proc{ |out,status|$pids << status.pid; EM.stop })
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
assert_equal $pids[0], $pids[1]
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def test_em_system_with_proc
|
|
81
|
-
EM.run{
|
|
82
|
-
EM.system('ls', proc{ |out,status| $out, $status = out, status; EM.stop })
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
assert( $out.length > 0 )
|
|
86
|
-
assert_equal($status.exitstatus, 0)
|
|
87
|
-
assert_equal($status.class, Process::Status)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def test_em_system_with_two_procs
|
|
91
|
-
EM.run{
|
|
92
|
-
EM.system('sh', proc{ |process|
|
|
93
|
-
process.send_data("echo hello\n")
|
|
94
|
-
process.send_data("exit\n")
|
|
95
|
-
}, proc{ |out,status|
|
|
96
|
-
$out = out
|
|
97
|
-
$status = status
|
|
98
|
-
EM.stop
|
|
99
|
-
})
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
assert_equal("hello\n", $out)
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def test_em_system_cmd_arguments
|
|
106
|
-
EM.run{
|
|
107
|
-
EM.system('sh', '--version', proc{ |process|
|
|
108
|
-
}, proc{ |out,status|
|
|
109
|
-
$out = out
|
|
110
|
-
$status = status
|
|
111
|
-
EM.stop
|
|
112
|
-
})
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
assert_match(/version/i, $out)
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def test_em_system_spaced_arguments
|
|
119
|
-
EM.run{
|
|
120
|
-
EM.system('ruby', '-e', 'puts "hello"', proc{ |out,status|
|
|
121
|
-
$out = out
|
|
122
|
-
EM.stop
|
|
123
|
-
})
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
assert_equal("hello\n", $out)
|
|
127
|
-
end
|
|
128
|
-
end
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
$:.unshift "../lib"
|
|
2
|
-
require 'eventmachine'
|
|
3
|
-
require 'test/unit'
|
|
4
|
-
|
|
5
|
-
class TestProxyConnection < Test::Unit::TestCase
|
|
6
|
-
|
|
7
|
-
module ProxyConnection
|
|
8
|
-
def initialize(client, request)
|
|
9
|
-
@client, @request = client, request
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def post_init
|
|
13
|
-
EM::enable_proxy(self, @client)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def connection_completed
|
|
17
|
-
EM.next_tick {
|
|
18
|
-
send_data @request
|
|
19
|
-
}
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def proxy_target_unbound
|
|
23
|
-
$unbound_early = true
|
|
24
|
-
EM.stop
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def unbind
|
|
28
|
-
@client.close_connection_after_writing
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
module Client
|
|
33
|
-
def connection_completed
|
|
34
|
-
send_data "EventMachine rocks!"
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def receive_data(data)
|
|
38
|
-
$client_data = data
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def unbind
|
|
42
|
-
EM.stop
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
module Client2
|
|
47
|
-
include Client
|
|
48
|
-
def unbind; end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
module Server
|
|
52
|
-
def receive_data(data)
|
|
53
|
-
send_data "I know!" if data == "EventMachine rocks!"
|
|
54
|
-
close_connection_after_writing
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
module ProxyServer
|
|
59
|
-
def receive_data(data)
|
|
60
|
-
EM.connect("127.0.0.1", 54321, ProxyConnection, self, data)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
module EarlyClosingProxy
|
|
65
|
-
def receive_data(data)
|
|
66
|
-
EM.connect("127.0.0.1", 54321, ProxyConnection, self, data)
|
|
67
|
-
close_connection
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def test_proxy_connection
|
|
72
|
-
EM.run {
|
|
73
|
-
EM.start_server("127.0.0.1", 54321, Server)
|
|
74
|
-
EM.start_server("127.0.0.1", 12345, ProxyServer)
|
|
75
|
-
EM.connect("127.0.0.1", 12345, Client)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
assert_equal("I know!", $client_data)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def test_early_close
|
|
82
|
-
$client_data = nil
|
|
83
|
-
EM.run {
|
|
84
|
-
EM.start_server("127.0.0.1", 54321, Server)
|
|
85
|
-
EM.start_server("127.0.0.1", 12345, EarlyClosingProxy)
|
|
86
|
-
EM.connect("127.0.0.1", 12345, Client2)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
assert($unbound_early)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
end
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
# $Id$
|
|
2
|
-
#
|
|
3
|
-
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
|
4
|
-
# Homepage:: http://rubyeventmachine.com
|
|
5
|
-
# Date:: 8 April 2006
|
|
6
|
-
#
|
|
7
|
-
# See EventMachine and EventMachine::Connection for documentation and
|
|
8
|
-
# usage examples.
|
|
9
|
-
#
|
|
10
|
-
#----------------------------------------------------------------------------
|
|
11
|
-
#
|
|
12
|
-
# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
|
|
13
|
-
# Gmail: blackhedd
|
|
14
|
-
#
|
|
15
|
-
# This program is free software; you can redistribute it and/or modify
|
|
16
|
-
# it under the terms of either: 1) the GNU General Public License
|
|
17
|
-
# as published by the Free Software Foundation; either version 2 of the
|
|
18
|
-
# License, or (at your option) any later version; or 2) Ruby's License.
|
|
19
|
-
#
|
|
20
|
-
# See the file COPYING for complete licensing information.
|
|
21
|
-
#
|
|
22
|
-
#---------------------------------------------------------------------------
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
$:.unshift "../lib"
|
|
28
|
-
require 'eventmachine'
|
|
29
|
-
require 'test/unit'
|
|
30
|
-
|
|
31
|
-
class TestPure < Test::Unit::TestCase
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
Host,Port = "0.0.0.0", 9060
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
# These tests are intended to exercise problems that come up in the
|
|
38
|
-
# pure-Ruby implementation. However, we DON'T constrain them such that
|
|
39
|
-
# they only run in pure-Ruby. These tests need to work identically in
|
|
40
|
-
# any implementation.
|
|
41
|
-
|
|
42
|
-
def setup
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def teardown
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
#-------------------------------------
|
|
49
|
-
|
|
50
|
-
# The EM reactor needs to run down open connections and release other resources
|
|
51
|
-
# when it stops running. Make sure this happens even if user code throws a Ruby
|
|
52
|
-
# exception.
|
|
53
|
-
# One way to see this is to run identical tests that open a TCP server and throw
|
|
54
|
-
# an exception. (We do this twice because an exception aborts a test. We make the
|
|
55
|
-
# two tests identical except for the method name because we can't predict the order
|
|
56
|
-
# in which the test harness will run them.)
|
|
57
|
-
# If exception handling is incorrect, the second test will fail with a no-bind error
|
|
58
|
-
# because the TCP server opened in the first test will not have been closed.
|
|
59
|
-
#
|
|
60
|
-
def run_exception
|
|
61
|
-
EM.run {
|
|
62
|
-
EM.start_server Host, Port
|
|
63
|
-
raise "an exception"
|
|
64
|
-
}
|
|
65
|
-
end
|
|
66
|
-
def test_exception_1
|
|
67
|
-
assert_raises( RuntimeError ) { run_exception }
|
|
68
|
-
end
|
|
69
|
-
def test_exception_2
|
|
70
|
-
ex_class = RUBY_PLATFORM == 'java' ? NativeException : RuntimeError
|
|
71
|
-
assert_raises( ex_class ) { run_exception }
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
# Under some circumstances, the pure Ruby library would emit an Errno::ECONNREFUSED
|
|
76
|
-
# exception on certain kinds of TCP connect-errors.
|
|
77
|
-
# It's always been something of an open question whether EM should throw an exception
|
|
78
|
-
# in these cases but the defined answer has always been to catch it the unbind method.
|
|
79
|
-
# With a connect failure, the latter will always fire, but connection_completed will
|
|
80
|
-
# never fire. So even though the point is arguable, it's incorrect for the pure Ruby
|
|
81
|
-
# version to throw an exception.
|
|
82
|
-
module TestConnrefused
|
|
83
|
-
def unbind
|
|
84
|
-
EM.stop
|
|
85
|
-
end
|
|
86
|
-
def connection_completed
|
|
87
|
-
raise "should never get here"
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
def test_connrefused
|
|
91
|
-
EM.run {
|
|
92
|
-
EM.connect "0.0.0.0", 60001, TestConnrefused
|
|
93
|
-
}
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
# Make sure connection_completed gets called as expected with TCP clients. This is the
|
|
98
|
-
# opposite of test_connrefused.
|
|
99
|
-
# If the test fails, it will hang because EM.stop never gets called.
|
|
100
|
-
#
|
|
101
|
-
module TestConnaccepted
|
|
102
|
-
def connection_completed
|
|
103
|
-
EM.stop
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
def test_connaccepted
|
|
107
|
-
timeout = false
|
|
108
|
-
EM.run {
|
|
109
|
-
EM.start_server "0.0.0.0", 60002
|
|
110
|
-
EM.connect "0.0.0.0", 60002, TestConnaccepted
|
|
111
|
-
EM::Timer.new(1) {timeout = true; EM.stop}
|
|
112
|
-
}
|
|
113
|
-
assert_equal( false, timeout )
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def test_reactor_running
|
|
117
|
-
a = false
|
|
118
|
-
EM.run {
|
|
119
|
-
a = EM.reactor_running?
|
|
120
|
-
EM.next_tick {EM.stop}
|
|
121
|
-
}
|
|
122
|
-
assert a
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
end
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
$:.unshift "../lib"
|
|
2
|
-
require 'eventmachine'
|
|
3
|
-
require 'test/unit'
|
|
4
|
-
|
|
5
|
-
class TestEventMachineQueue < Test::Unit::TestCase
|
|
6
|
-
def test_queue_push
|
|
7
|
-
s = 0
|
|
8
|
-
EM.run do
|
|
9
|
-
q = EM::Queue.new
|
|
10
|
-
q.push(1)
|
|
11
|
-
EM.next_tick { s = q.size; EM.stop }
|
|
12
|
-
end
|
|
13
|
-
assert_equal 1, s
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def test_queue_pop
|
|
17
|
-
x,y,z = nil
|
|
18
|
-
EM.run do
|
|
19
|
-
q = EM::Queue.new
|
|
20
|
-
q.push(1,2,3)
|
|
21
|
-
q.pop { |v| x = v }
|
|
22
|
-
q.pop { |v| y = v }
|
|
23
|
-
q.pop { |v| z = v; EM.stop }
|
|
24
|
-
end
|
|
25
|
-
assert_equal 1, x
|
|
26
|
-
assert_equal 2, y
|
|
27
|
-
assert_equal 3, z
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def test_queue_reactor_thread
|
|
31
|
-
q = EM::Queue.new
|
|
32
|
-
|
|
33
|
-
Thread.new { q.push(1,2,3) }.join
|
|
34
|
-
assert q.empty?
|
|
35
|
-
EM.run { EM.next_tick { EM.stop } }
|
|
36
|
-
assert_equal 3, q.size
|
|
37
|
-
|
|
38
|
-
x = nil
|
|
39
|
-
Thread.new { q.pop { |v| x = v } }.join
|
|
40
|
-
assert_equal nil, x
|
|
41
|
-
EM.run { EM.next_tick { EM.stop } }
|
|
42
|
-
assert_equal 1, x
|
|
43
|
-
end
|
|
44
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# $Id$
|
|
2
|
-
#
|
|
3
|
-
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
|
4
|
-
# Homepage:: http://rubyeventmachine.com
|
|
5
|
-
# Date:: 8 April 2006
|
|
6
|
-
#
|
|
7
|
-
# See EventMachine and EventMachine::Connection for documentation and
|
|
8
|
-
# usage examples.
|
|
9
|
-
#
|
|
10
|
-
#----------------------------------------------------------------------------
|
|
11
|
-
#
|
|
12
|
-
# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
|
|
13
|
-
# Gmail: blackhedd
|
|
14
|
-
#
|
|
15
|
-
# This program is free software; you can redistribute it and/or modify
|
|
16
|
-
# it under the terms of either: 1) the GNU General Public License
|
|
17
|
-
# as published by the Free Software Foundation; either version 2 of the
|
|
18
|
-
# License, or (at your option) any later version; or 2) Ruby's License.
|
|
19
|
-
#
|
|
20
|
-
# See the file COPYING for complete licensing information.
|
|
21
|
-
#
|
|
22
|
-
#---------------------------------------------------------------------------
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
$:.unshift "../lib"
|
|
28
|
-
require 'eventmachine'
|
|
29
|
-
require 'test/unit'
|
|
30
|
-
|
|
31
|
-
class TestRunning < Test::Unit::TestCase
|
|
32
|
-
def test_running
|
|
33
|
-
assert_equal( false, EM::reactor_running? )
|
|
34
|
-
r = false
|
|
35
|
-
EM.run {
|
|
36
|
-
r = EM::reactor_running?
|
|
37
|
-
EM.stop
|
|
38
|
-
}
|
|
39
|
-
assert_equal( true, r )
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# $Id$
|
|
2
|
-
#
|
|
3
|
-
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
|
4
|
-
# Homepage:: http://rubyeventmachine.com
|
|
5
|
-
# Date:: 8 April 2006
|
|
6
|
-
#
|
|
7
|
-
# See EventMachine and EventMachine::Connection for documentation and
|
|
8
|
-
# usage examples.
|
|
9
|
-
#
|
|
10
|
-
#----------------------------------------------------------------------------
|
|
11
|
-
#
|
|
12
|
-
# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
|
|
13
|
-
# Gmail: blackhedd
|
|
14
|
-
#
|
|
15
|
-
# This program is free software; you can redistribute it and/or modify
|
|
16
|
-
# it under the terms of either: 1) the GNU General Public License
|
|
17
|
-
# as published by the Free Software Foundation; either version 2 of the
|
|
18
|
-
# License, or (at your option) any later version; or 2) Ruby's License.
|
|
19
|
-
#
|
|
20
|
-
# See the file COPYING for complete licensing information.
|
|
21
|
-
#
|
|
22
|
-
#---------------------------------------------------------------------------
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
$:.unshift "../lib"
|
|
28
|
-
require 'eventmachine'
|
|
29
|
-
require 'test/unit'
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class TestSASL < Test::Unit::TestCase
|
|
33
|
-
|
|
34
|
-
# SASL authentication is usually done with UNIX-domain sockets, but
|
|
35
|
-
# we'll use TCP so this test will work on Windows. As far as the
|
|
36
|
-
# protocol handlers are concerned, there's no difference.
|
|
37
|
-
|
|
38
|
-
Host,Port = "127.0.0.1",9560
|
|
39
|
-
TestUser,TestPsw = "someone", "password"
|
|
40
|
-
|
|
41
|
-
class SaslServer < EM::Connection
|
|
42
|
-
include EM::Protocols::SASLauth
|
|
43
|
-
def validate usr, psw, sys, realm
|
|
44
|
-
usr == TestUser and psw == TestPsw
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
class SaslClient < EM::Connection
|
|
49
|
-
include EM::Protocols::SASLauthclient
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def test_sasl
|
|
53
|
-
resp = nil
|
|
54
|
-
EM.run {
|
|
55
|
-
EM.start_server( Host, Port, SaslServer )
|
|
56
|
-
|
|
57
|
-
c = EM.connect( Host, Port, SaslClient )
|
|
58
|
-
d = c.validate?( TestUser, TestPsw )
|
|
59
|
-
d.timeout 2
|
|
60
|
-
d.callback {
|
|
61
|
-
resp = true
|
|
62
|
-
EM.stop
|
|
63
|
-
}
|
|
64
|
-
d.errback {
|
|
65
|
-
resp = false
|
|
66
|
-
EM.stop
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
assert_equal( true, resp )
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
end
|