Skip to content

Commit 2af4d93

Browse files
feat(data-pipeline-ffi): Add ffi bindings for session token
1 parent 1b64ca9 commit 2af4d93

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

data-pipeline-ffi/src/trace_exporter.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ pub struct TraceExporterConfig {
6666
output_format: TraceExporterOutputFormat,
6767
compute_stats: bool,
6868
telemetry_cfg: Option<TelemetryConfig>,
69+
test_session_token: Option<String>,
6970
}
7071

7172
#[no_mangle]
@@ -274,6 +275,23 @@ pub unsafe extern "C" fn ddog_trace_exporter_config_set_compute_stats(
274275
}
275276
}
276277

278+
/// Sets the `X-Datadog-Test-Session-Token` header. Only used for testing with the test agent.
279+
#[no_mangle]
280+
pub unsafe extern "C" fn ddog_trace_exporter_config_set_test_session_token(
281+
config: Option<&mut TraceExporterConfig>,
282+
token: CharSlice,
283+
) -> Option<Box<ExporterError>> {
284+
if let Option::Some(handle) = config {
285+
handle.test_session_token = match sanitize_string(token) {
286+
Ok(s) => Some(s),
287+
Err(e) => return Some(e),
288+
};
289+
None
290+
} else {
291+
gen_error!(ErrorCode::InvalidArgument)
292+
}
293+
}
294+
277295
/// Create a new TraceExporter instance.
278296
///
279297
/// # Arguments
@@ -313,6 +331,10 @@ pub unsafe extern "C" fn ddog_trace_exporter_new(
313331
builder.enable_telemetry(Some(cfg.clone()));
314332
}
315333

334+
if let Some(token) = &config.test_session_token {
335+
builder.set_test_session_token(token);
336+
}
337+
316338
match builder.build() {
317339
Ok(exporter) => {
318340
out_handle.as_ptr().write(Box::new(exporter));
@@ -407,6 +429,7 @@ mod tests {
407429
assert_eq!(cfg.output_format, TraceExporterOutputFormat::V04);
408430
assert!(!cfg.compute_stats);
409431
assert!(cfg.telemetry_cfg.is_none());
432+
assert!(cfg.test_session_token.is_none());
410433

411434
ddog_trace_exporter_config_free(cfg);
412435
}
@@ -764,6 +787,7 @@ mod tests {
764787
output_format: TraceExporterOutputFormat::V04,
765788
compute_stats: false,
766789
telemetry_cfg: None,
790+
test_session_token: None,
767791
};
768792

769793
let mut ptr: MaybeUninit<Box<TraceExporter>> = MaybeUninit::uninit();
@@ -833,6 +857,7 @@ mod tests {
833857
output_format: TraceExporterOutputFormat::V04,
834858
compute_stats: false,
835859
telemetry_cfg: None,
860+
test_session_token: None,
836861
};
837862

838863
let mut ptr: MaybeUninit<Box<TraceExporter>> = MaybeUninit::uninit();
@@ -908,6 +933,7 @@ mod tests {
908933
runtime_id: Some("foo".to_string()),
909934
debug_enabled: true,
910935
}),
936+
test_session_token: None,
911937
};
912938

913939
let mut ptr: MaybeUninit<Box<TraceExporter>> = MaybeUninit::uninit();

data-pipeline/src/trace_exporter/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -903,7 +903,7 @@ impl TraceExporterBuilder {
903903
self
904904
}
905905

906-
/// Set the session token
906+
/// Set the `X-Datadog-Test-Session-Token` header. Only used for testing with the test agent.
907907
pub fn set_test_session_token(&mut self, test_session_token: &str) -> &mut Self {
908908
self.test_session_token = Some(test_session_token.to_string());
909909
self

0 commit comments

Comments
 (0)