Sha256: fd43a127b220ca61b19c18542b02d929fd3679b05dd29bfe0ff6930079edeb06

Contents?: true

Size: 1.51 KB

Versions: 69

Compression:

Stored size: 1.51 KB

Contents

$:.unshift File.expand_path(File.dirname(__FILE__) + "/../lib")
require 'eventmachine'
require 'socket'
require 'test/unit'

class TestPause < Test::Unit::TestCase
  TestHost = "127.0.0.1"
  TestPort = 9070

  def setup
    assert(!EM.reactor_running?)
  end

  def teardown
    assert(!EM.reactor_running?)
  end

  #-------------------------------------

  def test_pause_resume
    test = self
    server = nil

    s_rx = c_rx = 0

    EM.run do
      EM.start_server TestHost, TestPort, Module.new {
        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
      }

      c = EM.connect TestHost, TestPort, Module.new {
        define_method :receive_data do |data|
          c_rx += 1
        end
      }
      EM.add_periodic_timer(0.01) { c.send_data 'hi' }

      EM.add_timer(1) do
        test.assert_equal 1, s_rx
        test.assert_equal 0, c_rx
        test.assert server.paused?

        # resume server, queued outgoing and incoming data will be flushed
        server.resume

        test.assert ! server.paused?

        EM.add_timer(1) do
          test.assert server.paused?
          test.assert s_rx >= 2
          test.assert c_rx >= 1
          EM.stop_event_loop
        end
      end
    end
  end
end

Version data entries

69 entries across 69 versions & 8 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.7.4 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.7.3 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.7.2 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.7.1 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.7.0 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.6.9 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.6.8 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.6.7 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.6.6 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.6.5 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.6.4 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.6.3 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.6.2 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.6.1 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.6.0 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.5.17 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.5.16 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.5.15 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb
classiccms-0.5.14 vendor/bundle/gems/eventmachine-0.12.10/tests/test_pause.rb