diff options
author | Robert Speicher <rspeicher@gmail.com> | 2021-01-20 13:34:23 -0600 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2021-01-20 13:34:23 -0600 |
commit | 6438df3a1e0fb944485cebf07976160184697d72 (patch) | |
tree | 00b09bfd170e77ae9391b1a2f5a93ef6839f2597 /spec/controllers/metrics_controller_spec.rb | |
parent | 42bcd54d971da7ef2854b896a7b34f4ef8601067 (diff) | |
download | gitlab-ce-6438df3a1e0fb944485cebf07976160184697d72.tar.gz |
Add latest changes from gitlab-org/gitlab@13-8-stable-eev13.8.0-rc42
Diffstat (limited to 'spec/controllers/metrics_controller_spec.rb')
-rw-r--r-- | spec/controllers/metrics_controller_spec.rb | 75 |
1 files changed, 54 insertions, 21 deletions
diff --git a/spec/controllers/metrics_controller_spec.rb b/spec/controllers/metrics_controller_spec.rb index f350d7378dc..9fa90dde997 100644 --- a/spec/controllers/metrics_controller_spec.rb +++ b/spec/controllers/metrics_controller_spec.rb @@ -28,8 +28,38 @@ RSpec.describe MetricsController, :request_store do end end + shared_examples_for 'protected metrics endpoint' do |examples| + context 'accessed from whitelisted ip' do + before do + allow(Gitlab::RequestContext.instance).to receive(:client_ip).and_return(whitelisted_ip) + end + + it_behaves_like examples + end + + context 'accessed from ip in whitelisted range' do + before do + allow(Gitlab::RequestContext.instance).to receive(:client_ip).and_return(ip_in_whitelisted_range) + end + + it_behaves_like examples + end + + context 'accessed from not whitelisted ip' do + before do + allow(Gitlab::RequestContext.instance).to receive(:client_ip).and_return(not_whitelisted_ip) + end + + it 'returns the expected error response' do + get :index + + expect(response).to have_gitlab_http_status(:not_found) + end + end + end + describe '#index' do - shared_examples_for 'endpoint providing metrics' do + shared_examples_for 'providing metrics' do it 'returns prometheus metrics' do get :index @@ -51,32 +81,35 @@ RSpec.describe MetricsController, :request_store do end end - context 'accessed from whitelisted ip' do - before do - allow(Gitlab::RequestContext.instance).to receive(:client_ip).and_return(whitelisted_ip) - end - - it_behaves_like 'endpoint providing metrics' - end + include_examples 'protected metrics endpoint', 'providing metrics' + end - context 'accessed from ip in whitelisted range' do - before do - allow(Gitlab::RequestContext.instance).to receive(:client_ip).and_return(ip_in_whitelisted_range) + describe '#system' do + shared_examples_for 'providing system stats' do + let(:summary) do + { + version: 'ruby-3.0-patch1', + memory_rss: 1024 + } end - it_behaves_like 'endpoint providing metrics' - end + it 'renders system stats JSON' do + expect(Prometheus::PidProvider).to receive(:worker_id).and_return('worker-0') + expect(Gitlab::Metrics::System).to receive(:summary).and_return(summary) - context 'accessed from not whitelisted ip' do - before do - allow(Gitlab::RequestContext.instance).to receive(:client_ip).and_return(not_whitelisted_ip) - end - - it 'returns the expected error response' do - get :index + get :system - expect(response).to have_gitlab_http_status(:not_found) + expect(response).to have_gitlab_http_status(:ok) + expect(response_json['version']).to eq('ruby-3.0-patch1') + expect(response_json['worker_id']).to eq('worker-0') + expect(response_json['memory_rss']).to eq(1024) end end + + include_examples 'protected metrics endpoint', 'providing system stats' + end + + def response_json + Gitlab::Json.parse(response.body) end end |