@@ -24,6 +24,14 @@ pub struct Measurement {
2424 pub mbit : f64 ,
2525}
2626
27+ #[ derive( Serialize ) ]
28+ pub struct LatencyMeasurement {
29+ pub avg_latency_ms : f64 ,
30+ pub min_latency_ms : f64 ,
31+ pub max_latency_ms : f64 ,
32+ pub latency_measurements : Vec < f64 > ,
33+ }
34+
2735impl Display for Measurement {
2836 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
2937 write ! (
@@ -38,6 +46,7 @@ impl Display for Measurement {
3846
3947pub ( crate ) fn log_measurements (
4048 measurements : & [ Measurement ] ,
49+ latency_measurement : Option < & LatencyMeasurement > ,
4150 payload_sizes : Vec < usize > ,
4251 verbose : bool ,
4352 output_format : OutputFormat ,
@@ -70,12 +79,21 @@ pub(crate) fn log_measurements(
7079 wtr. flush ( ) . unwrap ( ) ;
7180 }
7281 OutputFormat :: Json => {
73- serde_json:: to_writer ( io:: stdout ( ) , & stat_measurements) . unwrap ( ) ;
82+ let mut output = serde_json:: Map :: new ( ) ;
83+ output. insert ( "speed_measurements" . to_string ( ) , serde_json:: to_value ( & stat_measurements) . unwrap ( ) ) ;
84+ if let Some ( latency) = latency_measurement {
85+ output. insert ( "latency_measurement" . to_string ( ) , serde_json:: to_value ( latency) . unwrap ( ) ) ;
86+ }
87+ serde_json:: to_writer ( io:: stdout ( ) , & output) . unwrap ( ) ;
7488 println ! ( ) ;
7589 }
7690 OutputFormat :: JsonPretty => {
77- // json_pretty output test
78- serde_json:: to_writer_pretty ( io:: stdout ( ) , & stat_measurements) . unwrap ( ) ;
91+ let mut output = serde_json:: Map :: new ( ) ;
92+ output. insert ( "speed_measurements" . to_string ( ) , serde_json:: to_value ( & stat_measurements) . unwrap ( ) ) ;
93+ if let Some ( latency) = latency_measurement {
94+ output. insert ( "latency_measurement" . to_string ( ) , serde_json:: to_value ( latency) . unwrap ( ) ) ;
95+ }
96+ serde_json:: to_writer_pretty ( io:: stdout ( ) , & output) . unwrap ( ) ;
7997 println ! ( ) ;
8098 }
8199 OutputFormat :: StdOut => { }
0 commit comments