Skip to content

Commit

Permalink
add telemetry tags for early flake detection
Browse files Browse the repository at this point in the history
  • Loading branch information
anmarchenko committed Sep 6, 2024
1 parent 2978b56 commit 06d447f
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 7 deletions.
2 changes: 2 additions & 0 deletions lib/datadog/ci/ext/telemetry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ module Telemetry
TAG_BROWSER_DRIVER = "browser_driver"
TAG_IS_RUM = "is_rum"
TAG_IS_RETRY = "is_retry"
TAG_IS_NEW = "is_new"
TAG_LIBRARY = "library"
TAG_ENDPOINT = "endpoint"
TAG_ERROR_TYPE = "error_type"
Expand All @@ -80,6 +81,7 @@ module Telemetry
TAG_COVERAGE_ENABLED = "coverage_enabled"
TAG_ITR_SKIP_ENABLED = "itrskip_enabled"
TAG_EARLY_FLAKE_DETECTION_ENABLED = "early_flake_detection_enabled"
TAG_EARLY_FLAKE_DETECTION_ABORT_REASON = "early_flake_detection_abort_reason"
TAG_PROVIDER = "provider"
TAG_AUTO_INJECTED = "auto_injected"

Expand Down
9 changes: 9 additions & 0 deletions lib/datadog/ci/test_visibility/telemetry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,15 @@ def self.event_tags_from_span(span)
# set is_retry tag if span represents a retried test
tags[Ext::Telemetry::TAG_IS_RETRY] = "true" if span.get_tag(Ext::Test::TAG_IS_RETRY)

# is_new
tags[Ext::Telemetry::TAG_IS_NEW] = "true" if span.get_tag(Ext::Test::TAG_IS_NEW)

# session-level tag - early_flake_detection_abort_reason
early_flake_detection_abort_reason = span.get_tag(Ext::Test::TAG_EARLY_FLAKE_ABORT_REASON)
if early_flake_detection_abort_reason
tags[Ext::Telemetry::TAG_EARLY_FLAKE_DETECTION_ABORT_REASON] = early_flake_detection_abort_reason
end

tags
end

Expand Down
4 changes: 4 additions & 0 deletions sig/datadog/ci/ext/telemetry.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ module Datadog

TAG_IS_RETRY: "is_retry"

TAG_IS_NEW: "is_new"

TAG_LIBRARY: "library"

TAG_ENDPOINT: "endpoint"
Expand All @@ -128,6 +130,8 @@ module Datadog

TAG_EARLY_FLAKE_DETECTION_ENABLED: "early_flake_detection_enabled"

TAG_EARLY_FLAKE_DETECTION_ABORT_REASON: "early_flake_detection_abort_reason"

TAG_PROVIDER: "provider"

TAG_AUTO_INJECTED: "auto_injected"
Expand Down
42 changes: 35 additions & 7 deletions spec/datadog/ci/test_visibility/telemetry_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
type: Datadog::CI::Ext::AppTypes::TYPE_TEST_SESSION,
tags: {
Datadog::CI::Ext::Test::TAG_FRAMEWORK => "rspec",
Datadog::CI::Ext::Environment::TAG_PROVIDER_NAME => "gha"
Datadog::CI::Ext::Environment::TAG_PROVIDER_NAME => "gha",
Datadog::CI::Ext::Test::TAG_EARLY_FLAKE_ENABLED => "true"
}
)
end
Expand All @@ -33,6 +34,31 @@
it { event_created }
end

context "test session span with faulty EFD" do
let(:span) do
Datadog::Tracing::SpanOperation.new(
"test_session",
type: Datadog::CI::Ext::AppTypes::TYPE_TEST_SESSION,
tags: {
Datadog::CI::Ext::Test::TAG_FRAMEWORK => "rspec",
Datadog::CI::Ext::Environment::TAG_PROVIDER_NAME => "gha",
Datadog::CI::Ext::Test::TAG_EARLY_FLAKE_ABORT_REASON => "faulty",
Datadog::CI::Ext::Test::TAG_EARLY_FLAKE_ENABLED => "true"
}
)
end

let(:expected_tags) do
{
Datadog::CI::Ext::Telemetry::TAG_EVENT_TYPE => Datadog::CI::Ext::Telemetry::EventType::SESSION,
Datadog::CI::Ext::Telemetry::TAG_TEST_FRAMEWORK => "rspec",
Datadog::CI::Ext::Telemetry::TAG_EARLY_FLAKE_DETECTION_ABORT_REASON => "faulty"
}
end

it { event_created }
end

context "test module span without CI provider" do
let(:span) do
Datadog::Tracing::SpanOperation.new(
Expand Down Expand Up @@ -159,7 +185,7 @@
context "test suite span" do
let(:span) do
Datadog::Tracing::SpanOperation.new(
"test_session",
"test_suite",
type: Datadog::CI::Ext::AppTypes::TYPE_TEST_SUITE,
tags: {
Datadog::CI::Ext::Test::TAG_FRAMEWORK => "rspec",
Expand All @@ -181,7 +207,7 @@
context "test span with codeowners" do
let(:span) do
Datadog::Tracing::SpanOperation.new(
"test_session",
"test",
type: Datadog::CI::Ext::AppTypes::TYPE_TEST,
tags: {
Datadog::CI::Ext::Test::TAG_FRAMEWORK => "rspec",
Expand All @@ -206,18 +232,19 @@
it { event_finished }
end

context "test span with retry" do
context "test span with retry and new test" do
let(:span) do
Datadog::Tracing::SpanOperation.new(
"test_session",
"test",
type: Datadog::CI::Ext::AppTypes::TYPE_TEST,
tags: {
Datadog::CI::Ext::Test::TAG_FRAMEWORK => "rspec",
Datadog::CI::Ext::Environment::TAG_PROVIDER_NAME => "gha",
Datadog::CI::Ext::Test::TAG_CODEOWNERS => "@owner",
Datadog::CI::Ext::Test::TAG_IS_RUM_ACTIVE => "true",
Datadog::CI::Ext::Test::TAG_BROWSER_DRIVER => "selenium",
Datadog::CI::Ext::Test::TAG_IS_RETRY => "true"
Datadog::CI::Ext::Test::TAG_IS_RETRY => "true",
Datadog::CI::Ext::Test::TAG_IS_NEW => "true"
}
)
end
Expand All @@ -229,7 +256,8 @@
Datadog::CI::Ext::Telemetry::TAG_HAS_CODEOWNER => "true",
Datadog::CI::Ext::Telemetry::TAG_IS_RUM => "true",
Datadog::CI::Ext::Telemetry::TAG_BROWSER_DRIVER => "selenium",
Datadog::CI::Ext::Telemetry::TAG_IS_RETRY => "true"
Datadog::CI::Ext::Telemetry::TAG_IS_RETRY => "true",
Datadog::CI::Ext::Telemetry::TAG_IS_NEW => "true"
}
end

Expand Down

0 comments on commit 06d447f

Please sign in to comment.