From 4728ddc616e50727a2cf325ffb4cacb3f3163921 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 10 Nov 2011 15:23:46 -0800 Subject: get_paths defaults to noverify: true 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. --- lib/mogilefs/mogilefs.rb | 4 +--- test/test_mogilefs.rb | 62 +++++++++++++++++++----------------------------- 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) -- cgit v1.2.3-24-ge0c7