Tests for the session rotation feature
[lttng-tools.git] / tests / regression / tools / rotation / test_save_load_mi
CommitLineData
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
18TEST_DESC="Rotation - Save/Load/List/MI"
19
20CURDIR=$(dirname $0)/
21TESTDIR=$CURDIR/../../..
22SESSION_NAME="stream"
23
24TRACE_PATH=$(mktemp -d)
25
26NUM_TESTS=14
27
28source $TESTDIR/utils/utils.sh
29source $CURDIR/rotate_utils.sh
30
31#Overwrite the lttng_bin to get mi output
32LTTNG_BIN="lttng --mi xml"
33
34#Global declaration for simplification
35LTTNG=$TESTDIR/../src/bin/lttng/$LTTNG_BIN
36
37XSD_PATH=$TESTDIR/../src/common/mi-lttng-3.0.xsd
38
39XML_VALIDATE="$TESTDIR/regression/tools/mi/validate_xml $XSD_PATH"
40XML_EXTRACT="$TESTDIR/regression/tools/mi/extract_xml"
41
42XPATH_CMD_OUTPUT="//lttng:command/lttng:output"
43XPATH_SESSION="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session"
44XPATH_ROTATE_SETUP="$XPATH_CMD_OUTPUT/lttng:rotation_schedule"
45
46function 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
105plan_tests $NUM_TESTS
106
107print_test_banner "$TEST_DESC"
108
109start_lttng_sessiond
110
111tests=( test_save_load )
112
113for fct_test in ${tests[@]};
114do
115 SESSION_NAME=$(randstring 16 0)
116 ${fct_test}
117done
118
119stop_lttng_sessiond
120
121exit $out
This page took 0.028677 seconds and 5 git commands to generate.