diff options
Diffstat (limited to 'spec/rubyspec/library/socket/udpsocket')
5 files changed, 29 insertions, 22 deletions
diff --git a/spec/rubyspec/library/socket/udpsocket/bind_spec.rb b/spec/rubyspec/library/socket/udpsocket/bind_spec.rb index 067baa2472..bdc3c3d33f 100644 --- a/spec/rubyspec/library/socket/udpsocket/bind_spec.rb +++ b/spec/rubyspec/library/socket/udpsocket/bind_spec.rb @@ -12,24 +12,31 @@ describe "UDPSocket.bind" do end it "binds the socket to a port" do - @socket.bind(SocketSpecs.hostname, SocketSpecs.port) + @socket.bind(SocketSpecs.hostname, 0) + @socket.addr[1].should be_kind_of(Integer) + end + + it "raises Errno::EINVAL when already bound" do + @socket.bind(SocketSpecs.hostname, 0) - lambda { @socket.bind(SocketSpecs.hostname, SocketSpecs.port) }.should raise_error + lambda { + @socket.bind(SocketSpecs.hostname, @socket.addr[1]) + }.should raise_error(Errno::EINVAL) end it "receives a hostname and a port" do - @socket.bind(SocketSpecs.hostname, SocketSpecs.port) + @socket.bind(SocketSpecs.hostname, 0) port, host = Socket.unpack_sockaddr_in(@socket.getsockname) host.should == "127.0.0.1" - port.should == SocketSpecs.port + port.should == @socket.addr[1] end it "binds to INADDR_ANY if the hostname is empty" do - @socket.bind("", SocketSpecs.port) + @socket.bind("", 0) port, host = Socket.unpack_sockaddr_in(@socket.getsockname) host.should == "0.0.0.0" - port.should == SocketSpecs.port + port.should == @socket.addr[1] end end diff --git a/spec/rubyspec/library/socket/udpsocket/connect_spec.rb b/spec/rubyspec/library/socket/udpsocket/connect_spec.rb deleted file mode 100644 index fcd29e1257..0000000000 --- a/spec/rubyspec/library/socket/udpsocket/connect_spec.rb +++ /dev/null @@ -1,2 +0,0 @@ -require File.expand_path('../../../../spec_helper', __FILE__) -require File.expand_path('../../fixtures/classes', __FILE__) diff --git a/spec/rubyspec/library/socket/udpsocket/recvfrom_nonblock_spec.rb b/spec/rubyspec/library/socket/udpsocket/recvfrom_nonblock_spec.rb deleted file mode 100644 index fcd29e1257..0000000000 --- a/spec/rubyspec/library/socket/udpsocket/recvfrom_nonblock_spec.rb +++ /dev/null @@ -1,2 +0,0 @@ -require File.expand_path('../../../../spec_helper', __FILE__) -require File.expand_path('../../fixtures/classes', __FILE__) diff --git a/spec/rubyspec/library/socket/udpsocket/send_spec.rb b/spec/rubyspec/library/socket/udpsocket/send_spec.rb index feff020dd7..1a6f44b26e 100644 --- a/spec/rubyspec/library/socket/udpsocket/send_spec.rb +++ b/spec/rubyspec/library/socket/udpsocket/send_spec.rb @@ -3,12 +3,12 @@ require File.expand_path('../../fixtures/classes', __FILE__) describe "UDPSocket.send" do before :each do - @ready = false + @port = nil @server_thread = Thread.new do @server = UDPSocket.open begin - @server.bind(nil, SocketSpecs.port) - @ready = true + @server.bind(nil, 0) + @port = @server.addr[1] begin @msg = @server.recvfrom_nonblock(64) rescue IO::WaitReadable @@ -19,12 +19,16 @@ describe "UDPSocket.send" do @server.close if [email protected]? end end - Thread.pass while @server_thread.status and !@ready + Thread.pass while @server_thread.status and !@port + end + + after :each do + @server_thread.join end it "sends data in ad hoc mode" do @socket = UDPSocket.open - @socket.send("ad hoc", 0, SocketSpecs.hostname, SocketSpecs.port) + @socket.send("ad hoc", 0, SocketSpecs.hostname, @port) @socket.close @server_thread.join @@ -36,7 +40,7 @@ describe "UDPSocket.send" do it "sends data in ad hoc mode (with port given as a String)" do @socket = UDPSocket.open - @socket.send("ad hoc", 0, SocketSpecs.hostname, SocketSpecs.str_port) + @socket.send("ad hoc", 0, SocketSpecs.hostname, @port.to_s) @socket.close @server_thread.join @@ -48,7 +52,7 @@ describe "UDPSocket.send" do it "sends data in connection mode" do @socket = UDPSocket.open - @socket.connect(SocketSpecs.hostname, SocketSpecs.port) + @socket.connect(SocketSpecs.hostname, @port) @socket.send("connection-based", 0) @socket.close @server_thread.join @@ -63,10 +67,10 @@ describe "UDPSocket.send" do @socket = UDPSocket.open begin lambda do - @socket.send('1' * 100_000, 0, SocketSpecs.hostname, SocketSpecs.str_port) + @socket.send('1' * 100_000, 0, SocketSpecs.hostname, @port.to_s) end.should raise_error(Errno::EMSGSIZE) ensure - @socket.send("ad hoc", 0, SocketSpecs.hostname, SocketSpecs.port) + @socket.send("ad hoc", 0, SocketSpecs.hostname, @port) @socket.close @server_thread.join end diff --git a/spec/rubyspec/library/socket/udpsocket/write_spec.rb b/spec/rubyspec/library/socket/udpsocket/write_spec.rb index 97985ff7ae..11e38bb470 100644 --- a/spec/rubyspec/library/socket/udpsocket/write_spec.rb +++ b/spec/rubyspec/library/socket/udpsocket/write_spec.rb @@ -4,11 +4,11 @@ require File.expand_path('../../fixtures/classes', __FILE__) describe "UDPSocket#write" do it "raises EMSGSIZE if msg is too long" do begin - host, port = SocketSpecs.hostname, SocketSpecs.port + host = SocketSpecs.hostname s1 = UDPSocket.new - s1.bind(host, port) + s1.bind(host, 0) s2 = UDPSocket.new - s2.connect(host, port) + s2.connect(host, s1.addr[1]) lambda do s2.write('1' * 100_000) |