#!/bin/bash # # Copyright (C) 2019 Simon Marchi # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; only version 2 # of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # This file tests what happens when we trim at different points in the message # flow. SH_TAP=1 if [ "x${BT_TESTS_SRCDIR:-}" != "x" ]; then UTILSSH="$BT_TESTS_SRCDIR/utils/utils.sh" else UTILSSH="$(dirname "$0")/../../utils/utils.sh" fi # shellcheck source=../../../utils/utils.sh source "$UTILSSH" data_dir="$BT_TESTS_SRCDIR/data/plugins/flt.utils.trimmer" temp_expected=$(mktemp) plan_tests 32 function run_test { local begin_time="$1" local end_time="$2" if [ -n "$begin_time" ]; then begin="--begin=$begin_time" test_name="with $begin" else begin="" test_name="without --begin" fi if [ -n "$end_time" ]; then end="--end=$end_time" test_name="$test_name, with $end" else end="" test_name="$test_name, without --end" fi # with_stream_msgs_cs is set to "true" or "false" by the tests. cli_args="-c src.test-trimmer.TheSourceOfAllEvil -p 'with-stream-msgs-cs=$with_stream_msgs_cs' -c sink.text.details '--params=compact=true,with-metadata=false' '--plugin-path=$data_dir' $begin $end" bt_diff_cli "$cli_args" "$temp_expected" ok $? "$test_name" } function test_with_stream_msg_cs { with_stream_msgs_cs="true" # Baseline (without trimming) cat <<- 'END' > $temp_expected [100 10,100,000,000,000] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [1000 11,000,000,000,000] {0 0 0} Stream end END run_test "" "" # Trim begin at a time before what the clock class can represent cat <<- 'END' > $temp_expected [100 10,100,000,000,000] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [1000 11,000,000,000,000] {0 0 0} Stream end END run_test 50 "" # Trim begin before stream beginning cat <<- 'END' > $temp_expected [100 10,100,000,000,000] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [1000 11,000,000,000,000] {0 0 0} Stream end END run_test 10050 "" # Trim begin before packet beginning cat <<- 'END' > $temp_expected [150 10,150,000,000,000] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [1000 11,000,000,000,000] {0 0 0} Stream end END run_test 10150 "" # Trim begin before first event cat <<- 'END' > $temp_expected [250 10,250,000,000,000] {0 0 0} Stream beginning [250 10,250,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [1000 11,000,000,000,000] {0 0 0} Stream end END run_test 10250 "" # Trim begin before second event cat <<- 'END' > $temp_expected [350 10,350,000,000,000] {0 0 0} Stream beginning [350 10,350,000,000,000] {0 0 0} Packet beginning [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [1000 11,000,000,000,000] {0 0 0} Stream end END run_test 10350 "" # Trim begin before packet end cat <<- 'END' > $temp_expected [850 10,850,000,000,000] {0 0 0} Stream beginning [850 10,850,000,000,000] {0 0 0} Packet beginning [900 10,900,000,000,000] {0 0 0} Packet end [1000 11,000,000,000,000] {0 0 0} Stream end END run_test 10850 "" # Trim begin after everything cat <<- 'END' > $temp_expected END run_test 11050 "" # Trim end after stream end cat <<- 'END' > $temp_expected [100 10,100,000,000,000] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [1000 11,000,000,000,000] {0 0 0} Stream end END run_test "" 11050 # Trim end after packet end cat <<- 'END' > $temp_expected [100 10,100,000,000,000] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [950 10,950,000,000,000] {0 0 0} Stream end END run_test "" 10950 # Trim end after second event cat <<- 'END' > $temp_expected [100 10,100,000,000,000] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [450 10,450,000,000,000] {0 0 0} Packet end [450 10,450,000,000,000] {0 0 0} Stream end END run_test "" 10450 # Trim end after first event cat <<- 'END' > $temp_expected [100 10,100,000,000,000] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [350 10,350,000,000,000] {0 0 0} Packet end [350 10,350,000,000,000] {0 0 0} Stream end END run_test "" 10350 # Trim end after packet beginning cat <<- 'END' > $temp_expected [100 10,100,000,000,000] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [250 10,250,000,000,000] {0 0 0} Packet end [250 10,250,000,000,000] {0 0 0} Stream end END run_test "" 10250 # Trim end after stream beginning cat <<- 'END' > $temp_expected [100 10,100,000,000,000] {0 0 0} Stream beginning [150 10,150,000,000,000] {0 0 0} Stream end END run_test "" 10150 # Trim end before everything cat <<- 'END' > $temp_expected END run_test "" 10050 # Trim end at a time before what the clock class can represent cat <<- 'END' > $temp_expected END run_test "" 50 } function test_without_stream_msg_cs { with_stream_msgs_cs="false" # Baseline (without trimming) cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [Unknown] {0 0 0} Stream end END run_test "" "" # Trim begin at a time before what the clock class can represent cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [Unknown] {0 0 0} Stream end END run_test 50 "" # Trim begin before stream beginning cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [Unknown] {0 0 0} Stream end END run_test 10050 "" # Trim begin before packet beginning cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [Unknown] {0 0 0} Stream end END run_test 10150 "" # Trim begin before first event cat <<- 'END' > $temp_expected [250 10,250,000,000,000] {0 0 0} Stream beginning [250 10,250,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [Unknown] {0 0 0} Stream end END run_test 10250 "" # Trim begin before second event cat <<- 'END' > $temp_expected [350 10,350,000,000,000] {0 0 0} Stream beginning [350 10,350,000,000,000] {0 0 0} Packet beginning [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [Unknown] {0 0 0} Stream end END run_test 10350 "" # Trim begin before packet end cat <<- 'END' > $temp_expected [850 10,850,000,000,000] {0 0 0} Stream beginning [850 10,850,000,000,000] {0 0 0} Packet beginning [900 10,900,000,000,000] {0 0 0} Packet end [Unknown] {0 0 0} Stream end END run_test 10850 "" # Trim begin after everything cat <<- 'END' > $temp_expected END run_test 11050 "" # Trim end after stream end cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [Unknown] {0 0 0} Stream end END run_test "" 11050 # Trim end after packet end cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [900 10,900,000,000,000] {0 0 0} Packet end [Unknown] {0 0 0} Stream end END run_test "" 10950 # Trim end after second event cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) [450 10,450,000,000,000] {0 0 0} Packet end [450 10,450,000,000,000] {0 0 0} Stream end END run_test "" 10450 # Trim end after first event cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) [350 10,350,000,000,000] {0 0 0} Packet end [350 10,350,000,000,000] {0 0 0} Stream end END run_test "" 10350 # Trim end after packet beginning cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [200 10,200,000,000,000] {0 0 0} Packet beginning [250 10,250,000,000,000] {0 0 0} Packet end [250 10,250,000,000,000] {0 0 0} Stream end END run_test "" 10250 # Trim end after stream beginning cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [Unknown] {0 0 0} Stream end END run_test "" 10150 # Trim end before everything cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [Unknown] {0 0 0} Stream end END run_test "" 10050 # Trim end at a time before what the clock class can represent cat <<- 'END' > $temp_expected [Unknown] {0 0 0} Stream beginning [Unknown] {0 0 0} Stream end END run_test "" 50 } test_with_stream_msg_cs test_without_stream_msg_cs rm -f "$temp_expected"