From 44a308d8d014037f7d27a48b7ae87b0b2ccd58e7 Mon Sep 17 00:00:00 2001 From: Ivana Kellyer Date: Fri, 19 Dec 2025 16:20:33 +0100 Subject: [PATCH] tests: Add dedicated transport format test for metrics, logs --- tests/test_logs.py | 63 +++++++++++++++++++++++++++++++++++++++++++ tests/test_metrics.py | 57 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/tests/test_logs.py b/tests/test_logs.py index 11c7b8e4d5..d91d3fa64d 100644 --- a/tests/test_logs.py +++ b/tests/test_logs.py @@ -471,6 +471,69 @@ def test_logs_with_literal_braces( assert "sentry.message.template" not in logs[0]["attributes"] +@minimum_python_37 +def test_transport_format(sentry_init, capture_envelopes): + sentry_init(enable_logs=True, server_name="test-server", release="1.0.0") + + envelopes = capture_envelopes() + + sentry_sdk.logger.warning("This is a log...") + + sentry_sdk.get_client().flush() + + assert len(envelopes) == 1 + assert len(envelopes[0].items) == 1 + item = envelopes[0].items[0] + + assert item.type == "log" + assert item.headers == { + "type": "log", + "item_count": 1, + "content_type": "application/vnd.sentry.items.log+json", + } + assert item.payload.json == { + "items": [ + { + "body": "This is a log...", + "level": "warn", + "timestamp": mock.ANY, + "trace_id": mock.ANY, + "span_id": mock.ANY, + "attributes": { + "sentry.environment": { + "type": "string", + "value": "production", + }, + "sentry.release": { + "type": "string", + "value": "1.0.0", + }, + "sentry.sdk.name": { + "type": "string", + "value": mock.ANY, + }, + "sentry.sdk.version": { + "type": "string", + "value": VERSION, + }, + "sentry.severity_number": { + "type": "integer", + "value": 13, + }, + "sentry.severity_text": { + "type": "string", + "value": "warn", + }, + "server.address": { + "type": "string", + "value": "test-server", + }, + }, + } + ] + } + + @minimum_python_37 def test_batcher_drops_logs(sentry_init, monkeypatch): sentry_init(enable_logs=True, server_name="test-server", release="1.0.0") diff --git a/tests/test_metrics.py b/tests/test_metrics.py index d64ce748e4..4f64279488 100644 --- a/tests/test_metrics.py +++ b/tests/test_metrics.py @@ -1,6 +1,8 @@ import json import sys from typing import List, Any, Mapping +from unittest import mock + import pytest import sentry_sdk @@ -268,6 +270,61 @@ def _before_metric(record, hint): assert before_metric_called +def test_transport_format(sentry_init, capture_envelopes): + sentry_init(server_name="test-server", release="1.0.0") + + envelopes = capture_envelopes() + + sentry_sdk.metrics.count("test.counter", 1) + + sentry_sdk.get_client().flush() + + assert len(envelopes) == 1 + assert len(envelopes[0].items) == 1 + item = envelopes[0].items[0] + + assert item.type == "trace_metric" + assert item.headers == { + "type": "trace_metric", + "item_count": 1, + "content_type": "application/vnd.sentry.items.trace-metric+json", + } + assert item.payload.json == { + "items": [ + { + "name": "test.counter", + "type": "counter", + "value": 1, + "timestamp": mock.ANY, + "trace_id": mock.ANY, + "span_id": mock.ANY, + "attributes": { + "sentry.environment": { + "type": "string", + "value": "production", + }, + "sentry.release": { + "type": "string", + "value": "1.0.0", + }, + "sentry.sdk.name": { + "type": "string", + "value": mock.ANY, + }, + "sentry.sdk.version": { + "type": "string", + "value": VERSION, + }, + "server.address": { + "type": "string", + "value": "test-server", + }, + }, + } + ] + } + + def test_batcher_drops_metrics(sentry_init, monkeypatch): sentry_init() client = sentry_sdk.get_client()