Skip to content

Commit 9d5d6d4

Browse files
committed
[APMSVLS-197] refactor: Clean up trace context extraction code and tests. Removed redundant tests that would be caught by others. Priority and functionality is entirely covered within test_extract_span_context_priority_order.
1 parent 031343b commit 9d5d6d4

1 file changed

Lines changed: 7 additions & 234 deletions

File tree

bottlecap/src/lifecycle/invocation/processor.rs

Lines changed: 7 additions & 234 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,13 +1076,13 @@ impl Processor {
10761076
return Some(sc);
10771077
}
10781078

1079-
if let Some(request_obj) = payload_value.get("request") {
1080-
if let Some(request_headers) = request_obj.get("headers") {
1081-
if let Some(sc) = propagator.extract(request_headers) {
1082-
debug!("Extracted trace context from event.request.headers");
1083-
return Some(sc);
1084-
}
1085-
}
1079+
if let Some(sc) = payload_value
1080+
.get("request")
1081+
.and_then(|req| req.get("headers"))
1082+
.and_then(|headers| propagator.extract(headers))
1083+
{
1084+
debug!("Extracted trace context from event.request.headers");
1085+
return Some(sc);
10861086
}
10871087

10881088
if let Some(payload_headers) = payload_value.get("headers") {
@@ -1861,68 +1861,6 @@ mod tests {
18611861
);
18621862
}
18631863

1864-
#[test]
1865-
fn test_extract_span_context_from_event_request_headers_datadog() {
1866-
let config = Arc::new(config::Config {
1867-
trace_propagation_style_extract: vec![
1868-
config::trace_propagation_style::TracePropagationStyle::Datadog,
1869-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
1870-
],
1871-
..config::Config::default()
1872-
});
1873-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
1874-
let headers = HashMap::new();
1875-
1876-
let payload = json!({
1877-
"request": {
1878-
"headers": {
1879-
"x-datadog-trace-id": "1234567890",
1880-
"x-datadog-parent-id": "9876543210",
1881-
"x-datadog-sampling-priority": "2",
1882-
"x-datadog-origin": "rum"
1883-
}
1884-
}
1885-
});
1886-
1887-
let result = Processor::extract_span_context(&headers, &payload, propagator);
1888-
1889-
assert!(result.is_some());
1890-
let context = result.unwrap();
1891-
assert_eq!(context.trace_id, 1_234_567_890);
1892-
assert_eq!(context.span_id, 9_876_543_210);
1893-
assert_eq!(context.sampling.unwrap().priority, Some(2));
1894-
assert_eq!(context.origin, Some("rum".to_string()));
1895-
}
1896-
1897-
#[test]
1898-
fn test_extract_span_context_from_event_request_headers_tracecontext() {
1899-
let config = Arc::new(config::Config {
1900-
trace_propagation_style_extract: vec![
1901-
config::trace_propagation_style::TracePropagationStyle::Datadog,
1902-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
1903-
],
1904-
..config::Config::default()
1905-
});
1906-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
1907-
let headers = HashMap::new();
1908-
1909-
let payload = json!({
1910-
"request": {
1911-
"headers": {
1912-
"traceparent": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
1913-
"tracestate": "dd=s:2;o:rum"
1914-
}
1915-
}
1916-
});
1917-
1918-
let result = Processor::extract_span_context(&headers, &payload, propagator);
1919-
1920-
assert!(result.is_some());
1921-
let context = result.unwrap();
1922-
assert_eq!(context.sampling.unwrap().priority, Some(2));
1923-
assert_eq!(context.origin, Some("rum".to_string()));
1924-
}
1925-
19261864
#[test]
19271865
fn test_extract_span_context_priority_order() {
19281866
let config = Arc::new(config::Config {
@@ -1961,43 +1899,6 @@ mod tests {
19611899
);
19621900
}
19631901

1964-
#[test]
1965-
fn test_extract_span_context_fallback_to_request_headers() {
1966-
let config = Arc::new(config::Config {
1967-
trace_propagation_style_extract: vec![
1968-
config::trace_propagation_style::TracePropagationStyle::Datadog,
1969-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
1970-
],
1971-
..config::Config::default()
1972-
});
1973-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
1974-
let headers = HashMap::new();
1975-
1976-
let payload = json!({
1977-
"argumentsMap": {
1978-
"id": "123"
1979-
},
1980-
"request": {
1981-
"headers": {
1982-
"x-datadog-trace-id": "7777",
1983-
"x-datadog-parent-id": "8888",
1984-
"x-datadog-sampling-priority": "1"
1985-
}
1986-
}
1987-
});
1988-
1989-
let result = Processor::extract_span_context(&headers, &payload, propagator);
1990-
1991-
assert!(
1992-
result.is_some(),
1993-
"Should extract from event.request.headers"
1994-
);
1995-
let context = result.unwrap();
1996-
assert_eq!(context.trace_id, 7777);
1997-
assert_eq!(context.span_id, 8888);
1998-
assert_eq!(context.sampling.unwrap().priority, Some(1));
1999-
}
2000-
20011902
#[test]
20021903
fn test_extract_span_context_no_request_headers() {
20031904
let config = Arc::new(config::Config {
@@ -2026,132 +1927,4 @@ mod tests {
20261927
"Should return None when no trace context found"
20271928
);
20281929
}
2029-
2030-
#[test]
2031-
fn test_extract_span_context_empty_request_headers() {
2032-
let config = Arc::new(config::Config {
2033-
trace_propagation_style_extract: vec![
2034-
config::trace_propagation_style::TracePropagationStyle::Datadog,
2035-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
2036-
],
2037-
..config::Config::default()
2038-
});
2039-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
2040-
let headers = HashMap::new();
2041-
2042-
let payload = json!({
2043-
"request": {
2044-
"headers": {}
2045-
}
2046-
});
2047-
2048-
let result = Processor::extract_span_context(&headers, &payload, propagator);
2049-
2050-
assert!(
2051-
result.is_none(),
2052-
"Should return None when request.headers is empty"
2053-
);
2054-
}
2055-
2056-
#[test]
2057-
fn test_extract_span_context_invalid_request_headers() {
2058-
let config = Arc::new(config::Config {
2059-
trace_propagation_style_extract: vec![
2060-
config::trace_propagation_style::TracePropagationStyle::Datadog,
2061-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
2062-
],
2063-
..config::Config::default()
2064-
});
2065-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
2066-
let headers = HashMap::new();
2067-
2068-
let payload = json!({
2069-
"request": {
2070-
"headers": {
2071-
"x-datadog-trace-id": "not-a-number",
2072-
"x-datadog-parent-id": "also-not-a-number"
2073-
}
2074-
}
2075-
});
2076-
2077-
let result = Processor::extract_span_context(&headers, &payload, propagator);
2078-
2079-
assert!(
2080-
result.is_none(),
2081-
"Should return None when headers are invalid"
2082-
);
2083-
}
2084-
2085-
#[test]
2086-
fn test_extract_span_context_appsync_real_world_example() {
2087-
let config = Arc::new(config::Config {
2088-
trace_propagation_style_extract: vec![
2089-
config::trace_propagation_style::TracePropagationStyle::Datadog,
2090-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
2091-
],
2092-
..config::Config::default()
2093-
});
2094-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
2095-
let headers = HashMap::new();
2096-
2097-
let payload = json!({
2098-
"arguments": {
2099-
"userId": "12345"
2100-
},
2101-
"identity": {
2102-
"sub": "user-sub-id"
2103-
},
2104-
"request": {
2105-
"headers": {
2106-
"x-datadog-trace-id": "123456789012345",
2107-
"x-datadog-parent-id": "98765432109876",
2108-
"x-datadog-sampling-priority": "2",
2109-
"x-datadog-origin": "rum",
2110-
"x-datadog-tags": "_dd.p.dm=-0",
2111-
"user-agent": "Mozilla/5.0",
2112-
"content-type": "application/json"
2113-
}
2114-
},
2115-
"info": {
2116-
"fieldName": "getUser",
2117-
"parentTypeName": "Query"
2118-
}
2119-
});
2120-
2121-
let result = Processor::extract_span_context(&headers, &payload, propagator);
2122-
2123-
assert!(
2124-
result.is_some(),
2125-
"Should extract from real-world AppSync event"
2126-
);
2127-
let context = result.unwrap();
2128-
assert_eq!(context.trace_id, 123_456_789_012_345);
2129-
assert_eq!(context.span_id, 98_765_432_109_876);
2130-
assert_eq!(context.sampling.unwrap().priority, Some(2));
2131-
assert_eq!(context.origin, Some("rum".to_string()));
2132-
}
2133-
2134-
#[test]
2135-
fn test_extract_span_context_request_not_an_object() {
2136-
let config = Arc::new(config::Config {
2137-
trace_propagation_style_extract: vec![
2138-
config::trace_propagation_style::TracePropagationStyle::Datadog,
2139-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
2140-
],
2141-
..config::Config::default()
2142-
});
2143-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
2144-
let headers = HashMap::new();
2145-
2146-
let payload = json!({
2147-
"request": "invalid-not-an-object"
2148-
});
2149-
2150-
let result = Processor::extract_span_context(&headers, &payload, propagator);
2151-
2152-
assert!(
2153-
result.is_none(),
2154-
"Should handle gracefully when request is not an object"
2155-
);
2156-
}
21571930
}

0 commit comments

Comments
 (0)