summaryrefslogtreecommitdiff
path: root/spec/requests
diff options
context:
space:
mode:
authorQingyu Zhao <qzhao@gitlab.com>2019-06-27 23:42:14 +1000
committerQingyu Zhao <qzhao@gitlab.com>2019-07-18 23:11:08 +1000
commit10e51ac5f7087bb9cbc495fc15195994fb8763e4 (patch)
treedb910ca437f1187f726fd60f7567592d5042673b /spec/requests
parent0854f18352e72c2bcc0beca601d1ea48b490d1be (diff)
downloadgitlab-ce-10e51ac5f7087bb9cbc495fc15195994fb8763e4.tar.gz
Add profile mode to extend request profilingadd-profile-mode-to-extend-request-profiling
Extend the support for "X-Profile-Token: <token>" to have an additional header that defines type of profile we are looking for, like: X-Profile-Mode: execution X-Profile-Mode: memory
Diffstat (limited to 'spec/requests')
-rw-r--r--spec/requests/request_profiler_spec.rb20
1 files changed, 15 insertions, 5 deletions
diff --git a/spec/requests/request_profiler_spec.rb b/spec/requests/request_profiler_spec.rb
index 75b22b1879b..851affbcf88 100644
--- a/spec/requests/request_profiler_spec.rb
+++ b/spec/requests/request_profiler_spec.rb
@@ -3,13 +3,18 @@ require 'spec_helper'
describe 'Request Profiler' do
let(:user) { create(:user) }
- shared_examples 'profiling a request' do
+ shared_examples 'profiling a request' do |profile_type, extension|
before do
allow(Rails).to receive(:cache).and_return(ActiveSupport::Cache::MemoryStore.new)
allow(RubyProf::Profile).to receive(:profile) do |&blk|
blk.call
RubyProf::Profile.new
end
+ allow(MemoryProfiler).to receive(:report) do |&blk|
+ blk.call
+ MemoryProfiler.start
+ MemoryProfiler.stop
+ end
end
it 'creates a profile of the request' do
@@ -18,10 +23,11 @@ describe 'Request Profiler' do
path = "/#{project.full_path}"
Timecop.freeze(time) do
- get path, params: {}, headers: { 'X-Profile-Token' => Gitlab::RequestProfiler.profile_token }
+ get path, params: {}, headers: { 'X-Profile-Token' => Gitlab::RequestProfiler.profile_token, 'X-Profile-Mode' => profile_type }
end
- profile_path = "#{Gitlab.config.shared.path}/tmp/requests_profiles/#{path.tr('/', '|')}_#{time.to_i}.html"
+ profile_type = 'execution' if profile_type.nil?
+ profile_path = "#{Gitlab.config.shared.path}/tmp/requests_profiles/#{path.tr('/', '|')}_#{time.to_i}_#{profile_type}.#{extension}"
expect(File.exist?(profile_path)).to be true
end
@@ -35,10 +41,14 @@ describe 'Request Profiler' do
login_as(user)
end
- include_examples 'profiling a request'
+ include_examples 'profiling a request', 'execution', 'html'
+ include_examples 'profiling a request', nil, 'html'
+ include_examples 'profiling a request', 'memory', 'txt'
end
context "when user is not logged-in" do
- include_examples 'profiling a request'
+ include_examples 'profiling a request', 'execution', 'html'
+ include_examples 'profiling a request', nil, 'html'
+ include_examples 'profiling a request', 'memory', 'txt'
end
end