flesh out pipe streaming + chunk for uploads
[ruby-mogilefs-client.git] / test / test_mogilefs_integration.rb
blob6ec69d2c97ed5d5b59dddc0af1acd41d86d51d25
1 # -*- encoding: binary -*-
2 require './test/integration'
4 class TestMogileFSIntegration < TestMogIntegration
5   def setup
6     super
7     @client = MogileFS::MogileFS.new(:hosts => @trackers, :domain => @domain)
8   end
10   def test_CRUD
11     assert_equal 4, @client.store_content("CRUD", "default", "DATA")
12     assert_equal "DATA", @client.get_file_data("CRUD")
13     sio = StringIO.new("")
14     rv = @client.get_file_data("CRUD") do |rd|
15       MogileFS::X.copy_stream(rd, sio)
16     end
17     assert_equal 4, rv
18     assert_equal "DATA", sio.string
19     assert_equal 8, @client.store_content("CRUD", "default", "MOARDATA")
20     assert_equal "MOARDATA", @client.get_file_data("CRUD")
21     assert_equal true, @client.delete("CRUD")
22     assert_raises(MogileFS::Backend::UnknownKeyError) { @client.delete("CRUD") }
24     data = "hello world\n".freeze
25     tmp = tmpfile("blob")
26     tmp.sync = true
27     tmp.write(data)
28     tmp.rewind
29     assert_equal tmp.size, @client.store_file("blob", nil, tmp)
30     assert_equal(data, @client.get_file_data("blob"))
32     data = "pipe!\n".freeze
33     r, w = IO.pipe
34     th = Thread.new do
35       w.write(data)
36       w.close
37     end
38     assert_equal data.size, @client.store_file("pipe", nil, r)
39     assert_nothing_raised do
40       r.close
41       th.join
42     end
43     assert_equal(data, @client.get_file_data("pipe"))
44   end
45 end