From d203dc9707622436c01367f35615768a99d1c139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20C=CC=8Cavoj?= <mcavoj@gitlab.com> Date: Tue, 15 Aug 2023 15:40:28 +0200 Subject: [PATCH] Add metrics for Vulnerability Management actions Changelog: added EE: true --- .../concerns/govern_usage_tracking.rb | 3 +- .../ee/projects/pipelines_controller.rb | 4 +++ .../groups/security/dashboard_controller.rb | 3 ++ .../security/vulnerabilities_controller.rb | 3 ++ .../projects/security/dashboard_controller.rb | 2 ++ .../security/vulnerabilities_controller.rb | 2 ++ .../vulnerability_report_controller.rb | 3 ++ .../security/vulnerabilities_controller.rb | 13 ++++++++ ...37_users_visiting_govern_pages_monthly.yml | 4 +++ ...vulnerability_management_pages_monthly.yml | 29 +++++++++++++++++ ...visiting_threat_insights_pages_monthly.yml | 31 +++++++++++++++++++ ..._security_vulnerability_report_monthly.yml | 22 +++++++++++++ ...rs_visiting_security_dashboard_monthly.yml | 22 +++++++++++++ ...iting_security_vulnerabilities_monthly.yml | 22 +++++++++++++ ...ers_visiting_pipeline_security_monthly.yml | 22 +++++++++++++ ...736_users_visiting_govern_pages_weekly.yml | 4 +++ ..._vulnerability_management_pages_weekly.yml | 29 +++++++++++++++++ ..._visiting_threat_insights_pages_weekly.yml | 31 +++++++++++++++++++ ...g_security_vulnerability_report_weekly.yml | 22 +++++++++++++ ...ers_visiting_security_dashboard_weekly.yml | 22 +++++++++++++ ...siting_security_vulnerabilities_weekly.yml | 22 +++++++++++++ ...sers_visiting_pipeline_security_weekly.yml | 22 +++++++++++++ .../security/dashboard_controller_spec.rb | 12 +++++++ .../vulnerabilities_controller_spec.rb | 12 +++++++ .../projects/pipelines_controller_spec.rb | 16 ++++++---- .../security/dashboard_controller_spec.rb | 4 +++ .../vulnerabilities_controller_spec.rb | 12 +++++++ .../vulnerability_report_controller_spec.rb | 10 +++++- .../vulnerabilities_controller_spec.rb | 8 +++++ 29 files changed, 403 insertions(+), 8 deletions(-) create mode 100644 ee/config/metrics/counts_28d/20230815130614_users_visiting_vulnerability_management_pages_monthly.yml create mode 100644 ee/config/metrics/counts_28d/20230815131251_users_visiting_threat_insights_pages_monthly.yml create mode 100644 ee/config/metrics/counts_28d/20230816131559_users_visiting_security_vulnerability_report_monthly.yml create mode 100644 ee/config/metrics/counts_28d/20230816131802_users_visiting_security_dashboard_monthly.yml create mode 100644 ee/config/metrics/counts_28d/20230816132116_users_visiting_security_vulnerabilities_monthly.yml create mode 100644 ee/config/metrics/counts_28d/20230816132227_users_visiting_pipeline_security_monthly.yml create mode 100644 ee/config/metrics/counts_7d/20230815130614_users_visiting_vulnerability_management_pages_weekly.yml create mode 100644 ee/config/metrics/counts_7d/20230815131251_users_visiting_threat_insights_pages_weekly.yml create mode 100644 ee/config/metrics/counts_7d/20230816131559_users_visiting_security_vulnerability_report_weekly.yml create mode 100644 ee/config/metrics/counts_7d/20230816131802_users_visiting_security_dashboard_weekly.yml create mode 100644 ee/config/metrics/counts_7d/20230816132116_users_visiting_security_vulnerabilities_weekly.yml create mode 100644 ee/config/metrics/counts_7d/20230816132227_users_visiting_pipeline_security_weekly.yml diff --git a/ee/app/controllers/concerns/govern_usage_tracking.rb b/ee/app/controllers/concerns/govern_usage_tracking.rb index 2c828cd9e1469..4686764d1a7e0 100644 --- a/ee/app/controllers/concerns/govern_usage_tracking.rb +++ b/ee/app/controllers/concerns/govern_usage_tracking.rb @@ -5,11 +5,12 @@ module GovernUsageTracking extend ActiveSupport::Concern included do - def self.track_govern_activity(page_name, *controller_actions) + def self.track_govern_activity(page_name, *controller_actions, conditions: nil) track_event(*controller_actions, name: "users_visiting_#{page_name}", action: 'user_perform_visit', label: "redis_hll_counters.govern.users_visiting_#{page_name}_monthly", + conditions: conditions, destinations: %i[redis_hll snowplow]) { |context| context.current_user&.id } end end diff --git a/ee/app/controllers/ee/projects/pipelines_controller.rb b/ee/app/controllers/ee/projects/pipelines_controller.rb index 37ca87d57c3e8..7122f10bb4437 100644 --- a/ee/app/controllers/ee/projects/pipelines_controller.rb +++ b/ee/app/controllers/ee/projects/pipelines_controller.rb @@ -7,6 +7,8 @@ module PipelinesController extend ::Gitlab::Utils::Override prepended do + include GovernUsageProjectTracking + before_action :authorize_read_licenses!, only: [:licenses] before_action do push_frontend_feature_flag(:pipeline_security_dashboard_graphql, project, type: :development) @@ -20,6 +22,8 @@ module PipelinesController feature_category :code_quality, [:codequality_report] urgency :low, [:codequality_report, :licenses, :security] + track_govern_activity 'pipeline_security', :security, + conditions: -> { pipeline.expose_security_dashboard? } end def security diff --git a/ee/app/controllers/groups/security/dashboard_controller.rb b/ee/app/controllers/groups/security/dashboard_controller.rb index f3d172ef88c2d..e3666d493a68a 100644 --- a/ee/app/controllers/groups/security/dashboard_controller.rb +++ b/ee/app/controllers/groups/security/dashboard_controller.rb @@ -1,9 +1,12 @@ # frozen_string_literal: true class Groups::Security::DashboardController < Groups::ApplicationController + include GovernUsageGroupTracking + layout 'group' feature_category :vulnerability_management urgency :low + track_govern_activity 'security_dashboard', :show, conditions: :dashboard_available? def show render :unavailable unless dashboard_available? diff --git a/ee/app/controllers/groups/security/vulnerabilities_controller.rb b/ee/app/controllers/groups/security/vulnerabilities_controller.rb index 2197043234822..d0c2937447726 100644 --- a/ee/app/controllers/groups/security/vulnerabilities_controller.rb +++ b/ee/app/controllers/groups/security/vulnerabilities_controller.rb @@ -3,6 +3,8 @@ module Groups module Security class VulnerabilitiesController < Groups::ApplicationController + include GovernUsageGroupTracking + layout 'group' before_action do @@ -11,6 +13,7 @@ class VulnerabilitiesController < Groups::ApplicationController feature_category :vulnerability_management urgency :low + track_govern_activity 'security_vulnerabilities', :index, conditions: :dashboard_available? def index render :unavailable unless dashboard_available? diff --git a/ee/app/controllers/projects/security/dashboard_controller.rb b/ee/app/controllers/projects/security/dashboard_controller.rb index 75740b005d605..0ee233b9d2ced 100644 --- a/ee/app/controllers/projects/security/dashboard_controller.rb +++ b/ee/app/controllers/projects/security/dashboard_controller.rb @@ -5,6 +5,7 @@ module Security class DashboardController < Projects::ApplicationController include SecurityAndCompliancePermissions include SecurityDashboardsPermissions + include GovernUsageProjectTracking alias_method :vulnerable, :project @@ -14,6 +15,7 @@ class DashboardController < Projects::ApplicationController feature_category :vulnerability_management urgency :low + track_govern_activity 'security_dashboard', :index end end end diff --git a/ee/app/controllers/projects/security/vulnerabilities_controller.rb b/ee/app/controllers/projects/security/vulnerabilities_controller.rb index a54ea4456b47a..ecd7e81088f91 100644 --- a/ee/app/controllers/projects/security/vulnerabilities_controller.rb +++ b/ee/app/controllers/projects/security/vulnerabilities_controller.rb @@ -4,6 +4,7 @@ module Projects module Security class VulnerabilitiesController < Projects::ApplicationController include IssuableActions + include GovernUsageProjectTracking before_action do push_frontend_feature_flag(:create_vulnerability_jira_issue_via_graphql, @project) @@ -18,6 +19,7 @@ class VulnerabilitiesController < Projects::ApplicationController feature_category :vulnerability_management urgency :low + track_govern_activity 'security_vulnerabilities', :show def show push_force_frontend_feature_flag( diff --git a/ee/app/controllers/projects/security/vulnerability_report_controller.rb b/ee/app/controllers/projects/security/vulnerability_report_controller.rb index a4ca9b1f15a15..41f90814a72c6 100644 --- a/ee/app/controllers/projects/security/vulnerability_report_controller.rb +++ b/ee/app/controllers/projects/security/vulnerability_report_controller.rb @@ -3,6 +3,8 @@ module Projects module Security class VulnerabilityReportController < Projects::ApplicationController + include GovernUsageProjectTracking + before_action do authorize_read_vulnerability! push_frontend_feature_flag(:expose_dismissal_reason, @project) @@ -10,6 +12,7 @@ class VulnerabilityReportController < Projects::ApplicationController feature_category :vulnerability_management urgency :low + track_govern_activity 'security_vulnerability_report', :index alias_method :vulnerable, :project end diff --git a/ee/app/controllers/security/vulnerabilities_controller.rb b/ee/app/controllers/security/vulnerabilities_controller.rb index 0e77e1bdb2d1d..ead229ee7c0db 100644 --- a/ee/app/controllers/security/vulnerabilities_controller.rb +++ b/ee/app/controllers/security/vulnerabilities_controller.rb @@ -3,9 +3,22 @@ module Security class VulnerabilitiesController < ::Security::ApplicationController layout 'instance_security' + include GovernUsageTracking before_action do push_frontend_feature_flag(:expose_dismissal_reason, @project) end + + track_govern_activity 'security_vulnerabilities', :index + + private + + def tracking_namespace_source + nil + end + + def tracking_project_source + nil + end end end diff --git a/ee/config/metrics/counts_28d/20230807111737_users_visiting_govern_pages_monthly.yml b/ee/config/metrics/counts_28d/20230807111737_users_visiting_govern_pages_monthly.yml index 2ed925e63defe..348567871c104 100644 --- a/ee/config/metrics/counts_28d/20230807111737_users_visiting_govern_pages_monthly.yml +++ b/ee/config/metrics/counts_28d/20230807111737_users_visiting_govern_pages_monthly.yml @@ -22,6 +22,10 @@ options: - users_creating_merge_requests_with_security_policies - users_visiting_dependencies - users_visiting_licenses + - users_visiting_security_vulnerability_report + - users_visiting_security_dashboard + - users_visiting_security_vulnerabilities + - users_visiting_pipeline_security performance_indicator_type: - smau distribution: diff --git a/ee/config/metrics/counts_28d/20230815130614_users_visiting_vulnerability_management_pages_monthly.yml b/ee/config/metrics/counts_28d/20230815130614_users_visiting_vulnerability_management_pages_monthly.yml new file mode 100644 index 0000000000000..fd681a681432d --- /dev/null +++ b/ee/config/metrics/counts_28d/20230815130614_users_visiting_vulnerability_management_pages_monthly.yml @@ -0,0 +1,29 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_vulnerability_management_pages_monthly +description: Unique count of vulnerability management actions in a given month +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: AggregatedMetric +options: + aggregate: + operator: OR + attribute: user_id + events: + - users_visiting_security_vulnerability_report + - users_visiting_security_dashboard + - users_visiting_security_vulnerabilities + - users_visiting_pipeline_security + - i_code_review_merge_request_widget_security_reports_expand +performance_indicator_type: [] +distribution: +- ee +tier: +- ultimate diff --git a/ee/config/metrics/counts_28d/20230815131251_users_visiting_threat_insights_pages_monthly.yml b/ee/config/metrics/counts_28d/20230815131251_users_visiting_threat_insights_pages_monthly.yml new file mode 100644 index 0000000000000..2afe92c6de940 --- /dev/null +++ b/ee/config/metrics/counts_28d/20230815131251_users_visiting_threat_insights_pages_monthly.yml @@ -0,0 +1,31 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_threat_insights_pages_monthly +description: Unique count of threat insights actions in a given month +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: AggregatedMetric +options: + aggregate: + operator: OR + attribute: user_id + events: + - users_visiting_security_vulnerability_report + - users_visiting_security_dashboard + - users_visiting_security_vulnerabilities + - users_visiting_pipeline_security + - users_visiting_dependencies + - users_visiting_licenses + - i_code_review_merge_request_widget_security_reports_expand +performance_indicator_type: [] +distribution: +- ee +tier: +- ultimate diff --git a/ee/config/metrics/counts_28d/20230816131559_users_visiting_security_vulnerability_report_monthly.yml b/ee/config/metrics/counts_28d/20230816131559_users_visiting_security_vulnerability_report_monthly.yml new file mode 100644 index 0000000000000..a1e7ce1384db9 --- /dev/null +++ b/ee/config/metrics/counts_28d/20230816131559_users_visiting_security_vulnerability_report_monthly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_security_vulnerability_report_monthly +description: Unique count of users visiting security vulnerability report in a given month +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: + - ee +tier: + - ultimate +options: + events: + - users_visiting_security_vulnerability_report diff --git a/ee/config/metrics/counts_28d/20230816131802_users_visiting_security_dashboard_monthly.yml b/ee/config/metrics/counts_28d/20230816131802_users_visiting_security_dashboard_monthly.yml new file mode 100644 index 0000000000000..6043681089e40 --- /dev/null +++ b/ee/config/metrics/counts_28d/20230816131802_users_visiting_security_dashboard_monthly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_security_dashboard_monthly +description: Unique count of users visiting security dashboard in a given month +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: + - ee +tier: + - ultimate +options: + events: + - users_visiting_security_dashboard diff --git a/ee/config/metrics/counts_28d/20230816132116_users_visiting_security_vulnerabilities_monthly.yml b/ee/config/metrics/counts_28d/20230816132116_users_visiting_security_vulnerabilities_monthly.yml new file mode 100644 index 0000000000000..f76e776900912 --- /dev/null +++ b/ee/config/metrics/counts_28d/20230816132116_users_visiting_security_vulnerabilities_monthly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_security_vulnerabilities_monthly +description: Unique count of users visiting security vulnerabilities in a given month +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: + - ee +tier: + - ultimate +options: + events: + - users_visiting_security_vulnerabilities diff --git a/ee/config/metrics/counts_28d/20230816132227_users_visiting_pipeline_security_monthly.yml b/ee/config/metrics/counts_28d/20230816132227_users_visiting_pipeline_security_monthly.yml new file mode 100644 index 0000000000000..9d2927bf3e267 --- /dev/null +++ b/ee/config/metrics/counts_28d/20230816132227_users_visiting_pipeline_security_monthly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_pipeline_security_monthly +description: Unique count of users visiting pipeline security in a given month +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: + - ee +tier: + - ultimate +options: + events: + - users_visiting_pipeline_security diff --git a/ee/config/metrics/counts_7d/20230807111736_users_visiting_govern_pages_weekly.yml b/ee/config/metrics/counts_7d/20230807111736_users_visiting_govern_pages_weekly.yml index e2e5875804752..e65f71956aad5 100644 --- a/ee/config/metrics/counts_7d/20230807111736_users_visiting_govern_pages_weekly.yml +++ b/ee/config/metrics/counts_7d/20230807111736_users_visiting_govern_pages_weekly.yml @@ -22,6 +22,10 @@ options: - users_creating_merge_requests_with_security_policies - users_visiting_dependencies - users_visiting_licenses + - users_visiting_security_vulnerability_report + - users_visiting_security_dashboard + - users_visiting_security_vulnerabilities + - users_visiting_pipeline_security performance_indicator_type: - smau distribution: diff --git a/ee/config/metrics/counts_7d/20230815130614_users_visiting_vulnerability_management_pages_weekly.yml b/ee/config/metrics/counts_7d/20230815130614_users_visiting_vulnerability_management_pages_weekly.yml new file mode 100644 index 0000000000000..664e2842a4bf7 --- /dev/null +++ b/ee/config/metrics/counts_7d/20230815130614_users_visiting_vulnerability_management_pages_weekly.yml @@ -0,0 +1,29 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_vulnerability_management_pages_weekly +description: Unique count of vulnerability management actions in a given week +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: AggregatedMetric +options: + aggregate: + operator: OR + attribute: user_id + events: + - users_visiting_security_vulnerability_report + - users_visiting_security_dashboard + - users_visiting_security_vulnerabilities + - users_visiting_pipeline_security + - i_code_review_merge_request_widget_security_reports_expand +performance_indicator_type: [] +distribution: +- ee +tier: +- ultimate diff --git a/ee/config/metrics/counts_7d/20230815131251_users_visiting_threat_insights_pages_weekly.yml b/ee/config/metrics/counts_7d/20230815131251_users_visiting_threat_insights_pages_weekly.yml new file mode 100644 index 0000000000000..a8d61a13345f7 --- /dev/null +++ b/ee/config/metrics/counts_7d/20230815131251_users_visiting_threat_insights_pages_weekly.yml @@ -0,0 +1,31 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_threat_insights_pages_weekly +description: Unique count of threat insights actions in a given week +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: AggregatedMetric +options: + aggregate: + operator: OR + attribute: user_id + events: + - users_visiting_security_vulnerability_report + - users_visiting_security_dashboard + - users_visiting_security_vulnerabilities + - users_visiting_pipeline_security + - users_visiting_dependencies + - users_visiting_licenses + - i_code_review_merge_request_widget_security_reports_expand +performance_indicator_type: [] +distribution: +- ee +tier: +- ultimate diff --git a/ee/config/metrics/counts_7d/20230816131559_users_visiting_security_vulnerability_report_weekly.yml b/ee/config/metrics/counts_7d/20230816131559_users_visiting_security_vulnerability_report_weekly.yml new file mode 100644 index 0000000000000..be11fcba1dcf1 --- /dev/null +++ b/ee/config/metrics/counts_7d/20230816131559_users_visiting_security_vulnerability_report_weekly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_security_vulnerability_report_weekly +description: Unique count of users visiting security vulnerability report in a given week +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: + - ee +tier: + - ultimate +options: + events: + - users_visiting_security_vulnerability_report diff --git a/ee/config/metrics/counts_7d/20230816131802_users_visiting_security_dashboard_weekly.yml b/ee/config/metrics/counts_7d/20230816131802_users_visiting_security_dashboard_weekly.yml new file mode 100644 index 0000000000000..b35ad09155ac9 --- /dev/null +++ b/ee/config/metrics/counts_7d/20230816131802_users_visiting_security_dashboard_weekly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_security_dashboard_weekly +description: Unique count of users visiting security dashboard in a given week +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: + - ee +tier: + - ultimate +options: + events: + - users_visiting_security_dashboard diff --git a/ee/config/metrics/counts_7d/20230816132116_users_visiting_security_vulnerabilities_weekly.yml b/ee/config/metrics/counts_7d/20230816132116_users_visiting_security_vulnerabilities_weekly.yml new file mode 100644 index 0000000000000..e19ddb5a13880 --- /dev/null +++ b/ee/config/metrics/counts_7d/20230816132116_users_visiting_security_vulnerabilities_weekly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_security_vulnerabilities_weekly +description: Unique count of users visiting security vulnerabilities in a given week +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: + - ee +tier: + - ultimate +options: + events: + - users_visiting_security_vulnerabilities diff --git a/ee/config/metrics/counts_7d/20230816132227_users_visiting_pipeline_security_weekly.yml b/ee/config/metrics/counts_7d/20230816132227_users_visiting_pipeline_security_weekly.yml new file mode 100644 index 0000000000000..a210afba23ab0 --- /dev/null +++ b/ee/config/metrics/counts_7d/20230816132227_users_visiting_pipeline_security_weekly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.govern.users_visiting_pipeline_security_weekly +description: Unique count of users visiting pipeline security in a given week +product_section: sec +product_stage: govern +product_group: threat_insights +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129482 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: + - ee +tier: + - ultimate +options: + events: + - users_visiting_pipeline_security diff --git a/ee/spec/controllers/groups/security/dashboard_controller_spec.rb b/ee/spec/controllers/groups/security/dashboard_controller_spec.rb index d2e6cdbdf7eff..691fd1bc4cd1b 100644 --- a/ee/spec/controllers/groups/security/dashboard_controller_spec.rb +++ b/ee/spec/controllers/groups/security/dashboard_controller_spec.rb @@ -25,17 +25,29 @@ it { is_expected.to have_gitlab_http_status(:ok) } it { is_expected.to render_template(:show) } + + it_behaves_like 'tracks govern usage event', 'users_visiting_security_dashboard' do + let(:request) { subject } + end end context 'when user is not allowed to access group security dashboard' do it { is_expected.to have_gitlab_http_status(:ok) } it { is_expected.to render_template(:unavailable) } + + it_behaves_like "doesn't track govern usage event", 'users_visiting_security_dashboard' do + let(:request) { subject } + end end end context 'when security dashboard feature is disabled' do it { is_expected.to have_gitlab_http_status(:ok) } it { is_expected.to render_template(:unavailable) } + + it_behaves_like "doesn't track govern usage event", 'users_visiting_security_dashboard' do + let(:request) { subject } + end end end end diff --git a/ee/spec/controllers/groups/security/vulnerabilities_controller_spec.rb b/ee/spec/controllers/groups/security/vulnerabilities_controller_spec.rb index 02787272777db..0d4c8e8917bb2 100644 --- a/ee/spec/controllers/groups/security/vulnerabilities_controller_spec.rb +++ b/ee/spec/controllers/groups/security/vulnerabilities_controller_spec.rb @@ -24,17 +24,29 @@ end it { is_expected.to have_gitlab_http_status(:ok) } + + it_behaves_like 'tracks govern usage event', 'users_visiting_security_vulnerabilities' do + let(:request) { subject } + end end context 'when user is not allowed to access group security vulnerabilities' do it { is_expected.to have_gitlab_http_status(:ok) } it { is_expected.to render_template(:unavailable) } + + it_behaves_like "doesn't track govern usage event", 'users_visiting_security_vulnerabilities' do + let(:request) { subject } + end end end context 'when security dashboard feature is disabled' do it { is_expected.to have_gitlab_http_status(:ok) } it { is_expected.to render_template(:unavailable) } + + it_behaves_like "doesn't track govern usage event", 'users_visiting_security_vulnerabilities' do + let(:request) { subject } + end end end end diff --git a/ee/spec/controllers/projects/pipelines_controller_spec.rb b/ee/spec/controllers/projects/pipelines_controller_spec.rb index acc036bb234f7..0d4b292407580 100644 --- a/ee/spec/controllers/projects/pipelines_controller_spec.rb +++ b/ee/spec/controllers/projects/pipelines_controller_spec.rb @@ -16,6 +16,8 @@ describe 'GET security', feature_category: :vulnerability_management do context 'with a sast artifact' do + let(:request) { get :security, params: { namespace_id: project.namespace, project_id: project, id: pipeline } } + before do create(:ee_ci_build, :sast, pipeline: pipeline) end @@ -23,24 +25,26 @@ context 'with feature enabled' do before do stub_licensed_features(sast: true, security_dashboard: true) - - get :security, params: { namespace_id: project.namespace, project_id: project, id: pipeline } end it 'responds with a 200 and show the template' do + request + expect(response).to have_gitlab_http_status(:ok) expect(response).to render_template :show end + + it_behaves_like 'tracks govern usage event', 'users_visiting_pipeline_security' end context 'with feature disabled' do - before do - get :security, params: { namespace_id: project.namespace, project_id: project, id: pipeline } - end - it 'redirects to the pipeline page' do + request + expect(response).to redirect_to(pipeline_path(pipeline)) end + + it_behaves_like "doesn't track govern usage event", 'users_visiting_pipeline_security' end end diff --git a/ee/spec/controllers/projects/security/dashboard_controller_spec.rb b/ee/spec/controllers/projects/security/dashboard_controller_spec.rb index 0c0f63352fc0e..d7424ca1c9067 100644 --- a/ee/spec/controllers/projects/security/dashboard_controller_spec.rb +++ b/ee/spec/controllers/projects/security/dashboard_controller_spec.rb @@ -61,5 +61,9 @@ def show_security_dashboard(current_user = user) expect(response.body).to have_css('div#js-project-security-dashboard[data-has-vulnerabilities="true"]') end end + + it_behaves_like 'tracks govern usage event', 'users_visiting_security_dashboard' do + let(:request) { show_security_dashboard } + end end end diff --git a/ee/spec/controllers/projects/security/vulnerabilities_controller_spec.rb b/ee/spec/controllers/projects/security/vulnerabilities_controller_spec.rb index 83db5ffd9d0a4..4bd21d59811f7 100644 --- a/ee/spec/controllers/projects/security/vulnerabilities_controller_spec.rb +++ b/ee/spec/controllers/projects/security/vulnerabilities_controller_spec.rb @@ -21,6 +21,10 @@ end it { is_expected.to have_gitlab_http_status(:not_found) } + + it_behaves_like "doesn't track govern usage event", 'users_visiting_security_vulnerabilities' do + let(:request) { subject } + end end describe 'GET #new' do @@ -81,6 +85,10 @@ expect(response.body).to have_css("#js-vulnerability-main") end + + it_behaves_like 'tracks govern usage event', 'users_visiting_security_vulnerabilities' do + let(:request) { show_vulnerability } + end end context "when there's no attached pipeline" do @@ -93,6 +101,10 @@ expect(response).to render_template(:show) expect(response.body).to have_text(vulnerability.title) end + + it_behaves_like 'tracks govern usage event', 'users_visiting_security_vulnerabilities' do + let(:request) { show_vulnerability } + end end end diff --git a/ee/spec/controllers/projects/security/vulnerability_report_controller_spec.rb b/ee/spec/controllers/projects/security/vulnerability_report_controller_spec.rb index 88548a58dd42b..529fca6c75288 100644 --- a/ee/spec/controllers/projects/security/vulnerability_report_controller_spec.rb +++ b/ee/spec/controllers/projects/security/vulnerability_report_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Projects::Security::VulnerabilityReportController, feature_category: :vulnerability_management do let_it_be(:group) { create(:group) } - let_it_be(:project) { create(:project, :repository, :public, namespace: group) } + let_it_be(:project, reload: true) { create(:project, :repository, :public, namespace: group) } let_it_be(:user) { create(:user) } before do @@ -18,6 +18,10 @@ end it { is_expected.to have_gitlab_http_status(:not_found) } + + it_behaves_like "doesn't track govern usage event", 'users_visiting_security_vulnerability_report' do + let(:request) { subject } + end end describe 'GET #index' do @@ -55,5 +59,9 @@ expect(response.body).to have_css('div#js-security-report-app[data-has-vulnerabilities="true"]') end end + + it_behaves_like 'tracks govern usage event', 'users_visiting_security_vulnerability_report' do + let(:request) { show_security_dashboard } + end end end diff --git a/ee/spec/controllers/security/vulnerabilities_controller_spec.rb b/ee/spec/controllers/security/vulnerabilities_controller_spec.rb index 53a122bd43f5c..8986133971e13 100644 --- a/ee/spec/controllers/security/vulnerabilities_controller_spec.rb +++ b/ee/spec/controllers/security/vulnerabilities_controller_spec.rb @@ -25,11 +25,19 @@ end it { is_expected.to render_template(:instance_security) } + + it_behaves_like 'tracks govern usage event', 'users_visiting_security_vulnerabilities' do + let(:request) { subject } + end end context 'is disabled' do it { is_expected.to have_gitlab_http_status(:not_found) } it { is_expected.to render_template('errors/not_found') } + + it_behaves_like "doesn't track govern usage event", 'users_visiting_security_vulnerabilities' do + let(:request) { subject } + end end end end -- GitLab