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.5.17 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.16 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.15 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.14 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.13 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.12 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.11 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.10 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.9 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
eventmachine-maglev--0.12.10 tests/test_proxy_connection.rb
classiccms-0.5.8 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.7 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.6 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.5 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.2 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.1 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.5.0 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.4.2 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.4.1 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb
classiccms-0.4.0 vendor/bundle/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb