3 # Copyright (C) 2019 Simon Marchi <simon.marchi@efficios.com>
5 # This program is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU General Public License
7 # as published by the Free Software Foundation; only version 2
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 # This file tests what happens when we trim at different points in the message
24 if [ "x${BT_TESTS_SRCDIR:-}" != "x" ]; then
25 UTILSSH
="$BT_TESTS_SRCDIR/utils/utils.sh"
27 UTILSSH
="$(dirname "$0")/../../utils/utils.sh"
30 # shellcheck source=../../utils/utils.sh
33 data_dir
="$BT_TESTS_DATADIR/plugins/flt.utils.trimmer"
34 temp_stdout_expected
=$
(mktemp
)
35 temp_stderr_expected
="/dev/null"
43 # with_stream_msgs_cs and with_packet_msgs are set to "true" or "false"
46 "--plugin-path" "$data_dir"
47 "-c" "src.test-trimmer.TheSourceOfAllEvil"
48 "-p" "with-stream-msgs-cs=$with_stream_msgs_cs"
49 "-p" "with-packet-msgs=$with_packet_msgs"
50 "-c" "sink.text.details"
51 "--params=compact=true,with-metadata=false"
54 if [ "$with_stream_msgs_cs" = "true" ]; then
55 test_name
="with stream message clock snapshots"
57 test_name
="without stream message clock snapshots"
60 if [ "$with_packet_msgs" = "true" ]; then
61 test_name
="$test_name, with packet messages"
63 test_name
="$test_name, without packet messages"
66 if [ -n "$begin_time" ]; then
67 local_args
+=("--begin=$begin_time")
68 test_name
="$test_name, with --begin=$begin_time"
70 test_name
="$test_name, without --begin"
73 if [ -n "$end_time" ]; then
74 local_args
+=("--end=$end_time")
75 test_name
="$test_name, with --end=$end_time"
77 test_name
="$test_name, without --end"
80 bt_diff_cli
"$temp_stdout_expected" "$temp_stderr_expected" "${local_args[@]}"
84 function test_with_stream_msg_cs_with_packets
{
85 with_stream_msgs_cs
="true"
86 with_packet_msgs
="true"
88 # Baseline (without trimming)
89 cat <<- 'END' > "$temp_stdout_expected"
90 [100 10,100,000,000,000] {0 0 0} Stream beginning
91 [200 10,200,000,000,000] {0 0 0} Packet beginning
92 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
93 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
94 [900 10,900,000,000,000] {0 0 0} Packet end
95 [1000 11,000,000,000,000] {0 0 0} Stream end
99 # Trim begin at a time before what the clock class can represent
100 cat <<- 'END' > "$temp_stdout_expected"
101 [100 10,100,000,000,000] {0 0 0} Stream beginning
102 [200 10,200,000,000,000] {0 0 0} Packet beginning
103 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
104 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
105 [900 10,900,000,000,000] {0 0 0} Packet end
106 [1000 11,000,000,000,000] {0 0 0} Stream end
110 # Trim begin before stream beginning
111 cat <<- 'END' > "$temp_stdout_expected"
112 [100 10,100,000,000,000] {0 0 0} Stream beginning
113 [200 10,200,000,000,000] {0 0 0} Packet beginning
114 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
115 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
116 [900 10,900,000,000,000] {0 0 0} Packet end
117 [1000 11,000,000,000,000] {0 0 0} Stream end
121 # Trim begin before packet beginning
122 cat <<- 'END' > "$temp_stdout_expected"
123 [150 10,150,000,000,000] {0 0 0} Stream beginning
124 [200 10,200,000,000,000] {0 0 0} Packet beginning
125 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
126 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
127 [900 10,900,000,000,000] {0 0 0} Packet end
128 [1000 11,000,000,000,000] {0 0 0} Stream end
132 # Trim begin before first event
133 cat <<- 'END' > "$temp_stdout_expected"
134 [250 10,250,000,000,000] {0 0 0} Stream beginning
135 [250 10,250,000,000,000] {0 0 0} Packet beginning
136 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
137 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
138 [900 10,900,000,000,000] {0 0 0} Packet end
139 [1000 11,000,000,000,000] {0 0 0} Stream end
143 # Trim begin before second event
144 cat <<- 'END' > "$temp_stdout_expected"
145 [350 10,350,000,000,000] {0 0 0} Stream beginning
146 [350 10,350,000,000,000] {0 0 0} Packet beginning
147 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
148 [900 10,900,000,000,000] {0 0 0} Packet end
149 [1000 11,000,000,000,000] {0 0 0} Stream end
154 # Trim begin before packet end
155 cat <<- 'END' > "$temp_stdout_expected"
156 [850 10,850,000,000,000] {0 0 0} Stream beginning
157 [850 10,850,000,000,000] {0 0 0} Packet beginning
158 [900 10,900,000,000,000] {0 0 0} Packet end
159 [1000 11,000,000,000,000] {0 0 0} Stream end
164 # Trim begin after everything
165 cat <<- 'END' > "$temp_stdout_expected"
170 # Trim end after stream end
171 cat <<- 'END' > "$temp_stdout_expected"
172 [100 10,100,000,000,000] {0 0 0} Stream beginning
173 [200 10,200,000,000,000] {0 0 0} Packet beginning
174 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
175 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
176 [900 10,900,000,000,000] {0 0 0} Packet end
177 [1000 11,000,000,000,000] {0 0 0} Stream end
182 # Trim end after packet end
183 cat <<- 'END' > "$temp_stdout_expected"
184 [100 10,100,000,000,000] {0 0 0} Stream beginning
185 [200 10,200,000,000,000] {0 0 0} Packet beginning
186 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
187 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
188 [900 10,900,000,000,000] {0 0 0} Packet end
189 [950 10,950,000,000,000] {0 0 0} Stream end
194 # Trim end after second event
195 cat <<- 'END' > "$temp_stdout_expected"
196 [100 10,100,000,000,000] {0 0 0} Stream beginning
197 [200 10,200,000,000,000] {0 0 0} Packet beginning
198 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
199 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
200 [450 10,450,000,000,000] {0 0 0} Packet end
201 [450 10,450,000,000,000] {0 0 0} Stream end
206 # Trim end after first event
207 cat <<- 'END' > "$temp_stdout_expected"
208 [100 10,100,000,000,000] {0 0 0} Stream beginning
209 [200 10,200,000,000,000] {0 0 0} Packet beginning
210 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
211 [350 10,350,000,000,000] {0 0 0} Packet end
212 [350 10,350,000,000,000] {0 0 0} Stream end
217 # Trim end after packet beginning
218 cat <<- 'END' > "$temp_stdout_expected"
219 [100 10,100,000,000,000] {0 0 0} Stream beginning
220 [200 10,200,000,000,000] {0 0 0} Packet beginning
221 [250 10,250,000,000,000] {0 0 0} Packet end
222 [250 10,250,000,000,000] {0 0 0} Stream end
227 # Trim end after stream beginning
228 cat <<- 'END' > "$temp_stdout_expected"
229 [100 10,100,000,000,000] {0 0 0} Stream beginning
230 [150 10,150,000,000,000] {0 0 0} Stream end
235 # Trim end before everything
236 cat <<- 'END' > "$temp_stdout_expected"
241 # Trim end at a time before what the clock class can represent
242 cat <<- 'END' > "$temp_stdout_expected"
248 function test_without_stream_msg_cs_with_packets {
249 with_stream_msgs_cs="false"
250 with_packet_msgs="true"
252 # Baseline (without trimming)
253 cat <<- 'END' > "$temp_stdout_expected"
254 [Unknown] {0 0 0} Stream beginning
255 [200 10,200,000,000,000] {0 0 0} Packet beginning
256 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
257 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
258 [900 10,900,000,000,000] {0 0 0} Packet end
259 [Unknown] {0 0 0} Stream end
263 # Trim begin at a time before what the clock class can represent
264 cat <<- 'END' > "$temp_stdout_expected"
265 [Unknown] {0 0 0} Stream beginning
266 [200 10,200,000,000,000] {0 0 0} Packet beginning
267 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
268 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
269 [900 10,900,000,000,000] {0 0 0} Packet end
270 [Unknown] {0 0 0} Stream end
274 # Trim begin before stream beginning
275 cat <<- 'END' > "$temp_stdout_expected"
276 [Unknown] {0 0 0} Stream beginning
277 [200 10,200,000,000,000] {0 0 0} Packet beginning
278 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
279 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
280 [900 10,900,000,000,000] {0 0 0} Packet end
281 [Unknown] {0 0 0} Stream end
285 # Trim begin before packet beginning
286 cat <<- 'END' > "$temp_stdout_expected"
287 [Unknown] {0 0 0} Stream beginning
288 [200 10,200,000,000,000] {0 0 0} Packet beginning
289 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
290 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
291 [900 10,900,000,000,000] {0 0 0} Packet end
292 [Unknown] {0 0 0} Stream end
296 # Trim begin before first event
297 cat <<- 'END' > "$temp_stdout_expected"
298 [250 10,250,000,000,000] {0 0 0} Stream beginning
299 [250 10,250,000,000,000] {0 0 0} Packet beginning
300 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
301 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
302 [900 10,900,000,000,000] {0 0 0} Packet end
303 [Unknown] {0 0 0} Stream end
307 # Trim begin before second event
308 cat <<- 'END' > "$temp_stdout_expected"
309 [350 10,350,000,000,000] {0 0 0} Stream beginning
310 [350 10,350,000,000,000] {0 0 0} Packet beginning
311 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
312 [900 10,900,000,000,000] {0 0 0} Packet end
313 [Unknown] {0 0 0} Stream end
318 # Trim begin before packet end
319 cat <<- 'END' > "$temp_stdout_expected"
320 [850 10,850,000,000,000] {0 0 0} Stream beginning
321 [850 10,850,000,000,000] {0 0 0} Packet beginning
322 [900 10,900,000,000,000] {0 0 0} Packet end
323 [Unknown] {0 0 0} Stream end
328 # Trim begin after everything
329 cat <<- 'END' > "$temp_stdout_expected"
334 # Trim end after stream end
335 cat <<- 'END' > "$temp_stdout_expected"
336 [Unknown] {0 0 0} Stream beginning
337 [200 10,200,000,000,000] {0 0 0} Packet beginning
338 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
339 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
340 [900 10,900,000,000,000] {0 0 0} Packet end
341 [Unknown] {0 0 0} Stream end
346 # Trim end after packet end
347 cat <<- 'END' > "$temp_stdout_expected"
348 [Unknown] {0 0 0} Stream beginning
349 [200 10,200,000,000,000] {0 0 0} Packet beginning
350 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
351 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
352 [900 10,900,000,000,000] {0 0 0} Packet end
353 [Unknown] {0 0 0} Stream end
358 # Trim end after second event
359 cat <<- 'END' > "$temp_stdout_expected"
360 [Unknown] {0 0 0} Stream beginning
361 [200 10,200,000,000,000] {0 0 0} Packet beginning
362 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
363 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
364 [450 10,450,000,000,000] {0 0 0} Packet end
365 [450 10,450,000,000,000] {0 0 0} Stream end
370 # Trim end after first event
371 cat <<- 'END' > "$temp_stdout_expected"
372 [Unknown] {0 0 0} Stream beginning
373 [200 10,200,000,000,000] {0 0 0} Packet beginning
374 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
375 [350 10,350,000,000,000] {0 0 0} Packet end
376 [350 10,350,000,000,000] {0 0 0} Stream end
381 # Trim end after packet beginning
382 cat <<- 'END' > "$temp_stdout_expected"
383 [Unknown] {0 0 0} Stream beginning
384 [200 10,200,000,000,000] {0 0 0} Packet beginning
385 [250 10,250,000,000,000] {0 0 0} Packet end
386 [250 10,250,000,000,000] {0 0 0} Stream end
391 # Trim end after stream beginning
392 cat <<- 'END' > "$temp_stdout_expected"
393 [Unknown] {0 0 0} Stream beginning
394 [Unknown] {0 0 0} Stream end
399 # Trim end before everything
400 cat <<- 'END' > "$temp_stdout_expected"
401 [Unknown] {0 0 0} Stream beginning
402 [Unknown] {0 0 0} Stream end
407 # Trim end at a time before what the clock class can represent
408 cat <<- 'END' > "$temp_stdout_expected"
409 [Unknown] {0 0 0} Stream beginning
410 [Unknown] {0 0 0} Stream end
416 function test_with_stream_msg_cs_without_packets {
417 with_stream_msgs_cs="true"
418 with_packet_msgs="false"
420 # Baseline (without trimming)
421 cat <<- 'END' > "$temp_stdout_expected"
422 [100 10,100,000,000,000] {0 0 0} Stream beginning
423 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
424 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
425 [1000 11,000,000,000,000] {0 0 0} Stream end
429 # Trim begin at a time before what the clock class can represent
430 cat <<- 'END' > "$temp_stdout_expected"
431 [100 10,100,000,000,000] {0 0 0} Stream beginning
432 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
433 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
434 [1000 11,000,000,000,000] {0 0 0} Stream end
438 # Trim begin before stream beginning
439 cat <<- 'END' > "$temp_stdout_expected"
440 [100 10,100,000,000,000] {0 0 0} Stream beginning
441 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
442 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
443 [1000 11,000,000,000,000] {0 0 0} Stream end
447 # Trim begin before first event
448 cat <<- 'END' > "$temp_stdout_expected"
449 [250 10,250,000,000,000] {0 0 0} Stream beginning
450 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
451 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
452 [1000 11,000,000,000,000] {0 0 0} Stream end
456 # Trim begin before second event
457 cat <<- 'END' > "$temp_stdout_expected"
458 [350 10,350,000,000,000] {0 0 0} Stream beginning
459 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
460 [1000 11,000,000,000,000] {0 0 0} Stream end
465 # Trim begin before packet end
466 cat <<- 'END' > "$temp_stdout_expected"
467 [850 10,850,000,000,000] {0 0 0} Stream beginning
468 [1000 11,000,000,000,000] {0 0 0} Stream end
473 # Trim begin after everything
474 cat <<- 'END' > "$temp_stdout_expected"
479 # Trim end after stream end
480 cat <<- 'END' > "$temp_stdout_expected"
481 [100 10,100,000,000,000] {0 0 0} Stream beginning
482 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
483 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
484 [1000 11,000,000,000,000] {0 0 0} Stream end
489 # Trim end after packet end
490 cat <<- 'END' > "$temp_stdout_expected"
491 [100 10,100,000,000,000] {0 0 0} Stream beginning
492 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
493 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
494 [950 10,950,000,000,000] {0 0 0} Stream end
499 # Trim end after second event
500 cat <<- 'END' > "$temp_stdout_expected"
501 [100 10,100,000,000,000] {0 0 0} Stream beginning
502 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
503 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
504 [450 10,450,000,000,000] {0 0 0} Stream end
509 # Trim end after first event
510 cat <<- 'END' > "$temp_stdout_expected"
511 [100 10,100,000,000,000] {0 0 0} Stream beginning
512 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
513 [350 10,350,000,000,000] {0 0 0} Stream end
518 # Trim end after packet beginning
519 cat <<- 'END' > "$temp_stdout_expected"
520 [100 10,100,000,000,000] {0 0 0} Stream beginning
521 [250 10,250,000,000,000] {0 0 0} Stream end
526 # Trim end after stream beginning
527 cat <<- 'END' > "$temp_stdout_expected"
528 [100 10,100,000,000,000] {0 0 0} Stream beginning
529 [150 10,150,000,000,000] {0 0 0} Stream end
534 # Trim end before everything
535 cat <<- 'END' > "$temp_stdout_expected"
540 # Trim end at a time before what the clock class can represent
541 cat <<- 'END' > "$temp_stdout_expected"
547 function test_without_stream_msg_cs_without_packets {
548 with_stream_msgs_cs="false"
549 with_packet_msgs="false"
551 # Baseline (without trimming)
552 cat <<- 'END' > "$temp_stdout_expected"
553 [Unknown] {0 0 0} Stream beginning
554 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
555 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
556 [Unknown] {0 0 0} Stream end
560 # Trim begin at a time before what the clock class can represent
561 cat <<- 'END' > "$temp_stdout_expected"
562 [Unknown] {0 0 0} Stream beginning
563 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
564 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
565 [Unknown] {0 0 0} Stream end
569 # Trim begin before stream beginning
570 cat <<- 'END' > "$temp_stdout_expected"
571 [Unknown] {0 0 0} Stream beginning
572 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
573 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
574 [Unknown] {0 0 0} Stream end
578 # Trim begin before second event
579 cat <<- 'END' > "$temp_stdout_expected"
580 [350 10,350,000,000,000] {0 0 0} Stream beginning
581 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
582 [Unknown] {0 0 0} Stream end
587 # Trim begin after everything
588 cat <<- 'END' > "$temp_stdout_expected"
593 # Trim end after stream end
594 cat <<- 'END' > "$temp_stdout_expected"
595 [Unknown] {0 0 0} Stream beginning
596 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
597 [400 10,400,000,000,000] {0 0 0} Event `event 2` (1)
598 [Unknown] {0 0 0} Stream end
603 # Trim end after first event
604 cat <<- 'END' > "$temp_stdout_expected"
605 [Unknown] {0 0 0} Stream beginning
606 [300 10,300,000,000,000] {0 0 0} Event `event 1` (0)
607 [350 10,350,000,000,000] {0 0 0} Stream end
612 # Trim end after stream beginning
613 cat <<- 'END' > "$temp_stdout_expected"
614 [Unknown] {0 0 0} Stream beginning
615 [Unknown] {0 0 0} Stream end
620 # Trim end at a time before what the clock class can represent
621 cat <<- 'END' > "$temp_stdout_expected"
622 [Unknown] {0 0 0} Stream beginning
623 [Unknown] {0 0 0} Stream end
629 test_with_stream_msg_cs_with_packets
630 test_without_stream_msg_cs_with_packets
631 test_with_stream_msg_cs_without_packets
632 test_without_stream_msg_cs_without_packets
634 # Do not `rm` $temp_stderr_expected because it's set to `/dev/null` right now
635 # and that would print an error.
636 rm -f "$temp_stdout_expected"