From bd7c46a7aa8b4f44ef683e22f469033b96d3dd5f Mon Sep 17 00:00:00 2001 From: naruse Date: Wed, 6 Jun 2018 08:03:47 +0000 Subject: Introduce write_timeout to Net::HTTP [Feature #13396] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/net/protocol/test_protocol.rb | 85 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) (limited to 'test/net/protocol/test_protocol.rb') diff --git a/test/net/protocol/test_protocol.rb b/test/net/protocol/test_protocol.rb index 048526b1c7..c1837ecf20 100644 --- a/test/net/protocol/test_protocol.rb +++ b/test/net/protocol/test_protocol.rb @@ -26,4 +26,89 @@ class TestProtocol < Test::Unit::TestCase assert_equal("\u3042\r\n.\r\n", sio.string) end end + + def create_mockio + mockio = Object.new + mockio.instance_variable_set(:@str, +'') + mockio.instance_variable_set(:@capacity, 100) + def mockio.string; @str; end + def mockio.to_io; self; end + def mockio.wait_writable(sec); sleep sec; false; end + def mockio.write_nonblock(*strs, exception: true) + if @capacity <= @str.bytesize + if exception + raise Net::WaitWritable + else + return :wait_writable + end + end + len = 0 + strs.each do |str| + len1 = @str.bytesize + break if @capacity <= len1 + @str << str[0, @capacity - @str.bytesize] + len2 = @str.bytesize + len += len2 - len1 + end + len + end + mockio + end + + def test_write0_timeout + mockio = create_mockio + io = Net::BufferedIO.new(mockio) + io.write_timeout = 0.1 + assert_raise(Net::WriteTimeout){ io.write("a"*1000) } + end + + def test_write0_success + mockio = create_mockio + io = Net::BufferedIO.new(mockio) + io.write_timeout = 0.1 + len = io.write("a"*10) + assert_equal "a"*10, mockio.string + assert_equal 10, len + end + + def test_write0_success2 + mockio = create_mockio + io = Net::BufferedIO.new(mockio) + io.write_timeout = 0.1 + len = io.write("a"*100) + assert_equal "a"*100, mockio.string + assert_equal 100, len + end + + def test_write0_success_multi1 + mockio = create_mockio + io = Net::BufferedIO.new(mockio) + io.write_timeout = 0.1 + len = io.write("a"*50, "a"*49) + assert_equal "a"*99, mockio.string + assert_equal 99, len + end + + def test_write0_success_multi2 + mockio = create_mockio + io = Net::BufferedIO.new(mockio) + io.write_timeout = 0.1 + len = io.write("a"*50, "a"*50) + assert_equal "a"*100, mockio.string + assert_equal 100, len + end + + def test_write0_timeout_multi1 + mockio = create_mockio + io = Net::BufferedIO.new(mockio) + io.write_timeout = 0.1 + assert_raise(Net::WriteTimeout){ io.write("a"*50,"a"*51) } + end + + def test_write0_timeout_multi2 + mockio = create_mockio + io = Net::BufferedIO.new(mockio) + io.write_timeout = 0.1 + assert_raise(Net::WriteTimeout){ io.write("a"*50,"a"*50,"a") } + end end -- cgit v1.2.3