Make dir_empty? method use Redis metadata

This commit is contained in:
Garret Alfert 2016-01-29 16:45:17 +01:00
parent 573dadf365
commit 7084a50d1b
2 changed files with 14 additions and 21 deletions

View File

@ -453,10 +453,14 @@ module RemoteStorage
end end
def dir_empty?(user, dir) def dir_empty?(user, dir)
if directory_backend(user).match /new/
redis.smembers("rs_meta:#{user}:#{dir}/:items").empty?
else
do_get_request("#{container_url_for(user)}/?format=plain&limit=1&path=#{escape(dir)}/") do |res| do_get_request("#{container_url_for(user)}/?format=plain&limit=1&path=#{escape(dir)}/") do |res|
return res.headers[:content_length] == "0" return res.headers[:content_length] == "0"
end end
end end
end
def container_url_for(user) def container_url_for(user)
"#{base_url}/#{container_for(user)}" "#{base_url}/#{container_for(user)}"

View File

@ -157,13 +157,11 @@ describe "App" do
it "deletes the metadata object in redis" do it "deletes the metadata object in redis" do
put_stub = OpenStruct.new(headers: {etag: "bla"}) put_stub = OpenStruct.new(headers: {etag: "bla"})
RemoteStorage::Swift.stub_any_instance :dir_empty?, false do
RestClient.stub :put, put_stub do RestClient.stub :put, put_stub do
RestClient.stub :delete, "" do RestClient.stub :delete, "" do
delete "/phil/food/aguacate" delete "/phil/food/aguacate"
end end
end end
end
metadata = redis.hgetall "rs_meta:phil:food/aguacate" metadata = redis.hgetall "rs_meta:phil:food/aguacate"
metadata.must_be_empty metadata.must_be_empty
@ -173,13 +171,11 @@ describe "App" do
old_metadata = redis.hgetall "rs_meta:phil:food/" old_metadata = redis.hgetall "rs_meta:phil:food/"
put_stub = OpenStruct.new(headers: {etag: "newetag"}) put_stub = OpenStruct.new(headers: {etag: "newetag"})
RemoteStorage::Swift.stub_any_instance :dir_empty?, false do
RestClient.stub :put, put_stub do RestClient.stub :put, put_stub do
RestClient.stub :delete, "" do RestClient.stub :delete, "" do
delete "/phil/food/aguacate" delete "/phil/food/aguacate"
end end
end end
end
metadata = redis.hgetall "rs_meta:phil:food/" metadata = redis.hgetall "rs_meta:phil:food/"
metadata["etag"].must_equal "newetag" metadata["etag"].must_equal "newetag"
@ -195,16 +191,9 @@ describe "App" do
it "deletes the parent directory objects metadata when deleting all items" do it "deletes the parent directory objects metadata when deleting all items" do
put_stub = OpenStruct.new(headers: {etag: "bla"}) put_stub = OpenStruct.new(headers: {etag: "bla"})
RemoteStorage::Swift.stub_any_instance :dir_empty?, false do
RestClient.stub :put, put_stub do RestClient.stub :put, put_stub do
RestClient.stub :delete, "" do RestClient.stub :delete, "" do
delete "/phil/food/aguacate" delete "/phil/food/aguacate"
end
end
end
RemoteStorage::Swift.stub_any_instance :dir_empty?, true do
RestClient.stub :delete, "" do
delete "/phil/food/camaron" delete "/phil/food/camaron"
end end
end end