@@ -5,8 +5,10 @@ use opentelemetry::{
5
5
global:: { self , BoxedSpan } ,
6
6
trace:: { Span as SpanTrait , Status , Tracer , TracerProvider as TracerProviderTrait } ,
7
7
} ;
8
- use opentelemetry_proto:: transform:: common:: tonic:: ResourceAttributesWithSchema ;
9
8
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
+ } ;
10
12
use opentelemetry_sdk:: {
11
13
Resource ,
12
14
error:: { OTelSdkError , OTelSdkResult } ,
@@ -144,7 +146,9 @@ impl<W: Write + Send + Debug> SpanExporter for FileExporter<W> {
144
146
batch : Vec < opentelemetry_sdk:: trace:: SpanData > ,
145
147
) -> BoxFuture < ' static , OTelSdkResult > {
146
148
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
+
148
152
let mut writer = match self . writer . lock ( ) {
149
153
Ok ( f) => f,
150
154
Err ( e) => {
@@ -217,6 +221,9 @@ mod tests {
217
221
let _tracing_data: Value = serde_json:: from_str ( & tracing_contents)
218
222
. expect ( "Expected tracing export file contents to be valid json" ) ;
219
223
224
+ // Check top level structure
225
+ assert ! ( tracing_contents. contains( "{\" resourceSpans\" :[{\" resource\" :" ) ) ;
226
+
220
227
// Check resource attributes
221
228
assert ! ( tracing_contents. contains(
222
229
"{\" key\" :\" service.name\" ,\" value\" :{\" stringValue\" :\" company.com/foo\" }}"
0 commit comments