aboutsummaryrefslogtreecommitdiffstats
path: root/spec/rubyspec/library/socket/socket
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/library/socket/socket')
-rw-r--r--spec/rubyspec/library/socket/socket/bind_spec.rb36
-rw-r--r--spec/rubyspec/library/socket/socket/connect_nonblock_spec.rb19
-rw-r--r--spec/rubyspec/library/socket/socket/for_fd_spec.rb5
-rw-r--r--spec/rubyspec/library/socket/socket/getnameinfo_spec.rb16
-rw-r--r--spec/rubyspec/library/socket/socket/listen_spec.rb2
-rw-r--r--spec/rubyspec/library/socket/socket/unpack_sockaddr_in_spec.rb8
-rw-r--r--spec/rubyspec/library/socket/socket/unpack_sockaddr_un_spec.rb4
7 files changed, 48 insertions, 42 deletions
diff --git a/spec/rubyspec/library/socket/socket/bind_spec.rb b/spec/rubyspec/library/socket/socket/bind_spec.rb
index 57dff3bd6d..399c988b32 100644
--- a/spec/rubyspec/library/socket/socket/bind_spec.rb
+++ b/spec/rubyspec/library/socket/socket/bind_spec.rb
@@ -5,8 +5,8 @@ include Socket::Constants
describe "Socket#bind on SOCK_DGRAM socket" do
before :each do
- @sock = Socket.new(AF_INET, SOCK_DGRAM, 0);
- @sockaddr = Socket.pack_sockaddr_in(SocketSpecs.port, "127.0.0.1");
+ @sock = Socket.new(AF_INET, SOCK_DGRAM, 0)
+ @sockaddr = Socket.pack_sockaddr_in(0, "127.0.0.1")
end
after :each do
@@ -22,30 +22,30 @@ describe "Socket#bind on SOCK_DGRAM socket" do
@sock.bind(@sockaddr).should == 0
end
- it "raises Errno::EINVAL when binding to an already bound port" do
- @sock.bind(@sockaddr);
+ it "raises Errno::EINVAL when already bound" do
+ @sock.bind(@sockaddr)
- lambda { @sock.bind(@sockaddr); }.should raise_error(Errno::EINVAL);
+ lambda { @sock.bind(@sockaddr) }.should raise_error(Errno::EINVAL)
end
it "raises Errno::EADDRNOTAVAIL when the specified sockaddr is not available from the local machine" do
- sockaddr1 = Socket.pack_sockaddr_in(SocketSpecs.port, "4.3.2.1");
- lambda { @sock.bind(sockaddr1); }.should raise_error(Errno::EADDRNOTAVAIL)
+ sockaddr1 = Socket.pack_sockaddr_in(0, "4.3.2.1")
+ lambda { @sock.bind(sockaddr1) }.should raise_error(Errno::EADDRNOTAVAIL)
end
platform_is_not :windows, :cygwin do
it "raises Errno::EACCES when the current user does not have permission to bind" do
- sockaddr1 = Socket.pack_sockaddr_in(1, "127.0.0.1");
- lambda { @sock.bind(sockaddr1); }.should raise_error(Errno::EACCES)
+ sockaddr1 = Socket.pack_sockaddr_in(1, "127.0.0.1")
+ lambda { @sock.bind(sockaddr1) }.should raise_error(Errno::EACCES)
end
end
end
describe "Socket#bind on SOCK_STREAM socket" do
before :each do
- @sock = Socket.new(AF_INET, SOCK_STREAM, 0);
+ @sock = Socket.new(AF_INET, SOCK_STREAM, 0)
@sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, true)
- @sockaddr = Socket.pack_sockaddr_in(SocketSpecs.port, "127.0.0.1");
+ @sockaddr = Socket.pack_sockaddr_in(0, "127.0.0.1")
end
after :each do
@@ -61,21 +61,21 @@ describe "Socket#bind on SOCK_STREAM socket" do
@sock.bind(@sockaddr).should == 0
end
- it "raises Errno::EINVAL when binding to an already bound port" do
- @sock.bind(@sockaddr);
+ it "raises Errno::EINVAL when already bound" do
+ @sock.bind(@sockaddr)
- lambda { @sock.bind(@sockaddr); }.should raise_error(Errno::EINVAL);
+ lambda { @sock.bind(@sockaddr) }.should raise_error(Errno::EINVAL)
end
it "raises Errno::EADDRNOTAVAIL when the specified sockaddr is not available from the local machine" do
- sockaddr1 = Socket.pack_sockaddr_in(SocketSpecs.port, "4.3.2.1");
- lambda { @sock.bind(sockaddr1); }.should raise_error(Errno::EADDRNOTAVAIL)
+ sockaddr1 = Socket.pack_sockaddr_in(0, "4.3.2.1")
+ lambda { @sock.bind(sockaddr1) }.should raise_error(Errno::EADDRNOTAVAIL)
end
platform_is_not :windows, :cygwin do
it "raises Errno::EACCES when the current user does not have permission to bind" do
- sockaddr1 = Socket.pack_sockaddr_in(1, "127.0.0.1");
- lambda { @sock.bind(sockaddr1); }.should raise_error(Errno::EACCES)
+ sockaddr1 = Socket.pack_sockaddr_in(1, "127.0.0.1")
+ lambda { @sock.bind(sockaddr1) }.should raise_error(Errno::EACCES)
end
end
end
diff --git a/spec/rubyspec/library/socket/socket/connect_nonblock_spec.rb b/spec/rubyspec/library/socket/socket/connect_nonblock_spec.rb
index 77c2340688..fd92c0740c 100644
--- a/spec/rubyspec/library/socket/socket/connect_nonblock_spec.rb
+++ b/spec/rubyspec/library/socket/socket/connect_nonblock_spec.rb
@@ -6,7 +6,8 @@ require 'socket'
describe "Socket#connect_nonblock" do
before :each do
@hostname = "127.0.0.1"
- @addr = Socket.sockaddr_in(SocketSpecs.port, @hostname)
+ @server = TCPServer.new(@hostname, 0) # started, but no accept
+ @addr = Socket.sockaddr_in(@server.addr[1], @hostname)
@socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
@thread = nil
end
@@ -17,27 +18,31 @@ describe "Socket#connect_nonblock" do
end
it "connects the socket to the remote side" do
- ready = false
+ port = nil
+ accept = false
@thread = Thread.new do
- server = TCPServer.new(@hostname, SocketSpecs.port)
- ready = true
+ server = TCPServer.new(@hostname, 0)
+ port = server.addr[1]
+ Thread.pass until accept
conn = server.accept
conn << "hello!"
conn.close
server.close
end
- Thread.pass while (@thread.status and @thread.status != 'sleep') or !ready
+ Thread.pass until port
+ addr = Socket.sockaddr_in(port, @hostname)
begin
- @socket.connect_nonblock(@addr)
+ @socket.connect_nonblock(addr)
rescue Errno::EINPROGRESS
end
+ accept = true
IO.select nil, [@socket]
begin
- @socket.connect_nonblock(@addr)
+ @socket.connect_nonblock(addr)
rescue Errno::EISCONN
# Not all OS's use this errno, so we trap and ignore it
end
diff --git a/spec/rubyspec/library/socket/socket/for_fd_spec.rb b/spec/rubyspec/library/socket/socket/for_fd_spec.rb
index 7f3cfcceb4..6688988448 100644
--- a/spec/rubyspec/library/socket/socket/for_fd_spec.rb
+++ b/spec/rubyspec/library/socket/socket/for_fd_spec.rb
@@ -4,8 +4,9 @@ require 'socket'
describe "Socket.for_fd" do
before :each do
- @server = TCPServer.new("127.0.0.1", SocketSpecs.port)
- @client = TCPSocket.open("127.0.0.1", SocketSpecs.port)
+ @server = TCPServer.new("127.0.0.1", 0)
+ @port = @server.addr[1]
+ @client = TCPSocket.open("127.0.0.1", @port)
end
after :each do
diff --git a/spec/rubyspec/library/socket/socket/getnameinfo_spec.rb b/spec/rubyspec/library/socket/socket/getnameinfo_spec.rb
index 2b0ea4a723..9fc55dd61b 100644
--- a/spec/rubyspec/library/socket/socket/getnameinfo_spec.rb
+++ b/spec/rubyspec/library/socket/socket/getnameinfo_spec.rb
@@ -14,9 +14,9 @@ describe "Socket.getnameinfo" do
end
it "gets the name information and don't resolve it" do
- sockaddr = Socket.sockaddr_in SocketSpecs.port, '127.0.0.1'
+ sockaddr = Socket.sockaddr_in 3333, '127.0.0.1'
name_info = Socket.getnameinfo(sockaddr, Socket::NI_NUMERICHOST | Socket::NI_NUMERICSERV)
- name_info.should == ['127.0.0.1', "#{SocketSpecs.port}"]
+ name_info.should == ['127.0.0.1', "3333"]
end
def should_be_valid_dns_name(name)
@@ -28,10 +28,10 @@ describe "Socket.getnameinfo" do
end
it "gets the name information and resolve the host" do
- sockaddr = Socket.sockaddr_in SocketSpecs.port, '127.0.0.1'
+ sockaddr = Socket.sockaddr_in 3333, '127.0.0.1'
name_info = Socket.getnameinfo(sockaddr, Socket::NI_NUMERICSERV)
should_be_valid_dns_name(name_info[0])
- name_info[1].should == SocketSpecs.port.to_s
+ name_info[1].should == 3333.to_s
end
it "gets the name information and resolves the service" do
@@ -44,8 +44,8 @@ describe "Socket.getnameinfo" do
end
it "gets a 3-element array and doesn't resolve hostname" do
- name_info = Socket.getnameinfo(["AF_INET", SocketSpecs.port, '127.0.0.1'], Socket::NI_NUMERICHOST | Socket::NI_NUMERICSERV)
- name_info.should == ['127.0.0.1', "#{SocketSpecs.port}"]
+ name_info = Socket.getnameinfo(["AF_INET", 3333, '127.0.0.1'], Socket::NI_NUMERICHOST | Socket::NI_NUMERICSERV)
+ name_info.should == ['127.0.0.1', "3333"]
end
it "gets a 3-element array and resolves the service" do
@@ -54,8 +54,8 @@ describe "Socket.getnameinfo" do
end
it "gets a 4-element array and doesn't resolve hostname" do
- name_info = Socket.getnameinfo(["AF_INET", SocketSpecs.port, 'foo', '127.0.0.1'], Socket::NI_NUMERICHOST | Socket::NI_NUMERICSERV)
- name_info.should == ['127.0.0.1', "#{SocketSpecs.port}"]
+ name_info = Socket.getnameinfo(["AF_INET", 3333, 'foo', '127.0.0.1'], Socket::NI_NUMERICHOST | Socket::NI_NUMERICSERV)
+ name_info.should == ['127.0.0.1', "3333"]
end
it "gets a 4-element array and resolves the service" do
diff --git a/spec/rubyspec/library/socket/socket/listen_spec.rb b/spec/rubyspec/library/socket/socket/listen_spec.rb
index ebc97954fb..bea87f4ec5 100644
--- a/spec/rubyspec/library/socket/socket/listen_spec.rb
+++ b/spec/rubyspec/library/socket/socket/listen_spec.rb
@@ -14,7 +14,7 @@ describe "Socket#listen" do
end
it "verifies we can listen for incoming connections" do
- sockaddr = Socket.pack_sockaddr_in(SocketSpecs.port, "127.0.0.1")
+ sockaddr = Socket.pack_sockaddr_in(0, "127.0.0.1")
@socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, true)
@socket.bind(sockaddr)
@socket.listen(1).should == 0
diff --git a/spec/rubyspec/library/socket/socket/unpack_sockaddr_in_spec.rb b/spec/rubyspec/library/socket/socket/unpack_sockaddr_in_spec.rb
index 2df3b69a6d..91d2b947a1 100644
--- a/spec/rubyspec/library/socket/socket/unpack_sockaddr_in_spec.rb
+++ b/spec/rubyspec/library/socket/socket/unpack_sockaddr_in_spec.rb
@@ -5,13 +5,13 @@ require 'socket'
describe "Socket.unpack_sockaddr_in" do
it "decodes the host name and port number of a packed sockaddr_in" do
- sockaddr = Socket.sockaddr_in SocketSpecs.port, '127.0.0.1'
- Socket.unpack_sockaddr_in(sockaddr).should == [SocketSpecs.port, '127.0.0.1']
+ sockaddr = Socket.sockaddr_in 3333, '127.0.0.1'
+ Socket.unpack_sockaddr_in(sockaddr).should == [3333, '127.0.0.1']
end
it "gets the hostname and port number from a passed Addrinfo" do
- addrinfo = Addrinfo.tcp('127.0.0.1', SocketSpecs.port)
- Socket.unpack_sockaddr_in(addrinfo).should == [SocketSpecs.port, '127.0.0.1']
+ addrinfo = Addrinfo.tcp('127.0.0.1', 3333)
+ Socket.unpack_sockaddr_in(addrinfo).should == [3333, '127.0.0.1']
end
platform_is_not :windows do
diff --git a/spec/rubyspec/library/socket/socket/unpack_sockaddr_un_spec.rb b/spec/rubyspec/library/socket/socket/unpack_sockaddr_un_spec.rb
index 4d558c89c4..f81d36f7e9 100644
--- a/spec/rubyspec/library/socket/socket/unpack_sockaddr_un_spec.rb
+++ b/spec/rubyspec/library/socket/socket/unpack_sockaddr_un_spec.rb
@@ -14,12 +14,12 @@ describe 'Socket.unpack_sockaddr_un' do
end
it 'raises an ArgumentError when the sin_family is not AF_UNIX' do
- sockaddr = Socket.sockaddr_in(SocketSpecs.port, '127.0.0.1')
+ sockaddr = Socket.sockaddr_in(0, '127.0.0.1')
lambda { Socket.unpack_sockaddr_un(sockaddr) }.should raise_error(ArgumentError)
end
it 'raises an ArgumentError when passed addrinfo is not AF_UNIX' do
- addrinfo = Addrinfo.tcp('127.0.0.1', SocketSpecs.port)
+ addrinfo = Addrinfo.tcp('127.0.0.1', 0)
lambda { Socket.unpack_sockaddr_un(addrinfo) }.should raise_error(ArgumentError)
end
end