Skip to content

Commit

Permalink
adding a set to keep track of keys
Browse files Browse the repository at this point in the history
  • Loading branch information
davidtrogers committed Jun 13, 2013
1 parent 5f71f4d commit f8f0af9
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 7 deletions.
18 changes: 11 additions & 7 deletions lib/profit/server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,17 @@ def run
# take a worker from the pool to save the metric to Redis
redis_pool.perform do |conn|

message_hash = JSON.parse(message)
metric_type = message_hash.delete("metric_type")

response = conn.rpush "profit:metric:#{metric_type}", message_hash.to_json
response.callback { |resp| logger.debug "callback: #{resp}"}
response.errback { |resp| logger.error "error: #{resp}"}
response
message_hash = JSON.parse(message)
metric_type = message_hash.delete("metric_type")
metric_key = "profit:metric:#{metric_type}"
add_key_response = conn.sadd("profit:keys", metric_key)
add_key_response.callback { |resp| logger.debug "adding key callback: #{resp}"}
add_key_response.errback { |resp| logger.error "adding key error: #{resp}"}

push_metric_response = conn.rpush metric_key, message_hash.to_json
push_metric_response.callback { |resp| logger.debug "callback: #{resp}"}
push_metric_response.errback { |resp| logger.error "error: #{resp}"}
push_metric_response
end
end
end
Expand Down
35 changes: 35 additions & 0 deletions spec/lib/server_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

after do
redis.del("profit:metric:some_slow_piece_of_code")
redis.del("profit:keys")
end

it "stores metrics messages" do
Expand All @@ -34,4 +35,38 @@
expect(metric["end_file"]).to eq "/foo/bar/biz.rb"
expect(metric["recorded_time"]).to eq now.to_s
end

it "stores a set of all metric keys" do
pusher = server.ctx.connect(:PUSH, "tcp://127.0.0.1:5556")

pusher.send({ recorded_time: (now = Time.now),
total_time: 12.012,
metric_type: "some_slow_piece_of_code",
start_line: 1,
end_line: 42,
start_file: "/foo/bar/baz.rb",
end_file: "/foo/bar/biz.rb" }.to_json)

pusher.send({ recorded_time: (now = Time.now),
total_time: 14.316,
metric_type: "some_slow_piece_of_code",
start_line: 1,
end_line: 42,
start_file: "/foo/bar/baz.rb",
end_file: "/foo/bar/biz.rb" }.to_json)

pusher.send({ recorded_time: (now = Time.now),
total_time: 1.455,
metric_type: "other_piece_of_code",
start_line: 12,
end_line: 23,
start_file: "/foo/bar/baz.rb",
end_file: "/foo/bar/biz.rb" }.to_json)
server_thread.join(0.1)

set = redis.smembers("profit:keys")
expect(set.count).to eq 2
expect(set.to_a).to eq ["profit:metric:other_piece_of_code",
"profit:metric:some_slow_piece_of_code"]
end
end

0 comments on commit f8f0af9

Please sign in to comment.