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.rb50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/test_mogilefs.rb b/test/test_mogilefs.rb
index 6e9ec7f..d85cbf8 100644
--- a/test/test_mogilefs.rb
+++ b/test/test_mogilefs.rb
@@ -518,6 +518,56 @@ class TestMogileFS__MogileFS < TestMogileFS
     assert_equal 'readonly mogilefs', e.message
   end
 
+  def test_get_paths_args
+    sock = TCPServer.new("127.0.0.1", 0)
+    args = { :hosts => [ "127.0.0.1:#{sock.addr[1]}" ], :domain => "foo" }
+    c = MogileFS::MogileFS.new(args)
+    received = []
+    th = Thread.new do
+      a = sock.accept
+      6.times do
+        line = a.gets
+        received << line
+        a.write("OK paths=2&path1=http://0/a&path2=http://0/b\r\n")
+      end
+      a.close
+    end
+    expect = %w(http://0/a http://0/b)
+    assert_equal expect, c.get_paths("f")
+    assert_equal expect, c.get_paths("f",true,"alt")
+    assert_equal expect, c.get_paths("f",:noverify=>true,:zone=>"alt")
+    assert_equal expect,
+                c.get_paths("f",:noverify=>true,:zone=>"alt",:pathcount=>666)
+    c.instance_variable_set(:@zone, "alt")
+    assert_equal expect, c.get_paths("f")
+    assert_equal expect, c.get_paths("f", :zone=>"zzz")
+    th.join
+
+    backend = c.instance_variable_get(:@backend)
+    expect = { "domain"=>"foo", "key"=>"f", "noverify"=>"0", "zone"=>"" }
+    tmp = backend.url_decode(received[0].split(/\s+/)[1])
+    assert_equal expect, tmp
+    expect["noverify"] = "1"
+    expect["zone"] = "alt"
+    tmp = backend.url_decode(received[1].split(/\s+/)[1])
+    assert_equal expect, tmp
+
+    tmp = backend.url_decode(received[2].split(/\s+/)[1])
+    assert_equal expect, tmp
+
+    expect["pathcount"] = "666"
+    tmp = backend.url_decode(received[3].split(/\s+/)[1])
+    assert_equal expect, tmp
+
+    expect = { "domain"=>"foo", "key"=>"f", "noverify"=>"0", "zone"=>"alt" }
+    tmp = backend.url_decode(received[4].split(/\s+/)[1])
+
+    expect = { "domain"=>"foo", "key"=>"f", "noverify"=>"0", "zone"=>"zzz" }
+    tmp = backend.url_decode(received[5].split(/\s+/)[1])
+    ensure
+      sock.close
+  end
+
   def test_sleep
     @backend.sleep = {}
     assert_nothing_raised do