Document JSON measurements and omit unavailable memory metrics

This commit is contained in:
David Peter committed 2026-10-05 16:01:30 +02:00
1 parent 21bbcc5490
commit 4cd0e24586
9 files changed
+147 -44

No files matched your search

+6 -6
View File
@@ -86,21 +86,21 @@ fn test_csv() {
time_wall_clock: Time::new::<second>(7.0),
time_user: Time::new::<second>(7.0),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(8.0),
time_user: Time::new::<second>(8.0),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(12.0),
time_user: Time::new::<second>(12.0),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
]),
@@ -130,21 +130,21 @@ fn test_csv() {
time_wall_clock: Time::new::<second>(17.0),
time_user: Time::new::<second>(17.0),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(18.0),
time_user: Time::new::<second>(18.0),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(19.0),
time_user: Time::new::<second>(19.0),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
]),
+47
View File
@@ -32,3 +32,50 @@ impl Exporter for JsonExporter {
Ok(output?)
}
}
#[test]
fn test_json_optional_memory() {
use crate::benchmark::measurement::{Measurement, Measurements};
use crate::quantity::{byte, Information};
use serde_json::json;
for (memory, expected_memory) in [
(None, None),
(
Some(Information::new::<byte>(0.0)),
Some(json!({"value": 0.0, "unit": "byte"})),
),
(
Some(Information::new::<byte>(1024.0)),
Some(json!({"value": 1024.0, "unit": "byte"})),
),
] {
let result = BenchmarkResult {
command: "example".into(),
measurements: Measurements::new(vec![Measurement {
peak_memory_usage: memory,
..Measurement::default()
}]),
..BenchmarkResult::default()
};
let output = JsonExporter::default()
.serialize(&[result], None, SortOrder::Command)
.unwrap();
let actual: serde_json::Value = serde_json::from_slice(&output).unwrap();
let mut expected = json!({
"results": [{
"command": "example",
"measurements": [{
"time_wall_clock": {"value": 0.0, "unit": "second"},
"time_user": {"value": 0.0, "unit": "second"},
"time_system": {"value": 0.0, "unit": "second"},
"exit_code": 0
}]
}]
});
if let Some(memory) = expected_memory {
expected["results"][0]["measurements"][0]["peak_memory_usage"] = memory;
}
assert_eq!(actual, expected);
}
}
+24 -24
View File
@@ -33,21 +33,21 @@ fn test_markup_export_auto_ms() {
time_wall_clock: Time::new::<second>(0.09),
time_user: Time::new::<second>(0.09),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(0.10),
time_user: Time::new::<second>(0.10),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(0.14),
time_user: Time::new::<second>(0.14),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
]),
@@ -60,21 +60,21 @@ fn test_markup_export_auto_ms() {
time_wall_clock: Time::new::<second>(2.0),
time_user: Time::new::<second>(2.0),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(3.0),
time_user: Time::new::<second>(3.0),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(4.0),
time_user: Time::new::<second>(4.0),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
]),
@@ -132,21 +132,21 @@ fn test_markup_export_auto_s() {
time_wall_clock: Time::new::<second>(2.1),
time_user: Time::new::<second>(2.1),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(2.2),
time_user: Time::new::<second>(2.2),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(2.3),
time_user: Time::new::<second>(2.3),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
]),
@@ -159,21 +159,21 @@ fn test_markup_export_auto_s() {
time_wall_clock: Time::new::<second>(0.1),
time_user: Time::new::<second>(0.1),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(0.2),
time_user: Time::new::<second>(0.2),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(0.3),
time_user: Time::new::<second>(0.3),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
]),
@@ -231,21 +231,21 @@ fn test_markup_export_manual_ms() {
time_wall_clock: Time::new::<second>(2.1),
time_user: Time::new::<second>(2.1),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(2.2),
time_user: Time::new::<second>(2.2),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(2.3),
time_user: Time::new::<second>(2.3),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
]),
@@ -258,21 +258,21 @@ fn test_markup_export_manual_ms() {
time_wall_clock: Time::new::<second>(0.1),
time_user: Time::new::<second>(0.1),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(0.2),
time_user: Time::new::<second>(0.2),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(0.3),
time_user: Time::new::<second>(0.3),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
]),
@@ -329,21 +329,21 @@ fn test_markup_export_manual_s() {
time_wall_clock: Time::new::<second>(2.01),
time_user: Time::new::<second>(2.01),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(2.02),
time_user: Time::new::<second>(2.02),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(2.03),
time_user: Time::new::<second>(2.03),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
]),
@@ -356,21 +356,21 @@ fn test_markup_export_manual_s() {
time_wall_clock: Time::new::<second>(0.11),
time_user: Time::new::<second>(0.11),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(0.12),
time_user: Time::new::<second>(0.12),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
Measurement {
time_wall_clock: Time::new::<second>(0.13),
time_user: Time::new::<second>(0.13),
time_system: Time::zero(),
peak_memory_usage: Information::new::<byte>(1024.),
peak_memory_usage: Some(Information::new::<byte>(1024.)),
exit_status: ExitStatus::default(),
},
]),