diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-04-23 18:35:26 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-04-23 18:35:26 -0700 |
commit | d9c97a2e04e0455e2d2aa3e5ec6439c3b97a1b7c (patch) | |
tree | 247f773e33b151d1252a33d37cbb24276a0f4634 /test/unit/test_upload.rb | |
parent | cfece4194f18aa2f93d372a6030f15990f5fe891 (diff) | |
download | unicorn-d9c97a2e04e0455e2d2aa3e5ec6439c3b97a1b7c.tar.gz |
StringIO.new(partial_body) does not update the offset for new writes. So instead create the StringIO object and then syswrite to it and try to follow the same code path used by large uploads which use Tempfiles.
Diffstat (limited to 'test/unit/test_upload.rb')
-rw-r--r-- | test/unit/test_upload.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/unit/test_upload.rb b/test/unit/test_upload.rb index c4d6f6f..b06dfdb 100644 --- a/test/unit/test_upload.rb +++ b/test/unit/test_upload.rb @@ -51,6 +51,29 @@ class UploadTest < Test::Unit::TestCase assert_equal @sha1.hexdigest, resp[:sha1] end + def test_put_trickle_small + @count, @bs = 2, 128 + start_server(@sha1_app) + assert_equal 256, length + sock = TCPSocket.new(@addr, @port) + hdr = "PUT / HTTP/1.0\r\nContent-Length: #{length}\r\n\r\n" + @count.times do + buf = @random.sysread(@bs) + @sha1.update(buf) + hdr << buf + sock.syswrite(hdr) + hdr = '' + sleep 0.6 + end + read = sock.read.split(/\r\n/) + assert_equal "HTTP/1.1 200 OK", read[0] + resp = eval(read.grep(/^X-Resp: /).first.sub!(/X-Resp: /, '')) + assert_equal length, resp[:size] + assert_equal 0, resp[:pos] + assert_equal @sha1.hexdigest, resp[:sha1] + assert_equal StringIO, resp[:class] + end + def test_tempfile_unlinked spew_path = lambda do |env| if orig = env['HTTP_X_OLD_PATH'] |