/projects/jruby-1.7.3/spec/bin/ruby/library/socket/basicsocket/send_spec.rb
https://gitlab.com/essere.lab.public/qualitas.class-corpus · Ruby · 82 lines · 70 code · 12 blank · 0 comment · 15 complexity · 854204d016e073020de8c3ca276befa2 MD5 · raw file
- require File.expand_path('../../../../spec_helper', __FILE__)
- require File.expand_path('../../fixtures/classes', __FILE__)
- describe "BasicSocket#send" do
- before :each do
- @server = TCPServer.new('127.0.0.1', SocketSpecs.port)
- @socket = TCPSocket.new('127.0.0.1', SocketSpecs.port)
- end
- after :each do
- @server.closed?.should be_false
- @socket.closed?.should be_false
- @server.close
- @socket.close
- end
- it "sends a message to another socket and returns the number of bytes sent" do
- data = ""
- t = Thread.new do
- client = @server.accept
- loop do
- got = client.recv(5)
- break if got.empty?
- data << got
- end
- client.close
- end
- Thread.pass while t.status and t.status != "sleep"
- t.status.should_not be_nil
- @socket.send('hello', 0).should == 5
- @socket.shutdown(1) # indicate, that we are done sending
- @socket.recv(10)
- t.join
- data.should == 'hello'
- end
- it "accepts flags to specify unusual sending behaviour" do
- data = nil
- peek_data = nil
- t = Thread.new do
- client = @server.accept
- peek_data = client.recv(6, Socket::MSG_PEEK)
- data = client.recv(6)
- client.recv(10) # this recv is important
- client.close
- end
- Thread.pass while t.status and t.status != "sleep"
- t.status.should_not be_nil
- @socket.send('helloU', Socket::MSG_PEEK | Socket::MSG_OOB).should == 6
- @socket.shutdown # indicate, that we are done sending
- t.join
- peek_data.should == "hello"
- data.should == 'hello'
- end
- it "accepts a sockaddr as recipient address" do
- data = ""
- t = Thread.new do
- client = @server.accept
- loop do
- got = client.recv(5)
- break if got.empty?
- data << got
- end
- client.close
- end
- Thread.pass while t.status and t.status != "sleep"
- t.status.should_not be_nil
- sockaddr = Socket.pack_sockaddr_in(SocketSpecs.port, "127.0.0.1")
- @socket.send('hello', 0, sockaddr).should == 5
- @socket.shutdown # indicate, that we are done sending
- t.join
- data.should == 'hello'
- end
- end