Commit d079cd00 authored by Ramya Authappan's avatar Ramya Authappan

Merge branch 'acunskis-metrics-devops-stage' into 'master'

E2E: Add devops stage tag to exported test metrics

See merge request gitlab-org/gitlab!71392
parents 62adff9f da1f404f
...@@ -57,19 +57,22 @@ module QA ...@@ -57,19 +57,22 @@ module QA
# @param [RSpec::Core::Example] example # @param [RSpec::Core::Example] example
# @return [Hash] # @return [Hash]
def test_stats(example) def test_stats(example)
file_path = example.metadata[:file_path].gsub('./qa/specs/features', '')
{ {
name: 'test-stats', name: 'test-stats',
time: time, time: time,
tags: { tags: {
name: example.full_description, name: example.full_description,
file_path: example.metadata[:file_path].gsub('./qa/specs/features', ''), file_path: file_path,
status: example.execution_result.status, status: example.execution_result.status,
reliable: example.metadata.key?(:reliable).to_s, reliable: example.metadata.key?(:reliable).to_s,
quarantined: example.metadata.key?(:quarantine).to_s, quarantined: example.metadata.key?(:quarantine).to_s,
retried: ((example.metadata[:retry_attempts] || 0) > 0).to_s, retried: ((example.metadata[:retry_attempts] || 0) > 0).to_s,
job_name: job_name, job_name: job_name,
merge_request: merge_request, merge_request: merge_request,
run_type: env('QA_RUN_TYPE') || run_type run_type: env('QA_RUN_TYPE') || run_type,
stage: devops_stage(file_path)
}, },
fields: { fields: {
id: example.id, id: example.id,
...@@ -150,6 +153,14 @@ module QA ...@@ -150,6 +153,14 @@ module QA
ENV[name] ENV[name]
end end
# Get spec devops stage
#
# @param [String] location
# @return [String, nil]
def devops_stage(file_path)
file_path.match(%r{(\d{1,2}_\w+)/})&.captures&.first
end
end end
end end
end end
......
...@@ -18,6 +18,8 @@ describe QA::Support::Formatters::TestStatsFormatter do ...@@ -18,6 +18,8 @@ describe QA::Support::Formatters::TestStatsFormatter do
let(:quarantined) { 'false' } let(:quarantined) { 'false' }
let(:influx_client) { instance_double('InfluxDB2::Client', create_write_api: influx_write_api) } let(:influx_client) { instance_double('InfluxDB2::Client', create_write_api: influx_write_api) }
let(:influx_write_api) { instance_double('InfluxDB2::WriteApi', write: nil) } let(:influx_write_api) { instance_double('InfluxDB2::WriteApi', write: nil) }
let(:stage) { '1_manage' }
let(:file_path) { "./qa/specs/features/#{stage}/subfolder/some_spec.rb" }
let(:influx_client_args) do let(:influx_client_args) do
{ {
...@@ -34,14 +36,15 @@ describe QA::Support::Formatters::TestStatsFormatter do ...@@ -34,14 +36,15 @@ describe QA::Support::Formatters::TestStatsFormatter do
time: DateTime.strptime(ci_timestamp).to_time, time: DateTime.strptime(ci_timestamp).to_time,
tags: { tags: {
name: 'stats export spec', name: 'stats export spec',
file_path: './spec/support/formatters/test_stats_formatter_spec.rb', file_path: file_path.gsub('./qa/specs/features', ''),
status: :passed, status: :passed,
reliable: reliable, reliable: reliable,
quarantined: quarantined, quarantined: quarantined,
retried: "false", retried: "false",
job_name: "test-job", job_name: "test-job",
merge_request: "false", merge_request: "false",
run_type: run_type run_type: run_type,
stage: stage
}, },
fields: { fields: {
id: './spec/support/formatters/test_stats_formatter_spec.rb[1:1]', id: './spec/support/formatters/test_stats_formatter_spec.rb[1:1]',
...@@ -57,7 +60,9 @@ describe QA::Support::Formatters::TestStatsFormatter do ...@@ -57,7 +60,9 @@ describe QA::Support::Formatters::TestStatsFormatter do
def run_spec(&spec) def run_spec(&spec)
spec ||= -> { it('spec') {} } spec ||= -> { it('spec') {} }
describe_successfully('stats export', &spec) describe_successfully('stats export', &spec).tap do |example_group|
example_group.examples.each { |ex| ex.metadata[:file_path] = file_path }
end
send_stop_notification send_stop_notification
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment