Skip to content

Commit 3055f1b

Browse files
committed
WIP
1 parent d708dc4 commit 3055f1b

File tree

1 file changed

+200
-3
lines changed

1 file changed

+200
-3
lines changed

tests/integration/test_spans.py

Lines changed: 200 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,74 @@ def envelope_with_spans(
464464
)
465465
)
466466

467+
envelope.add_item(
468+
Item(
469+
type="span",
470+
headers={"metrics_extracted": metrics_extracted, "item_count": 2},
471+
content_type="application/vnd.sentry.items.span.v2+json",
472+
payload=PayloadRef(
473+
json ={"items": [
474+
{
475+
"trace_id": "89143b0763095bd9c9955e8175d1fb23",
476+
"span_id": "a342abb1214ca182",
477+
"name": "my 1st V2 span",
478+
"kind": "unspecified",
479+
"start_timestamp": start.timestamp(),
480+
"end_timestamp": end.timestamp(),
481+
"attributes": {
482+
"sentry.category": {
483+
"type": "string",
484+
"value": "db",
485+
},
486+
"sentry.exclusive_time_nano": {
487+
"type": "integer",
488+
"value": int((end - start).total_seconds() * 1e9),
489+
},
490+
},
491+
"links": [
492+
{
493+
"trace_id": "89143b0763095bd9c9955e8175d1fb24",
494+
"span_id": "e342abb1214ca183",
495+
"sampled": False,
496+
"attributes": {
497+
"link_double_key": {
498+
"type": "double",
499+
"value": 1.23,
500+
},
501+
},
502+
},
503+
],
504+
},
505+
{
506+
"trace_id": "ff62a8b040f340bda5d830223def1d81",
507+
"span_id": "b0429c44b67a3eb2",
508+
"name": "resource.script",
509+
"status": "ok",
510+
"start_timestamp": start.timestamp(),
511+
"end_timestamp": end.timestamp() + 1,
512+
"links": [
513+
{
514+
"trace_id": "99143b0763095bd9c9955e8175d1fb25",
515+
"span_id": "e342abb1214ca183",
516+
"sampled": True,
517+
"attributes": {
518+
"link_bool_key": {"type": "boolean", "value": True},
519+
},
520+
},
521+
],
522+
"attributes": {
523+
"browser.name": {"type": "string", "value": "Chrome"},
524+
"sentry.description": {"type": "string", "value": "https://example.com/p/blah.js"},
525+
"sentry.exclusive_time_nano": {"type": "integer", "value": 345 * 1e6 },
526+
# Span with the same `span_id` and `segment_id`, to make sure it is classified as `is_segment`.
527+
"sentry.segment_id": {"type": "string", "value": "b0429c44b67a3eb2"}
528+
},
529+
}
530+
]}
531+
),
532+
)
533+
)
534+
467535
return envelope
468536

469537

@@ -648,7 +716,7 @@ def test_span_ingestion(
648716
headers={"Content-Type": "application/x-protobuf"},
649717
)
650718

651-
spans = spans_consumer.get_spans(timeout=10.0, n=6)
719+
spans = spans_consumer.get_spans(timeout=10.0, n=8)
652720

653721
for span in spans:
654722
span.pop("received", None)
@@ -694,6 +762,44 @@ def test_span_ingestion(
694762
"end_timestamp_precise": end.timestamp(),
695763
"trace_id": "89143b0763095bd9c9955e8175d1fb23",
696764
},
765+
{
766+
"data": {
767+
"browser.name": "Chrome",
768+
"client.address": "127.0.0.1",
769+
"sentry.category": "db",
770+
"user_agent.original": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
771+
"AppleWebKit/537.36 (KHTML, like Gecko) "
772+
"Chrome/111.0.0.0 Safari/537.36",
773+
},
774+
"duration_ms": 500,
775+
"exclusive_time_ms": 500.0,
776+
"is_segment": True,
777+
"is_remote": False,
778+
"kind": "unspecified",
779+
"links": [
780+
{
781+
"trace_id": "89143b0763095bd9c9955e8175d1fb24",
782+
"span_id": "e342abb1214ca183",
783+
"sampled": False,
784+
"attributes": {"link_double_key": 1.23},
785+
}
786+
],
787+
"organization_id": 1,
788+
"project_id": 42,
789+
"retention_days": 90,
790+
"segment_id": "a342abb1214ca182",
791+
"sentry_tags": {
792+
"browser.name": "Chrome",
793+
"category": "db",
794+
"op": "my 1st v2 span",
795+
"status": "unknown",
796+
},
797+
"span_id": "a342abb1214ca182",
798+
"start_timestamp_ms": int(start.timestamp() * 1e3),
799+
"start_timestamp_precise": start.timestamp(),
800+
"end_timestamp_precise": end.timestamp(),
801+
"trace_id": "89143b0763095bd9c9955e8175d1fb23",
802+
},
697803
{
698804
"data": {
699805
"browser.name": "Chrome",
@@ -737,6 +843,49 @@ def test_span_ingestion(
737843
"end_timestamp_precise": end.timestamp() + 1,
738844
"trace_id": "ff62a8b040f340bda5d830223def1d81",
739845
},
846+
{
847+
"data": {
848+
"browser.name": "Chrome",
849+
"client.address": "127.0.0.1",
850+
"user_agent.original": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
851+
"AppleWebKit/537.36 (KHTML, like Gecko) "
852+
"Chrome/111.0.0.0 Safari/537.36",
853+
},
854+
"description": "https://example.com/p/blah.js",
855+
"duration_ms": 1500,
856+
"exclusive_time_ms": 345.0,
857+
"is_segment": True,
858+
"is_remote": False,
859+
"links": [
860+
{
861+
"trace_id": "99143b0763095bd9c9955e8175d1fb25",
862+
"span_id": "e342abb1214ca183",
863+
"sampled": True,
864+
"attributes": {
865+
"link_bool_key": True,
866+
},
867+
},
868+
],
869+
"organization_id": 1,
870+
"project_id": 42,
871+
"retention_days": 90,
872+
"segment_id": "b0429c44b67a3eb2",
873+
"sentry_tags": {
874+
"browser.name": "Chrome",
875+
"category": "resource",
876+
"description": "https://example.com/*/blah.js",
877+
"domain": "example.com",
878+
"file_extension": "js",
879+
"group": "8a97a9e43588e2bd",
880+
"op": "resource.script",
881+
"status": "ok",
882+
},
883+
"span_id": "b0429c44b67a3eb2",
884+
"start_timestamp_ms": int(start.timestamp() * 1e3),
885+
"start_timestamp_precise": start.timestamp(),
886+
"end_timestamp_precise": end.timestamp() + 1,
887+
"trace_id": "ff62a8b040f340bda5d830223def1d81",
888+
},
740889
{
741890
"data": {
742891
"browser.name": "Chrome",
@@ -866,6 +1015,7 @@ def test_span_ingestion(
8661015
spans_consumer.assert_empty()
8671016

8681017
metrics = [metric for (metric, _headers) in metrics_consumer.get_metrics()]
1018+
metrics_consumer.assert_empty()
8691019
metrics.sort(key=lambda m: (m["name"], sorted(m["tags"].items()), m["timestamp"]))
8701020
for metric in metrics:
8711021
try:
@@ -885,7 +1035,7 @@ def test_span_ingestion(
8851035
"tags": {"decision": "keep", "target_project_id": "42"},
8861036
"timestamp": expected_timestamp,
8871037
"type": "c",
888-
"value": 3.0,
1038+
"value": 4.0,
8891039
},
8901040
{
8911041
"name": "c:spans/count_per_root_project@none",
@@ -906,7 +1056,7 @@ def test_span_ingestion(
9061056
"tags": {},
9071057
"timestamp": expected_timestamp,
9081058
"type": "c",
909-
"value": 3.0,
1059+
"value": 4.0,
9101060
"received_at": time_after(now_timestamp),
9111061
},
9121062
{
@@ -952,6 +1102,20 @@ def test_span_ingestion(
9521102
"value": [500.0],
9531103
"received_at": time_after(now_timestamp),
9541104
},
1105+
{
1106+
"name": "d:spans/duration@millisecond",
1107+
"org_id": 1,
1108+
"project_id": 42,
1109+
"retention_days": 90,
1110+
"tags": {
1111+
"span.category": "db",
1112+
"span.op": "my 1st v2 span",
1113+
},
1114+
"timestamp": expected_timestamp,
1115+
"type": "d",
1116+
"value": [500.0],
1117+
"received_at": time_after(now_timestamp),
1118+
},
9551119
{
9561120
"name": "d:spans/duration@millisecond",
9571121
"org_id": 1,
@@ -1018,6 +1182,17 @@ def test_span_ingestion(
10181182
"type": "d",
10191183
"value": [500.0],
10201184
},
1185+
{
1186+
"name": "d:spans/duration_light@millisecond",
1187+
"org_id": 1,
1188+
"project_id": 42,
1189+
"received_at": time_after(now_timestamp),
1190+
"retention_days": 90,
1191+
"tags": {"span.category": "db", "span.op": "my 1st v2 span"},
1192+
"timestamp": expected_timestamp,
1193+
"type": "d",
1194+
"value": [500.0],
1195+
},
10211196
{
10221197
"org_id": 1,
10231198
"project_id": 42,
@@ -1047,6 +1222,17 @@ def test_span_ingestion(
10471222
"value": [500.0],
10481223
"received_at": time_after(now_timestamp),
10491224
},
1225+
{
1226+
"org_id": 1,
1227+
"project_id": 42,
1228+
"name": "d:spans/exclusive_time@millisecond",
1229+
"retention_days": 90,
1230+
"tags": {"span.category": "db", "span.op": "my 1st v2 span"},
1231+
"timestamp": expected_timestamp,
1232+
"type": "d",
1233+
"value": [500.0],
1234+
"received_at": time_after(now_timestamp),
1235+
},
10501236
{
10511237
"org_id": 1,
10521238
"project_id": 42,
@@ -1109,6 +1295,17 @@ def test_span_ingestion(
11091295
"value": [500.0],
11101296
"received_at": time_after(now_timestamp),
11111297
},
1298+
{
1299+
"name": "d:spans/exclusive_time_light@millisecond",
1300+
"org_id": 1,
1301+
"project_id": 42,
1302+
"retention_days": 90,
1303+
"tags": {"span.category": "db", "span.op": "my 1st v2 span"},
1304+
"timestamp": expected_timestamp,
1305+
"type": "d",
1306+
"value": [500.0],
1307+
"received_at": time_after(now_timestamp),
1308+
},
11121309
{
11131310
"name": "d:spans/webvital.score.total@ratio",
11141311
"org_id": 1,

0 commit comments

Comments
 (0)