tests: improve flt.utils.trimmer/test_trimming to test streams without packets
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 17 Feb 2020 22:30:59 +0000 (17:30 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 19 Feb 2020 22:52:36 +0000 (17:52 -0500)
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 <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/3106
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
tests/data/plugins/flt.utils.trimmer/bt_plugin_trimmer_test.py
tests/plugins/flt.utils.trimmer/test_trimming

index a59ea9bd1bebf432ea6fbb78356b960ac3d1f441..770f2cc5ca8ef451dd31f367b33269b2731b8122 100644 (file)
@@ -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')
index cf83a7809996de2e5f1a7b784925f446a43820e0..eec7cb11d93de473aad783fa14db645846fdd553 100755 (executable)
@@ -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.
This page took 0.030295 seconds and 4 git commands to generate.