diff options
Diffstat (limited to 'app/services/ci/build_report_result_service.rb')
-rw-r--r-- | app/services/ci/build_report_result_service.rb | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/app/services/ci/build_report_result_service.rb b/app/services/ci/build_report_result_service.rb index ca66ad8249d..76ecf428f11 100644 --- a/app/services/ci/build_report_result_service.rb +++ b/app/services/ci/build_report_result_service.rb @@ -2,12 +2,20 @@ module Ci class BuildReportResultService + include Gitlab::Utils::UsageData + + EVENT_NAME = 'i_testing_test_case_parsed' + def execute(build) return unless build.has_test_reports? + test_suite = generate_test_suite_report(build) + + track_test_cases(build, test_suite) + build.report_results.create!( project_id: build.project_id, - data: tests_params(build) + data: tests_params(test_suite) ) end @@ -17,9 +25,7 @@ module Ci build.collect_test_reports!(Gitlab::Ci::Reports::TestReports.new) end - def tests_params(build) - test_suite = generate_test_suite_report(build) - + def tests_params(test_suite) { tests: { name: test_suite.name, @@ -31,5 +37,20 @@ module Ci } } end + + def track_test_cases(build, test_suite) + return if Feature.disabled?(:track_unique_test_cases_parsed, build.project) + + track_usage_event(EVENT_NAME, test_case_hashes(build, test_suite)) + end + + def test_case_hashes(build, test_suite) + [].tap do |hashes| + test_suite.each_test_case do |test_case| + key = "#{build.project_id}-#{test_case.key}" + hashes << Digest::SHA256.hexdigest(key) + end + end + end end end |