Skip to content

Commit f45d8f5

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 b137a3a commit f45d8f5

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
@@ -1063,13 +1063,13 @@ impl Processor {
10631063
return Some(sc);
10641064
}
10651065

1066-
if let Some(request_obj) = payload_value.get("request") {
1067-
if let Some(request_headers) = request_obj.get("headers") {
1068-
if let Some(sc) = propagator.extract(request_headers) {
1069-
debug!("Extracted trace context from event.request.headers");
1070-
return Some(sc);
1071-
}
1072-
}
1066+
if let Some(sc) = payload_value
1067+
.get("request")
1068+
.and_then(|req| req.get("headers"))
1069+
.and_then(|headers| propagator.extract(headers))
1070+
{
1071+
debug!("Extracted trace context from event.request.headers");
1072+
return Some(sc);
10731073
}
10741074

10751075
if let Some(payload_headers) = payload_value.get("headers") {
@@ -1848,68 +1848,6 @@ mod tests {
18481848
);
18491849
}
18501850

1851-
#[test]
1852-
fn test_extract_span_context_from_event_request_headers_datadog() {
1853-
let config = Arc::new(config::Config {
1854-
trace_propagation_style_extract: vec![
1855-
config::trace_propagation_style::TracePropagationStyle::Datadog,
1856-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
1857-
],
1858-
..config::Config::default()
1859-
});
1860-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
1861-
let headers = HashMap::new();
1862-
1863-
let payload = json!({
1864-
"request": {
1865-
"headers": {
1866-
"x-datadog-trace-id": "1234567890",
1867-
"x-datadog-parent-id": "9876543210",
1868-
"x-datadog-sampling-priority": "2",
1869-
"x-datadog-origin": "rum"
1870-
}
1871-
}
1872-
});
1873-
1874-
let result = Processor::extract_span_context(&headers, &payload, propagator);
1875-
1876-
assert!(result.is_some());
1877-
let context = result.unwrap();
1878-
assert_eq!(context.trace_id, 1_234_567_890);
1879-
assert_eq!(context.span_id, 9_876_543_210);
1880-
assert_eq!(context.sampling.unwrap().priority, Some(2));
1881-
assert_eq!(context.origin, Some("rum".to_string()));
1882-
}
1883-
1884-
#[test]
1885-
fn test_extract_span_context_from_event_request_headers_tracecontext() {
1886-
let config = Arc::new(config::Config {
1887-
trace_propagation_style_extract: vec![
1888-
config::trace_propagation_style::TracePropagationStyle::Datadog,
1889-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
1890-
],
1891-
..config::Config::default()
1892-
});
1893-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
1894-
let headers = HashMap::new();
1895-
1896-
let payload = json!({
1897-
"request": {
1898-
"headers": {
1899-
"traceparent": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
1900-
"tracestate": "dd=s:2;o:rum"
1901-
}
1902-
}
1903-
});
1904-
1905-
let result = Processor::extract_span_context(&headers, &payload, propagator);
1906-
1907-
assert!(result.is_some());
1908-
let context = result.unwrap();
1909-
assert_eq!(context.sampling.unwrap().priority, Some(2));
1910-
assert_eq!(context.origin, Some("rum".to_string()));
1911-
}
1912-
19131851
#[test]
19141852
fn test_extract_span_context_priority_order() {
19151853
let config = Arc::new(config::Config {
@@ -1948,43 +1886,6 @@ mod tests {
19481886
);
19491887
}
19501888

1951-
#[test]
1952-
fn test_extract_span_context_fallback_to_request_headers() {
1953-
let config = Arc::new(config::Config {
1954-
trace_propagation_style_extract: vec![
1955-
config::trace_propagation_style::TracePropagationStyle::Datadog,
1956-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
1957-
],
1958-
..config::Config::default()
1959-
});
1960-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
1961-
let headers = HashMap::new();
1962-
1963-
let payload = json!({
1964-
"argumentsMap": {
1965-
"id": "123"
1966-
},
1967-
"request": {
1968-
"headers": {
1969-
"x-datadog-trace-id": "7777",
1970-
"x-datadog-parent-id": "8888",
1971-
"x-datadog-sampling-priority": "1"
1972-
}
1973-
}
1974-
});
1975-
1976-
let result = Processor::extract_span_context(&headers, &payload, propagator);
1977-
1978-
assert!(
1979-
result.is_some(),
1980-
"Should extract from event.request.headers"
1981-
);
1982-
let context = result.unwrap();
1983-
assert_eq!(context.trace_id, 7777);
1984-
assert_eq!(context.span_id, 8888);
1985-
assert_eq!(context.sampling.unwrap().priority, Some(1));
1986-
}
1987-
19881889
#[test]
19891890
fn test_extract_span_context_no_request_headers() {
19901891
let config = Arc::new(config::Config {
@@ -2013,132 +1914,4 @@ mod tests {
20131914
"Should return None when no trace context found"
20141915
);
20151916
}
2016-
2017-
#[test]
2018-
fn test_extract_span_context_empty_request_headers() {
2019-
let config = Arc::new(config::Config {
2020-
trace_propagation_style_extract: vec![
2021-
config::trace_propagation_style::TracePropagationStyle::Datadog,
2022-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
2023-
],
2024-
..config::Config::default()
2025-
});
2026-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
2027-
let headers = HashMap::new();
2028-
2029-
let payload = json!({
2030-
"request": {
2031-
"headers": {}
2032-
}
2033-
});
2034-
2035-
let result = Processor::extract_span_context(&headers, &payload, propagator);
2036-
2037-
assert!(
2038-
result.is_none(),
2039-
"Should return None when request.headers is empty"
2040-
);
2041-
}
2042-
2043-
#[test]
2044-
fn test_extract_span_context_invalid_request_headers() {
2045-
let config = Arc::new(config::Config {
2046-
trace_propagation_style_extract: vec![
2047-
config::trace_propagation_style::TracePropagationStyle::Datadog,
2048-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
2049-
],
2050-
..config::Config::default()
2051-
});
2052-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
2053-
let headers = HashMap::new();
2054-
2055-
let payload = json!({
2056-
"request": {
2057-
"headers": {
2058-
"x-datadog-trace-id": "not-a-number",
2059-
"x-datadog-parent-id": "also-not-a-number"
2060-
}
2061-
}
2062-
});
2063-
2064-
let result = Processor::extract_span_context(&headers, &payload, propagator);
2065-
2066-
assert!(
2067-
result.is_none(),
2068-
"Should return None when headers are invalid"
2069-
);
2070-
}
2071-
2072-
#[test]
2073-
fn test_extract_span_context_appsync_real_world_example() {
2074-
let config = Arc::new(config::Config {
2075-
trace_propagation_style_extract: vec![
2076-
config::trace_propagation_style::TracePropagationStyle::Datadog,
2077-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
2078-
],
2079-
..config::Config::default()
2080-
});
2081-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
2082-
let headers = HashMap::new();
2083-
2084-
let payload = json!({
2085-
"arguments": {
2086-
"userId": "12345"
2087-
},
2088-
"identity": {
2089-
"sub": "user-sub-id"
2090-
},
2091-
"request": {
2092-
"headers": {
2093-
"x-datadog-trace-id": "123456789012345",
2094-
"x-datadog-parent-id": "98765432109876",
2095-
"x-datadog-sampling-priority": "2",
2096-
"x-datadog-origin": "rum",
2097-
"x-datadog-tags": "_dd.p.dm=-0",
2098-
"user-agent": "Mozilla/5.0",
2099-
"content-type": "application/json"
2100-
}
2101-
},
2102-
"info": {
2103-
"fieldName": "getUser",
2104-
"parentTypeName": "Query"
2105-
}
2106-
});
2107-
2108-
let result = Processor::extract_span_context(&headers, &payload, propagator);
2109-
2110-
assert!(
2111-
result.is_some(),
2112-
"Should extract from real-world AppSync event"
2113-
);
2114-
let context = result.unwrap();
2115-
assert_eq!(context.trace_id, 123_456_789_012_345);
2116-
assert_eq!(context.span_id, 98_765_432_109_876);
2117-
assert_eq!(context.sampling.unwrap().priority, Some(2));
2118-
assert_eq!(context.origin, Some("rum".to_string()));
2119-
}
2120-
2121-
#[test]
2122-
fn test_extract_span_context_request_not_an_object() {
2123-
let config = Arc::new(config::Config {
2124-
trace_propagation_style_extract: vec![
2125-
config::trace_propagation_style::TracePropagationStyle::Datadog,
2126-
config::trace_propagation_style::TracePropagationStyle::TraceContext,
2127-
],
2128-
..config::Config::default()
2129-
});
2130-
let propagator = Arc::new(DatadogCompositePropagator::new(Arc::clone(&config)));
2131-
let headers = HashMap::new();
2132-
2133-
let payload = json!({
2134-
"request": "invalid-not-an-object"
2135-
});
2136-
2137-
let result = Processor::extract_span_context(&headers, &payload, propagator);
2138-
2139-
assert!(
2140-
result.is_none(),
2141-
"Should handle gracefully when request is not an object"
2142-
);
2143-
}
21441917
}

0 commit comments

Comments
 (0)