From: Simon Marchi Date: Mon, 17 Feb 2020 22:30:59 +0000 (-0500) Subject: tests: improve flt.utils.trimmer/test_trimming to test streams without packets X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=e90ed87f10f39cabed0190ac06cfc3f4bfae73f0 tests: improve flt.utils.trimmer/test_trimming to test streams without packets Augment the test to make it test streams without packet support. A new parameter 'with-packet-msgs' must be passed to the test source component to control whether it will emit packet messages. There are now two configuration axis in this test (with and without stream message clock snapshots, with and without packet messages), which gives 4 configurations. I think it's still manageable to have them all written explicitly. However, if we are to add a third configuration axis, I think we'll need to refactor the test to avoid having all the expected outputs written explicitly, as it will become too big to be manageable. Change-Id: I0b488aa3f1506e9d43f320c1643a65db5317d63c Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/3106 Tested-by: jenkins Reviewed-by: Philippe Proulx --- diff --git a/tests/data/plugins/flt.utils.trimmer/bt_plugin_trimmer_test.py b/tests/data/plugins/flt.utils.trimmer/bt_plugin_trimmer_test.py index a59ea9bd..770f2cc5 100644 --- a/tests/data/plugins/flt.utils.trimmer/bt_plugin_trimmer_test.py +++ b/tests/data/plugins/flt.utils.trimmer/bt_plugin_trimmer_test.py @@ -7,30 +7,39 @@ class TheIteratorOfAllEvil(bt2._UserMessageIterator): trace = tc() stream = trace.create_stream(sc) - # Test with and without packets, once packets are optional. - packet = stream.create_packet() + if params['with-packet-msgs']: + packet = stream.create_packet() if params['with-stream-msgs-cs']: sb_msg = self._create_stream_beginning_message(stream, 100) else: sb_msg = self._create_stream_beginning_message(stream) - ev_msg1 = self._create_event_message(ec1, packet, 300) - ev_msg2 = self._create_event_message(ec2, packet, 400) + parent = packet if params['with-packet-msgs'] else stream + + ev_msg1 = self._create_event_message(ec1, parent, 300) + ev_msg2 = self._create_event_message(ec2, parent, 400) if params['with-stream-msgs-cs']: se_msg = self._create_stream_end_message(stream, 1000) else: se_msg = self._create_stream_end_message(stream) - self._msgs = [ - sb_msg, - self._create_packet_beginning_message(packet, 200), - ev_msg1, - ev_msg2, - self._create_packet_end_message(packet, 900), - se_msg, - ] + self._msgs = [] + + self._msgs.append(sb_msg) + + if params['with-packet-msgs']: + self._msgs.append(self._create_packet_beginning_message(packet, 200)) + + self._msgs.append(ev_msg1) + self._msgs.append(ev_msg2) + + if params['with-packet-msgs']: + self._msgs.append(self._create_packet_end_message(packet, 900)) + + self._msgs.append(se_msg) + self._at = 0 config.can_seek_forward = True @@ -53,15 +62,17 @@ class TheSourceOfAllEvil( def __init__(self, config, params, obj): tc = self._create_trace_class() + with_packets = bool(params['with-packet-msgs']) + # Use a clock class with an offset, so we can test with --begin or --end # smaller than this offset (in other words, a time that it's not # possible to represent with this clock class). cc = self._create_clock_class(frequency=1, offset=bt2.ClockClassOffset(10000)) sc = tc.create_stream_class( default_clock_class=cc, - supports_packets=True, - packets_have_beginning_default_clock_snapshot=True, - packets_have_end_default_clock_snapshot=True, + supports_packets=with_packets, + packets_have_beginning_default_clock_snapshot=with_packets, + packets_have_end_default_clock_snapshot=with_packets, ) ec1 = sc.create_event_class(name='event 1') ec2 = sc.create_event_class(name='event 2') diff --git a/tests/plugins/flt.utils.trimmer/test_trimming b/tests/plugins/flt.utils.trimmer/test_trimming index cf83a780..eec7cb11 100755 --- a/tests/plugins/flt.utils.trimmer/test_trimming +++ b/tests/plugins/flt.utils.trimmer/test_trimming @@ -34,17 +34,19 @@ data_dir="$BT_TESTS_DATADIR/plugins/flt.utils.trimmer" temp_stdout_expected=$(mktemp) temp_stderr_expected="/dev/null" -plan_tests 32 +plan_tests 56 function run_test { local begin_time="$1" local end_time="$2" - # with_stream_msgs_cs is set to "true" or "false" by the tests. + # with_stream_msgs_cs and with_packet_msgs are set to "true" or "false" + # by the tests. local local_args=( "--plugin-path" "$data_dir" "-c" "src.test-trimmer.TheSourceOfAllEvil" "-p" "with-stream-msgs-cs=$with_stream_msgs_cs" + "-p" "with-packet-msgs=$with_packet_msgs" "-c" "sink.text.details" "--params=compact=true,with-metadata=false" ) @@ -55,6 +57,12 @@ function run_test test_name="without stream message clock snapshots" fi + if [ "$with_packet_msgs" = "true" ]; then + test_name="$test_name, with packet messages" + else + test_name="$test_name, without packet messages" + fi + if [ -n "$begin_time" ]; then local_args+=("--begin=$begin_time") test_name="$test_name, with --begin=$begin_time" @@ -73,8 +81,9 @@ function run_test ok $? "$test_name" } -function test_with_stream_msg_cs { +function test_with_stream_msg_cs_with_packets { with_stream_msgs_cs="true" + with_packet_msgs="true" # Baseline (without trimming) cat <<- 'END' > "$temp_stdout_expected" @@ -236,8 +245,9 @@ function test_with_stream_msg_cs { run_test "" 50 } -function test_without_stream_msg_cs { +function test_without_stream_msg_cs_with_packets { with_stream_msgs_cs="false" + with_packet_msgs="true" # Baseline (without trimming) cat <<- 'END' > "$temp_stdout_expected" @@ -403,8 +413,223 @@ function test_without_stream_msg_cs { run_test "" 50 } -test_with_stream_msg_cs -test_without_stream_msg_cs +function test_with_stream_msg_cs_without_packets { + with_stream_msgs_cs="true" + with_packet_msgs="false" + + # Baseline (without trimming) + cat <<- 'END' > "$temp_stdout_expected" + [100 10,100,000,000,000] {0 0 0} Stream 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) + [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_stdout_expected" + [100 10,100,000,000,000] {0 0 0} Stream 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) + [1000 11,000,000,000,000] {0 0 0} Stream end + END + run_test 50 "" + + # Trim begin before stream beginning + cat <<- 'END' > "$temp_stdout_expected" + [100 10,100,000,000,000] {0 0 0} Stream 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) + [1000 11,000,000,000,000] {0 0 0} Stream end + END + run_test 10050 "" + + # Trim begin before first event + cat <<- 'END' > "$temp_stdout_expected" + [250 10,250,000,000,000] {0 0 0} Stream 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) + [1000 11,000,000,000,000] {0 0 0} Stream end + END + run_test 10250 "" + + # Trim begin before second event + cat <<- 'END' > "$temp_stdout_expected" + [350 10,350,000,000,000] {0 0 0} Stream beginning + [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) + [1000 11,000,000,000,000] {0 0 0} Stream end + END + + run_test 10350 "" + + # Trim begin before packet end + cat <<- 'END' > "$temp_stdout_expected" + [850 10,850,000,000,000] {0 0 0} Stream beginning + [1000 11,000,000,000,000] {0 0 0} Stream end + END + + run_test 10850 "" + + # Trim begin after everything + cat <<- 'END' > "$temp_stdout_expected" + END + + run_test 11050 "" + + # Trim end after stream end + cat <<- 'END' > "$temp_stdout_expected" + [100 10,100,000,000,000] {0 0 0} Stream 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) + [1000 11,000,000,000,000] {0 0 0} Stream end + END + + run_test "" 11050 + + # Trim end after packet end + cat <<- 'END' > "$temp_stdout_expected" + [100 10,100,000,000,000] {0 0 0} Stream 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) + [950 10,950,000,000,000] {0 0 0} Stream end + END + + run_test "" 10950 + + # Trim end after second event + cat <<- 'END' > "$temp_stdout_expected" + [100 10,100,000,000,000] {0 0 0} Stream 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} Stream end + END + + run_test "" 10450 + + # Trim end after first event + cat <<- 'END' > "$temp_stdout_expected" + [100 10,100,000,000,000] {0 0 0} Stream beginning + [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) + [350 10,350,000,000,000] {0 0 0} Stream end + END + + run_test "" 10350 + + # Trim end after packet beginning + cat <<- 'END' > "$temp_stdout_expected" + [100 10,100,000,000,000] {0 0 0} Stream beginning + [250 10,250,000,000,000] {0 0 0} Stream end + END + + run_test "" 10250 + + # Trim end after stream beginning + cat <<- 'END' > "$temp_stdout_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_stdout_expected" + END + + run_test "" 10050 + + # Trim end at a time before what the clock class can represent + cat <<- 'END' > "$temp_stdout_expected" + END + + run_test "" 50 +} + +function test_without_stream_msg_cs_without_packets { + with_stream_msgs_cs="false" + with_packet_msgs="false" + + # Baseline (without trimming) + cat <<- 'END' > "$temp_stdout_expected" + [Unknown] {0 0 0} Stream 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) + [Unknown] {0 0 0} Stream end + END + run_test "" "" + + # Trim begin at a time before what the clock class can represent + cat <<- 'END' > "$temp_stdout_expected" + [Unknown] {0 0 0} Stream 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) + [Unknown] {0 0 0} Stream end + END + run_test 50 "" + + # Trim begin before stream beginning + cat <<- 'END' > "$temp_stdout_expected" + [Unknown] {0 0 0} Stream 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) + [Unknown] {0 0 0} Stream end + END + run_test 10050 "" + + # Trim begin before second event + cat <<- 'END' > "$temp_stdout_expected" + [350 10,350,000,000,000] {0 0 0} Stream beginning + [400 10,400,000,000,000] {0 0 0} Event `event 2` (1) + [Unknown] {0 0 0} Stream end + END + + run_test 10350 "" + + # Trim begin after everything + cat <<- 'END' > "$temp_stdout_expected" + END + + run_test 11050 "" + + # Trim end after stream end + cat <<- 'END' > "$temp_stdout_expected" + [Unknown] {0 0 0} Stream 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) + [Unknown] {0 0 0} Stream end + END + + run_test "" 11050 + + # Trim end after first event + cat <<- 'END' > "$temp_stdout_expected" + [Unknown] {0 0 0} Stream beginning + [300 10,300,000,000,000] {0 0 0} Event `event 1` (0) + [350 10,350,000,000,000] {0 0 0} Stream end + END + + run_test "" 10350 + + # Trim end after stream beginning + cat <<- 'END' > "$temp_stdout_expected" + [Unknown] {0 0 0} Stream beginning + [Unknown] {0 0 0} Stream end + END + + run_test "" 10150 + + # Trim end at a time before what the clock class can represent + cat <<- 'END' > "$temp_stdout_expected" + [Unknown] {0 0 0} Stream beginning + [Unknown] {0 0 0} Stream end + END + + run_test "" 50 +} + +test_with_stream_msg_cs_with_packets +test_without_stream_msg_cs_with_packets +test_with_stream_msg_cs_without_packets +test_without_stream_msg_cs_without_packets # Do not `rm` $temp_stderr_expected because it's set to `/dev/null` right now # and that would print an error.