Merge pull request #36 from 5apps/opslog_fix
Don't create opslog with count of 1 when updating existing binary file
This commit is contained in:
commit
3dd79e28d3
@ -92,7 +92,7 @@ module RemoteStorage
|
|||||||
server.halt 412 unless required_match == object.etag
|
server.halt 412 unless required_match == object.etag
|
||||||
end
|
end
|
||||||
|
|
||||||
object_exists = !object.raw_data.nil?
|
object_exists = !object.raw_data.nil? || !object.meta["binary_key"].nil?
|
||||||
existing_object_size = object_size(object)
|
existing_object_size = object_size(object)
|
||||||
|
|
||||||
server.halt 412 if object_exists && server.env["HTTP_IF_NONE_MATCH"] == "*"
|
server.halt 412 if object_exists && server.env["HTTP_IF_NONE_MATCH"] == "*"
|
||||||
@ -173,11 +173,14 @@ module RemoteStorage
|
|||||||
end
|
end
|
||||||
|
|
||||||
def log_operation(user, directory, count, new_size=0, old_size=0)
|
def log_operation(user, directory, count, new_size=0, old_size=0)
|
||||||
|
size = (-old_size + new_size)
|
||||||
|
return if count == 0 && size == 0
|
||||||
|
|
||||||
log_entry = opslog_bucket.new
|
log_entry = opslog_bucket.new
|
||||||
log_entry.content_type = "application/json"
|
log_entry.content_type = "application/json"
|
||||||
log_entry.data = {
|
log_entry.data = {
|
||||||
"count" => count,
|
"count" => count,
|
||||||
"size" => (-old_size + new_size),
|
"size" => size,
|
||||||
"category" => extract_category(directory)
|
"category" => extract_category(directory)
|
||||||
}
|
}
|
||||||
log_entry.indexes.merge!({:user_id_bin => [user]})
|
log_entry.indexes.merge!({:user_id_bin => [user]})
|
||||||
|
@ -397,6 +397,43 @@ describe "App with Riak backend" do
|
|||||||
log_entry.data["category"].must_equal "documents"
|
log_entry.data["category"].must_equal "documents"
|
||||||
log_entry.indexes["user_id_bin"].must_include "jimmy"
|
log_entry.indexes["user_id_bin"].must_include "jimmy"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "overwriting existing file with same file" do
|
||||||
|
before do
|
||||||
|
header "Content-Type", "image/jpeg; charset=binary"
|
||||||
|
filename = File.join(File.expand_path(File.dirname(__FILE__)), "fixtures", "rockrule.jpeg")
|
||||||
|
@image = File.open(filename, "r").read
|
||||||
|
put "/jimmy/documents/jaypeg", @image
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't log the operation" do
|
||||||
|
objects = []
|
||||||
|
opslog_bucket.keys.each { |k| objects << opslog_bucket.get(k) rescue nil }
|
||||||
|
|
||||||
|
objects.size.must_equal 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "overwriting existing file with different file" do
|
||||||
|
before do
|
||||||
|
header "Content-Type", "image/jpeg; charset=binary"
|
||||||
|
filename = File.join(File.expand_path(File.dirname(__FILE__)), "fixtures", "rockrule.jpeg")
|
||||||
|
@image = File.open(filename, "r").read
|
||||||
|
put "/jimmy/documents/jaypeg", @image+"foo"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "logs the operation changing only the size" do
|
||||||
|
objects = []
|
||||||
|
opslog_bucket.keys.each { |k| objects << opslog_bucket.get(k) rescue nil }
|
||||||
|
|
||||||
|
objects.size.must_equal 2
|
||||||
|
|
||||||
|
log_entry = objects.select{|o| o.data["count"] == 0}.first
|
||||||
|
log_entry.data["size"].must_equal 3
|
||||||
|
log_entry.data["category"].must_equal "documents"
|
||||||
|
log_entry.indexes["user_id_bin"].must_include "jimmy"
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "no binary charset in content-type header" do
|
context "no binary charset in content-type header" do
|
||||||
|
Loading…
x
Reference in New Issue
Block a user