mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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
This commit is contained in:
parent
acc48fce30
commit
bd7c46a7aa
5 changed files with 169 additions and 5 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue