3 # Copyright (C) - 2017 Julien Desfossez <jdesfossez@efficios.com>
5 # This library is free software; you can redistribute it and/or modify it under
6 # the terms of the GNU Lesser General Public License as published by the Free
7 # Software Foundation; version 2.1 of the License.
9 # This library is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14 # You should have received a copy of the GNU Lesser General Public License
15 # along with this library; if not, write to the Free Software Foundation, Inc.,
16 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 TEST_DESC
="Rotation - Save/Load/List/MI"
21 TESTDIR
=$CURDIR/..
/..
/..
24 TRACE_PATH
=$
(mktemp
-d)
28 source $TESTDIR/utils
/utils.sh
29 source $CURDIR/rotate_utils.sh
31 #Overwrite the lttng_bin to get mi output
32 LTTNG_BIN
="lttng --mi xml"
34 #Global declaration for simplification
35 LTTNG
=$TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN
37 XSD_PATH
=$TESTDIR/..
/src
/common
/mi-lttng-3.0.xsd
39 XML_VALIDATE
="$TESTDIR/regression/tools/mi/validate_xml $XSD_PATH"
40 XML_EXTRACT
="$TESTDIR/regression/tools/mi/extract_xml"
42 XPATH_CMD_OUTPUT
="//lttng:command/lttng:output"
43 XPATH_SESSION
="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session"
44 XPATH_ROTATE_SETUP
="$XPATH_CMD_OUTPUT/lttng:rotation_schedule"
46 function test_save_load
()
48 tmp_xml_output
=$
(mktemp
-u)
49 tmp_save_output
=$
(mktemp
-d)
51 diag
"Test save/load/list/MI with rotation"
52 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
53 enable_ust_lttng_event_ok
$SESSION_NAME -a
55 # Enable a rotation timer and check the MI output of the command
56 $LTTNG enable-rotation
-s $SESSION_NAME --timer 500ms
>${tmp_xml_output}
57 $XML_VALIDATE ${tmp_xml_output}
58 ok $?
"Valid lttng enable-rotation timer XML"
59 value
=$
($XML_EXTRACT ${tmp_xml_output} ${XPATH_ROTATE_SETUP}/lttng
:rotation_schedule_timer_period
)
61 ok $?
"Found the right rotation timer value in XML"
63 # Enable a rotation size and check the MI output of the command
64 $LTTNG enable-rotation
-s $SESSION_NAME --size 500k
>${tmp_xml_output}
65 $XML_VALIDATE ${tmp_xml_output}
66 ok $?
"Valid lttng enable-rotation size XML"
67 value
=$
($XML_EXTRACT ${tmp_xml_output} ${XPATH_ROTATE_SETUP}/lttng
:rotation_schedule_size
)
69 ok $?
"Found the right rotation size value in XML"
71 # Check the output of lttng list with the 2 rotation parameters
72 $LTTNG list
$SESSION_NAME >${tmp_xml_output}
73 $XML_VALIDATE ${tmp_xml_output}
74 ok $?
"Valid lttng list XML"
75 value
=$
($XML_EXTRACT ${tmp_xml_output} ${XPATH_SESSION}/lttng
:rotation_schedule_timer_period
)
77 ok $?
"Found the right rotation timer value in list XML"
78 value
=$
($XML_EXTRACT ${tmp_xml_output} ${XPATH_SESSION}/lttng
:rotation_schedule_size
)
80 ok $?
"Found the right rotation size value in list XML"
82 # save, destroy and reload the same session
83 $LTTNG save
-o $tmp_save_output$SESSION_NAME >/dev
/null
84 $LTTNG destroy
$SESSION_NAME >/dev
/null
85 $LTTNG load
-i $tmp_save_output$SESSION_NAME >/dev
/null
87 # Check the output of lttng list with the 2 rotation parameters after the load
88 $LTTNG list
$SESSION_NAME >${tmp_xml_output}
89 $XML_VALIDATE ${tmp_xml_output}
90 ok $?
"Valid lttng list XML after load"
91 value
=$
($XML_EXTRACT ${tmp_xml_output} ${XPATH_SESSION}/lttng
:rotation_schedule_timer_period
)
93 ok $?
"Found the right rotation timer value in list XML after load"
94 value
=$
($XML_EXTRACT ${tmp_xml_output} ${XPATH_SESSION}/lttng
:rotation_schedule_size
)
96 ok $?
"Found the right rotation size value in list XML after load"
98 $LTTNG destroy
$SESSION_NAME >/dev
/null
102 rm -rf $tmp_save_output
105 plan_tests
$NUM_TESTS
107 print_test_banner
"$TEST_DESC"
111 tests
=( test_save_load
)
113 for fct_test
in ${tests[@]};
115 SESSION_NAME
=$
(randstring
16 0)