Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb')
-rw-r--r--spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb60
1 files changed, 60 insertions, 0 deletions
diff --git a/spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb b/spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb
new file mode 100644
index 00000000000..ff6a76aa319
--- /dev/null
+++ b/spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb
@@ -0,0 +1,60 @@
+# frozen_string_literal: true
+
+require 'fast_spec_helper'
+require 'rspec-parameterized'
+require "support/graphql/fake_query_type"
+
+RSpec.describe Gitlab::Graphql::Tracers::MetricsTracer do
+ using RSpec::Parameterized::TableSyntax
+
+ let(:default_known_operations) { ::Gitlab::Graphql::KnownOperations.new(%w(lorem foo bar)) }
+
+ let(:fake_schema) do
+ Class.new(GraphQL::Schema) do
+ use Gitlab::Graphql::Tracers::ApplicationContextTracer
+ use Gitlab::Graphql::Tracers::MetricsTracer
+ use Gitlab::Graphql::Tracers::TimerTracer
+
+ query Graphql::FakeQueryType
+ end
+ end
+
+ around do |example|
+ ::Gitlab::ApplicationContext.with_context(feature_category: 'test_feature_category') do
+ example.run
+ end
+ end
+
+ before do
+ allow(::Gitlab::Graphql::KnownOperations).to receive(:default).and_return(default_known_operations)
+ end
+
+ describe 'when used as tracer and query is executed' do
+ where(:duration, :expected_success) do
+ 0.1 | true
+ 0.1 + ::Gitlab::EndpointAttributes::DEFAULT_URGENCY.duration | false
+ end
+
+ with_them do
+ it 'increments sli' do
+ # Trigger initialization
+ fake_schema
+
+ # setup timer
+ current_time = 0
+ allow(Gitlab::Metrics::System).to receive(:monotonic_time) { current_time += duration }
+
+ expect(Gitlab::Metrics::RailsSlis.graphql_query_apdex).to receive(:increment).with(
+ labels: {
+ endpoint_id: 'graphql:lorem',
+ feature_category: 'test_feature_category',
+ query_urgency: ::Gitlab::EndpointAttributes::DEFAULT_URGENCY.name
+ },
+ success: expected_success
+ )
+
+ fake_schema.execute("query lorem { helloWorld }")
+ end
+ end
+ end
+end