Skip to content

Commit

Permalink
Backfill some router handler tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris Brown and Mark Rushakoff committed May 29, 2013
1 parent 65304ba commit ec64db4
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 13 deletions.
23 changes: 10 additions & 13 deletions collector/lib/collector/handlers/router.rb
Expand Up @@ -6,20 +6,17 @@ class Router < Handler
register Components::ROUTER_COMPONENT

def process
if varz["tags"]
varz["tags"].each do |key, values|
values.each do |value, metrics|
tags = {key => value}
# Add synthetic tag so we can isolate all the apps
tags["component"] = "apps" if key == "framework"
return unless varz["tags"]
varz["tags"].each do |key, values|
values.each do |value, metrics|
tags = {key => value}
# Add synthetic tag so we can isolate all the apps
tags["component"] = "apps" if key == "framework"

send_metric("router.requests", metrics["requests"], tags)
send_latency_metric("router.latency.1m", metrics["latency"], tags)
["2xx", "3xx", "4xx", "5xx", "xxx"].each do |status_code|
send_metric("router.responses",
metrics["responses_#{status_code}"],
tags.merge("status" => status_code))
end
send_metric("router.requests", metrics["requests"], tags)
send_latency_metric("router.latency.1m", metrics["latency"], tags)
["2xx", "3xx", "4xx", "5xx", "xxx"].each do |status_code|
send_metric("router.responses", metrics["responses_#{status_code}"], tags.merge("status" => status_code))
end
end
end
Expand Down
73 changes: 73 additions & 0 deletions collector/spec/unit/collector/handlers/router_spec.rb
@@ -1,4 +1,77 @@
require 'spec_helper'

describe Collector::Handler::Router do
describe "#process" do
it "processes" do
varz = JSON.parse <<-JSON
{
"latency": {
"50": 0.0250225,
"75": 0.03684,
"90": 0.09650980000000002,
"95": 0.3351683999999978,
"99": 1.314998740000001,
"samples": 1,
"value": 5.0e-07
},
"rate": [
0.22460493344950977,
0.49548432897218125,
0.9014480037952
],
"requests": 68213,
"requests_per_sec": 0.22460493344950977,
"responses_2xx": 65021,
"responses_3xx": 971,
"responses_4xx": 2182,
"responses_5xx": 1,
"responses_xxx": 38,
"start": "2013-05-28 22:01:19 +0000",
"tags": {
"component": {
"component-1": {
"latency": {
"50": 0.025036,
"75": 0.034314,
"90": 0.0791451,
"95": 0.1607238499999999,
"99": 1.1623077700000013,
"samples": 1,
"value": 5
},
"rate": [
0.22490272672626982,
0.4771015543892108,
0.8284101734116986
],
"requests": 1234,
"responses_2xx": 200,
"responses_3xx": 300,
"responses_4xx": 400,
"responses_5xx": 500,
"responses_xxx": 1000
}
},
"framework": {
},
"runtime": {
}
}
}
JSON

tags = {"component" => "component-1"}
handler = Collector::Handler::Router.new(nil, nil, nil, nil, varz)
handler.should_receive(:send_metric).with("router.requests", 1234, tags)
component_latency = varz["tags"]["component"]["component-1"]["latency"]
handler.should_receive(:send_latency_metric).with("router.latency.1m", component_latency, tags)
handler.should_receive(:send_metric).with("router.responses", 200, tags.merge("status" => "2xx"))
handler.should_receive(:send_metric).with("router.responses", 300, tags.merge("status" => "3xx"))
handler.should_receive(:send_metric).with("router.responses", 400, tags.merge("status" => "4xx"))
handler.should_receive(:send_metric).with("router.responses", 500, tags.merge("status" => "5xx"))
handler.should_receive(:send_metric).with("router.responses", 1000, tags.merge("status" => "xxx"))

handler.process
end
end
end

0 comments on commit ec64db4

Please sign in to comment.