about summary refs log tree commit homepage
path: root/test/test_mogilefs.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_mogilefs.rb')
-rw-r--r--test/test_mogilefs.rb51
1 files changed, 37 insertions, 14 deletions
diff --git a/test/test_mogilefs.rb b/test/test_mogilefs.rb
index 247feca..6000781 100644
--- a/test/test_mogilefs.rb
+++ b/test/test_mogilefs.rb
@@ -227,11 +227,12 @@ class TestMogileFS__MogileFS < TestMogileFS
     to_store = Tempfile.new('small')
     to_store.syswrite('data')
 
-    expected = "PUT /path HTTP/1.0\r\nContent-Length: 4\r\n\r\ndata"
     t = TempServer.new(Proc.new do |serv, accept|
       client, _ = serv.accept
-      client.sync = true
-      received.syswrite(client.read(expected.bytesize))
+      while buf = client.readpartial(666)
+        received.syswrite(buf)
+        break if buf =~ /data/
+      end
       client.send("HTTP/1.0 200 OK\r\n\r\n", 0)
       client.close
     end)
@@ -243,14 +244,18 @@ class TestMogileFS__MogileFS < TestMogileFS
     nr = @client.store_file 'new_key', 'test', to_store.path
     assert_equal 4, nr
     received.sysseek(0)
-    assert_equal expected, received.sysread(4096)
+
+    a = received.sysread(999999).split(/\r\n/)
+    assert_match(%r{\APUT /path HTTP/1\.[01]\z}, a[0])
+    assert_equal("data", a[-1])
+    assert_equal("", a[-2])
+    assert a.grep(%r{\AContent-Length: 4\z})[0]
     ensure
       TempServer.destroy_all!
   end
 
   def test_store_content_http
     received = Tempfile.new('received')
-    expected = "PUT /path HTTP/1.0\r\nContent-Length: 4\r\n\r\ndata"
 
     t = TempServer.new(Proc.new do |serv, accept|
       client, _ = serv.accept
@@ -275,7 +280,11 @@ class TestMogileFS__MogileFS < TestMogileFS
     assert_equal 4, nr
 
     received.sysseek(0)
-    assert_equal expected, received.sysread(4096)
+    a = received.sysread(999999).split(/\r\n/)
+    assert_match(%r{\APUT /path HTTP/1\.[01]\z}, a[0])
+    assert_equal("data", a[-1])
+    assert_equal("", a[-2])
+    assert a.grep(%r{\AContent-Length: 4\z})[0]
     ensure
       TempServer.destroy_all!
   end
@@ -291,12 +300,14 @@ class TestMogileFS__MogileFS < TestMogileFS
       client, _ = serv.accept
       client.sync = true
       nr = 0
+      seen = ''
       loop do
         buf = client.readpartial(8192) or break
         break if buf.length == 0
         assert_equal buf.length, received.syswrite(buf)
         nr += buf.length
-        break if nr >= expected.size
+        seen << buf
+        break if seen =~ /\r\n\r\n(?:data){10}/
       end
       client.send("HTTP/1.0 200 OK\r\n\r\n", 0)
       client.close
@@ -317,7 +328,11 @@ class TestMogileFS__MogileFS < TestMogileFS
     assert_equal 40, nr
 
     received.sysseek(0)
-    assert_equal expected, received.sysread(4096)
+    a = received.sysread(999999).split(/\r\n/)
+    assert_match(%r{\APUT /path HTTP/1\.[01]\z}, a[0])
+    assert_equal("data" * 10, a[-1])
+    assert_equal("", a[-2])
+    assert a.grep(%r{\AContent-Length: 40\z})[0]
     ensure
       TempServer.destroy_all!
   end
@@ -329,7 +344,6 @@ class TestMogileFS__MogileFS < TestMogileFS
   def test_store_content_multi_dest_failover(big_io = false)
     received1 = Tempfile.new('received')
     received2 = Tempfile.new('received')
-    expected = "PUT /path HTTP/1.0\r\nContent-Length: 4\r\n\r\ndata"
 
     t1 = TempServer.new(Proc.new do |serv, accept|
       client, _ = serv.accept
@@ -375,8 +389,17 @@ class TestMogileFS__MogileFS < TestMogileFS
     assert_equal 4, nr
     received1.sysseek(0)
     received2.sysseek(0)
-    assert_equal expected, received1.sysread(4096)
-    assert_equal expected, received2.sysread(4096)
+    a = received1.sysread(4096).split(/\r\n/)
+    b = received2.sysread(4096).split(/\r\n/)
+    assert_equal a[0], b[0]
+    assert_match(%r{\APUT /path HTTP/1\.[01]\z}, a[0])
+    assert_match(%r{\APUT /path HTTP/1\.[01]\z}, b[0])
+    assert_equal("data", a[-1])
+    assert_equal("data", b[-1])
+    assert_equal("", a[-2])
+    assert_equal("", b[-2])
+    assert a.grep(%r{\AContent-Length: 4\z})[0]
+    assert b.grep(%r{\AContent-Length: 4\z})[0]
     ensure
       TempServer.destroy_all!
   end
@@ -402,7 +425,6 @@ class TestMogileFS__MogileFS < TestMogileFS
 
   def test_store_content_http_empty
     received = Tempfile.new('received')
-    expected = "PUT /path HTTP/1.0\r\nContent-Length: 0\r\n\r\n"
     t = TempServer.new(Proc.new do |serv, accept|
       client, _ = serv.accept
       client.sync = true
@@ -419,7 +441,9 @@ class TestMogileFS__MogileFS < TestMogileFS
     nr = @client.store_content 'new_key', 'test', ''
     assert_equal 0, nr
     received.sysseek(0)
-    assert_equal expected, received.sysread(4096)
+    a = received.sysread(4096).split(/\r\n/)
+    assert_match(%r{\APUT /path HTTP/1\.[01]\z}, a[0])
+    assert a.grep(%r{\AContent-Length: 0\z})[0]
   end
 
   def test_store_content_nfs
@@ -613,7 +637,6 @@ class TestMogileFS__MogileFS < TestMogileFS
     timeout = 1
     args = { :hosts => hosts, :domain => "foo", :timeout => timeout }
     c = MogileFS::MogileFS.new(args)
-    received = []
     secs = timeout + 1
     th = Thread.new do
       close_later = []