diff --git a/ee/config/metrics/license/20210204124831_license_md5.yml b/ee/config/metrics/license/20210204124831_license_md5.yml index 85c1c9c302d016fd1f4dd99745e3ad5eb843ed4f..8b02a917fd1acca9dfba0703adb083b7c3801665 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 463a8a2fc231dee0fee23f8bcd30dd36df4b5952..3a1cf89a65eee0bf19656077e05a12c55bc03ff0 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 0000000000000000000000000000000000000000..ee601f180e3bc2c9ae9ff68c7543af6ff18019d8 --- /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 0000000000000000000000000000000000000000..ba6c310e59eef21c47184f9882c8cfe99977ce82 --- /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 0000000000000000000000000000000000000000..2d95a47ac45d42502215cadd37d388b402eb97a0 --- /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 0000000000000000000000000000000000000000..29d658593c1ef05cc16c8156cdd8e3ca5dbaabeb --- /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 0000000000000000000000000000000000000000..2b7ee015190d0bc4b01e78f63f7a9756bcc5e69c --- /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