blob: 79a846d0beb0c3659bfa0f56824bfc8f3a3faa38 [file] [log] [blame]
# Copyright 2022 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.
# m sel4test+wrapper robot script; expects/runs pre-built artifacts
# Takes ~15 mins (wall time) on a cloudtop
# TODO: need build target to just build artifacts
*** Comments***
seL4 tests running on shodan system.
*** Variables ***
# Run sel4test+wrapper (sel4test + Rust syscall wrappers) instead of sel4test
# This variable is 0 by default, use ./test.sh --wrapper to override
${RUN_WRAPPER} 0
*** Variables ***
${LOG_TIMEOUT} 2
${ROOTDIR} ${CURDIR}/../..
${SCRIPT} sim/config/shodan.resc
${UART0} sysbus.uart0
${UART1} sysbus.uart1
${UART2} sysbus.uart2
${UART3} sysbus.uart3
${UART5} sysbus.uart5
${MATCHA_BUNDLE_RELEASE} ${ROOTDIR}/out/matcha-bundle-release.elf
${OUT_TMP} ${ROOTDIR}/out/tmp
${SEL4TEST_WRAPPER_KERNEL} ${ROOTDIR}/out/sel4test-wrapper/shodan/debug/kernel/kernel.elf
${SEL4TEST_WRAPPER_ROOTSERVER} ${ROOTDIR}/out/sel4test-wrapper/shodan/debug/apps/sel4test-driver/sel4test-driver
${FLASH_WRAPPER_TAR} out/sel4test-wrapper/shodan/debug/ext_flash.tar
${SEL4TEST_KERNEL} ${ROOTDIR}/out/sel4test/shodan/debug/kernel/kernel.elf
${SEL4TEST_ROOTSERVER} ${ROOTDIR}/out/sel4test/shodan/debug/apps/sel4test-driver/sel4test-driver
${FLASH_TAR} out/sel4test/shodan/debug/ext_flash.tar
*** Keywords ***
Prepare Machine
Execute Command path set @${ROOTDIR}
IF ${RUN_WRAPPER} == 1
Execute Command $kernel=@${SEL4TEST_WRAPPER_KERNEL}
Execute Command $tar=@${FLASH_WRAPPER_TAR}
ELSE
Execute Command $kernel=@${SEL4TEST_KERNEL}
Execute Command $tar=@${FLASH_TAR}
END
Execute Command $cpio=@/dev/null
Execute Command $sc_bin=@${OUT_TMP}/matcha-tock-bundle.bin
Execute Script ${SCRIPT}
# Add UART5 virtual time so we can check the machine execution time
Execute Command uart5-analyzer TimestampFormat Virtual
Execute Command cpu0 IsHalted false
Set Default Uart Timeout 30
*** Test Cases ***
Prepare Flash Tarball
# NB: must have at least 2x spaces between Run Process arguments!
IF ${RUN_WRAPPER} == 1
Run Process mkdir -p ${OUT_TMP}
Run Process cp -f ${MATCHA_BUNDLE_RELEASE} ${OUT_TMP}/matcha-tock-bundle
Run Process riscv32-unknown-elf-strip ${OUT_TMP}/matcha-tock-bundle
Run Process riscv32-unknown-elf-objcopy -O binary -g ${OUT_TMP}/matcha-tock-bundle ${OUT_TMP}/matcha-tock-bundle.bin
Run Process ln -sfr ${SEL4TEST_WRAPPER_KERNEL} ${OUT_TMP}/kernel
Run Process ln -sfr ${SEL4TEST_WRAPPER_ROOTSERVER} ${OUT_TMP}/capdl-loader
Run Process tar -C ${OUT_TMP} -cvhf ${ROOTDIR}/${FLASH_WRAPPER_TAR} matcha-tock-bundle.bin kernel capdl-loader
ELSE
Run Process mkdir -p ${OUT_TMP}
Run Process cp -f ${MATCHA_BUNDLE_RELEASE} ${OUT_TMP}/matcha-tock-bundle
Run Process riscv32-unknown-elf-strip ${OUT_TMP}/matcha-tock-bundle
Run Process riscv32-unknown-elf-objcopy -O binary -g ${OUT_TMP}/matcha-tock-bundle ${OUT_TMP}/matcha-tock-bundle.bin
Run Process ln -sfr ${SEL4TEST_KERNEL} ${OUT_TMP}/kernel
Run Process ln -sfr ${SEL4TEST_ROOTSERVER} ${OUT_TMP}/capdl-loader
Run Process tar -C ${OUT_TMP} -cvhf ${ROOTDIR}/${FLASH_TAR} matcha-tock-bundle.bin kernel capdl-loader
END
Provides initialization
Shodan seL4test with Rust syscall wrappers
[Documentation] Test TockOS boot, seL4 boot and sel4test
[Tags] tock seL4 sel4test uart
Requires initialization
Prepare Machine
Create Log Tester ${LOG_TIMEOUT}
${tockuart}= Create Terminal Tester ${UART0}
${sel4uart}= Create Terminal Tester ${UART5}
Start Emulation
Wait For Line On Uart SEC: Booting seL4 from TockOS app done! testerId=${tockuart}
Wait For Line On Uart Booting all finished, dropped to user space testerId=${sel4uart}
Wait For Line On Uart MCS configuration testerId=${sel4uart}
Wait For Line On Uart Starting test suite sel4test testerId=${sel4uart}
Wait For Line On Uart Test BIND0001 passed testerId=${sel4uart}
Wait For Line On Uart Test BIND0002 passed testerId=${sel4uart}
Wait For Line On Uart Test BIND0003 passed testerId=${sel4uart}
Wait For Line On Uart Test BIND0004 passed testerId=${sel4uart}
Wait For Line On Uart Test BIND005 passed testerId=${sel4uart}
Wait For Line On Uart Test BIND006 passed testerId=${sel4uart}
Wait For Line On Uart Test CANCEL_BADGED_SENDS_0001 passed testerId=${sel4uart}
Wait For Line On Uart Test CANCEL_BADGED_SENDS_0002 passed testerId=${sel4uart}
Wait For Line On Uart Test CNODEOP0001 passed testerId=${sel4uart}
Wait For Line On Uart Test CNODEOP0002 passed testerId=${sel4uart}
Wait For Line On Uart Test CNODEOP0003 passed testerId=${sel4uart}
Wait For Line On Uart Test CNODEOP0004 passed testerId=${sel4uart}
Wait For Line On Uart Test CNODEOP0005 passed testerId=${sel4uart}
Wait For Line On Uart Test CNODEOP0006 passed testerId=${sel4uart}
Wait For Line On Uart Test CNODEOP0007 passed testerId=${sel4uart}
Wait For Line On Uart Test CNODEOP0008 passed testerId=${sel4uart}
Wait For Line On Uart Test CSPACE0001 passed testerId=${sel4uart}
Wait For Line On Uart Test DOMAINS0001 passed testerId=${sel4uart}
Wait For Line On Uart Test DOMAINS0002 passed testerId=${sel4uart}
Wait For Line On Uart Test DOMAINS0003 passed testerId=${sel4uart}
Wait For Line On Uart Test FPU0000 passed testerId=${sel4uart}
Wait For Line On Uart Test FPU0001 passed testerId=${sel4uart}
Wait For Line On Uart Test FRAMEDIPC0001 passed testerId=${sel4uart}
Wait For Line On Uart Test FRAMEDIPC0002 passed testerId=${sel4uart}
Wait For Line On Uart Test FRAMEDIPC0003 passed testerId=${sel4uart}
Wait For Line On Uart Test FRAMEEXPORTS0001 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0001 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0002 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0003 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0004 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0010 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0011 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0012 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0013 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0014 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0015 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0016 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0017 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0018 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0019 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0020 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0021 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0022 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0023 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0024 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0025 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0026 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC0027 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC1001 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC1002 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC1003 passed testerId=${sel4uart}
Wait For Line On Uart Test IPC1004 passed testerId=${sel4uart}
Wait For Line On Uart Test IPCRIGHTS0001 passed testerId=${sel4uart}
Wait For Line On Uart Test IPCRIGHTS0002 passed testerId=${sel4uart}
Wait For Line On Uart Test IPCRIGHTS0003 passed testerId=${sel4uart}
Wait For Line On Uart Test NBWAIT0001 passed testerId=${sel4uart}
Wait For Line On Uart Test PAGEFAULT0001 passed testerId=${sel4uart}
Wait For Line On Uart Test PAGEFAULT0002 passed testerId=${sel4uart}
Wait For Line On Uart Test PAGEFAULT0003 passed testerId=${sel4uart}
Wait For Line On Uart Test PAGEFAULT0004 passed testerId=${sel4uart}
Wait For Line On Uart Test PAGEFAULT1001 passed testerId=${sel4uart}
Wait For Line On Uart Test PAGEFAULT1002 passed testerId=${sel4uart}
Wait For Line On Uart Test PAGEFAULT1003 passed testerId=${sel4uart}
Wait For Line On Uart Test PAGEFAULT1004 passed testerId=${sel4uart}
Wait For Line On Uart Test REGRESSIONS0001 passed testerId=${sel4uart}
Wait For Line On Uart Test RETYPE0000 passed testerId=${sel4uart}
Wait For Line On Uart Test RETYPE0001 passed testerId=${sel4uart}
Wait For Line On Uart Test RETYPE0002 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED0002 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED0003 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED0004 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED0005 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED0007 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED0016 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED0017 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED0019 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED0020 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED_CONTEXT_0001 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED_CONTEXT_0003 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED_CONTEXT_0006 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED_CONTEXT_0007 passed testerId=${sel4uart}
Wait For Line On Uart Test SCHED_CONTEXT_0008 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_CLIENT_001 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_CLIENT_002 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_CLIENT_003 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_CLIENT_004 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_CLIENT_005 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_CLI_PROC_001 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_CLI_PROC_002 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_CLI_PROC_003 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_CLI_PROC_004 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_CLI_PROC_005 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_PARENT_001 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_PARENT_002 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_PARENT_003 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_PARENT_004 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_PARENT_005 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_PARENT_006 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_PARENT_007 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_PARENT_008 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_PARENT_009 passed testerId=${sel4uart}
Wait For Line On Uart Test SERSERV_PARENT_010 passed testerId=${sel4uart}
Wait For Line On Uart Test SYNC001 passed testerId=${sel4uart}
Wait For Line On Uart Test SYNC002 passed testerId=${sel4uart}
Wait For Line On Uart Test SYNC003 passed testerId=${sel4uart}
Wait For Line On Uart Test SYNC004 passed testerId=${sel4uart}
Wait For Line On Uart Test THREADS0004 passed testerId=${sel4uart}
Wait For Line On Uart Test THREADS0005 passed testerId=${sel4uart}
Wait For Line On Uart Test TIMEOUTFAULT0001 passed testerId=${sel4uart}
Wait For Line On Uart Test TIMEOUTFAULT0002 passed testerId=${sel4uart}
Wait For Line On Uart Test TIMEOUTFAULT0003 passed testerId=${sel4uart}
Wait For Line On Uart Test TLS0001 passed testerId=${sel4uart}
Wait For Line On Uart Test TLS0002 passed testerId=${sel4uart}
Wait For Line On Uart Test TLS0006 passed testerId=${sel4uart}
Wait For Line On Uart Test TRIVIAL0000 passed testerId=${sel4uart}
Wait For Line On Uart Test TRIVIAL0001 passed testerId=${sel4uart}
Wait For Line On Uart Test TRIVIAL0002 passed testerId=${sel4uart}
Wait For Line On Uart Test VSPACE0000 passed testerId=${sel4uart}
Wait For Line On Uart Test VSPACE0002 passed testerId=${sel4uart}
Wait For Line On Uart Test VSPACE0003 passed testerId=${sel4uart}
Wait For Line On Uart Test VSPACE0004 passed testerId=${sel4uart}
Wait For Line On Uart Test VSPACE0005 passed testerId=${sel4uart}
Wait For Line On Uart Test VSPACE0006 passed testerId=${sel4uart}
# Wait For Line On Uart Test suite passed. 139 tests passed. 43 tests disabled. testerId=${sel4uart}
# ${passed} ${disabled} = Wait For Line On Uart Test suite passed. (\\d+) tests passed. (\\d+) tests disabled. testerId=${sel4uart}
Wait For Line On Uart All is well in the universe testerId=${sel4uart}