summaryrefslogtreecommitdiff
path: root/spec/rubyspec/library/socket/tcpserver
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/library/socket/tcpserver')
-rw-r--r--spec/rubyspec/library/socket/tcpserver/accept_nonblock_spec.rb50
-rw-r--r--spec/rubyspec/library/socket/tcpserver/accept_spec.rb65
-rw-r--r--spec/rubyspec/library/socket/tcpserver/gets_spec.rb16
-rw-r--r--spec/rubyspec/library/socket/tcpserver/listen_spec.rb18
-rw-r--r--spec/rubyspec/library/socket/tcpserver/new_spec.rb96
-rw-r--r--spec/rubyspec/library/socket/tcpserver/sysaccept_spec.rb32
6 files changed, 0 insertions, 277 deletions
diff --git a/spec/rubyspec/library/socket/tcpserver/accept_nonblock_spec.rb b/spec/rubyspec/library/socket/tcpserver/accept_nonblock_spec.rb
deleted file mode 100644
index d6f7448084..0000000000
--- a/spec/rubyspec/library/socket/tcpserver/accept_nonblock_spec.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-require File.expand_path('../../fixtures/classes', __FILE__)
-
-describe "Socket::TCPServer.accept_nonblock" do
- before :each do
- @server = TCPServer.new("127.0.0.1", 0)
- @port = @server.addr[1]
- end
-
- after :each do
- @server.close unless @server.closed?
- end
-
- it "accepts non blocking connections" do
- @server.listen(5)
- lambda {
- @server.accept_nonblock
- }.should raise_error(IO::WaitReadable)
-
- c = TCPSocket.new("127.0.0.1", @port)
- sleep 0.1
- s = @server.accept_nonblock
-
- port, address = Socket.unpack_sockaddr_in(s.getsockname)
-
- port.should == @port
- address.should == "127.0.0.1"
- s.should be_kind_of(TCPSocket)
-
- c.close
- s.close
- end
-
- it "raises an IOError if the socket is closed" do
- @server.close
- lambda { @server.accept }.should raise_error(IOError)
- end
-
- describe 'without a connected client' do
- it 'raises error' do
- lambda { @server.accept_nonblock }.should raise_error(IO::WaitReadable)
- end
-
- ruby_version_is '2.3' do
- it 'returns :wait_readable in exceptionless mode' do
- @server.accept_nonblock(exception: false).should == :wait_readable
- end
- end
- end
-end
diff --git a/spec/rubyspec/library/socket/tcpserver/accept_spec.rb b/spec/rubyspec/library/socket/tcpserver/accept_spec.rb
deleted file mode 100644
index f7b017d014..0000000000
--- a/spec/rubyspec/library/socket/tcpserver/accept_spec.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-require File.expand_path('../../fixtures/classes', __FILE__)
-
-
-describe "TCPServer#accept" do
- before :each do
- @server = TCPServer.new("127.0.0.1", 0)
- @port = @server.addr[1]
- end
-
- after :each do
- @server.close unless @server.closed?
- end
-
- it "accepts a connection and returns a TCPSocket" do
- data = nil
- t = Thread.new do
- client = @server.accept
- client.should be_kind_of(TCPSocket)
- data = client.read(5)
- client << "goodbye"
- client.close
- end
- Thread.pass while t.status and t.status != "sleep"
-
- socket = TCPSocket.new('127.0.0.1', @port)
- socket.write('hello')
- socket.shutdown(1) # we are done with sending
- socket.read.should == 'goodbye'
- t.join
- data.should == 'hello'
- socket.close
- end
-
- it "can be interrupted by Thread#kill" do
- t = Thread.new { @server.accept }
-
- Thread.pass while t.status and t.status != "sleep"
-
- # kill thread, ensure it dies in a reasonable amount of time
- t.kill
- a = 0
- while t.alive? and a < 5000
- sleep 0.001
- a += 1
- end
- a.should < 5000
- end
-
- it "can be interrupted by Thread#raise" do
- t = Thread.new { @server.accept }
-
- Thread.pass while t.status and t.status != "sleep"
-
- # raise in thread, ensure the raise happens
- ex = Exception.new
- t.raise ex
- lambda { t.join }.should raise_error(Exception)
- end
-
- it "raises an IOError if the socket is closed" do
- @server.close
- lambda { @server.accept }.should raise_error(IOError)
- end
-end
diff --git a/spec/rubyspec/library/socket/tcpserver/gets_spec.rb b/spec/rubyspec/library/socket/tcpserver/gets_spec.rb
deleted file mode 100644
index 86ba65eae2..0000000000
--- a/spec/rubyspec/library/socket/tcpserver/gets_spec.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-require File.expand_path('../../fixtures/classes', __FILE__)
-
-describe "TCPServer#gets" do
- before :each do
- @server = TCPServer.new(SocketSpecs.hostname, 0)
- end
-
- after :each do
- @server.close
- end
-
- it "raises Errno::ENOTCONN on gets" do
- lambda { @server.gets }.should raise_error(Errno::ENOTCONN)
- end
-end
diff --git a/spec/rubyspec/library/socket/tcpserver/listen_spec.rb b/spec/rubyspec/library/socket/tcpserver/listen_spec.rb
deleted file mode 100644
index d764b4ce70..0000000000
--- a/spec/rubyspec/library/socket/tcpserver/listen_spec.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-require File.expand_path('../../fixtures/classes', __FILE__)
-
-require 'socket'
-
-describe 'TCPServer#listen' do
- before :each do
- @server = TCPServer.new(SocketSpecs.hostname, 0)
- end
-
- after :each do
- @server.close unless @server.closed?
- end
-
- it 'returns 0' do
- @server.listen(10).should == 0
- end
-end
diff --git a/spec/rubyspec/library/socket/tcpserver/new_spec.rb b/spec/rubyspec/library/socket/tcpserver/new_spec.rb
deleted file mode 100644
index ddbe96d89d..0000000000
--- a/spec/rubyspec/library/socket/tcpserver/new_spec.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-require File.expand_path('../../fixtures/classes', __FILE__)
-
-describe "TCPServer.new" do
- after :each do
- @server.close if @server && [email protected]?
- end
-
- it "binds to a host and a port" do
- @server = TCPServer.new('127.0.0.1', 0)
- addr = @server.addr
- addr[0].should == 'AF_INET'
- addr[1].should be_kind_of(Fixnum)
- # on some platforms (Mac), MRI
- # returns comma at the end.
- addr[2].should =~ /^#{SocketSpecs.hostname}\b/
- addr[3].should == '127.0.0.1'
- end
-
- it "binds to localhost and a port with either IPv4 or IPv6" do
- @server = TCPServer.new(SocketSpecs.hostname, 0)
- addr = @server.addr
- addr[1].should be_kind_of(Fixnum)
- if addr[0] == 'AF_INET'
- addr[2].should =~ /^#{SocketSpecs.hostname}\b/
- addr[3].should == '127.0.0.1'
- else
- addr[2].should =~ /^#{SocketSpecs.hostnamev6}\b/
- addr[3].should == '::1'
- end
- end
-
- it "binds to INADDR_ANY if the hostname is empty" do
- @server = TCPServer.new('', 0)
- addr = @server.addr
- addr[0].should == 'AF_INET'
- addr[1].should be_kind_of(Fixnum)
- addr[2].should == '0.0.0.0'
- addr[3].should == '0.0.0.0'
- end
-
- it "binds to INADDR_ANY if the hostname is empty and the port is a string" do
- @server = TCPServer.new('', 0)
- addr = @server.addr
- addr[0].should == 'AF_INET'
- addr[1].should be_kind_of(Fixnum)
- addr[2].should == '0.0.0.0'
- addr[3].should == '0.0.0.0'
- end
-
- it "coerces port to string, then determines port from that number or service name" do
- lambda { TCPServer.new(SocketSpecs.hostname, Object.new) }.should raise_error(TypeError)
-
- port = Object.new
- port.should_receive(:to_str).and_return("0")
-
- @server = TCPServer.new(SocketSpecs.hostname, port)
- addr = @server.addr
- addr[1].should be_kind_of(Fixnum)
-
- # TODO: This should also accept strings like 'https', but I don't know how to
- # pick such a service port that will be able to reliably bind...
- end
-
- it "raises Errno::EADDRNOTAVAIL when the adress is unknown" do
- lambda { TCPServer.new("1.2.3.4", 0) }.should raise_error(Errno::EADDRNOTAVAIL)
- end
-
- # There is no way to make this fail-proof on all machines, because
- # DNS servers like opendns return A records for ANY host, including
- # traditionally invalidly named ones.
- quarantine! do
- it "raises a SocketError when the host is unknown" do
- lambda {
- TCPServer.new("--notavalidname", 0)
- }.should raise_error(SocketError)
- end
- end
-
- it "raises Errno::EADDRINUSE when address is already in use" do
- @server = TCPServer.new('127.0.0.1', 0)
- lambda {
- @server = TCPServer.new('127.0.0.1', @server.addr[1])
- }.should raise_error(Errno::EADDRINUSE)
- end
-
- platform_is_not :windows, :aix do
- # A known bug in AIX. getsockopt(2) does not properly set
- # the fifth argument for SO_REUSEADDR.
- it "sets SO_REUSEADDR on the resulting server" do
- @server = TCPServer.new('127.0.0.1', 0)
- @server.getsockopt(:SOCKET, :REUSEADDR).data.should_not == "\x00\x00\x00\x00"
- @server.getsockopt(:SOCKET, :REUSEADDR).int.should_not == 0
- end
- end
-end
diff --git a/spec/rubyspec/library/socket/tcpserver/sysaccept_spec.rb b/spec/rubyspec/library/socket/tcpserver/sysaccept_spec.rb
deleted file mode 100644
index 93c1ffe152..0000000000
--- a/spec/rubyspec/library/socket/tcpserver/sysaccept_spec.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-require File.expand_path('../../fixtures/classes', __FILE__)
-
-require 'socket'
-
-describe "TCPServer#sysaccept" do
- before :each do
- @server = TCPServer.new(SocketSpecs.hostname, 0)
- @port = @server.addr[1]
- end
-
- after :each do
- @server.close unless @server.closed?
- end
-
- it 'blocks if no connections' do
- lambda { @server.sysaccept }.should block_caller
- end
-
- it 'returns file descriptor of an accepted connection' do
- begin
- sock = TCPSocket.new(SocketSpecs.hostname, @port)
-
- fd = @server.sysaccept
-
- fd.should be_an_instance_of(Fixnum)
- ensure
- sock.close if sock && !sock.closed?
- IO.for_fd(fd).close if fd
- end
- end
-end