From 1866f792434e01ea165e99284878a8de9421a529 Mon Sep 17 00:00:00 2001 From: Julien Desfossez Date: Mon, 21 Sep 2015 11:23:05 -0400 Subject: [PATCH] Test the stream intersection feature MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- tests/bin/test_intersection | 55 +++++++++++++++++ .../intersection/3eventsintersect/metadata | 58 ++++++++++++++++++ .../3eventsintersect/test_stream_0 | Bin 0 -> 640 bytes .../3eventsintersect/test_stream_1 | Bin 0 -> 384 bytes .../3eventsintersectreverse/metadata | 58 ++++++++++++++++++ .../3eventsintersectreverse/test_stream_0 | Bin 0 -> 384 bytes .../3eventsintersectreverse/test_stream_1 | Bin 0 -> 640 bytes .../intersection/nointersect/metadata | 58 ++++++++++++++++++ .../intersection/nointersect/test_stream_0 | Bin 0 -> 384 bytes .../intersection/nointersect/test_stream_1 | Bin 0 -> 384 bytes .../ctf-traces/intersection/nostream/metadata | 58 ++++++++++++++++++ .../intersection/onestream/metadata | 58 ++++++++++++++++++ .../intersection/onestream/test_stream_0 | Bin 0 -> 384 bytes tests/tests | 1 + 14 files changed, 346 insertions(+) create mode 100755 tests/bin/test_intersection create mode 100644 tests/ctf-traces/intersection/3eventsintersect/metadata create mode 100644 tests/ctf-traces/intersection/3eventsintersect/test_stream_0 create mode 100644 tests/ctf-traces/intersection/3eventsintersect/test_stream_1 create mode 100644 tests/ctf-traces/intersection/3eventsintersectreverse/metadata create mode 100644 tests/ctf-traces/intersection/3eventsintersectreverse/test_stream_0 create mode 100644 tests/ctf-traces/intersection/3eventsintersectreverse/test_stream_1 create mode 100644 tests/ctf-traces/intersection/nointersect/metadata create mode 100644 tests/ctf-traces/intersection/nointersect/test_stream_0 create mode 100644 tests/ctf-traces/intersection/nointersect/test_stream_1 create mode 100644 tests/ctf-traces/intersection/nostream/metadata create mode 100644 tests/ctf-traces/intersection/onestream/metadata create mode 100644 tests/ctf-traces/intersection/onestream/test_stream_0 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 0000000000000000000000000000000000000000..6a69e445f8745b2f65fd28c702565ec74067c134 GIT binary patch literal 640 zcmX^3NB&^dzy5udJN&bDAHQ(C>G|FD446O!BE+l!p;<6hAVjzjOfU$yc1rn2h{hCmvHV_)8{Y*$kY600WK1e@QFOmu*CIS0x zp-KZFG*0`Ok&N^JvSASf(ht>(qymXa!2Up}(i8}d(|(wJAZ0;7%nDJ@0MZZD3l%}5 E0H!ENZvX%Q literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0cf1404de821214b7cb277b1415436e16983d28d GIT binary patch literal 384 zcmX^3NB&^dzy5udJN&bDAHQ(C>G|FD3<%%`Wkx}0W(5e%0u{zexdTO+ftV49LHeP3 zfh;WGAb$I!p<41FG*0_LcELa@kiiDTATf}Bs9qoo3m{;BK2%EugvMz<6Oz#dKsGxN OgX{G|FD3<%%`Wkx}0W(5e%0u{zexdTO+ftV49LHeP3 zfh;WGAb$I!p<41FG*0_LcELa@kiiDTATf}Bs9qoo3m{;BK2%EugvMz<6Oz#dKsGxN OgX{G|FD446O!BE+l!p;<6hAVjzjOfU$yc1rn2h{hCmvHV_)8{Y*$kY600WK1e@QFOmu*CIS0x zp-KZFG*0`Ok&N^JvSASf(ht>(qymXa!2Up}(i8}d(|(wJAZ0;7%nDJ@0MZZD3l%}5 E0H!ENZvX%Q literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7c32bae6750c6aba95b68bf8e83de08d0cbfb944 GIT binary patch literal 384 zcmX^3NB-c-^xp?g%=VtN^}azyZ+Px~223CV5n@(=&@7lL5F%U%CYS})izW)?9>j0I zC{&pSgvMzfeK@#+<~IZK+FilApKCi zKo%Bo5WoG=P%U{78mIjryI>#{$N)JIBnHwC)eB@{0R-&Nhia*S&^Ya9LNdAl$Yup% Oko_S2P`yAF761SUk19|A literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7c32bae6750c6aba95b68bf8e83de08d0cbfb944 GIT binary patch literal 384 zcmX^3NB-c-^xp?g%=VtN^}azyZ+Px~223CV5n@(=&@7lL5F%U%CYS})izW)?9>j0I zC{&pSgvMz