runtime_tracing 0.15.0

A library for the schema and tracing helpers for the CodeTracer db trace format
Documentation
use runtime_tracing::{TraceEventsFileFormat, TraceWriter, create_trace_reader, create_trace_writer};
use std::fs;
use std::path::Path;

fn test_binary_roundtrip(ver: TraceEventsFileFormat, binfile: &str) {
    let json_path = Path::new("tests/data/trace.json");

    let mut json_reader = create_trace_reader(TraceEventsFileFormat::Json);
    let original = json_reader.load_trace_events(json_path).unwrap();

    let bin_path_str = format!("tests/data/{}", binfile);
    let bin_path = Path::new(&bin_path_str);

    let mut bin_writer = create_trace_writer("", &[], ver);
    bin_writer.begin_writing_trace_events(bin_path).unwrap();
    TraceWriter::append_events(bin_writer.as_mut(), &mut original.clone());
    bin_writer.finish_writing_trace_events().unwrap();

    let mut bin_reader = create_trace_reader(TraceEventsFileFormat::Binary);
    let tracer2_events = bin_reader.load_trace_events(bin_path).unwrap();

    fs::remove_file(bin_path).unwrap();

    let orig_json = serde_json::to_string(&original).unwrap();
    let new_json = serde_json::to_string(&tracer2_events).unwrap();

    assert_eq!(orig_json, new_json);
}

#[test]
fn test_binary_roundtrip_v0() {
    test_binary_roundtrip(TraceEventsFileFormat::BinaryV0, "trace.v0.bin");
}

#[test]
fn test_binary_roundtrip_v1() {
    test_binary_roundtrip(TraceEventsFileFormat::Binary, "trace.v1.bin");
}