Skip to content

Commit 254cbae

Browse files
authored
Export TraceData wrapped ResourceSpans (#916)
1 parent 108faf1 commit 254cbae

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

libcnb/src/tracing.rs

+9-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ use opentelemetry::{
55
global::{self, BoxedSpan},
66
trace::{Span as SpanTrait, Status, Tracer, TracerProvider as TracerProviderTrait},
77
};
8-
use opentelemetry_proto::transform::common::tonic::ResourceAttributesWithSchema;
98
use opentelemetry_proto::transform::trace::tonic::group_spans_by_resource_and_scope;
9+
use opentelemetry_proto::{
10+
tonic::trace::v1::TracesData, transform::common::tonic::ResourceAttributesWithSchema,
11+
};
1012
use opentelemetry_sdk::{
1113
Resource,
1214
error::{OTelSdkError, OTelSdkResult},
@@ -144,7 +146,9 @@ impl<W: Write + Send + Debug> SpanExporter for FileExporter<W> {
144146
batch: Vec<opentelemetry_sdk::trace::SpanData>,
145147
) -> BoxFuture<'static, OTelSdkResult> {
146148
let resource = ResourceAttributesWithSchema::from(&self.resource);
147-
let data = group_spans_by_resource_and_scope(batch, &resource);
149+
let resource_spans = group_spans_by_resource_and_scope(batch, &resource);
150+
let data = TracesData { resource_spans };
151+
148152
let mut writer = match self.writer.lock() {
149153
Ok(f) => f,
150154
Err(e) => {
@@ -217,6 +221,9 @@ mod tests {
217221
let _tracing_data: Value = serde_json::from_str(&tracing_contents)
218222
.expect("Expected tracing export file contents to be valid json");
219223

224+
// Check top level structure
225+
assert!(tracing_contents.contains("{\"resourceSpans\":[{\"resource\":"));
226+
220227
// Check resource attributes
221228
assert!(tracing_contents.contains(
222229
"{\"key\":\"service.name\",\"value\":{\"stringValue\":\"company.com/foo\"}}"

0 commit comments

Comments
 (0)