From 27afdca06806f0c77be3625055539ab3331f5b3e Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 8 Nov 2011 03:26:13 +0000 Subject: Fix Ruby 1.8 compatibility Our custom copy_stream needs to flush data like it does under 1.9. 1.8 also can't do a blocking open(2) on a FIFO in a native thread so we'll fork() instead. --- lib/mogilefs/copy_stream.rb | 1 + test/integration.rb | 4 ++++ test/test_mogilefs_integration_large_pipe.rb | 5 +++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/mogilefs/copy_stream.rb b/lib/mogilefs/copy_stream.rb index 01735cd..b928031 100644 --- a/lib/mogilefs/copy_stream.rb +++ b/lib/mogilefs/copy_stream.rb @@ -18,6 +18,7 @@ module MogileFS::CopyStream # :nodoc: written += dst.write(buf) end end + dst.flush if dst.respond_to?(:flush) written ensure src_io.close if String === src diff --git a/test/integration.rb b/test/integration.rb index f3fd618..837bd1f 100644 --- a/test/integration.rb +++ b/test/integration.rb @@ -4,6 +4,10 @@ require './test/exec' class TestMogIntegration < Test::Unit::TestCase include TestExec + def test_dummy + assert true, "Ruby 1.8 Test::Unit is broken" + end + def setup @to_close = [] @trackers = ENV["MOG_TEST_TRACKERS"].split(/,/) diff --git a/test/test_mogilefs_integration_large_pipe.rb b/test/test_mogilefs_integration_large_pipe.rb index afc62e5..afc252e 100644 --- a/test/test_mogilefs_integration_large_pipe.rb +++ b/test/test_mogilefs_integration_large_pipe.rb @@ -39,13 +39,14 @@ class TestMogileFSLargePipe< TestMogIntegration tmp_path = tmp.path File.unlink(tmp_path) x!("mkfifo", tmp_path) - th = Thread.new do + pid = fork do File.open(tmp_path, "wb") do |w| nr.times { w.write(junk) } end end assert_equal(nr * junk.size, @client.store_file("fifo", nil, tmp_path)) - th.join + _, status = Process.waitpid2(pid) + assert status.success?, status.inspect fifo_sha1 = @client.get_file_data("fifo") { |rd| sha1read(rd) } assert_equal sha1, fifo_sha1 end -- cgit v1.2.3-24-ge0c7