Sha256: 85df2b2328c5cbda7b713737826a76829e09121c51a8b930ac7b55570f0538ed

Contents?: true

Size: 1.09 KB

Versions: 10

Compression:

Stored size: 1.09 KB

Contents

require 'test/unit'
require 'kgio'

class TestKgioSyssend < Test::Unit::TestCase
  def setup
    @host = '127.0.0.1' || ENV["TEST_HOST"]
  end

  def test_syssend
    srv = Kgio::TCPServer.new(@host, 0)
    port = srv.addr[1]
    client = TCPSocket.new(@host, port)
    acc = srv.kgio_accept
    th = Thread.new { client.readpartial(4) }
    sleep(0.05)
    assert_nil acc.kgio_syssend("HI", Socket::MSG_DONTWAIT | Socket::MSG_MORE)
    assert_nil acc.kgio_syssend("HI", Socket::MSG_DONTWAIT)
    assert_equal "HIHI", th.value

    buf = "*" * 123
    res = []
    case rv = acc.kgio_syssend(buf, Socket::MSG_DONTWAIT)
    when nil
    when String
      res << rv
    when Symbol
      res << rv
      break
    end while true
    assert_equal :wait_writable, res.last
    if res.size > 1
      assert_kind_of String, res[-2]
    else
      warn "res too small"
    end

    # blocking
    th = Thread.new { loop { acc.kgio_syssend("ZZZZ", 0) } }
    assert_nil th.join(0.1)
  ensure
    [ srv, acc, client ].each { |io| io.close if io }
  end
end if RUBY_PLATFORM =~ /linux/ && Socket.const_defined?(:MSG_MORE)

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
kgio-2.11.2 test/test_syssend.rb
kgio-2.11.1.1.g36ea test/test_syssend.rb
kgio-2.11.1 test/test_syssend.rb
kgio-2.11.0 test/test_syssend.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/kgio-2.10.0/test/test_syssend.rb
kgio-2.10.0 test/test_syssend.rb
kgio-2.9.3 test/test_syssend.rb
kgio-2.9.2 test/test_syssend.rb
kgio-2.9.1 test/test_syssend.rb
kgio-2.9.0.2.gf33a test/test_syssend.rb