Commit | Line | Data |
---|---|---|
e7716c6a JD |
1 | #!/bin/bash |
2 | # | |
3 | # Copyright (C) - 2017 Julien Desfossez <jdesfossez@efficios.com> | |
4 | # | |
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. | |
8 | # | |
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 | |
12 | # details. | |
13 | # | |
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 | |
17 | ||
18 | TEST_DESC="Rotation - Save/Load/List/MI" | |
19 | ||
20 | CURDIR=$(dirname $0)/ | |
21 | TESTDIR=$CURDIR/../../.. | |
22 | SESSION_NAME="stream" | |
23 | ||
24 | TRACE_PATH=$(mktemp -d) | |
25 | ||
26 | NUM_TESTS=14 | |
27 | ||
28 | source $TESTDIR/utils/utils.sh | |
29 | source $CURDIR/rotate_utils.sh | |
30 | ||
31 | #Overwrite the lttng_bin to get mi output | |
32 | LTTNG_BIN="lttng --mi xml" | |
33 | ||
34 | #Global declaration for simplification | |
35 | LTTNG=$TESTDIR/../src/bin/lttng/$LTTNG_BIN | |
36 | ||
37 | XSD_PATH=$TESTDIR/../src/common/mi-lttng-3.0.xsd | |
38 | ||
39 | XML_VALIDATE="$TESTDIR/regression/tools/mi/validate_xml $XSD_PATH" | |
40 | XML_EXTRACT="$TESTDIR/regression/tools/mi/extract_xml" | |
41 | ||
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" | |
45 | ||
46 | function test_save_load () | |
47 | { | |
48 | tmp_xml_output=$(mktemp -u) | |
49 | tmp_save_output=$(mktemp -d) | |
50 | ||
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 | |
54 | ||
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) | |
60 | test $value = 500000 | |
61 | ok $? "Found the right rotation timer value in XML" | |
62 | ||
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) | |
68 | test $value = 512000 | |
69 | ok $? "Found the right rotation size value in XML" | |
70 | ||
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) | |
76 | test $value = 500000 | |
77 | ok $? "Found the right rotation timer value in list XML" | |
78 | value=$($XML_EXTRACT ${tmp_xml_output} ${XPATH_SESSION}/lttng:rotation_schedule_size) | |
79 | test $value = 512000 | |
80 | ok $? "Found the right rotation size value in list XML" | |
81 | ||
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 | |
86 | ||
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) | |
92 | test $value = 500000 | |
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) | |
95 | test $value = 512000 | |
96 | ok $? "Found the right rotation size value in list XML after load" | |
97 | ||
98 | $LTTNG destroy $SESSION_NAME >/dev/null | |
99 | ||
100 | rm -rf ${TRACE_PATH} | |
101 | rm $tmp_xml_output | |
102 | rm -rf $tmp_save_output | |
103 | } | |
104 | ||
105 | plan_tests $NUM_TESTS | |
106 | ||
107 | print_test_banner "$TEST_DESC" | |
108 | ||
109 | start_lttng_sessiond | |
110 | ||
111 | tests=( test_save_load ) | |
112 | ||
113 | for fct_test in ${tests[@]}; | |
114 | do | |
115 | SESSION_NAME=$(randstring 16 0) | |
116 | ${fct_test} | |
117 | done | |
118 | ||
119 | stop_lttng_sessiond |