sencha robots: add testbench sanity check
Adds the cheriot-rtos test suite. This requires the artifacts generated by
"m cheriot-test" be present.
Bypass-Presubmit-Reason: no sencha CI tests
Change-Id: Iba28310b4625bbe31caabccc551465a18f33591e
diff --git a/resources/sencha.resource b/resources/sencha.resource
new file mode 100644
index 0000000..eb68338
--- /dev/null
+++ b/resources/sencha.resource
@@ -0,0 +1,11 @@
+*** Keywords ***
+Prepare SailMachine
+ Execute Command path set @${ROOTDIR}
+ Execute Command $repl_file=@sim/config/platforms/sail.repl
+ Execute Command $cheriot_elf=@out/cheriot/test-suite/release/cheriot/cheriot/release/test-suite
+ Set Default Uart Timeout 20
+ Create Log Tester ${LOG_TIMEOUT}
+ Execute Script sim/config/cheriot.resc
+ Execute Command showAnalyzer "smc-uart-analyzer" ${SMC_UART} Antmicro.Renode.Analyzers.LoggingUartAnalyzer
+ # Add SMC_UART virtual time so we can check the machine execution time
+ Execute Command smc-uart-analyzer TimestampFormat Virtual
diff --git a/sencha_testbench.robot b/sencha_testbench.robot
new file mode 100644
index 0000000..6007ac6
--- /dev/null
+++ b/sencha_testbench.robot
@@ -0,0 +1,46 @@
+# Copyright 2024 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Comments ***
+Tests for sencha system from bootup to running the cheriot-rtos test suite.
+
+*** Settings ***
+Resource resources/sencha.resource
+Variables variables/common.py
+Variables variables/${PLATFORM}_${BUILD_TYPE}.py
+
+*** Test Cases ***
+Test CHERIoT-RTOS Test Suite
+ Prepare SailMachine
+ Start Emulation
+ Create Terminal Tester ${SMC_UART}
+
+ # Check only that test cases finish
+ Wait For Line On Uart Test runner: Checking that rel-ro caprelocs work
+ Wait For Line On Uart Test runner: MMIO finished
+ Wait For Line On Uart Test runner: Static sealing finished
+ Wait For Line On Uart Test runner: Crash recovery finished
+ Wait For Line On Uart Test runner: Compartment calls finished
+ Wait For Line On Uart Test runner: check_pointer finished
+ Wait For Line On Uart Test runner: Misc APIs finished
+ Wait For Line On Uart Test runner: Stacks exhaustion in the switcher finished
+ Wait For Line On Uart Test runner: Thread pool finished
+ Wait For Line On Uart Test runner: Global Constructors finished
+ Wait For Line On Uart Test runner: Queue finished
+ Wait For Line On Uart Test runner: Futex finished
+ Wait For Line On Uart Test runner: Locks finished
+ Wait For Line On Uart Test runner: Event groups finished
+ Wait For Line On Uart Test runner: Multiwaiter finished
+ Wait For Line on Uart Test runner: Allocator finished
+ Wait For Line on Uart Test runner: All tests finished
diff --git a/variables/common.py b/variables/common.py
index a9a1f72..9f470d5 100644
--- a/variables/common.py
+++ b/variables/common.py
@@ -13,9 +13,9 @@
# it was passed, else any changes are only local to this file
_BUILD_TYPE = BuiltIn().get_variable_value("${BUILD_TYPE}")
if _BUILD_TYPE:
- BUILD_TYPE = _BUILD_TYPE
+ BUILD_TYPE = _BUILD_TYPE
else:
- BUILD_TYPE = 'release'
+ BUILD_TYPE = 'release'
# Whether or not to wait for echoed back characters and validate those characters.
WAIT_ECHO = True
@@ -33,6 +33,7 @@
PLATFORM = environ['PLATFORM']
CANTRIP_OUTDIR = f'{ROOTDIR}/out/cantrip/{PLATFORM}/{BUILD_TYPE}'
+CHERIOT_OUTDIR = f'{ROOTDIR}/out/cheriot/{PLATFORM}/{BUILD_TYPE}/cheriot/cheriot/{BUILD_TYPE}'
SCRIPT = f'{ROOTDIR}/sim/config/{PLATFORM}.resc'
MATCHA_BUNDLE_PATH = f'{ROOTDIR}/out/matcha-bundle-{BUILD_TYPE}.elf'
diff --git a/variables/sencha_release.py b/variables/sencha_release.py
new file mode 100644
index 0000000..666ae19
--- /dev/null
+++ b/variables/sencha_release.py
@@ -0,0 +1,3 @@
+from common import *
+
+LOG_TIMEOUT = 20