1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
require 'spec_helper'
describe Celluloid::IO::TCPServer do
describe "#accept" do
let(:payload) { 'ohai' }
it "can be initialized without a host" do
expect { Celluloid::IO::TCPServer.new(2000).close }.to_not raise_error
end
context "inside Celluloid::IO" do
it "should be evented" do
with_tcp_server do |subject|
within_io_actor { Celluloid::IO.evented? }.should be_truthy
end
end
it "accepts a connection and returns a Celluloid::IO::TCPSocket" do
with_tcp_server do |subject|
thread = Thread.new { TCPSocket.new(example_addr, example_port) }
peer = within_io_actor { subject.accept }
peer.should be_a Celluloid::IO::TCPSocket
client = thread.value
client.write payload
peer.read(payload.size).should eq payload
end
end
context "outside Celluloid::IO" do
it "should be blocking" do
with_tcp_server do |subject|
Celluloid::IO.should_not be_evented
end
end
it "accepts a connection and returns a Celluloid::IO::TCPSocket" do
with_tcp_server do |subject|
thread = Thread.new { TCPSocket.new(example_addr, example_port) }
peer = subject.accept
peer.should be_a Celluloid::IO::TCPSocket
client = thread.value
client.write payload
peer.read(payload.size).should eq payload
end
end
end
end
end
end
|