diff options
Diffstat (limited to 'test/test_mogilefs_integration.rb')
-rw-r--r-- | test/test_mogilefs_integration.rb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/test/test_mogilefs_integration.rb b/test/test_mogilefs_integration.rb index e7ca642..8b5e3c1 100644 --- a/test/test_mogilefs_integration.rb +++ b/test/test_mogilefs_integration.rb @@ -65,6 +65,9 @@ class TestMogileFSIntegration < TestMogIntegration def tmp.size 666 end + def tmp.read(len, buf = "") + raise Errno::EIO + end assert_raises(MogileFS::HTTPFile::NonRetryableError) do @client.store_file("non_rewindable", nil, tmp) @@ -169,4 +172,45 @@ class TestMogileFSIntegration < TestMogIntegration end assert_equal count, seen.size end if ENV["TEST_EXPENSIVE"] + + def test_new_file_no_block + rv = @client.new_file("no_block") + assert_nothing_raised { rv.write "HELLO" } + assert_nil rv.close + assert_equal "HELLO", @client.get_file_data("no_block") + end + + def test_new_file_known_content_length + rv = @client.new_file("a", :content_length => 5) + assert_nothing_raised { rv.write "HELLO" } + assert_nil rv.close + assert_equal "HELLO", @client.get_file_data("a") + + rv = @client.new_file("a", :content_length => 6) + assert_nothing_raised { rv.write "GOOD" } + assert_raises(MogileFS::SizeMismatchError) { rv.close } + assert_equal "HELLO", @client.get_file_data("a") + end + + def test_new_file_content_md5 + r, w = IO.pipe + b64digest = [ Digest::MD5.digest("HELLO") ].pack('m').strip + rv = @client.new_file("a", :content_md5 => b64digest, :content_length => 5) + assert_nothing_raised { rv.write "HELLO" } + assert_nil rv.close + assert_equal "HELLO", @client.get_file_data("a") + + assert_nothing_raised { w.write "HIHI"; w.close } + assert_raises(ArgumentError) do + @client.new_file("a", :content_md5 => b64digest) { |f| f.big_io = r } + end + assert_equal "HELLO", @client.get_file_data("a") + + assert_nothing_raised do + @client.new_file("a", :content_md5 => :trailer) { |f| f.big_io = r } + end + assert_equal "HIHI", @client.get_file_data("a") + ensure + r.close if r + end end |