blob: 779998bdfe67a61d5e2c20802167fe9ffa08f5ee [file] [log] [blame]
# Sequence 1 defaults to track for "t1".
packet {
trusted_packet_sequence_id: 1
timestamp: 0
incremental_state_cleared: true
first_packet_on_sequence: true
track_descriptor {
uuid: 1
parent_uuid: 10
thread {
pid: 5
tid: 1
thread_name: "t1"
}
}
trace_packet_defaults {
track_event_defaults {
track_uuid: 1
}
}
}
# Sequence 2 defaults to track for "t2".
packet {
trusted_packet_sequence_id: 2
timestamp: 0
incremental_state_cleared: true
first_packet_on_sequence: true
track_descriptor {
uuid: 2
parent_uuid: 10
thread {
pid: 5
tid: 2
thread_name: "t2"
}
}
trace_packet_defaults {
track_event_defaults {
track_uuid: 2
}
}
}
# Both thread tracks are nested underneath this process track.
packet {
trusted_packet_sequence_id: 1
timestamp: 0
track_descriptor {
uuid: 10
process {
pid: 5
process_name: "p1"
}
chrome_process {
host_app_package_name: "host_app"
}
}
}
# And we have an async track underneath the process too.
packet {
trusted_packet_sequence_id: 1
timestamp: 0
track_descriptor {
uuid: 11
parent_uuid: 10
name: "async"
}
}
packet {
trusted_packet_sequence_id: 1
timestamp: 100
track_descriptor {
uuid: 12
parent_uuid: 10
name: "async2"
}
}
packet {
trusted_packet_sequence_id: 2
timestamp: 200
track_descriptor {
uuid: 12
parent_uuid: 10
name: "async2"
}
}
# Threads also can have child async tracks.
packet {
trusted_packet_sequence_id: 1
timestamp: 200
track_descriptor {
uuid: 14
parent_uuid: 2
name: "async3"
}
}
# Should appear on default track "t1".
packet {
trusted_packet_sequence_id: 1
timestamp: 1000
track_event {
categories: "cat"
name: "event1_on_t1"
type: 3
}
}
# Should appear on default track "t2".
packet {
trusted_packet_sequence_id: 2
timestamp: 2000
track_event {
categories: "cat"
name: "event1_on_t2"
type: 3
}
}
# Should appear on overridden track "t2".
packet {
trusted_packet_sequence_id: 1
timestamp: 3000
track_event {
track_uuid: 2
categories: "cat"
name: "event2_on_t2"
type: 3
}
}
# Should appear on process track.
packet {
trusted_packet_sequence_id: 1
timestamp: 4000
track_event {
track_uuid: 10
categories: "cat"
name: "event1_on_p1"
type: 3
}
}
# Should appear on async track.
packet {
trusted_packet_sequence_id: 1
timestamp: 5000
track_event {
track_uuid: 11
categories: "cat"
name: "event1_on_async"
type: 3
}
}
# Event for the "async2" track starting on one thread and ending on another.
packet {
trusted_packet_sequence_id: 1
timestamp: 5100
track_event {
track_uuid: 12
categories: "cat"
name: "event1_on_async2"
type: 1
}
}
packet {
trusted_packet_sequence_id: 2
timestamp: 5200
track_event {
track_uuid: 12
categories: "cat"
name: "event1_on_async2"
type: 2
}
}
# If we later see another track descriptor for tid 1, but with a different uuid,
# we should detect tid reuse and start a new thread.
packet {
trusted_packet_sequence_id: 3
timestamp: 10000
incremental_state_cleared: true
first_packet_on_sequence: true
track_descriptor {
uuid: 3
parent_uuid: 10
thread {
pid: 5
tid: 1
thread_name: "t3"
}
}
}
# Should appear on t3.
packet {
trusted_packet_sequence_id: 3
timestamp: 11000
track_event {
track_uuid: 3
categories: "cat"
name: "event1_on_t3"
type: 3
}
}
# If we later see another track descriptor for pid 5, but with a different uuid,
# we should detect pid reuse and start a new process.
packet {
trusted_packet_sequence_id: 4
timestamp: 20000
incremental_state_cleared: true
track_descriptor {
uuid: 20
process {
pid: 5
process_name: "p2"
}
}
}
# Should appear on p2.
packet {
trusted_packet_sequence_id: 4
timestamp: 21000
track_event {
track_uuid: 20
categories: "cat"
name: "event1_on_p2"
type: 3
}
}
# Another thread t4 in the new process.
packet {
trusted_packet_sequence_id: 4
timestamp: 22000
incremental_state_cleared: true
track_descriptor {
uuid: 21
parent_uuid: 20
thread {
pid: 5
tid: 4
thread_name: "t4"
}
}
}
# Should appear on t4.
packet {
trusted_packet_sequence_id: 4
timestamp: 22000
track_event {
track_uuid: 21
categories: "cat"
name: "event1_on_t4"
type: 3
}
}
# Another packet for a thread track in the old process, badly sorted.
packet {
trusted_packet_sequence_id: 2
timestamp: 6000
track_event {
track_uuid: 1
categories: "cat"
name: "event3_on_t1"
type: 3
}
}
# Override the track to the default descriptor track for an event with a
# TrackEvent type. Should appear on the default descriptor track instead of
# "t1".
packet {
trusted_packet_sequence_id: 1
timestamp: 30000
track_event {
track_uuid: 0
categories: "cat"
name: "event1_on_t1"
type: 3
}
}
# But a legacy event without TrackEvent type falls back to legacy tracks (based
# on ThreadDescriptor / async IDs / legacy instant scopes). This instant event
# should appear on the process track "p2".
packet {
trusted_packet_sequence_id: 1
timestamp: 31000
track_event {
track_uuid: 0
categories: "cat"
name: "event2_on_p2"
legacy_event {
phase: 73 # 'I'
instant_event_scope: 2 # Process scope
}
}
}
# And pid/tid overrides take effect even for TrackEvent type events.
packet {
trusted_packet_sequence_id: 1
timestamp: 32000
track_event {
track_uuid: 0
categories: "cat"
name: "event2_on_t4"
type: 3
legacy_event {
pid_override: 5
tid_override: 4
}
}
}
# Track descriptor without name and process/thread association derives its
# name from the first event on the track.
packet {
trusted_packet_sequence_id: 1
timestamp: 40000
track_descriptor {
uuid: 13
parent_uuid: 10
}
}
packet {
trusted_packet_sequence_id: 1
timestamp: 40000
track_event {
track_uuid: 13
categories: "cat"
name: "event_and_track_async3"
type: 3
}
}