Sha256: bb8dc2991b3a379434305c52bdd24008bca1b119730febc78dc90fb76288ebc1

Contents?: true

Size: 1.71 KB

Versions: 68

Compression:

Stored size: 1.71 KB

Contents

$:.unshift "../lib"
require 'eventmachine'
require 'test/unit'

class TestProxyConnection < Test::Unit::TestCase

  module ProxyConnection
    def initialize(client, request)
      @client, @request = client, request
    end

    def post_init
      EM::enable_proxy(self, @client)
    end

    def connection_completed
      EM.next_tick {
        send_data @request
      }
    end

    def proxy_target_unbound
      $unbound_early = true
      EM.stop
    end

    def unbind
      @client.close_connection_after_writing
    end
  end

  module Client
    def connection_completed
      send_data "EventMachine rocks!"
    end

    def receive_data(data)
      $client_data = data
    end

    def unbind
      EM.stop
    end
  end

  module Client2
    include Client
    def unbind; end
  end

  module Server
    def receive_data(data)
      send_data "I know!" if data == "EventMachine rocks!"
      close_connection_after_writing
    end
  end

  module ProxyServer
    def receive_data(data)
      EM.connect("127.0.0.1", 54321, ProxyConnection, self, data)
    end
  end

  module EarlyClosingProxy
    def receive_data(data)
      EM.connect("127.0.0.1", 54321, ProxyConnection, self, data)
      close_connection
    end
  end

  def test_proxy_connection
    EM.run {
      EM.start_server("127.0.0.1", 54321, Server)
      EM.start_server("127.0.0.1", 12345, ProxyServer)
      EM.connect("127.0.0.1", 12345, Client)
    }

    assert_equal("I know!", $client_data)
  end

  def test_early_close
    $client_data = nil
    EM.run {
      EM.start_server("127.0.0.1", 54321, Server)
      EM.start_server("127.0.0.1", 12345, EarlyClosingProxy)
      EM.connect("127.0.0.1", 12345, Client2)
    }

    assert($unbound_early)
  end

end

Version data entries

68 entries across 68 versions & 8 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.7.4 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.7.3 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
MattHulse-eventmachine-0.0.1 tests/test_proxy_connection.rb
MattHulse-eventmachine-0.12.10 tests/test_proxy_connection.rb
eventmachine-eventmachine-0.12.8 tests/test_proxy_connection.rb
eventmachine-eventmachine-0.12.9 tests/test_proxy_connection.rb
classiccms-0.7.2 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.7.1 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.7.0 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.6.9 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.6.8 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.6.7 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.6.6 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.6.5 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.6.4 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.6.3 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.6.2 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.6.1 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.6.0 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb