68460bb606e58fd9f5db78dbe2750604d90ad3e1
[babeltrace.git] / tests / cli / test_convert_args.in
1 #!/bin/bash
2 #
3 # Copyright (C) - 2017 Philippe Proulx <pproulx@efficios.com>
4 #
5 # This program is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License, version 2 only, as
7 # published by the Free Software Foundation.
8 #
9 # This program is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 # more details.
13 #
14 # You should have received a copy of the GNU General Public License along with
15 # this program; if not, write to the Free Software Foundation, Inc., 51
16 # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18 . "@abs_top_builddir@/tests/utils/common.sh"
19
20 test_bt_convert_run_args() {
21 local what="$1"
22 local convert_args="$2"
23 local expected_run_args="$3"
24
25 # execute convert command
26 local run_args="$("$BT_BIN" convert --run-args $convert_args)"
27
28 # check result
29 if [ "$test_head_comment" = 1 ]; then
30 comment "convert args: $convert_args"
31 fi
32
33 if [ "$run_args" = "$expected_run_args" ]; then
34 pass "ARGS: $what"
35 else
36 fail "ARGS: $what"
37 diag "ARGS: $convert_args"
38 diag "EXPECTED: $expected_run_args"
39 diag "GOT: $run_args"
40 fi
41 }
42
43 test_bt_convert_fails() {
44 local what="$1"
45 local convert_args="$2"
46
47 # execute convert command
48 "$BT_BIN" convert --run-args $convert_args >/dev/null 2>&1
49
50 local status=$?
51
52 # check result
53 if [ "$test_head_comment" = 1 ]; then
54 comment "convert args: $convert_args"
55 fi
56
57 if [ "$status" = 0 ]; then
58 fail "SUCCEEDS (should fail): $what"
59 diag "ARGS: $convert_args"
60 else
61 pass "FAILS: $what"
62 fi
63 }
64
65 comment() {
66 echo "### $1 ###"
67 }
68
69 @BABELTRACE_BUILD_WITH_MINGW_TRUE@path_to_trace="C://path/to/trace"
70 @BABELTRACE_BUILD_WITH_MINGW_FALSE@path_to_trace="/path/to/trace"
71 @BABELTRACE_BUILD_WITH_MINGW_TRUE@output_path="C://output/path"
72 @BABELTRACE_BUILD_WITH_MINGW_FALSE@output_path="/output/path"
73
74 plan_tests 75
75
76 test_bt_convert_run_args 'path leftover' "$path_to_trace" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
77 test_bt_convert_run_args 'path leftover + named user source with --params' "$path_to_trace --component ZZ:source.another.source --params salut=yes" "--component ZZ:source.another.source --params salut=yes --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect ZZ:muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
78 test_bt_convert_run_args 'path leftover + named user source with --name --params' "$path_to_trace --component source.another.source --name HELLO --params salut=yes" "--component source.another.source --name HELLO --params salut=yes --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect HELLO:muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
79 test_bt_convert_run_args 'path leftover + user source with --path --params' "$path_to_trace --component source.another.source --path some-path --params salut=yes" "--component source.another.source '--params=path=\"some-path\"' --params salut=yes --name source.another.source --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect 'source\\.another\\.source:muxer' --connect source-ctf-fs:muxer --connect muxer:pretty"
80 test_bt_convert_run_args 'user source with --url + -o dummy' '--component MY:source.my.source --url the-url -o dummy' "--component MY:source.my.source '--params=url=\"the-url\"' --component sink.utils.dummy --name dummy --component filter.utils.muxer --name muxer --connect MY:muxer --connect muxer:dummy"
81 test_bt_convert_run_args 'path leftover + --omit-home-plugin-path' "$path_to_trace --omit-home-plugin-path" "--omit-home-plugin-path --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
82 test_bt_convert_run_args 'path leftover + --omit-system-plugin-path' "$path_to_trace --omit-system-plugin-path" "--omit-system-plugin-path --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
83 test_bt_convert_run_args 'path leftover + --plugin-path' "--plugin-path=PATH1:PATH2 $path_to_trace" "--plugin-path PATH1:PATH2 --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
84 test_bt_convert_run_args 'unnamed user source' '--component source.salut.com' "--component source.salut.com --name source.salut.com --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect 'source\.salut\.com:muxer' --connect muxer:pretty"
85 test_bt_convert_run_args 'path leftover + user source named `source-ctf-fs`' "--component source-ctf-fs:source.salut.com $path_to_trace" "--component source-ctf-fs:source.salut.com --component source.ctf.fs --name source-ctf-fs-0 '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect source-ctf-fs-0:muxer --connect muxer:pretty"
86 test_bt_convert_run_args 'path leftover + user sink named `pretty`' "--component pretty:sink.my.sink $path_to_trace" "--component pretty:sink.my.sink --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
87 test_bt_convert_run_args 'path leftover + --clock-seconds + user sink named `pretty`' "--clock-seconds --component pretty:sink.my.sink $path_to_trace" "--component pretty:sink.my.sink --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty-0 --params clock-seconds=yes --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty --connect muxer:pretty-0"
88 test_bt_convert_run_args 'path leftover + user filter named `muxer`' "--component trimmer:filter.salut.com --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --component filter.utils.trimmer --name trimmer-0 '--params=begin=\"abc\"' --connect source-ctf-fs:muxer --connect muxer:trimmer-0 --connect trimmer-0:muxer --connect trimmer:pretty"
89 test_bt_convert_run_args 'path leftover + --begin + user filter named `trimmer`' "$path_to_trace --component trimmer:filter.salut.com --begin=abc" "--component trimmer:filter.salut.com --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --component filter.utils.trimmer --name trimmer-0 '--params=begin=\"abc\"' --connect source-ctf-fs:muxer --connect muxer:trimmer-0 --connect trimmer-0:trimmer --connect trimmer:pretty"
90 test_bt_convert_run_args 'path leftover + --plugin-path' "$path_to_trace --plugin-path a:b:c" "--plugin-path a:b:c --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
91 test_bt_convert_run_args 'path leftover + --omit-home-plugin-path --omit-system-plugin-path' "$path_to_trace --omit-home-plugin-path --omit-system-plugin-path" "--omit-home-plugin-path --omit-system-plugin-path --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
92 test_bt_convert_run_args 'path leftover + --begin' "$path_to_trace --begin=123" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --component filter.utils.trimmer --name trimmer '--params=begin=\"123\"' --connect source-ctf-fs:muxer --connect muxer:trimmer --connect trimmer:pretty"
93 test_bt_convert_run_args 'path leftover + --begin --end' "$path_to_trace --end=456 --begin 123" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --component filter.utils.trimmer --name trimmer '--params=end=\"456\"' '--params=begin=\"123\"' --connect source-ctf-fs:muxer --connect muxer:trimmer --connect trimmer:pretty"
94 test_bt_convert_run_args 'path leftover + --timerange' "$path_to_trace --timerange=[abc,xyz]" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --component filter.utils.trimmer --name trimmer '--params=begin=\"abc\"' '--params=end=\"xyz\"' --connect source-ctf-fs:muxer --connect muxer:trimmer --connect trimmer:pretty"
95 test_bt_convert_run_args 'path leftover + --clock-cycles' "$path_to_trace --clock-cycles" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --params clock-cycles=yes --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
96 test_bt_convert_run_args 'path leftover + --clock-date' "$path_to_trace --clock-date" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --params clock-date=yes --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
97 test_bt_convert_run_args 'path leftover + --clock-force-correlate' "$path_to_trace --clock-force-correlate" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --params assume-absolute-clock-classes=yes --connect source-ctf-fs:muxer --connect muxer:pretty"
98 test_bt_convert_run_args 'path leftover + --clock-gmt' "$path_to_trace --clock-gmt" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --params clock-gmt=yes --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
99 test_bt_convert_run_args 'path leftover + --clock-offset' "$path_to_trace --clock-offset=15487" "--component source.ctf.fs --name source-ctf-fs --params clock-class-offset-s=15487 '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
100 test_bt_convert_run_args 'path leftover + --clock-offset-ns' "$path_to_trace --clock-offset-ns=326159487" "--component source.ctf.fs --name source-ctf-fs --params clock-class-offset-ns=326159487 '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
101 test_bt_convert_run_args 'path leftover + --clock-seconds' "$path_to_trace --clock-seconds" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --params clock-seconds=yes --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
102 test_bt_convert_run_args 'path leftover + --color' "$path_to_trace --color=never" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty '--params=color=\"never\"' --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
103 test_bt_convert_run_args 'path leftover + --debug-info' "$path_to_trace --debug-info" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --component filter.lttng-utils.debug-info --name debug-info --connect source-ctf-fs:muxer --connect muxer:debug-info --connect debug-info:pretty"
104 test_bt_convert_run_args 'path leftover + --debug-info-dir' "$path_to_trace --debug-info-dir=${output_path}" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --component filter.lttng-utils.debug-info --name debug-info '--params=debug-info-dir=\"${output_path}\"' --connect source-ctf-fs:muxer --connect muxer:debug-info --connect debug-info:pretty"
105 test_bt_convert_run_args 'path leftover + --debug-info-target-prefix' "$path_to_trace --debug-info-target-prefix=${output_path}" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --component filter.lttng-utils.debug-info --name debug-info '--params=target-prefix=\"${output_path}\"' --connect source-ctf-fs:muxer --connect muxer:debug-info --connect debug-info:pretty"
106 test_bt_convert_run_args 'path leftover + --debug-info-full-path' "$path_to_trace --debug-info-full-path" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --component filter.lttng-utils.debug-info --name debug-info --params full-path=yes --connect source-ctf-fs:muxer --connect muxer:debug-info --connect debug-info:pretty"
107 test_bt_convert_run_args 'path leftover + --fields=trace:domain,loglevel' "--fields=trace:domain,loglevel $path_to_trace" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --params field-trace:domain=yes,field-loglevel=yes,field-default=hide --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
108 test_bt_convert_run_args 'path leftover + --fields=all' "--fields=all $path_to_trace" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --params field-default=show --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
109 test_bt_convert_run_args 'path leftover + --names=context,header' "--names=context,header $path_to_trace" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --params name-context=yes,name-header=yes,name-default=hide --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
110 test_bt_convert_run_args 'path leftover + --names=all' "--names=all $path_to_trace" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --params name-default=show --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
111 test_bt_convert_run_args 'path leftover + --no-delta' "$path_to_trace --no-delta" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --params no-delta=yes --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
112 test_bt_convert_run_args 'path leftover + --output' "$path_to_trace --output $output_path" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty '--params=path=\"$output_path\"' --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
113 test_bt_convert_run_args 'path leftover + -i ctf' "$path_to_trace -i ctf" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty"
114 test_bt_convert_run_args 'URL leftover + -i lttng-live' 'net://some-host/host/target/session -i lttng-live' "--component source.ctf.lttng-live --name lttng-live '--params=url=\"net://some-host/host/target/session\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect lttng-live:muxer --connect muxer:pretty"
115 test_bt_convert_run_args 'path leftover + user sink + -o text' "$path_to_trace --component=sink.abc.def -o text" "--component sink.abc.def --name sink.abc.def --component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect 'muxer:sink\.abc\.def' --connect muxer:pretty"
116 test_bt_convert_run_args 'path leftover + -o dummy' "$path_to_trace -o dummy" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.utils.dummy --name dummy --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:dummy"
117 test_bt_convert_run_args 'path leftover + -o dummy + --clock-seconds' "$path_to_trace -o dummy --clock-seconds" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.text.pretty --name pretty --params clock-seconds=yes --component sink.utils.dummy --name dummy --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:pretty --connect muxer:dummy"
118 test_bt_convert_run_args 'path leftover + -o ctf + --output' "$path_to_trace -o ctf --output $output_path" "--component source.ctf.fs --name source-ctf-fs '--params=path=\"$path_to_trace\"' --component sink.ctf.fs --name sink-ctf-fs '--params=path=\"$output_path\"' --component filter.utils.muxer --name muxer --connect source-ctf-fs:muxer --connect muxer:sink-ctf-fs"
119
120 test_bt_convert_fails 'bad --component format (plugin only)' '--component salut'
121 test_bt_convert_fails 'bad --component format (name and plugin only)' '--component name:salut'
122 test_bt_convert_fails 'bad --component format (name only)' '--component name:'
123 test_bt_convert_fails 'bad --component format (extra dot found)' '--component name:source.plugin.comp.cls'
124 test_bt_convert_fails 'duplicate component name' '--component hello:sink.a.b --component hello:source.c.d'
125 test_bt_convert_fails 'unknown option' '--component hello:sink.a.b --salut'
126 test_bt_convert_fails '--params without current component' '--params lol=23'
127 test_bt_convert_fails '--path without current component' "--path $path_to_trace"
128 test_bt_convert_fails '--url without current component' '--url net://some-host/host/target/session'
129 test_bt_convert_fails '--nane without current component' '--name chapeau'
130 test_bt_convert_fails 'duplicate --begin' '--begin abc --clock-seconds --begin cde'
131 test_bt_convert_fails 'duplicate --end' '--begin abc --end xyz --clock-seconds --end cde'
132 test_bt_convert_fails '--begin and --timerange' '--begin abc --clock-seconds --timerange abc,def'
133 test_bt_convert_fails '--end and --timerange' '--end abc --clock-seconds --timerange abc,def'
134 test_bt_convert_fails 'bad --timerange format (1)' '--timerange abc'
135 test_bt_convert_fails 'bad --timerange format (2)' '--timerange abc,'
136 test_bt_convert_fails 'bad --timerange format (3)' '--timerange ,cde'
137 test_bt_convert_fails 'bad --fields format' '--fields salut'
138 test_bt_convert_fails 'bad --names format' '--names salut'
139 test_bt_convert_fails 'unknown -i' '-i lol'
140 test_bt_convert_fails 'duplicate -i' '-i lttng-live --clock-seconds --input-format=ctf'
141 test_bt_convert_fails 'unknown -o' '-o lol'
142 test_bt_convert_fails 'duplicate -o' '-o dummy --clock-seconds --output-format=text'
143 test_bt_convert_fails '--run-args and --run-args-0' "$path_to_trace --run-args --run-args-0"
144 test_bt_convert_fails '-o ctf-metadata without path' '-o ctf-metadata'
145 test_bt_convert_fails '-i lttng-live and implicit source.ctf.fs' '-i lttng-live net://some-host/host/target/session --clock-offset=23'
146 test_bt_convert_fails 'implicit source.ctf.fs without path' '--clock-offset=23'
147 test_bt_convert_fails 'implicit source.ctf.lttng-live without URL' '-i lttng-live'
148 test_bt_convert_fails 'no source' '-o text'
149 test_bt_convert_fails '-o ctf without --output' 'my-trace -o ctf'
150 test_bt_convert_fails '-o ctf + --output with implicit sink.text.pretty' "my-trace -o ctf --output $output_path --no-delta"
151 test_bt_convert_fails '--stream-intersection' "$path_to_trace --stream-intersection"
This page took 0.039105 seconds and 3 git commands to generate.