rf-web/vendor/bundle/gems/eventmachine-1.2.7/tests/test_connection_count.rb

84 lines
1.8 KiB
Ruby
Raw Normal View History

2019-10-21 08:18:17 +00:00
require 'em_test_helper'
class TestConnectionCount < Test::Unit::TestCase
def teardown
EM.epoll = false
EM.kqueue = false
end
def test_idle_connection_count
count = nil
EM.run {
count = EM.connection_count
EM.stop_event_loop
}
assert_equal(0, count)
end
# Run this again with epoll enabled (if available)
def test_idle_connection_count_epoll
EM.epoll if EM.epoll?
count = nil
EM.run {
count = EM.connection_count
EM.stop_event_loop
}
assert_equal(0, count)
end
# Run this again with kqueue enabled (if available)
def test_idle_connection_count_kqueue
EM.kqueue if EM.kqueue?
count = nil
EM.run {
count = EM.connection_count
EM.stop_event_loop
}
assert_equal(0, count)
end
module Client
def connection_completed
$client_conns += 1
EM.stop if $client_conns == 3
end
end
def test_with_some_connections
EM.run {
$client_conns = 0
$initial_conns = EM.connection_count
EM.start_server("127.0.0.1", 9999)
$server_conns = EM.connection_count
3.times { EM.connect("127.0.0.1", 9999, Client) }
}
assert_equal(0, $initial_conns)
assert_equal(1, $server_conns)
assert_equal(4, $client_conns + $server_conns)
end
module DoubleCloseClient
def unbind
close_connection
$num_close_scheduled_1 = EM.num_close_scheduled
EM.next_tick do
$num_close_scheduled_2 = EM.num_close_scheduled
EM.stop
end
end
end
def test_num_close_scheduled
omit_if(jruby?)
EM.run {
assert_equal(0, EM.num_close_scheduled)
EM.connect("127.0.0.1", 9999, DoubleCloseClient) # nothing listening on 9999
}
assert_equal(1, $num_close_scheduled_1)
assert_equal(0, $num_close_scheduled_2)
end
end