tracing-perfetto/src/main.rs
2025-02-13 22:37:39 +01:00

132 lines
4.5 KiB
Rust

use prost::Message;
mod perfetto {
include!(concat!(env!("OUT_DIR"), "/perfetto.trace.rs"));
}
fn main() {
let mut packets = Vec::new();
packets.push(perfetto::TracePacket {
timestamp: None,
data: Some(perfetto::trace_packet::Data::TrackDescriptor(
perfetto::TrackDescriptor {
uuid: Some(894893984),
parent_uuid: None,
static_or_dynamic_name: None,
process: Some(perfetto::ProcessDescriptor {
pid: Some(1234),
process_name: Some(String::from("test")),
}),
thread: None,
},
)),
optional_trusted_packet_sequence_id: Some(
perfetto::trace_packet::OptionalTrustedPacketSequenceId::TrustedPacketSequenceId(
3903809,
),
),
});
packets.push(perfetto::TracePacket {
timestamp: None,
data: Some(perfetto::trace_packet::Data::TrackDescriptor(
perfetto::TrackDescriptor {
uuid: Some(49083589894),
parent_uuid: None,
static_or_dynamic_name: None,
process: None,
thread: Some(perfetto::ThreadDescriptor {
pid: Some(1234),
thread_name: Some(String::from("test_thread")),
tid: Some(10),
}),
},
)),
optional_trusted_packet_sequence_id: Some(
perfetto::trace_packet::OptionalTrustedPacketSequenceId::TrustedPacketSequenceId(
3903809,
),
),
});
packets.push(perfetto::TracePacket {
timestamp: Some(100),
data: Some(perfetto::trace_packet::Data::TrackEvent(
perfetto::TrackEvent {
track_uuid: Some(49083589894),
categories: vec![],
category_iids: vec![],
name_field: Some(perfetto::track_event::NameField::Name(String::from("Test"))),
r#type: Some(perfetto::track_event::Type::Instant as i32),
},
)),
optional_trusted_packet_sequence_id: Some(
perfetto::trace_packet::OptionalTrustedPacketSequenceId::TrustedPacketSequenceId(
3903809,
),
),
});
packets.push(perfetto::TracePacket {
timestamp: Some(200),
data: Some(perfetto::trace_packet::Data::TrackEvent(
perfetto::TrackEvent {
track_uuid: Some(49083589894),
categories: vec![],
category_iids: vec![],
name_field: Some(perfetto::track_event::NameField::Name(String::from("Test"))),
r#type: Some(perfetto::track_event::Type::SliceBegin as i32),
},
)),
optional_trusted_packet_sequence_id: Some(
perfetto::trace_packet::OptionalTrustedPacketSequenceId::TrustedPacketSequenceId(
3903809,
),
),
});
packets.push(perfetto::TracePacket {
timestamp: Some(400),
data: Some(perfetto::trace_packet::Data::TrackEvent(
perfetto::TrackEvent {
track_uuid: Some(49083589894),
categories: vec![],
category_iids: vec![],
name_field: Some(perfetto::track_event::NameField::Name(String::from("Test"))),
r#type: Some(perfetto::track_event::Type::Instant as i32),
},
)),
optional_trusted_packet_sequence_id: Some(
perfetto::trace_packet::OptionalTrustedPacketSequenceId::TrustedPacketSequenceId(
3903809,
),
),
});
packets.push(perfetto::TracePacket {
timestamp: Some(600),
data: Some(perfetto::trace_packet::Data::TrackEvent(
perfetto::TrackEvent {
track_uuid: Some(49083589894),
categories: vec![],
category_iids: vec![],
name_field: Some(perfetto::track_event::NameField::Name(String::from("Test"))),
r#type: Some(perfetto::track_event::Type::SliceEnd as i32),
},
)),
optional_trusted_packet_sequence_id: Some(
perfetto::trace_packet::OptionalTrustedPacketSequenceId::TrustedPacketSequenceId(
3903809,
),
),
});
let trace = perfetto::Trace { packet: packets };
let mut buf = Vec::with_capacity(trace.encoded_len());
trace.encode(&mut buf).unwrap();
std::fs::write("out.trace", buf);
dbg!(trace);
}