Skip to content

[RUN ALL RSPEC] [RUN AS-IF-FOSS] Use instrumented classes in Usage Ping

What does this MR do?

Use instrumentation classes defined in metrics definitions and usage_data.rb to build the Usage Ping Payload

This will allow us use instrumentation classes for a limited type of metrics. See &6118 (closed) for adding more support

Proposed roadmap

  1. add add_metric(instrumentation) method to usage_data.rb
  2. Use the existing instrumentation classes in usage_data.rb
  3. overite add_metric(instrumentation) in usage_data_queries.rb in order to continue support for generating metrics queries
  4. overite add_metric(instrumentation) for naming suggestions in order to continue support for metrics suggestions
  5. overite add_metric(instrumentation) for lib/gitlab/usage_data_non_sql_metrics.rb to continue support for non SQL metrics API

Testing considerations:

Metrics migrated to instrumentation classes in usage_data.rb:

  • uuid
  • hostname
  • counts.issues
  • count.boards
  • usage_activity_by_stage.plan.issues
  • usage_activity_by_stage_monthly.plan.issues
  • settings.collected_data_categories
  • Ensure JSON payload generated with SubmitUsagePingService is generating without any errors.
  • Correspondent RawUsageData is created correctly
  • Payload is submitted to version app
    RawUsageData.count
    SubmitUsagePingService.new.execute
    RawUsageData.count
    
    # inspect payload
    payload = RawUsageData.last.payload
    payload['uuid']
    payload['hostname']
    payload['counts']['issues']
    payload['counts']['boards']
    payload['usage_activity_by_stage']['plan']['issues']
    payload['usage_activity_by_stage_monthly']['plan']['issues']
  • Ensure we can generate the metrics queries bundle exec rake gitlab:usage_data:dump_sql_in_yaml
  • Ensure non SQL usage data is working correct Gitlab::UsageDataNonSqlMetrics.uncached_data
  • Name suggestions are correct: Gitlab::Usage::Metrics::NamesSuggestions::Generator.generate("counts.boards")

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Related to #330842 (closed)

Edited by Alina Mihaila

Merge request reports