mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-11 21:56:19 +10:00
Without this it's impossible to find out what methods/views/queries are executed by a certain controller or Sidekiq worker. While this will increase the total number of series it should stay within reasonable limits due to the amount of "actions" being small enough.
64 lines
1.8 KiB
Ruby
64 lines
1.8 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Gitlab::Metrics::RackMiddleware do
|
|
let(:app) { double(:app) }
|
|
|
|
let(:middleware) { described_class.new(app) }
|
|
|
|
let(:env) { { 'REQUEST_METHOD' => 'GET', 'REQUEST_URI' => '/foo' } }
|
|
|
|
describe '#call' do
|
|
before do
|
|
expect_any_instance_of(Gitlab::Metrics::Transaction).to receive(:finish)
|
|
end
|
|
|
|
it 'tracks a transaction' do
|
|
expect(app).to receive(:call).with(env).and_return('yay')
|
|
|
|
expect(middleware.call(env)).to eq('yay')
|
|
end
|
|
|
|
it 'tags a transaction with the name and action of a controller' do
|
|
klass = double(:klass, name: 'TestController')
|
|
controller = double(:controller, class: klass, action_name: 'show')
|
|
|
|
env['action_controller.instance'] = controller
|
|
|
|
allow(app).to receive(:call).with(env)
|
|
|
|
expect(middleware).to receive(:tag_controller).
|
|
with(an_instance_of(Gitlab::Metrics::Transaction), env)
|
|
|
|
middleware.call(env)
|
|
end
|
|
end
|
|
|
|
describe '#transaction_from_env' do
|
|
let(:transaction) { middleware.transaction_from_env(env) }
|
|
|
|
it 'returns a Transaction' do
|
|
expect(transaction).to be_an_instance_of(Gitlab::Metrics::Transaction)
|
|
end
|
|
|
|
it 'stores the request method and URI in the transaction as values' do
|
|
expect(transaction.values[:request_method]).to eq('GET')
|
|
expect(transaction.values[:request_uri]).to eq('/foo')
|
|
end
|
|
end
|
|
|
|
describe '#tag_controller' do
|
|
let(:transaction) { middleware.transaction_from_env(env) }
|
|
|
|
it 'tags a transaction with the name and action of a controller' do
|
|
klass = double(:klass, name: 'TestController')
|
|
controller = double(:controller, class: klass, action_name: 'show')
|
|
|
|
env['action_controller.instance'] = controller
|
|
|
|
middleware.tag_controller(transaction, env)
|
|
|
|
expect(transaction.action).to eq('TestController#show')
|
|
end
|
|
end
|
|
end
|