use super::*;
use tempfile::TempDir;
#[test]
#[ignore = "release-mode session snapshot measurement; run with --release --ignored --nocapture"]
fn session_snapshot_size_measurement() {
let temp = TempDir::new().unwrap();
for size in [64 * 1024usize, 32 * 1024 * 1024, 128 * 1024 * 1024] {
let path = temp.path().join(format!("snapshot-{size}.jsonl"));
fs::write(&path, vec![b'x'; size]).unwrap();
crate::sessions::store::profiling_support::secure_profiling_session_root(temp.path());
let started = std::time::Instant::now();
let snapshot = capture_session_snapshot(&path).unwrap().unwrap();
eprintln!(
"session_snapshot file_bytes={} bytes_read={} elapsed_us={}",
size,
snapshot.prefix.len() as u64
+ if snapshot.identity.is_none() {
snapshot.len
} else {
0
},
started.elapsed().as_micros()
);
}
}
#[test]
#[ignore = "release-mode durable append measurement; run with --release --ignored --nocapture"]
fn session_event_append_measurement() {
let temp = TempDir::new().unwrap();
let root = temp.path().join("sessions");
let session = crate::sessions::SessionManager::new(root.clone())
.create()
.unwrap();
let event = SessionEvent::new(
"assistant_chunk",
session.id().to_string(),
temp.path().to_path_buf(),
serde_json::json!({"text": "Representative streamed assistant output."}),
);
let count = 500;
let mut elapsed = std::time::Duration::ZERO;
let mut previous = String::new();
let mut counter_writes = 0;
for _ in 0..count {
let started = std::time::Instant::now();
session.append(&event).unwrap();
elapsed += started.elapsed();
let current =
fs::read_to_string(root.join(super::super::store::EVENT_ID_SEQUENCE_FILE)).unwrap();
counter_writes += usize::from(current != previous);
previous = current;
}
eprintln!(
"session_event_append os={} appends={count} append_total_ms={:.3} per_append_us={:.3} counter_writes={counter_writes}",
std::env::consts::OS,
elapsed.as_secs_f64() * 1000.0,
elapsed.as_secs_f64() * 1_000_000.0 / f64::from(count),
);
}