Skip to content
Snippets Groups Projects
Commit a5079f68 authored by Paco Guzman's avatar Paco Guzman
Browse files

Adds response mime type to transaction metric action when it's not HTML

parent a03da79f
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -11,6 +11,7 @@ v 8.12.0 (unreleased)
- Added 'only_allow_merge_if_build_succeeds' project setting in the API. !5930 (Duck)
- Reduce number of database queries on builds tab
- Use the default branch for displaying the project icon instead of master !5792 (Hannes Rosenögger)
- Adds response mime type to transaction metric action when it's not HTML
 
v 8.11.2 (unreleased)
- Show "Create Merge Request" widget for push events to fork projects on the source project
Loading
Loading
Loading
Loading
@@ -4,6 +4,17 @@ module Gitlab
class RackMiddleware
CONTROLLER_KEY = 'action_controller.instance'
ENDPOINT_KEY = 'api.endpoint'
CONTENT_TYPES = {
'text/html' => :html,
'text/plain' => :txt,
'application/json' => :json,
'text/js' => :js,
'application/atom+xml' => :atom,
'image/png' => :png,
'image/jpeg' => :jpeg,
'image/gif' => :gif,
'image/svg+xml' => :svg
}
 
def initialize(app)
@app = app
Loading
Loading
@@ -46,8 +57,15 @@ module Gitlab
end
 
def tag_controller(trans, env)
controller = env[CONTROLLER_KEY]
trans.action = "#{controller.class.name}##{controller.action_name}"
controller = env[CONTROLLER_KEY]
action = "#{controller.class.name}##{controller.action_name}"
suffix = CONTENT_TYPES[controller.content_type]
if suffix && suffix != :html
action += ".#{suffix}"
end
trans.action = action
end
 
def tag_endpoint(trans, env)
Loading
Loading
Loading
Loading
@@ -19,7 +19,7 @@ describe Gitlab::Metrics::RackMiddleware do
end
 
it 'tags a transaction with the name and action of a controller' do
klass = double(:klass, name: 'TestController')
klass = double(:klass, name: 'TestController', content_type: 'text/html')
controller = double(:controller, class: klass, action_name: 'show')
 
env['action_controller.instance'] = controller
Loading
Loading
@@ -32,7 +32,7 @@ describe Gitlab::Metrics::RackMiddleware do
middleware.call(env)
end
 
it 'tags a transaction with the method andpath of the route in the grape endpoint' do
it 'tags a transaction with the method and path of the route in the grape endpoint' do
route = double(:route, route_method: "GET", route_path: "/:version/projects/:id/archive(.:format)")
endpoint = double(:endpoint, route: route)
 
Loading
Loading
@@ -87,17 +87,30 @@ describe Gitlab::Metrics::RackMiddleware do
 
describe '#tag_controller' do
let(:transaction) { middleware.transaction_from_env(env) }
let(:content_type) { 'text/html' }
 
it 'tags a transaction with the name and action of a controller' do
before do
klass = double(:klass, name: 'TestController')
controller = double(:controller, class: klass, action_name: 'show')
controller = double(:controller, class: klass, action_name: 'show', content_type: content_type)
 
env['action_controller.instance'] = controller
end
 
it 'tags a transaction with the name and action of a controller' do
middleware.tag_controller(transaction, env)
 
expect(transaction.action).to eq('TestController#show')
end
context 'when the response content type is not :html' do
let(:content_type) { 'application/json' }
it 'appends the mime type to the transaction action' do
middleware.tag_controller(transaction, env)
expect(transaction.action).to eq('TestController#show.json')
end
end
end
 
describe '#tag_endpoint' do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment