Skip to content

Commit dafc1d2

Browse files
committed
Do not meter on /uptime
Metering on heartbeat URL will poison the metrics.
1 parent ac55ad5 commit dafc1d2

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

lib/travis/api/app/middleware/user_agent_tracker.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ class UserAgentTracker < Middleware
1111
"Opera", "Mozilla"
1212
]
1313

14+
PATHS_IGNORED = [
15+
'/uptime'
16+
]
17+
1418
attr_reader :metrik_prefix
1519

1620
before do
@@ -22,11 +26,13 @@ class UserAgentTracker < Middleware
2226
end
2327

2428
before(agent: /^$/) do
29+
return if PATHS_IGNORED.include?(request.path)
2530
::Metriks.meter("#{metrik_prefix}.user_agent.missing").mark
2631
halt(400, "error" => "missing User-Agent header") if Travis::Features.feature_active?(:require_user_agent)
2732
end
2833

2934
before(agent: /^.+$/) do
35+
return if PATHS_IGNORED.include?(request.path)
3036
agent = UserAgent.parse(request.user_agent)
3137
case agent.browser
3238
when *WEB_BROWSERS

spec/unit/middleware/user_agent_tracker_spec.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@
33
mock_app do
44
use Travis::Api::App::Middleware::UserAgentTracker
55
get('/') { 'ok' }
6+
get('/uptime') { 'OK' }
67
end
78
end
89

910
def expect_meter(name)
1011
allow(Metriks).to receive(:meter).with(name).and_return(double("meter", mark: nil))
1112
end
1213

13-
def get(env = {})
14+
def get(env = {}, path = '/')
1415
env['HTTP_USER_AGENT'] ||= agent if agent
15-
super('/', {}, env)
16+
super(path, {}, env)
1617
end
1718

1819
context 'missing User-Agent' do
@@ -99,4 +100,12 @@ def get(env = {})
99100
get
100101
end
101102
end
103+
104+
context 'get /uptime' do
105+
let(:agent) { 'Travis/1.6.8 (Mac OS X 10.9.2 like Darwin; Ruby 2.1.1p42; RubyGems 2.0.14) Faraday/0.8.9 Typhoeus/0.6.7' }
106+
specify do
107+
expect(Metriks).to_not receive(:meter)
108+
get({}, '/uptime')
109+
end
110+
end
102111
end

0 commit comments

Comments
 (0)