diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/lib/gitlab/graphql/tracing_spec.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/lib/gitlab/graphql/tracing_spec.rb b/spec/lib/gitlab/graphql/tracing_spec.rb new file mode 100644 index 00000000000..6bae737d0f6 --- /dev/null +++ b/spec/lib/gitlab/graphql/tracing_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::Graphql::Tracing do + let!(:graphql_duration_seconds) { double('Gitlab::Metrics::NullMetric') } + + before do + allow(Gitlab::Metrics) + .to receive(:histogram) + .with(:graphql_duration_seconds, 'GraphQL execution time') + .and_return(graphql_duration_seconds) + end + + it 'updates graphql histogram with expected labels' do + query = 'query { users { id } }' + + expect_metric('graphql.lex', 'lex') + expect_metric('graphql.parse', 'parse') + expect_metric('graphql.validate', 'validate') + expect_metric('graphql.analyze', 'analyze_multiplex') + expect_metric('graphql.execute', 'execute_query_lazy') + expect_metric('graphql.execute', 'execute_multiplex') + + GitlabSchema.execute(query) + end + + private + + def expect_metric(platform_key, key) + expect(graphql_duration_seconds) + .to receive(:observe) + .with({ platform_key: platform_key, key: key }, be > 0.0) + end +end |