Sha256: 0d99b041f0b201877503979ca9063c6f89fecabc77e4b309eaf9dda48979f013

Contents?: true

Size: 1.85 KB

Versions: 2

Compression:

Stored size: 1.85 KB

Contents

require File.dirname(__FILE__) + '/../lib/rev'
def dbg
 require 'rubygems'
 require 'ruby-debug'
 debugger
end
Thread.abort_on_exception=true

require 'socket'

describe Rev::TCPSocket do
      HOST = '127.0.0.1'
      PORT = 4321
  before :each do
      @server = Rev::TCPServer.new(HOST, PORT) do |c|
         c.on_connect { puts "#{remote_addr}:#{remote_port} connected" }
         c.on_close   { puts "#{remote_addr}:#{remote_port} disconnected" }
         #c.on_read    { |data| write data }
      end

  end

  after :each do
	@server.close
  end

  def sleep_until(seconds = 1, interval = 0.1)
   raise unless block_given?
   start_time=Time.now
   sleep interval until ((Time.now - start_time) > seconds) or yield
  end

  it "should stop" do
	loop = Rev::Loop.default
	stopped = false;
  	@server.attach(loop)
  	Thread.new {
                loop.run_nonblock_over_and_over_again 
		stopped = true
        }
	sleep 0
        stopped.should == false
        loop.stop
	
        sleep_until { stopped == true }
        stopped.should == true
  end

  it "should auto bind on 1.8.6" do
      @server.close
      loop = Rev::Loop.default
      server = Rev::TCPServer.new(HOST, PORT) do |c|
        #c.on_connect { puts "#{remote_addr}:#{remote_port} connected" }
        #c.on_close   { puts "#{remote_addr}:#{remote_port} disconnected" }
	print "CREATING\n"
        c.on_read    { |conn, data| print "WITHIN MYINE"; conn.write data; conn.close; loop.stop }
      end

      server.attach(loop)

      Thread.new { loop.run_nonblock_over_and_over_again }
      puts "Echo server listening on #{HOST}:#{PORT}"
      # now connect and write -- it should close
      connector = TCPSocket.new HOST, PORT
      connector.write "yup"
      connector.read.should == 'yup'
      sleep 0
      loop.running?.should != true
      connector.closed?.should == true # it should close me, too
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cool.io-1.0.0 spec/possible_tests/works_straight.rb
cool.io-0.9.0 spec/possible_tests/works_straight.rb