From cce5d7bd6a38bacb4538b0b8f7c28a5e7ba7edef Mon Sep 17 00:00:00 2001 From: Rajendra Kadam <rkadam@gitlab.com> Date: Mon, 26 Jul 2021 15:03:10 +0000 Subject: [PATCH] Add License metric classes for Zuora Subscription ID and License MD5 --- .../license/20210204124831_license_md5.yml | 1 + ...20210204124852_license_subscription_id.yml | 1 + .../license_md_five_metric.rb | 15 +++++++++++ .../zuora_subscription_id_metric.rb | 15 +++++++++++ .../license_md_five_metric_spec.rb | 9 +++++++ .../zuora_subscription_id_metric_spec.rb | 9 +++++++ ee/spec/lib/gitlab/usage_data_metrics_spec.rb | 26 +++++++++++++++++++ 7 files changed, 76 insertions(+) create mode 100644 ee/lib/gitlab/usage/metrics/instrumentations/license_md_five_metric.rb create mode 100644 ee/lib/gitlab/usage/metrics/instrumentations/zuora_subscription_id_metric.rb create mode 100644 ee/spec/lib/gitlab/usage/metrics/instrumentations/license_md_five_metric_spec.rb create mode 100644 ee/spec/lib/gitlab/usage/metrics/instrumentations/zuora_subscription_id_metric_spec.rb create mode 100644 ee/spec/lib/gitlab/usage_data_metrics_spec.rb diff --git a/ee/config/metrics/license/20210204124831_license_md5.yml b/ee/config/metrics/license/20210204124831_license_md5.yml index 85c1c9c302d01..8b02a917fd1ac 100644 --- a/ee/config/metrics/license/20210204124831_license_md5.yml +++ b/ee/config/metrics/license/20210204124831_license_md5.yml @@ -9,6 +9,7 @@ value_type: string status: data_available time_frame: none data_source: license +instrumentation_class: 'LicenseMdFiveMetric' data_category: Standard distribution: - ee diff --git a/ee/config/metrics/license/20210204124852_license_subscription_id.yml b/ee/config/metrics/license/20210204124852_license_subscription_id.yml index 463a8a2fc231d..3a1cf89a65eee 100644 --- a/ee/config/metrics/license/20210204124852_license_subscription_id.yml +++ b/ee/config/metrics/license/20210204124852_license_subscription_id.yml @@ -9,6 +9,7 @@ value_type: string status: data_available time_frame: none data_source: license +instrumentation_class: 'ZuoraSubscriptionIdMetric' data_category: Standard distribution: - ee diff --git a/ee/lib/gitlab/usage/metrics/instrumentations/license_md_five_metric.rb b/ee/lib/gitlab/usage/metrics/instrumentations/license_md_five_metric.rb new file mode 100644 index 0000000000000..ee601f180e3bc --- /dev/null +++ b/ee/lib/gitlab/usage/metrics/instrumentations/license_md_five_metric.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class LicenseMdFiveMetric < ::Gitlab::Usage::Metrics::Instrumentations::GenericMetric + value do + ::License.current.md5 + end + end + end + end + end +end diff --git a/ee/lib/gitlab/usage/metrics/instrumentations/zuora_subscription_id_metric.rb b/ee/lib/gitlab/usage/metrics/instrumentations/zuora_subscription_id_metric.rb new file mode 100644 index 0000000000000..ba6c310e59eef --- /dev/null +++ b/ee/lib/gitlab/usage/metrics/instrumentations/zuora_subscription_id_metric.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class ZuoraSubscriptionIdMetric < ::Gitlab::Usage::Metrics::Instrumentations::GenericMetric + value do + ::License.current.subscription_id + end + end + end + end + end +end diff --git a/ee/spec/lib/gitlab/usage/metrics/instrumentations/license_md_five_metric_spec.rb b/ee/spec/lib/gitlab/usage/metrics/instrumentations/license_md_five_metric_spec.rb new file mode 100644 index 0000000000000..2d95a47ac45d4 --- /dev/null +++ b/ee/spec/lib/gitlab/usage/metrics/instrumentations/license_md_five_metric_spec.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Usage::Metrics::Instrumentations::LicenseMdFiveMetric do + it_behaves_like 'a correct instrumented metric value', { time_frame: 'none', data_source: 'ruby' } do + let(:expected_value) { Digest::MD5.hexdigest(::License.current.data) } + end +end diff --git a/ee/spec/lib/gitlab/usage/metrics/instrumentations/zuora_subscription_id_metric_spec.rb b/ee/spec/lib/gitlab/usage/metrics/instrumentations/zuora_subscription_id_metric_spec.rb new file mode 100644 index 0000000000000..29d658593c1ef --- /dev/null +++ b/ee/spec/lib/gitlab/usage/metrics/instrumentations/zuora_subscription_id_metric_spec.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Usage::Metrics::Instrumentations::ZuoraSubscriptionIdMetric do + it_behaves_like 'a correct instrumented metric value', { time_frame: 'none', data_source: 'ruby' } do + let(:expected_value) { ::License.current.subscription_id } + end +end diff --git a/ee/spec/lib/gitlab/usage_data_metrics_spec.rb b/ee/spec/lib/gitlab/usage_data_metrics_spec.rb new file mode 100644 index 0000000000000..2b7ee015190d0 --- /dev/null +++ b/ee/spec/lib/gitlab/usage_data_metrics_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::UsageDataMetrics do + describe '.uncached_data' do + subject { described_class.uncached_data } + + around do |example| + described_class.instance_variable_set(:@definitions, nil) + example.run + described_class.instance_variable_set(:@definitions, nil) + end + + before do + allow(ActiveRecord::Base.connection).to receive(:transaction_open?).and_return(false) # rubocop:disable Database/MultipleDatabases + end + + context 'with instrumentation_class' do + it 'includes top level keys' do + expect(subject).to include(:license_md5) + expect(subject).to include(:license_subscription_id) + end + end + end +end -- GitLab