1adc1dd00SVeronika Molnarova#!/bin/bash
25afd6d38SVeronika Molnarova# perf_probe :: Basic perf probe functionality (exclusive)
3adc1dd00SVeronika Molnarova# SPDX-License-Identifier: GPL-2.0
4adc1dd00SVeronika Molnarova
5adc1dd00SVeronika Molnarova#
6adc1dd00SVeronika Molnarova#	test_basic of perf_probe test
7adc1dd00SVeronika Molnarova#	Author: Michael Petlan <[email protected]>
8adc1dd00SVeronika Molnarova#	Author: Masami Hiramatsu <[email protected]>
9adc1dd00SVeronika Molnarova#
10adc1dd00SVeronika Molnarova#	Description:
11adc1dd00SVeronika Molnarova#
12adc1dd00SVeronika Molnarova#		This test tests basic functionality of perf probe command.
13adc1dd00SVeronika Molnarova#
14adc1dd00SVeronika Molnarova
15adc1dd00SVeronika Molnarova# include working environment
16adc1dd00SVeronika Molnarova. ../common/init.sh
17adc1dd00SVeronika Molnarova
18adc1dd00SVeronika MolnarovaTEST_RESULT=0
19adc1dd00SVeronika Molnarova
20adc1dd00SVeronika Molnarovaif ! check_kprobes_available; then
21adc1dd00SVeronika Molnarova	print_overall_skipped
22*1ab138feSVeronika Molnarova	exit 2
23adc1dd00SVeronika Molnarovafi
24adc1dd00SVeronika Molnarova
25adc1dd00SVeronika Molnarova
26adc1dd00SVeronika Molnarova### help message
27adc1dd00SVeronika Molnarova
28adc1dd00SVeronika Molnarovaif [ "$PARAM_GENERAL_HELP_TEXT_CHECK" = "y" ]; then
29adc1dd00SVeronika Molnarova	# test that a help message is shown and looks reasonable
30adc1dd00SVeronika Molnarova	$CMD_PERF probe --help > $LOGS_DIR/basic_helpmsg.log 2> $LOGS_DIR/basic_helpmsg.err
31adc1dd00SVeronika Molnarova	PERF_EXIT_CODE=$?
32adc1dd00SVeronika Molnarova
33adc1dd00SVeronika Molnarova	../common/check_all_patterns_found.pl "PERF-PROBE" "NAME" "SYNOPSIS" "DESCRIPTION" "OPTIONS" "PROBE\s+SYNTAX" "PROBE\s+ARGUMENT" "LINE\s+SYNTAX" < $LOGS_DIR/basic_helpmsg.log
34adc1dd00SVeronika Molnarova	CHECK_EXIT_CODE=$?
35adc1dd00SVeronika Molnarova	../common/check_all_patterns_found.pl "LAZY\s+MATCHING" "FILTER\s+PATTERN" "EXAMPLES" "SEE\s+ALSO" < $LOGS_DIR/basic_helpmsg.log
36adc1dd00SVeronika Molnarova	(( CHECK_EXIT_CODE += $? ))
37adc1dd00SVeronika Molnarova	../common/check_all_patterns_found.pl "vmlinux" "module=" "source=" "verbose" "quiet" "add=" "del=" "list.*EVENT" "line=" "vars=" "externs" < $LOGS_DIR/basic_helpmsg.log
38adc1dd00SVeronika Molnarova	(( CHECK_EXIT_CODE += $? ))
39adc1dd00SVeronika Molnarova	../common/check_all_patterns_found.pl "no-inlines" "funcs.*FILTER" "filter=FILTER" "force" "dry-run" "max-probes" "exec=" "demangle-kernel" < $LOGS_DIR/basic_helpmsg.log
40adc1dd00SVeronika Molnarova	(( CHECK_EXIT_CODE += $? ))
41adc1dd00SVeronika Molnarova	../common/check_no_patterns_found.pl "No manual entry for" < $LOGS_DIR/basic_helpmsg.err
42adc1dd00SVeronika Molnarova	(( CHECK_EXIT_CODE += $? ))
43adc1dd00SVeronika Molnarova
44adc1dd00SVeronika Molnarova	print_results $PERF_EXIT_CODE $CHECK_EXIT_CODE "help message"
45adc1dd00SVeronika Molnarova	(( TEST_RESULT += $? ))
46adc1dd00SVeronika Molnarovaelse
47adc1dd00SVeronika Molnarova	print_testcase_skipped "help message"
48adc1dd00SVeronika Molnarovafi
49adc1dd00SVeronika Molnarova
50adc1dd00SVeronika Molnarova
51adc1dd00SVeronika Molnarova### usage message
52adc1dd00SVeronika Molnarova
53adc1dd00SVeronika Molnarova# without any args perf-probe should print usage
54adc1dd00SVeronika Molnarova$CMD_PERF probe 2> $LOGS_DIR/basic_usage.log > /dev/null
55adc1dd00SVeronika Molnarova
56adc1dd00SVeronika Molnarova../common/check_all_patterns_found.pl "[Uu]sage" "perf probe" "verbose" "quiet" "add" "del" "force" "line" "vars" "externs" "range" < $LOGS_DIR/basic_usage.log
57adc1dd00SVeronika MolnarovaCHECK_EXIT_CODE=$?
58adc1dd00SVeronika Molnarova
59adc1dd00SVeronika Molnarovaprint_results 0 $CHECK_EXIT_CODE "usage message"
60adc1dd00SVeronika Molnarova(( TEST_RESULT += $? ))
61adc1dd00SVeronika Molnarova
62adc1dd00SVeronika Molnarova
63adc1dd00SVeronika Molnarova### quiet switch
64adc1dd00SVeronika Molnarova
65adc1dd00SVeronika Molnarova# '--quiet' should mute all output
66adc1dd00SVeronika Molnarova$CMD_PERF probe --quiet --add vfs_read > $LOGS_DIR/basic_quiet01.log 2> $LOGS_DIR/basic_quiet01.err
67adc1dd00SVeronika MolnarovaPERF_EXIT_CODE=$?
68adc1dd00SVeronika Molnarova$CMD_PERF probe --quiet --del vfs_read > $LOGS_DIR/basic_quiet03.log 2> $LOGS_DIR/basic_quiet02.err
69adc1dd00SVeronika Molnarova(( PERF_EXIT_CODE += $? ))
70adc1dd00SVeronika Molnarova
71adc1dd00SVeronika Molnarovatest "`cat $LOGS_DIR/basic_quiet*log $LOGS_DIR/basic_quiet*err | wc -l`" -eq 0
72adc1dd00SVeronika MolnarovaCHECK_EXIT_CODE=$?
73adc1dd00SVeronika Molnarova
74adc1dd00SVeronika Molnarovaprint_results $PERF_EXIT_CODE $CHECK_EXIT_CODE "quiet switch"
75adc1dd00SVeronika Molnarova(( TEST_RESULT += $? ))
76adc1dd00SVeronika Molnarova
77adc1dd00SVeronika Molnarova
78adc1dd00SVeronika Molnarova# print overall results
79adc1dd00SVeronika Molnarovaprint_overall_results "$TEST_RESULT"
80adc1dd00SVeronika Molnarovaexit $?
81