Commit | Line | Data |
---|---|---|
e8b45bc8 JD |
1 | #!/bin/bash |
2 | # | |
0235b0db | 3 | # SPDX-License-Identifier: GPL-2.0-only |
e8b45bc8 | 4 | # |
0235b0db | 5 | # Copyright (C) 2015 Julien Desfossez <jdesfossez@efficios.com> |
e8b45bc8 | 6 | # |
e8b45bc8 | 7 | |
644e0364 MJ |
8 | SH_TAP=1 |
9 | ||
75e396f6 | 10 | if [ -n "${BT_TESTS_SRCDIR:-}" ]; then |
644e0364 MJ |
11 | UTILSSH="$BT_TESTS_SRCDIR/utils/utils.sh" |
12 | else | |
13 | UTILSSH="$(dirname "$0")/../utils/utils.sh" | |
14 | fi | |
15 | ||
16 | # shellcheck source=../utils/utils.sh | |
17 | source "$UTILSSH" | |
e8b45bc8 | 18 | |
064b8bc4 | 19 | plan_tests 20 |
e8b45bc8 | 20 | |
7132b838 PP |
21 | stdout=$(mktemp -t test-intersection-stdout.XXXXXX) |
22 | stderr=$(mktemp -t test-intersection-stderr.XXXXXX) | |
e8b45bc8 JD |
23 | |
24 | test_intersect() { | |
644e0364 MJ |
25 | local trace="$1" |
26 | local totalevents="$2" | |
27 | local intersect="$3" | |
e8b45bc8 | 28 | |
644e0364 MJ |
29 | local cnt |
30 | ||
064b8bc4 SM |
31 | bt_cli "${stdout}" "/dev/null" "${trace}" |
32 | ok $? "run without --stream-intersection" | |
33 | ||
34 | cnt=$(wc -l < "${stdout}") | |
644e0364 | 35 | test "${cnt// /}" = "$totalevents" |
e8b45bc8 | 36 | ok $? "$totalevents events in the whole trace" |
644e0364 | 37 | |
064b8bc4 SM |
38 | bt_cli "${stdout}" "/dev/null" --stream-intersection "${trace}" |
39 | ok $? "run with --stream-intersection" | |
40 | ||
41 | cnt=$(wc -l < "${stdout}") | |
644e0364 | 42 | test "${cnt// /}" = "$intersect" |
064b8bc4 SM |
43 | ok $? "$intersect events in streams intersecting" |
44 | } | |
45 | ||
46 | test_intersect_fails() { | |
47 | local trace="$1" | |
48 | local totalevents="$2" | |
49 | local expected_error_message="$3" | |
50 | ||
51 | bt_cli "${stdout}" "/dev/null" "${trace}" | |
52 | ok $? "run without --stream-intersection" | |
53 | ||
54 | cnt=$(wc -l < "${stdout}") | |
55 | test "${cnt// /}" = "$totalevents" | |
56 | ok $? "$totalevents events in the whole trace" | |
57 | ||
58 | bt_cli "${stdout}" "${stderr}" --stream-intersection "${trace}" | |
59 | isnt "$?" 0 "run with --stream-intersection fails" | |
60 | ||
db01f759 SM |
61 | bt_grep_ok \ |
62 | "${expected_error_message}" \ | |
63 | "${stderr}" \ | |
64 | "stderr contains expected error message" | |
e8b45bc8 JD |
65 | } |
66 | ||
67 | diag "Test the stream intersection feature" | |
68 | ||
69 | diag "2 streams offsetted with 3 packets intersecting" | |
bbff0ab4 | 70 | test_intersect "${BT_CTF_TRACES_PATH}/intersection/3eventsintersect" 8 3 |
e8b45bc8 JD |
71 | |
72 | diag "2 streams offsetted with 3 packets intersecting (exchanged file names)" | |
bbff0ab4 | 73 | test_intersect "${BT_CTF_TRACES_PATH}/intersection/3eventsintersectreverse" 8 3 |
e8b45bc8 | 74 | |
e8b45bc8 | 75 | diag "Only 1 stream" |
bbff0ab4 | 76 | test_intersect "${BT_CTF_TRACES_PATH}/intersection/onestream" 3 3 |
e8b45bc8 | 77 | |
064b8bc4 SM |
78 | diag "No intersection between 2 streams" |
79 | test_intersect_fails "${BT_CTF_TRACES_PATH}/intersection/nointersect" 6 \ | |
80 | "Trimming time range's beginning time is greater than end time: " | |
81 | ||
e8b45bc8 | 82 | diag "No stream at all" |
064b8bc4 SM |
83 | test_intersect_fails "${BT_CTF_TRACES_PATH}/intersection/nostream" 0 \ |
84 | "Trace has no streams: " | |
85 | ||
86 | rm -f "${stdout}" "${stderr}" |