132 lines
4.5 KiB
Rust
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);
|
|
}
|