diff options
Diffstat (limited to 'spec/lib/gitlab/usage/metrics/instrumentations')
3 files changed, 116 insertions, 7 deletions
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb index b85d5a3ebf9..ce15d44b1e1 100644 --- a/spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb +++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb @@ -5,15 +5,17 @@ require 'spec_helper' RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountBulkImportsEntitiesMetric do let_it_be(:user) { create(:user) } let_it_be(:bulk_import_projects) do - create_list(:bulk_import_entity, 3, source_type: 'project_entity', created_at: 3.weeks.ago) + create_list(:bulk_import_entity, 2, source_type: 'project_entity', created_at: 3.weeks.ago, status: 2) + create(:bulk_import_entity, source_type: 'project_entity', created_at: 3.weeks.ago, status: 0) end let_it_be(:bulk_import_groups) do - create_list(:bulk_import_entity, 3, source_type: 'group_entity', created_at: 3.weeks.ago) + create_list(:bulk_import_entity, 2, source_type: 'group_entity', created_at: 3.weeks.ago, status: 2) + create(:bulk_import_entity, source_type: 'group_entity', created_at: 3.weeks.ago, status: 0) end let_it_be(:old_bulk_import_project) do - create(:bulk_import_entity, source_type: 'project_entity', created_at: 2.months.ago) + create(:bulk_import_entity, source_type: 'project_entity', created_at: 2.months.ago, status: 2) end context 'with no source_type' do @@ -103,4 +105,62 @@ RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountBulkImportsEntitie options: { source_type: 'group_entity' } end end + + context 'with entity status' do + context 'with all time frame' do + let(:expected_value) { 5 } + let(:expected_query) do + "SELECT COUNT(\"bulk_import_entities\".\"id\") FROM \"bulk_import_entities\""\ + " WHERE \"bulk_import_entities\".\"status\" = 2" + end + + it_behaves_like 'a correct instrumented metric value and query', + time_frame: 'all', + options: { status: 2 } + end + + context 'for 28d time frame' do + let(:expected_value) { 4 } + let(:start) { 30.days.ago.to_s(:db) } + let(:finish) { 2.days.ago.to_s(:db) } + let(:expected_query) do + "SELECT COUNT(\"bulk_import_entities\".\"id\") FROM \"bulk_import_entities\""\ + " WHERE \"bulk_import_entities\".\"created_at\" BETWEEN '#{start}' AND '#{finish}'"\ + " AND \"bulk_import_entities\".\"status\" = 2" + end + + it_behaves_like 'a correct instrumented metric value and query', + time_frame: '28d', + options: { status: 2 } + end + end + + context 'with entity status and source_type' do + context 'with all time frame' do + let(:expected_value) { 3 } + let(:expected_query) do + "SELECT COUNT(\"bulk_import_entities\".\"id\") FROM \"bulk_import_entities\""\ + " WHERE \"bulk_import_entities\".\"source_type\" = 1 AND \"bulk_import_entities\".\"status\" = 2" + end + + it_behaves_like 'a correct instrumented metric value and query', + time_frame: 'all', + options: { status: 2, source_type: 'project_entity' } + end + + context 'for 28d time frame' do + let(:expected_value) { 2 } + let(:start) { 30.days.ago.to_s(:db) } + let(:finish) { 2.days.ago.to_s(:db) } + let(:expected_query) do + "SELECT COUNT(\"bulk_import_entities\".\"id\") FROM \"bulk_import_entities\""\ + " WHERE \"bulk_import_entities\".\"created_at\" BETWEEN '#{start}' AND '#{finish}'"\ + " AND \"bulk_import_entities\".\"source_type\" = 1 AND \"bulk_import_entities\".\"status\" = 2" + end + + it_behaves_like 'a correct instrumented metric value and query', + time_frame: '28d', + options: { status: 2, source_type: 'project_entity' } + end + end end diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_user_auth_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_user_auth_metric_spec.rb new file mode 100644 index 00000000000..2f49c427bd0 --- /dev/null +++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_user_auth_metric_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountUserAuthMetric do + context 'with all time frame' do + let(:expected_value) { 2 } + + before do + user = create(:user) + user2 = create(:user) + create(:authentication_event, user: user, provider: :ldapmain, result: :success) + create(:authentication_event, user: user2, provider: :ldapsecondary, result: :success) + create(:authentication_event, user: user2, provider: :group_saml, result: :success) + create(:authentication_event, user: user2, provider: :group_saml, result: :success) + create(:authentication_event, user: user, provider: :group_saml, result: :failed) + end + + it_behaves_like 'a correct instrumented metric value', { time_frame: 'all', data_source: 'database' } + end + + context 'with 28d time frame' do + let(:expected_value) { 1 } + + before do + user = create(:user) + user2 = create(:user) + + create(:authentication_event, created_at: 1.year.ago, user: user, provider: :ldapmain, result: :success) + create(:authentication_event, created_at: 1.week.ago, user: user2, provider: :ldapsecondary, result: :success) + end + + it_behaves_like 'a correct instrumented metric value', { time_frame: '28d', data_source: 'database' } + end +end diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/redis_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/redis_metric_spec.rb index 831f775ec9a..80ae5c6fd21 100644 --- a/spec/lib/gitlab/usage/metrics/instrumentations/redis_metric_spec.rb +++ b/spec/lib/gitlab/usage/metrics/instrumentations/redis_metric_spec.rb @@ -11,18 +11,18 @@ RSpec.describe Gitlab::Usage::Metrics::Instrumentations::RedisMetric, :clean_git let(:expected_value) { 4 } - it_behaves_like 'a correct instrumented metric value', { options: { event: 'pushes', counter_class: 'SourceCodeCounter' } } + it_behaves_like 'a correct instrumented metric value', { options: { event: 'pushes', prefix: 'source_code' } } it 'raises an exception if event option is not present' do - expect { described_class.new(counter_class: 'SourceCodeCounter') }.to raise_error(ArgumentError) + expect { described_class.new(prefix: 'source_code') }.to raise_error(ArgumentError) end - it 'raises an exception if counter_class option is not present' do + it 'raises an exception if prefix option is not present' do expect { described_class.new(event: 'pushes') }.to raise_error(ArgumentError) end describe 'children classes' do - let(:options) { { event: 'pushes', counter_class: 'SourceCodeCounter' } } + let(:options) { { event: 'pushes', prefix: 'source_code' } } context 'availability not defined' do subject { Class.new(described_class).new(time_frame: nil, options: options) } @@ -44,4 +44,18 @@ RSpec.describe Gitlab::Usage::Metrics::Instrumentations::RedisMetric, :clean_git end end end + + context "with usage prefix disabled" do + let(:expected_value) { 3 } + + before do + 3.times do + Gitlab::UsageDataCounters::WebIdeCounter.increment_merge_requests_count + end + end + + it_behaves_like 'a correct instrumented metric value', { + options: { event: 'merge_requests_count', prefix: 'web_ide', include_usage_prefix: false } + } + end end |