From: Julien Desfossez Date: Mon, 21 Sep 2015 15:23:05 +0000 (-0400) Subject: Test the stream intersection feature X-Git-Tag: v1.4.0-rc1~93 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=1866f792434e01ea165e99284878a8de9421a529 Test the stream intersection feature 5 traces are provided: - 3 packets intersecting between two streams slightly offsetted - Same trace with 3 packets intersecting but with swapped trace file names - No intersection between packets - Only one stream - No streams at all These traces were generated with the CTF writer API from the master branch, the binary traces will be replaced by the test program when the feature arrives in master. Signed-off-by: Julien Desfossez Signed-off-by: Jérémie Galarneau --- diff --git a/tests/bin/test_intersection b/tests/bin/test_intersection new file mode 100755 index 00000000..aec57dec --- /dev/null +++ b/tests/bin/test_intersection @@ -0,0 +1,55 @@ +#!/bin/bash +# +# Copyright (C) - 2015 Julien Desfossez +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License, version 2 only, as +# published by the Free Software Foundation. +# +# 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., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +CURDIR=$(dirname $0) +TESTDIR=$CURDIR/.. + +BABELTRACE_BIN=$CURDIR/../../converter/babeltrace + +source $TESTDIR/utils/tap/tap.sh + +NUM_TESTS=10 + +plan_tests $NUM_TESTS + +test_intersect() { + trace=$1 + totalevents=$2 + intersect=$3 + + test $($BABELTRACE_BIN $trace | wc -l) = $totalevents + ok $? "$totalevents events in the whole trace" + test $($BABELTRACE_BIN --stream-intersection $trace 2>/dev/null| wc -l) = $intersect + ok $? "$intersect events in packets intersecting" +} + +diag "Test the stream intersection feature" + +diag "2 streams offsetted with 3 packets intersecting" +test_intersect $TESTDIR/ctf-traces/intersection/3eventsintersect 8 3 + +diag "2 streams offsetted with 3 packets intersecting (exchanged file names)" +test_intersect $TESTDIR/ctf-traces/intersection/3eventsintersectreverse 8 3 + +diag "No intersection between 2 streams" +test_intersect $TESTDIR/ctf-traces/intersection/nointersect 6 0 + +diag "Only 1 stream" +test_intersect $TESTDIR/ctf-traces/intersection/onestream 3 3 + +diag "No stream at all" +test_intersect $TESTDIR/ctf-traces/intersection/nostream 0 0 diff --git a/tests/ctf-traces/intersection/3eventsintersect/metadata b/tests/ctf-traces/intersection/3eventsintersect/metadata new file mode 100644 index 00000000..7972ddf0 --- /dev/null +++ b/tests/ctf-traces/intersection/3eventsintersect/metadata @@ -0,0 +1,58 @@ +/* CTF 1.8 */ + +trace { + major = 1; + minor = 8; + uuid = "7afe8fbe-79b8-4f6a-bbc7-d0c782e7ddaf"; + byte_order = be; + packet.header := struct { + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } magic; + integer { size = 8; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } uuid[16]; + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } stream_id; + } align(8); +}; + +env { + host = "sinkpad"; +}; + +clock { + name = test_clock; + uuid = "7b9e2f2a-530e-4ab1-816f-0831b5c09140"; + description = "This is a test clock"; + freq = 1000000000; + precision = 10; + offset_s = 1351530929945824323; + offset = 0; + absolute = TRUE; +}; + +stream { + id = 0; + event.header := struct { + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } id; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; map = clock.test_clock.value; } timestamp; + } align(8); + + packet.context := struct { + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } timestamp_begin; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } timestamp_end; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } content_size; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } packet_size; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } events_discarded; + integer { size = 64; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_seq_num; + } align(8); +}; + +event { + id = 0; + name = "dummy_event"; + stream_id = 0; + fields := struct { + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } dummy_value; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } tracefile_id; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_begin; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_end; + } align(1); +}; + diff --git a/tests/ctf-traces/intersection/3eventsintersect/test_stream_0 b/tests/ctf-traces/intersection/3eventsintersect/test_stream_0 new file mode 100644 index 00000000..6a69e445 Binary files /dev/null and b/tests/ctf-traces/intersection/3eventsintersect/test_stream_0 differ diff --git a/tests/ctf-traces/intersection/3eventsintersect/test_stream_1 b/tests/ctf-traces/intersection/3eventsintersect/test_stream_1 new file mode 100644 index 00000000..0cf1404d Binary files /dev/null and b/tests/ctf-traces/intersection/3eventsintersect/test_stream_1 differ diff --git a/tests/ctf-traces/intersection/3eventsintersectreverse/metadata b/tests/ctf-traces/intersection/3eventsintersectreverse/metadata new file mode 100644 index 00000000..7972ddf0 --- /dev/null +++ b/tests/ctf-traces/intersection/3eventsintersectreverse/metadata @@ -0,0 +1,58 @@ +/* CTF 1.8 */ + +trace { + major = 1; + minor = 8; + uuid = "7afe8fbe-79b8-4f6a-bbc7-d0c782e7ddaf"; + byte_order = be; + packet.header := struct { + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } magic; + integer { size = 8; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } uuid[16]; + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } stream_id; + } align(8); +}; + +env { + host = "sinkpad"; +}; + +clock { + name = test_clock; + uuid = "7b9e2f2a-530e-4ab1-816f-0831b5c09140"; + description = "This is a test clock"; + freq = 1000000000; + precision = 10; + offset_s = 1351530929945824323; + offset = 0; + absolute = TRUE; +}; + +stream { + id = 0; + event.header := struct { + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } id; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; map = clock.test_clock.value; } timestamp; + } align(8); + + packet.context := struct { + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } timestamp_begin; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } timestamp_end; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } content_size; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } packet_size; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } events_discarded; + integer { size = 64; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_seq_num; + } align(8); +}; + +event { + id = 0; + name = "dummy_event"; + stream_id = 0; + fields := struct { + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } dummy_value; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } tracefile_id; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_begin; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_end; + } align(1); +}; + diff --git a/tests/ctf-traces/intersection/3eventsintersectreverse/test_stream_0 b/tests/ctf-traces/intersection/3eventsintersectreverse/test_stream_0 new file mode 100644 index 00000000..0cf1404d Binary files /dev/null and b/tests/ctf-traces/intersection/3eventsintersectreverse/test_stream_0 differ diff --git a/tests/ctf-traces/intersection/3eventsintersectreverse/test_stream_1 b/tests/ctf-traces/intersection/3eventsintersectreverse/test_stream_1 new file mode 100644 index 00000000..6a69e445 Binary files /dev/null and b/tests/ctf-traces/intersection/3eventsintersectreverse/test_stream_1 differ diff --git a/tests/ctf-traces/intersection/nointersect/metadata b/tests/ctf-traces/intersection/nointersect/metadata new file mode 100644 index 00000000..93090a2a --- /dev/null +++ b/tests/ctf-traces/intersection/nointersect/metadata @@ -0,0 +1,58 @@ +/* CTF 1.8 */ + +trace { + major = 1; + minor = 8; + uuid = "a967fbc0-c89b-4b92-b5df-30688d576ddf"; + byte_order = be; + packet.header := struct { + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } magic; + integer { size = 8; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } uuid[16]; + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } stream_id; + } align(8); +}; + +env { + host = "sinkpad"; +}; + +clock { + name = test_clock; + uuid = "fb759646-b2b9-42d7-9013-f790694dd902"; + description = "This is a test clock"; + freq = 1000000000; + precision = 10; + offset_s = 1351530929945824323; + offset = 0; + absolute = TRUE; +}; + +stream { + id = 0; + event.header := struct { + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } id; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; map = clock.test_clock.value; } timestamp; + } align(8); + + packet.context := struct { + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } timestamp_begin; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } timestamp_end; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } content_size; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } packet_size; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } events_discarded; + integer { size = 64; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_seq_num; + } align(8); +}; + +event { + id = 0; + name = "dummy_event"; + stream_id = 0; + fields := struct { + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } dummy_value; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } tracefile_id; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_begin; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_end; + } align(1); +}; + diff --git a/tests/ctf-traces/intersection/nointersect/test_stream_0 b/tests/ctf-traces/intersection/nointersect/test_stream_0 new file mode 100644 index 00000000..7c32bae6 Binary files /dev/null and b/tests/ctf-traces/intersection/nointersect/test_stream_0 differ diff --git a/tests/ctf-traces/intersection/nointersect/test_stream_1 b/tests/ctf-traces/intersection/nointersect/test_stream_1 new file mode 100644 index 00000000..e656ba67 Binary files /dev/null and b/tests/ctf-traces/intersection/nointersect/test_stream_1 differ diff --git a/tests/ctf-traces/intersection/nostream/metadata b/tests/ctf-traces/intersection/nostream/metadata new file mode 100644 index 00000000..93090a2a --- /dev/null +++ b/tests/ctf-traces/intersection/nostream/metadata @@ -0,0 +1,58 @@ +/* CTF 1.8 */ + +trace { + major = 1; + minor = 8; + uuid = "a967fbc0-c89b-4b92-b5df-30688d576ddf"; + byte_order = be; + packet.header := struct { + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } magic; + integer { size = 8; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } uuid[16]; + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } stream_id; + } align(8); +}; + +env { + host = "sinkpad"; +}; + +clock { + name = test_clock; + uuid = "fb759646-b2b9-42d7-9013-f790694dd902"; + description = "This is a test clock"; + freq = 1000000000; + precision = 10; + offset_s = 1351530929945824323; + offset = 0; + absolute = TRUE; +}; + +stream { + id = 0; + event.header := struct { + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } id; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; map = clock.test_clock.value; } timestamp; + } align(8); + + packet.context := struct { + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } timestamp_begin; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } timestamp_end; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } content_size; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } packet_size; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } events_discarded; + integer { size = 64; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_seq_num; + } align(8); +}; + +event { + id = 0; + name = "dummy_event"; + stream_id = 0; + fields := struct { + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } dummy_value; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } tracefile_id; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_begin; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_end; + } align(1); +}; + diff --git a/tests/ctf-traces/intersection/onestream/metadata b/tests/ctf-traces/intersection/onestream/metadata new file mode 100644 index 00000000..93090a2a --- /dev/null +++ b/tests/ctf-traces/intersection/onestream/metadata @@ -0,0 +1,58 @@ +/* CTF 1.8 */ + +trace { + major = 1; + minor = 8; + uuid = "a967fbc0-c89b-4b92-b5df-30688d576ddf"; + byte_order = be; + packet.header := struct { + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } magic; + integer { size = 8; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } uuid[16]; + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } stream_id; + } align(8); +}; + +env { + host = "sinkpad"; +}; + +clock { + name = test_clock; + uuid = "fb759646-b2b9-42d7-9013-f790694dd902"; + description = "This is a test clock"; + freq = 1000000000; + precision = 10; + offset_s = 1351530929945824323; + offset = 0; + absolute = TRUE; +}; + +stream { + id = 0; + event.header := struct { + integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } id; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; map = clock.test_clock.value; } timestamp; + } align(8); + + packet.context := struct { + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } timestamp_begin; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } timestamp_end; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } content_size; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } packet_size; + integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = be; } events_discarded; + integer { size = 64; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_seq_num; + } align(8); +}; + +event { + id = 0; + name = "dummy_event"; + stream_id = 0; + fields := struct { + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } dummy_value; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } tracefile_id; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_begin; + integer { size = 32; align = 1; signed = false; encoding = none; base = decimal; byte_order = be; } packet_end; + } align(1); +}; + diff --git a/tests/ctf-traces/intersection/onestream/test_stream_0 b/tests/ctf-traces/intersection/onestream/test_stream_0 new file mode 100644 index 00000000..7c32bae6 Binary files /dev/null and b/tests/ctf-traces/intersection/onestream/test_stream_0 differ diff --git a/tests/tests b/tests/tests index 19ad568d..6e028df2 100644 --- a/tests/tests +++ b/tests/tests @@ -1,5 +1,6 @@ bin/test_trace_read bin/test_packet_seq_num +bin/test_intersection lib/test_bitfield lib/test_seek_empty_packet lib/test_seek_big_trace