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