summaryrefslogtreecommitdiff
path: root/tools/verification/rvgen/tests/rvgen_monitor.t
blob: 5f2562600badbfc4427cbf287915e04ba40325e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
source ../tests/engine.sh
test_begin

set_timeout 30s

# Help and basic tests
check "verify help page" \
	"$RVGEN --help" 0 "Generate kernel rv monitor"

check "verify monitor subcommand help" \
	"$RVGEN monitor --help" 0 "Monitor class"

# DA monitor tests - test all monitor types
check_and_compare_folder "DA per_cpu (default name)" \
	"$RVGEN monitor -c da -s tests/specs/test_da.dot -t per_cpu" \
	"test_da" "obj-\$(CONFIG_RV_MON_TEST_DA) += monitors/test_da/test_da.o"

check_and_compare_folder "DA global type" \
	"$RVGEN monitor -c da -s tests/specs/test_da.dot -t global -n da_global" \
	"da_global" "DA_MON_EVENTS_IMPLICIT"

check_and_compare_folder "DA per_task with description" \
	"$RVGEN monitor -c da -s tests/specs/test_da2.dot -t per_task -n da_pertask_desc -D 'Custom description for testing'" \
	"da_pertask_desc" "#include <monitors/da_pertask_desc/da_pertask_desc_trace.h>"

check_and_compare_folder "DA per_obj with parent" \
	"$RVGEN monitor -c da -s tests/specs/test_da2.dot -t per_obj -n da_perobj_parent -p parent_mon" \
	"da_perobj_parent" "DA_MON_EVENTS_ID"

# HA monitor tests
check_and_compare_folder "HA per_task (default name)" \
	"$RVGEN monitor -c ha -s tests/specs/test_ha.dot -t per_task" \
	"test_ha" "HA_MON_EVENTS_ID"

check_and_compare_folder "HA per_cpu type" \
	"$RVGEN monitor -c ha -s tests/specs/test_ha.dot -t per_cpu -n ha_percpu" \
	"ha_percpu" "HA_MON_EVENTS_IMPLICIT"

# LTL monitor test
check_and_compare_folder "LTL per_task" \
	"$RVGEN monitor -c ltl -s tests/specs/test_ltl.ltl -t per_task -n ltl_pertask" \
	"ltl_pertask" "source \"kernel/trace/rv/monitors/ltl_pertask/Kconfig\""

check_and_compare_folder "LTL per_task with parent and description (default name)" \
	"$RVGEN monitor -c ltl -s tests/specs/test_ltl.ltl -t per_task -p ltl_parent -D 'Simple description'" \
	"test_ltl" "LTL_MON_EVENTS_ID"

# Error handling tests
check "missing required spec argument" \
	"$RVGEN monitor -c da -t per_cpu" 2 \
	"the following arguments are required: -s/--spec" "Traceback (most recent call last)"

check "missing required monitor type" \
	"$RVGEN monitor -c da -s tests/specs/test_da.dot" 2 \
	"the following arguments are required: -t/--monitor_type" "Traceback (most recent call last)"

check "missing required monitor class" \
	"$RVGEN monitor -s tests/specs/test_da.dot -t per_cpu" 2 \
	"the following arguments are required: -c/--class" "Traceback (most recent call last)"

check "invalid monitor class" \
	"$RVGEN monitor -c invalid -s tests/specs/test_da.dot -t per_cpu" 1 \
	"Unknown monitor class" "Traceback (most recent call last)"

check "missing dot file" \
	"$RVGEN monitor -c da -s tests/specs/nonexistent.dot -t per_cpu" 1 \
	"No such file or directory" "Traceback (most recent call last)"

check "missing ltl file" \
	"$RVGEN monitor -c ltl -s tests/specs/nonexistent.ltl -t per_task" 1 \
	"No such file or directory" "Traceback (most recent call last)"

check "invalid dot file syntax" \
	"$RVGEN monitor -c da -s tests/specs/test_invalid.dot -t per_cpu" 1 \
	"The automaton doesn't have an initial state" "Traceback (most recent call last)"

check "invalid ha file syntax" \
	"$RVGEN monitor -c ha -s tests/specs/test_invalid_ha.dot -t per_obj" 1 \
	"Unrecognised event" "Traceback (most recent call last)"

check "invalid ltl file syntax" \
	"$RVGEN monitor -c ltl -s tests/specs/test_invalid.ltl -t per_task" 1 \
	"No terminal matches 'i'" "Traceback (most recent call last)"

test_end