about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-11-10 15:23:46 -0800
committerEric Wong <normalperson@yhbt.net>2011-11-10 15:53:51 -0800
commit4728ddc616e50727a2cf325ffb4cacb3f3163921 (patch)
treeca1fcb272a46ffce766bce5221d66306226f606d
parent7e24f6dc9f5aa90f123dc0e9ee10d22d57a6dee1 (diff)
downloadmogilefs-client-4728ddc616e50727a2cf325ffb4cacb3f3163921.tar.gz
This restores 2.x behavior and is faster and safer since
we're smart enough to deal with failover.  Also dropping
default @zone support since it doesn't seem that useful.
-rw-r--r--lib/mogilefs/mogilefs.rb4
-rw-r--r--test/test_mogilefs.rb62
2 files changed, 25 insertions, 41 deletions
diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb
index d926926..f43242a 100644
--- a/lib/mogilefs/mogilefs.rb
+++ b/lib/mogilefs/mogilefs.rb
@@ -23,7 +23,6 @@ class MogileFS::MogileFS < MogileFS::Client
 
   def initialize(args = {})
     @domain = args[:domain]
-    @zone = args[:zone]
 
     @get_file_data_timeout = 5
 
@@ -89,8 +88,7 @@ class MogileFS::MogileFS < MogileFS::Client
       pathcount = args[:pathcount] and opts[:pathcount] = pathcount.to_i
     end
 
-    opts[:zone] ||= @zone
-    opts[:noverify] = opts[:noverify] ? 1 : 0
+    opts[:noverify] = false == opts[:noverify] ? 0 : 1
     @backend.respond_to?(:_get_paths) and return @backend._get_paths(opts)
     res = @backend.get_paths(opts)
     (1..res['paths'].to_i).map { |i| res["path#{i}"] }.compact
diff --git a/test/test_mogilefs.rb b/test/test_mogilefs.rb
index a4dbcd0..0ab5dab 100644
--- a/test/test_mogilefs.rb
+++ b/test/test_mogilefs.rb
@@ -518,56 +518,42 @@ class TestMogileFS__MogileFS < TestMogileFS
     assert_equal 'readonly mogilefs', e.message
   end
 
-  def test_get_paths_args
+  def assert_get_paths_args(expect, *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)
+    nargs = { :hosts => [ "127.0.0.1:#{sock.addr[1]}" ], :domain => "foo" }
+    c = MogileFS::MogileFS.new(nargs)
     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
+      line = a.gets
+      received << line
+      a.write("OK paths=2&path1=http://0/a&path2=http://0/b\r\n")
       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")
+    paths_expect = %w(http://0/a http://0/b)
+    assert_equal paths_expect, c.get_paths("f", *args)
     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 1, received.size
+    tmp = c.backend.url_decode(received[0].split(/\s+/)[1])
+    assert_equal "f", tmp.delete("key")
+    assert_equal "foo", tmp.delete("domain")
     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])
+    c.backend.shutdown
     ensure
       sock.close
   end
 
+  def test_get_paths_args
+    assert_get_paths_args({"noverify"=>"1", "zone"=>""})
+    assert_get_paths_args({"noverify"=>"0", "zone"=>""}, false)
+    assert_get_paths_args({"noverify"=>"0", "zone"=>""}, :noverify=>false)
+    assert_get_paths_args({"noverify"=>"1", "zone"=>"alt"}, true, "alt")
+    assert_get_paths_args({"noverify"=>"1", "zone"=>"alt"},
+                          {:noverify => true, :zone => "alt"})
+    assert_get_paths_args({"noverify"=>"1", "zone"=>"alt","pathcount"=>"666"},
+                          {:noverify => true, :zone => "alt", :pathcount=>666})
+  end
+
   def test_idempotent_command_eof
     ip = "127.0.0.1"
     a, b = TCPServer.new(ip, 0), TCPServer.new(ip, 0)