1*92f0ce55SGabriele Monaco#!/bin/bash 2*92f0ce55SGabriele Monaco# SPDX-License-Identifier: GPL-2.0 3*92f0ce55SGabriele Monacosource ../tests/engine.sh 4*92f0ce55SGabriele Monacotest_begin 5*92f0ce55SGabriele Monaco 6*92f0ce55SGabriele Monacoset_timeout 30s 7*92f0ce55SGabriele Monaco 8*92f0ce55SGabriele MonacoRVDIR=/sys/kernel/tracing/rv/ 9*92f0ce55SGabriele Monaco 10*92f0ce55SGabriele Monaco# Help and basic tests 11*92f0ce55SGabriele Monacocheck "verify help page" \ 12*92f0ce55SGabriele Monaco "$RV --help" 0 "usage: rv command" 13*92f0ce55SGabriele Monaco 14*92f0ce55SGabriele Monacocheck "verify list subcommand help" \ 15*92f0ce55SGabriele Monaco "$RV list --help" 0 "list all available monitors" 16*92f0ce55SGabriele Monaco 17*92f0ce55SGabriele Monacoall_nested=$(grep : $RVDIR/available_monitors | cut -d: -f2 | paste -s | sed 's/\t/\\|/g') 18*92f0ce55SGabriele Monacoall_non_nested=$(grep -v : $RVDIR/available_monitors | cut -d: -f2 | paste -s | sed 's/\t/\\|/g') 19*92f0ce55SGabriele Monacosched_monitors=$(grep sched: $RVDIR/available_monitors | cut -d: -f2 | paste -s | sed 's/\t/\\|/g') 20*92f0ce55SGabriele Monacodescription_state="[[:space:]]\+[[:print:]]\+\[\(OFF\|ON\)\]" 21*92f0ce55SGabriele Monacoline_nested=" - \($all_nested\)${description_state}" 22*92f0ce55SGabriele Monacoline_non_nested="\($all_non_nested\)${description_state}" 23*92f0ce55SGabriele Monaco 24*92f0ce55SGabriele Monaco# List monitors and containers 25*92f0ce55SGabriele Monacocheck "list all monitors" \ 26*92f0ce55SGabriele Monaco "$RV list" 0 "" "" "^\($line_nested\|$line_non_nested\)$" 27*92f0ce55SGabriele Monaco 28*92f0ce55SGabriele Monacocheck_if_exists "list container" \ 29*92f0ce55SGabriele Monaco "$RV list sched" "$RVDIR/monitors/sched" \ 30*92f0ce55SGabriele Monaco "" "-- No monitor found in container sched --" \ 31*92f0ce55SGabriele Monaco "^\($sched_monitors\)${description_state}$" 32*92f0ce55SGabriele Monaco 33*92f0ce55SGabriele Monacocheck_if_exists "list non-container" \ 34*92f0ce55SGabriele Monaco "$RV list wwnr" "$RVDIR/monitors/wwnr" \ 35*92f0ce55SGabriele Monaco "-- No monitor found in container wwnr --" \ 36*92f0ce55SGabriele Monaco "^\( - \)\?[[:alnum:]]\+${description_state}$" 37*92f0ce55SGabriele Monaco 38*92f0ce55SGabriele Monacocheck "list incomplete container name" \ 39*92f0ce55SGabriele Monaco "$RV list s" 0 "-- No monitor found in container s --" 40*92f0ce55SGabriele Monaco 41*92f0ce55SGabriele Monaco# Error handling tests 42*92f0ce55SGabriele Monacocheck "no command" \ 43*92f0ce55SGabriele Monaco "$RV" 1 "rv requires a command" 44*92f0ce55SGabriele Monaco 45*92f0ce55SGabriele Monacocheck "invalid command" \ 46*92f0ce55SGabriele Monaco "$RV invalid" 1 "rv does not know the invalid command" 47*92f0ce55SGabriele Monaco 48*92f0ce55SGabriele Monacotest_end 49