From f4baad81c4aac10e2f98cf0f2124abd7e02f6e41 Mon Sep 17 00:00:00 2001 From: Andrey Date: Thu, 19 Sep 2024 13:53:33 +0200 Subject: [PATCH] add type-level metadata dictionaries to msgpack header --- lib/datadog/ci/ext/test.rb | 3 +++ lib/datadog/ci/test_visibility/transport.rb | 11 ++++++++++- sig/datadog/ci/ext/test.rbs | 2 ++ spec/datadog/ci/test_visibility/transport_spec.rb | 5 +++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/datadog/ci/ext/test.rb b/lib/datadog/ci/ext/test.rb index cc6c64b4..bf7493f4 100644 --- a/lib/datadog/ci/ext/test.rb +++ b/lib/datadog/ci/ext/test.rb @@ -68,6 +68,9 @@ module Test TAG_SPAN_KIND = "span.kind" SPAN_KIND_TEST = "test" + # common tags that are serialized directly in msgpack header in metadata field + METADATA_TAG_TEST_SESSION_NAME = "test_session.name" + # tags that are common for the whole session and can be inherited from the test session INHERITABLE_TAGS = [TAG_FRAMEWORK, TAG_FRAMEWORK_VERSION].freeze diff --git a/lib/datadog/ci/test_visibility/transport.rb b/lib/datadog/ci/test_visibility/transport.rb index 3fcf8868..8e26fe1c 100644 --- a/lib/datadog/ci/test_visibility/transport.rb +++ b/lib/datadog/ci/test_visibility/transport.rb @@ -3,6 +3,7 @@ require "datadog/core/environment/identity" require_relative "serializers/factories/test_level" +require_relative "../ext/app_types" require_relative "../ext/telemetry" require_relative "../ext/transport" require_relative "../transport/event_platform_transport" @@ -75,7 +76,7 @@ def write_payload_header(packer) packer.write(1) packer.write("metadata") - packer.write_map_header(1) + packer.write_map_header(1 + Ext::AppTypes::CI_SPAN_TYPES.size) packer.write("*") metadata_fields_count = dd_env ? 4 : 3 @@ -95,6 +96,14 @@ def write_payload_header(packer) packer.write("library_version") packer.write(Datadog::CI::VERSION::STRING) + Ext::AppTypes::CI_SPAN_TYPES.each do |ci_span_type| + packer.write(ci_span_type) + packer.write_map_header(1) + + packer.write(Ext::Test::METADATA_TAG_TEST_SESSION_NAME) + packer.write("dummy") + end + packer.write("events") end diff --git a/sig/datadog/ci/ext/test.rbs b/sig/datadog/ci/ext/test.rbs index 95147249..62ef6eda 100644 --- a/sig/datadog/ci/ext/test.rbs +++ b/sig/datadog/ci/ext/test.rbs @@ -96,6 +96,8 @@ module Datadog EARLY_FLAKE_FAULTY: "faulty" + METADATA_TAG_TEST_SESSION_NAME: "test_session.name" + module Status PASS: "pass" diff --git a/spec/datadog/ci/test_visibility/transport_spec.rb b/spec/datadog/ci/test_visibility/transport_spec.rb index 377fa4fe..857dc272 100644 --- a/spec/datadog/ci/test_visibility/transport_spec.rb +++ b/spec/datadog/ci/test_visibility/transport_spec.rb @@ -48,6 +48,11 @@ expect(metadata).to include("runtime-id", "library_version") expect(metadata["language"]).to eq("ruby") + Datadog::CI::Ext::AppTypes::CI_SPAN_TYPES.each do |type| + type_metadata = payload["metadata"][type] + expect(type_metadata).to include("test_session.name" => "dummy") + end + events = payload["events"] expect(events.count).to eq(1) expect(events.first["content"]["resource"]).to include("calculator_tests")