#!/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 " 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