summaryrefslogtreecommitdiff
path: root/vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/tests/test_pause.rb
diff options
context:
space:
mode:
authorBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
committerBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
commit5571dc766e2143e39762ff0b47c41d1c2e154f4c (patch)
treef4f124d314a7e76c04484515aa0fd1f2e271a601 /vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/tests/test_pause.rb
parent359f3309c97fc894b63e0a295c76ab298504d635 (diff)
Vendor bundled gems for deployment
Diffstat (limited to 'vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/tests/test_pause.rb')
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/tests/test_pause.rb107
1 files changed, 107 insertions, 0 deletions
diff --git a/vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/tests/test_pause.rb b/vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/tests/test_pause.rb
new file mode 100644
index 0000000..d078a77
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/tests/test_pause.rb
@@ -0,0 +1,107 @@
+require 'em_test_helper'
+
+class TestPause < Test::Unit::TestCase
+ if EM.respond_to? :pause_connection
+ def setup
+ @port = next_port
+ end
+
+ def teardown
+ assert(!EM.reactor_running?)
+ end
+
+ def test_pause_resume
+ server = nil
+
+ s_rx = c_rx = 0
+
+ test_server = Module.new do
+ define_method :post_init do
+ server = self
+ end
+
+ define_method :receive_data do |data|
+ s_rx += 1
+
+ EM.add_periodic_timer(0.01) { send_data 'hi' }
+ send_data 'hi'
+
+ # pause server, now no outgoing data will actually
+ # be sent and no more incoming data will be received
+ pause
+ end
+ end
+
+ test_client = Module.new do
+ def post_init
+ EM.add_periodic_timer(0.01) do
+ send_data 'hello'
+ end
+ end
+
+ define_method :receive_data do |data|
+ c_rx += 1
+ end
+ end
+
+ EM.run do
+ EM.start_server "127.0.0.1", @port, test_server
+ EM.connect "127.0.0.1", @port, test_client
+
+ EM.add_timer(0.05) do
+ assert_equal 1, s_rx
+ assert_equal 0, c_rx
+ assert server.paused?
+
+ # resume server, queued outgoing and incoming data will be flushed
+ server.resume
+
+ assert !server.paused?
+
+ EM.add_timer(0.05) do
+ assert server.paused?
+ assert s_rx > 1
+ assert c_rx > 0
+ EM.stop
+ end
+ end
+ end
+ end
+
+ def test_pause_in_receive_data
+ incoming = []
+
+ test_server = Module.new do
+ define_method(:receive_data) do |data|
+ incoming << data
+ pause
+ EM.add_timer(0.5){ close_connection }
+ end
+ define_method(:unbind) do
+ EM.stop
+ end
+ end
+
+ buf = 'a' * 1024
+
+ EM.run do
+ EM.start_server "127.0.0.1", @port, test_server
+ cli = EM.connect "127.0.0.1", @port
+ 128.times do
+ cli.send_data buf
+ end
+ end
+
+ assert_equal 1, incoming.size
+ assert incoming[0].bytesize > buf.bytesize
+ assert incoming[0].bytesize < buf.bytesize * 128
+ end
+ else
+ warn "EM.pause_connection not implemented, skipping tests in #{__FILE__}"
+
+ # Because some rubies will complain if a TestCase class has no tests
+ def test_em_pause_connection_not_implemented
+ assert true
+ end
+ end
+end