debian-mirror-gitlab/spec/lib/gitlab/metrics/rails_slis_spec.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

85 lines
3.2 KiB
Ruby
Raw Normal View History

2021-11-18 22:05:49 +05:30
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Gitlab::Metrics::RailsSlis do
# Limit what routes we'll initialize so we don't have to load the entire thing
before do
api_route = API::API.routes.find do |route|
API::Base.endpoint_id_for_route(route) == "GET /api/:version/version"
end
allow(Gitlab::RequestEndpoints).to receive(:all_api_endpoints).and_return([api_route])
2022-06-21 17:19:12 +05:30
allow(Gitlab::RequestEndpoints).to receive(:all_controller_actions).and_return([[ProjectsController, 'index']])
2021-12-11 22:18:48 +05:30
allow(Gitlab::Graphql::KnownOperations).to receive(:default).and_return(Gitlab::Graphql::KnownOperations.new(%w(foo bar)))
2021-11-18 22:05:49 +05:30
end
2022-04-04 11:22:00 +05:30
describe '.initialize_request_slis!' do
2023-03-04 22:38:38 +05:30
let(:possible_labels) do
[
2021-11-18 22:05:49 +05:30
{
endpoint_id: "GET /api/:version/version",
2021-12-11 22:18:48 +05:30
feature_category: :not_owned,
request_urgency: :default
2021-11-18 22:05:49 +05:30
},
{
2022-06-21 17:19:12 +05:30
endpoint_id: "ProjectsController#index",
2021-12-11 22:18:48 +05:30
feature_category: :projects,
request_urgency: :default
2021-11-18 22:05:49 +05:30
}
]
2023-03-04 22:38:38 +05:30
end
2021-11-18 22:05:49 +05:30
2023-03-04 22:38:38 +05:30
let(:possible_graphql_labels) do
['graphql:foo', 'graphql:bar', 'graphql:unknown'].map do |endpoint_id|
2021-12-11 22:18:48 +05:30
{
endpoint_id: endpoint_id,
feature_category: nil,
query_urgency: ::Gitlab::EndpointAttributes::DEFAULT_URGENCY.name
}
end
2023-03-04 22:38:38 +05:30
end
it "initializes the SLI for all possible endpoints if they weren't", :aggregate_failures do
expect(Gitlab::Metrics::Sli::Apdex).to receive(:initialize_sli).with(:rails_request, array_including(*possible_labels)).and_call_original
expect(Gitlab::Metrics::Sli::Apdex).to receive(:initialize_sli).with(:graphql_query, array_including(*possible_graphql_labels)).and_call_original
expect(Gitlab::Metrics::Sli::ErrorRate).to receive(:initialize_sli).with(:rails_request, array_including(*possible_labels)).and_call_original
described_class.initialize_request_slis!
end
it "initializes the SLI for all possible endpoints if they weren't given error rate feature flag is disabled", :aggregate_failures do
stub_feature_flags(gitlab_metrics_error_rate_sli: false)
2021-12-11 22:18:48 +05:30
2022-07-16 23:28:13 +05:30
expect(Gitlab::Metrics::Sli::Apdex).to receive(:initialize_sli).with(:rails_request, array_including(*possible_labels)).and_call_original
expect(Gitlab::Metrics::Sli::Apdex).to receive(:initialize_sli).with(:graphql_query, array_including(*possible_graphql_labels)).and_call_original
2023-03-04 22:38:38 +05:30
expect(Gitlab::Metrics::Sli::ErrorRate).not_to receive(:initialize_sli)
2021-11-18 22:05:49 +05:30
2022-04-04 11:22:00 +05:30
described_class.initialize_request_slis!
2021-11-18 22:05:49 +05:30
end
2021-12-11 22:18:48 +05:30
end
2021-11-18 22:05:49 +05:30
2021-12-11 22:18:48 +05:30
describe '.request_apdex' do
it 'returns the initialized request apdex SLI object' do
2022-04-04 11:22:00 +05:30
described_class.initialize_request_slis!
2021-12-11 22:18:48 +05:30
expect(described_class.request_apdex).to be_initialized
2021-11-18 22:05:49 +05:30
end
end
2023-03-04 22:38:38 +05:30
describe '.request_error' do
it 'returns the initialized request error rate SLI object' do
described_class.initialize_request_slis!
expect(described_class.request_error_rate).to be_initialized
end
end
2021-12-11 22:18:48 +05:30
describe '.graphql_query_apdex' do
2021-11-18 22:05:49 +05:30
it 'returns the initialized request apdex SLI object' do
2022-04-04 11:22:00 +05:30
described_class.initialize_request_slis!
2021-11-18 22:05:49 +05:30
2021-12-11 22:18:48 +05:30
expect(described_class.graphql_query_apdex).to be_initialized
2021-11-18 22:05:49 +05:30
end
end
end