Commit 8b13dc0e authored by Douglas Barbosa Alexandre's avatar Douglas Barbosa Alexandre

Merge branch 'record_banzai_rendering_timings_as_histogram' into 'master'

Update histogram buckets for Banzai cacheless_render metrics

See merge request gitlab-org/gitlab!72898
parents 21381a13 b5edb275
...@@ -160,16 +160,40 @@ module Banzai ...@@ -160,16 +160,40 @@ module Banzai
def self.cacheless_render(text, context = {}) def self.cacheless_render(text, context = {})
return text.to_s unless text.present? return text.to_s unless text.present?
Gitlab::Metrics.measure(:banzai_cacheless_render) do real_start = Gitlab::Metrics::System.monotonic_time
result = render_result(text, context) cpu_start = Gitlab::Metrics::System.cpu_time
output = result[:output] result = render_result(text, context)
if output.respond_to?(:to_html)
output.to_html output = result[:output]
else rendered = if output.respond_to?(:to_html)
output.to_s output.to_html
end else
end output.to_s
end
cpu_duration_histogram.observe({}, Gitlab::Metrics::System.cpu_time - cpu_start)
real_duration_histogram.observe({}, Gitlab::Metrics::System.monotonic_time - real_start)
rendered
end
def self.real_duration_histogram
Gitlab::Metrics.histogram(
:gitlab_banzai_cacheless_render_real_duration_seconds,
'Duration of Banzai pipeline rendering in real time',
{},
[0.01, 0.01, 0.05, 0.1, 0.5, 1, 2, 5, 10.0, 50, 100]
)
end
def self.cpu_duration_histogram
Gitlab::Metrics.histogram(
:gitlab_banzai_cacheless_render_cpu_duration_seconds,
'Duration of Banzai pipeline rendering in cpu time',
{},
Gitlab::Metrics::EXECUTION_MEASUREMENT_BUCKETS
)
end end
def self.full_cache_key(cache_key, pipeline_name) def self.full_cache_key(cache_key, pipeline_name)
......
...@@ -84,6 +84,24 @@ RSpec.describe Banzai::Renderer do ...@@ -84,6 +84,24 @@ RSpec.describe Banzai::Renderer do
end end
end end
describe '#cacheless_render' do
context 'without cache' do
let(:object) { fake_object(fresh: false) }
let(:histogram) { double('prometheus histogram') }
it 'returns cacheless render field' do
allow(renderer).to receive(:render_result).and_return(output: 'test')
allow(renderer).to receive(:real_duration_histogram).and_return(histogram)
allow(renderer).to receive(:cpu_duration_histogram).and_return(histogram)
expect(renderer).to receive(:render_result).with('test', {})
expect(histogram).to receive(:observe).twice
renderer.cacheless_render('test')
end
end
end
describe '#post_process' do describe '#post_process' do
let(:context_options) { {} } let(:context_options) { {} }
let(:html) { 'Consequatur aperiam et nesciunt modi aut assumenda quo id. '} let(:html) { 'Consequatur aperiam et nesciunt modi aut assumenda quo id. '}
......
...@@ -280,7 +280,7 @@ RSpec.describe Gitlab::BitbucketServerImport::Importer do ...@@ -280,7 +280,7 @@ RSpec.describe Gitlab::BitbucketServerImport::Importer do
end end
context 'metrics' do context 'metrics' do
let(:histogram) { double(:histogram) } let(:histogram) { double(:histogram).as_null_object }
let(:counter) { double('counter', increment: true) } let(:counter) { double('counter', increment: true) }
before do before do
...@@ -315,7 +315,6 @@ RSpec.describe Gitlab::BitbucketServerImport::Importer do ...@@ -315,7 +315,6 @@ RSpec.describe Gitlab::BitbucketServerImport::Importer do
) )
expect(counter).to receive(:increment) expect(counter).to receive(:increment)
allow(histogram).to receive(:observe).with({ importer: :bitbucket_server_importer }, anything)
subject.execute subject.execute
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