xref: /linux/tools/verification/rvgen/tests/rvgen_monitor.t (revision 55ee4b931a7ffedc886175d265dd6e6d08fd4151)
1*36c1af42SGabriele Monaco#!/bin/bash
2*36c1af42SGabriele Monaco# SPDX-License-Identifier: GPL-2.0
3*36c1af42SGabriele Monacosource ../tests/engine.sh
4*36c1af42SGabriele Monacotest_begin
5*36c1af42SGabriele Monaco
6*36c1af42SGabriele Monacoset_timeout 30s
7*36c1af42SGabriele Monaco
8*36c1af42SGabriele Monaco# Help and basic tests
9*36c1af42SGabriele Monacocheck "verify help page" \
10*36c1af42SGabriele Monaco	"$RVGEN --help" 0 "Generate kernel rv monitor"
11*36c1af42SGabriele Monaco
12*36c1af42SGabriele Monacocheck "verify monitor subcommand help" \
13*36c1af42SGabriele Monaco	"$RVGEN monitor --help" 0 "Monitor class"
14*36c1af42SGabriele Monaco
15*36c1af42SGabriele Monaco# DA monitor tests - test all monitor types
16*36c1af42SGabriele Monacocheck_and_compare_folder "DA per_cpu (default name)" \
17*36c1af42SGabriele Monaco	"$RVGEN monitor -c da -s tests/specs/test_da.dot -t per_cpu" \
18*36c1af42SGabriele Monaco	"test_da" "obj-\$(CONFIG_RV_MON_TEST_DA) += monitors/test_da/test_da.o"
19*36c1af42SGabriele Monaco
20*36c1af42SGabriele Monacocheck_and_compare_folder "DA global type" \
21*36c1af42SGabriele Monaco	"$RVGEN monitor -c da -s tests/specs/test_da.dot -t global -n da_global" \
22*36c1af42SGabriele Monaco	"da_global" "DA_MON_EVENTS_IMPLICIT"
23*36c1af42SGabriele Monaco
24*36c1af42SGabriele Monacocheck_and_compare_folder "DA per_task with description" \
25*36c1af42SGabriele Monaco	"$RVGEN monitor -c da -s tests/specs/test_da2.dot -t per_task -n da_pertask_desc -D 'Custom description for testing'" \
26*36c1af42SGabriele Monaco	"da_pertask_desc" "#include <monitors/da_pertask_desc/da_pertask_desc_trace.h>"
27*36c1af42SGabriele Monaco
28*36c1af42SGabriele Monacocheck_and_compare_folder "DA per_obj with parent" \
29*36c1af42SGabriele Monaco	"$RVGEN monitor -c da -s tests/specs/test_da2.dot -t per_obj -n da_perobj_parent -p parent_mon" \
30*36c1af42SGabriele Monaco	"da_perobj_parent" "DA_MON_EVENTS_ID"
31*36c1af42SGabriele Monaco
32*36c1af42SGabriele Monaco# HA monitor tests
33*36c1af42SGabriele Monacocheck_and_compare_folder "HA per_task (default name)" \
34*36c1af42SGabriele Monaco	"$RVGEN monitor -c ha -s tests/specs/test_ha.dot -t per_task" \
35*36c1af42SGabriele Monaco	"test_ha" "HA_MON_EVENTS_ID"
36*36c1af42SGabriele Monaco
37*36c1af42SGabriele Monacocheck_and_compare_folder "HA per_cpu type" \
38*36c1af42SGabriele Monaco	"$RVGEN monitor -c ha -s tests/specs/test_ha.dot -t per_cpu -n ha_percpu" \
39*36c1af42SGabriele Monaco	"ha_percpu" "HA_MON_EVENTS_IMPLICIT"
40*36c1af42SGabriele Monaco
41*36c1af42SGabriele Monaco# LTL monitor test
42*36c1af42SGabriele Monacocheck_and_compare_folder "LTL per_task" \
43*36c1af42SGabriele Monaco	"$RVGEN monitor -c ltl -s tests/specs/test_ltl.ltl -t per_task -n ltl_pertask" \
44*36c1af42SGabriele Monaco	"ltl_pertask" "source \"kernel/trace/rv/monitors/ltl_pertask/Kconfig\""
45*36c1af42SGabriele Monaco
46*36c1af42SGabriele Monacocheck_and_compare_folder "LTL per_task with parent and description (default name)" \
47*36c1af42SGabriele Monaco	"$RVGEN monitor -c ltl -s tests/specs/test_ltl.ltl -t per_task -p ltl_parent -D 'Simple description'" \
48*36c1af42SGabriele Monaco	"test_ltl" "LTL_MON_EVENTS_ID"
49*36c1af42SGabriele Monaco
50*36c1af42SGabriele Monaco# Error handling tests
51*36c1af42SGabriele Monacocheck "missing required spec argument" \
52*36c1af42SGabriele Monaco	"$RVGEN monitor -c da -t per_cpu" 2 \
53*36c1af42SGabriele Monaco	"the following arguments are required: -s/--spec" "Traceback (most recent call last)"
54*36c1af42SGabriele Monaco
55*36c1af42SGabriele Monacocheck "missing required monitor type" \
56*36c1af42SGabriele Monaco	"$RVGEN monitor -c da -s tests/specs/test_da.dot" 2 \
57*36c1af42SGabriele Monaco	"the following arguments are required: -t/--monitor_type" "Traceback (most recent call last)"
58*36c1af42SGabriele Monaco
59*36c1af42SGabriele Monacocheck "missing required monitor class" \
60*36c1af42SGabriele Monaco	"$RVGEN monitor -s tests/specs/test_da.dot -t per_cpu" 2 \
61*36c1af42SGabriele Monaco	"the following arguments are required: -c/--class" "Traceback (most recent call last)"
62*36c1af42SGabriele Monaco
63*36c1af42SGabriele Monacocheck "invalid monitor class" \
64*36c1af42SGabriele Monaco	"$RVGEN monitor -c invalid -s tests/specs/test_da.dot -t per_cpu" 1 \
65*36c1af42SGabriele Monaco	"Unknown monitor class" "Traceback (most recent call last)"
66*36c1af42SGabriele Monaco
67*36c1af42SGabriele Monacocheck "missing dot file" \
68*36c1af42SGabriele Monaco	"$RVGEN monitor -c da -s tests/specs/nonexistent.dot -t per_cpu" 1 \
69*36c1af42SGabriele Monaco	"No such file or directory" "Traceback (most recent call last)"
70*36c1af42SGabriele Monaco
71*36c1af42SGabriele Monacocheck "missing ltl file" \
72*36c1af42SGabriele Monaco	"$RVGEN monitor -c ltl -s tests/specs/nonexistent.ltl -t per_task" 1 \
73*36c1af42SGabriele Monaco	"No such file or directory" "Traceback (most recent call last)"
74*36c1af42SGabriele Monaco
75*36c1af42SGabriele Monacocheck "invalid dot file syntax" \
76*36c1af42SGabriele Monaco	"$RVGEN monitor -c da -s tests/specs/test_invalid.dot -t per_cpu" 1 \
77*36c1af42SGabriele Monaco	"The automaton doesn't have an initial state" "Traceback (most recent call last)"
78*36c1af42SGabriele Monaco
79*36c1af42SGabriele Monacocheck "invalid ha file syntax" \
80*36c1af42SGabriele Monaco	"$RVGEN monitor -c ha -s tests/specs/test_invalid_ha.dot -t per_obj" 1 \
81*36c1af42SGabriele Monaco	"Unrecognised event" "Traceback (most recent call last)"
82*36c1af42SGabriele Monaco
83*36c1af42SGabriele Monacocheck "invalid ltl file syntax" \
84*36c1af42SGabriele Monaco	"$RVGEN monitor -c ltl -s tests/specs/test_invalid.ltl -t per_task" 1 \
85*36c1af42SGabriele Monaco	"No terminal matches 'i'" "Traceback (most recent call last)"
86*36c1af42SGabriele Monaco
87*36c1af42SGabriele Monacotest_end
88