1 # SPDX-License-Identifier: GPL-2.0-only
3 # Copyright (C) 2019 EfficiOS Inc.
9 class TheIteratorOfAllEvil(bt2
._UserMessageIterator
):
10 def __init__(self
, config
, port
):
11 tc
, sc
, ec1
, ec2
, params
= port
.user_data
13 stream
= trace
.create_stream(sc
)
15 if params
["with-packet-msgs"]:
16 packet
= stream
.create_packet()
18 if params
["with-stream-msgs-cs"]:
19 sb_msg
= self
._create
_stream
_beginning
_message
(stream
, 100)
21 sb_msg
= self
._create
_stream
_beginning
_message
(stream
)
23 parent
= packet
if params
["with-packet-msgs"] else stream
25 ev_msg1
= self
._create
_event
_message
(ec1
, parent
, 300)
26 ev_msg2
= self
._create
_event
_message
(ec2
, parent
, 400)
28 if params
["with-stream-msgs-cs"]:
29 se_msg
= self
._create
_stream
_end
_message
(stream
, 1000)
31 se_msg
= self
._create
_stream
_end
_message
(stream
)
35 self
._msgs
.append(sb_msg
)
37 if params
["with-packet-msgs"]:
38 self
._msgs
.append(self
._create
_packet
_beginning
_message
(packet
, 200))
40 self
._msgs
.append(ev_msg1
)
41 self
._msgs
.append(ev_msg2
)
43 if params
["with-packet-msgs"]:
44 self
._msgs
.append(self
._create
_packet
_end
_message
(packet
, 900))
46 self
._msgs
.append(se_msg
)
49 config
.can_seek_forward
= True
51 def _user_seek_beginning(self
):
55 if self
._at
< len(self
._msgs
):
56 msg
= self
._msgs
[self
._at
]
63 @bt2.plugin_component_class
64 class TheSourceOfAllEvil(
65 bt2
._UserSourceComponent
, message_iterator_class
=TheIteratorOfAllEvil
67 def __init__(self
, config
, params
, obj
):
68 tc
= self
._create
_trace
_class
()
70 with_packets
= bool(params
["with-packet-msgs"])
72 # Use a clock class with an offset, so we can test with --begin or --end
73 # smaller than this offset (in other words, a time that it's not
74 # possible to represent with this clock class).
75 cc
= self
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(10000))
76 sc
= tc
.create_stream_class(
77 default_clock_class
=cc
,
78 supports_packets
=with_packets
,
79 packets_have_beginning_default_clock_snapshot
=with_packets
,
80 packets_have_end_default_clock_snapshot
=with_packets
,
82 ec1
= sc
.create_event_class(name
="event 1")
83 ec2
= sc
.create_event_class(name
="event 2")
84 self
._add
_output
_port
("out", (tc
, sc
, ec1
, ec2
, params
))
87 bt2
.register_plugin(__name__
, "test-trimmer")