Commit 753a3da0 authored by Sean McGivern's avatar Sean McGivern Committed by Bob Van Landuyt

Fix feature_category label in http_requests_total metric

When the feature category header from the application was an empty
string, we'd set an empty label in Prometheus, rather than the default
of 'unknown'.
parent 5949f62a
...@@ -63,7 +63,7 @@ module Gitlab ...@@ -63,7 +63,7 @@ module Gitlab
if health_endpoint if health_endpoint
RequestsRackMiddleware.http_health_requests_total.increment(status: status, method: method) RequestsRackMiddleware.http_health_requests_total.increment(status: status, method: method)
else else
RequestsRackMiddleware.http_request_total.increment(status: status, method: method, feature_category: feature_category || FEATURE_CATEGORY_DEFAULT) RequestsRackMiddleware.http_request_total.increment(status: status, method: method, feature_category: feature_category.presence || FEATURE_CATEGORY_DEFAULT)
end end
end end
end end
......
...@@ -113,24 +113,38 @@ RSpec.describe Gitlab::Metrics::RequestsRackMiddleware do ...@@ -113,24 +113,38 @@ RSpec.describe Gitlab::Metrics::RequestsRackMiddleware do
end end
end end
context 'when a feature category header is present' do context 'feature category header' do
before do context 'when a feature category header is present' do
allow(app).to receive(:call).and_return([200, { described_class::FEATURE_CATEGORY_HEADER => 'issue_tracking' }, nil]) before do
end allow(app).to receive(:call).and_return([200, { described_class::FEATURE_CATEGORY_HEADER => 'issue_tracking' }, nil])
end
it 'adds the feature category to the labels for http_request_total' do it 'adds the feature category to the labels for http_request_total' do
expect(described_class).to receive_message_chain(:http_request_total, :increment).with(method: 'get', status: 200, feature_category: 'issue_tracking') expect(described_class).to receive_message_chain(:http_request_total, :increment).with(method: 'get', status: 200, feature_category: 'issue_tracking')
subject.call(env) subject.call(env)
end
it 'does not record a feature category for health check endpoints' do
env['PATH_INFO'] = '/-/liveness'
expect(described_class).to receive_message_chain(:http_health_requests_total, :increment).with(method: 'get', status: 200)
expect(described_class).not_to receive(:http_request_total)
subject.call(env)
end
end end
it 'does not record a feature category for health check endpoints' do context 'when the feature category header is an empty string' do
env['PATH_INFO'] = '/-/liveness' before do
allow(app).to receive(:call).and_return([200, { described_class::FEATURE_CATEGORY_HEADER => '' }, nil])
end
expect(described_class).to receive_message_chain(:http_health_requests_total, :increment).with(method: 'get', status: 200) it 'sets the feature category to unknown' do
expect(described_class).not_to receive(:http_request_total) expect(described_class).to receive_message_chain(:http_request_total, :increment).with(method: 'get', status: 200, feature_category: 'unknown')
subject.call(env) subject.call(env)
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment