Skip to content

Commit 888cd6d

Browse files
committed
Conservative with checks we make while dual uploads in dev
1 parent c6cb543 commit 888cd6d

File tree

5 files changed

+18
-96
lines changed

5 files changed

+18
-96
lines changed

src/native/data_pipeline/mod.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -148,11 +148,14 @@ impl TraceExporterBuilderPy {
148148
heartbeat_ms: u64,
149149
runtime_id: String,
150150
) -> PyResult<Py<Self>> {
151-
slf.try_as_mut()?.enable_telemetry(Some(TelemetryConfig {
152-
heartbeat: heartbeat_ms,
153-
runtime_id: Some(runtime_id),
154-
debug_enabled: true,
155-
}));
151+
slf.try_as_mut()?.enable_telemetry(
152+
Some(TelemetryConfig {
153+
heartbeat: heartbeat_ms,
154+
runtime_id: Some(runtime_id),
155+
debug_enabled: true,
156+
})
157+
.unwrap(),
158+
);
156159
Ok(slf.into())
157160
}
158161

src/native/library_config.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ pub fn store_metadata(data: &PyTracerMetadata) -> PyResult<PyAnonymousFileHandle
118118
service_name: data.service_name.clone(),
119119
service_env: data.service_env.clone(),
120120
service_version: data.service_version.clone(),
121+
container_id: None,
122+
process_tags: None,
121123
};
122124

123125
let res = store_tracer_metadata(&metadata);

tests/internal/crashtracker/test_crashtracker.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -735,19 +735,15 @@ def test_crashtracker_no_zombies():
735735
@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="Linux only")
736736
@pytest.mark.subprocess()
737737
def test_crashtracker_upload_errors_intake():
738-
"""Test specifically for errors intake message structure and content."""
739738
import ctypes
740-
import json
741739
import os
742-
import sys
743-
import base64
744740

745741
import tests.internal.crashtracker.utils as utils
746742

747743
with utils.with_test_agent() as client:
748744
pid = os.fork()
749745
if pid == 0:
750-
ct = utils.CrashtrackerWrapper(base_name="errors_verification")
746+
ct = utils.CrashtrackerWrapper(base_name="tags_required")
751747
assert ct.start()
752748
stdout_msg, stderr_msg = ct.logs()
753749
assert not stdout_msg
@@ -756,14 +752,11 @@ def test_crashtracker_upload_errors_intake():
756752
ctypes.string_at(0)
757753
sys.exit(-1)
758754

759-
all_requests = client.requests()
760-
errors_intake_messages = utils.get_all_errors_intake_messages(client)
761-
assert len(errors_intake_messages) == 2, "Should have 2 errors intake messages"
762-
assert len(all_requests) == 4, "Should have 4 total requests (2 telemetry, 2 errors intake)"
755+
# Check for crash ping and report
756+
_crash_ping = utils.get_crash_ping(client)
757+
_crash_report = utils.get_crash_report(client)
758+
assert _crash_ping is not None, "Should have a crash ping"
759+
assert _crash_report is not None, "Should have a crash report"
763760

764-
errors_intake_report = utils.get_errors_intake_report(client)
765-
errors_intake_ping = utils.get_errors_intake_ping(client)
766-
assert errors_intake_report is not None, "Should have an errors intake report"
767-
assert errors_intake_ping is not None, "Should have an errors intake ping"
768-
769-
761+
all_requests = client.requests()
762+
assert len(all_requests) == 4, f"Should have 4 total requests (2 telemetry, 2 errors intake) {all_requests}"

tests/internal/crashtracker/utils.py

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -141,26 +141,6 @@ def get_all_crash_messages(test_agent_client: TestAgentClient) -> List[TestAgent
141141
return crash_messages
142142

143143

144-
def get_all_errors_intake_messages(test_agent_client: TestAgentClient) -> List[TestAgentRequest]:
145-
"""Wait for all errors intake messages from the crashtracker listener socket."""
146-
seen_errors_intake_ids = set()
147-
errors_intake_messages = []
148-
for _ in range(5):
149-
incoming_messages = test_agent_client.errors_intake_messages()
150-
for message in incoming_messages:
151-
body = message.get("body", b"")
152-
if isinstance(body, str):
153-
body = body.encode("utf-8")
154-
errors_intake_id = (hash(body), frozenset(message.get("headers", {}).items()))
155-
if errors_intake_id not in seen_errors_intake_ids:
156-
seen_errors_intake_ids.add(errors_intake_id)
157-
errors_intake_messages.append(message)
158-
if len(errors_intake_messages) >= 2:
159-
return errors_intake_messages
160-
time.sleep(0.2)
161-
return errors_intake_messages
162-
163-
164144
def get_crash_report(test_agent_client: TestAgentClient) -> TestAgentRequest:
165145
"""Wait for a crash report from the crashtracker listener socket."""
166146
crash_messages = get_all_crash_messages(test_agent_client)
@@ -194,32 +174,6 @@ def get_crash_ping(test_agent_client: TestAgentClient) -> TestAgentRequest:
194174
return crash_ping
195175

196176

197-
def get_errors_intake_report(test_agent_client: TestAgentClient) -> TestAgentRequest:
198-
"""Wait for an errors intake message from the crashtracker listener socket."""
199-
errors_intake_messages = get_all_errors_intake_messages(test_agent_client)
200-
assert len(errors_intake_messages) == 2, f"Expected 2 errors intake messages; got {len(errors_intake_messages)}"
201-
errors_intake_report = None
202-
for message in errors_intake_messages:
203-
if b"is_crash:true" in message["body"]:
204-
errors_intake_report = message
205-
break
206-
assert errors_intake_report is not None, "Could not find errors intake report with 'is_crash:true' tag"
207-
return errors_intake_report
208-
209-
210-
def get_errors_intake_ping(test_agent_client: TestAgentClient) -> TestAgentRequest:
211-
"""Wait for an errors intake ping from the crashtracker listener socket."""
212-
errors_intake_messages = get_all_errors_intake_messages(test_agent_client)
213-
assert len(errors_intake_messages) == 2, f"Expected 2 errors intake messages; got {len(errors_intake_messages)}"
214-
errors_intake_ping = None
215-
for message in errors_intake_messages:
216-
if b"is_crash_ping:true" in message["body"]:
217-
errors_intake_ping = message
218-
break
219-
assert errors_intake_ping is not None, "Could not find errors intake ping with 'is_crash_ping:true' tag"
220-
return errors_intake_ping
221-
222-
223177
@contextmanager
224178
def with_test_agent() -> Generator[TestAgentClient, None, None]:
225179
base_url = ddtrace.tracer.agent_trace_url or "http://localhost:9126" # default to local test agent

tests/utils.py

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1180,36 +1180,6 @@ def crash_messages(self) -> List[TestAgentRequest]:
11801180
reqs.append(req)
11811181
return reqs
11821182

1183-
def errors_intake_messages(self) -> List[TestAgentRequest]:
1184-
reqs = []
1185-
for req in self.requests():
1186-
url = req.get("url", "")
1187-
if not (url.endswith("/errorsintake") or "/api/v2/errorsintake" in url or "/evp_proxy/v4/api/v2/errorsintake" in url):
1188-
continue
1189-
1190-
# Check for errors intake specific headers
1191-
headers = req.get("headers", {})
1192-
content_type = headers.get("content-type", "")
1193-
if "application/json" not in content_type:
1194-
continue
1195-
1196-
try:
1197-
if isinstance(req["body"], str):
1198-
data = json.loads(req["body"])
1199-
else:
1200-
data = json.loads(base64.b64decode(req["body"]))
1201-
1202-
if data.get("ddsource") != "crashtracker":
1203-
continue
1204-
1205-
if not isinstance(req["body"], str):
1206-
req["body"] = base64.b64decode(req["body"])
1207-
1208-
reqs.append(req)
1209-
except Exception:
1210-
continue
1211-
return reqs
1212-
12131183
def clear(self) -> None:
12141184
status, body = self._request("GET", self._url("/test/session/clear"))
12151185
assert status == 200, (

0 commit comments

Comments
 (0)