blob: f59b8d35d28a04f83f4b06d56007ec42361d0f34 [file] [log] [blame]
*** Variables ***
${UART0} sysbus.uart0
${UART1} sysbus.uart1
${URI} @https://dl.antmicro.com/projects/renode
${HELLO_ELF} ${URI}/cortex-r52--hirtos-hello.elf-s_140356-d44a0b48e22a17fa8cb83ef08243ec23942812c0
${HELLO_PARTITIONS_ELF} ${URI}/cortex-r52--hirtos-hello_partitions.elf-s_285392-644559248d6c6d752fe0dc1b46e3a467cce75841
*** Keywords ***
Create Machine
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/cpus/cortex-r52.repl
Create Multicore Machine
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/cpus/cortex-r52_smp.repl
Wait For Lines Per Thread
[Arguments] @{lines} ${testerId}
FOR ${thread} IN RANGE 1 8
${id}= Evaluate str(${thread}+1)
${prio}= Evaluate str(31-${thread})
${thread}= Evaluate str(${thread})
FOR ${line} IN @{lines}
${line}= Replace String ${line} %THREAD% ${thread}
${line}= Replace String ${line} %ID% ${id}
${line}= Replace String ${line} %PRIO% ${prio}
Wait For Line On Uart ${line} treatAsRegex=true testerId=${testerId}
END
END
Wait For Hello Sample
[Arguments] ${testerId} ${cpu}=0
Wait For Line On Uart HiRTOS running on CPU ${cpu} testerId=${testerId}
Wait For Line On Uart FVP ARMv8-R Hello running on CPU ${cpu} testerId=${testerId}
Wait For Line On Uart HiRTOS: Thread scheduler started testerId=${testerId}
Wait For Line On Uart HiRTOS: Timer thread started testerId=${testerId}
# First, check if all threads have been started
Wait For Lines Per Thread Thread %THREAD% \\(id %ID%, prio %PRIO%\\): .* Wakeups 1 testerId=${testerId}
Wait For Line On Uart HiRTOS: Idle thread started testerId=${testerId}
# Then, make sure each of them has been woken up at least once
Wait For Lines Per Thread Thread %THREAD% \\(id %ID%, prio %PRIO%\\): .* Wakeups 2 testerId=${testerId}
Wait For Hello Partitions Sample
[Arguments] ${testerId} ${cpu}=0
Wait For Line On Uart HiRTOS Separation Kernel running on CPU ${cpu} testerId=${testerId}
# Check if Partition 1 has been started
Wait For Line On Uart HiRTOS running on CPU ${cpu} testerId=${testerId}
Wait For Line On Uart Hello Partition 1 running on CPU ${cpu} testerId=${testerId}
Wait For Line On Uart HiRTOS: Thread scheduler started testerId=${testerId}
Wait For Line On Uart HiRTOS: Timer thread started testerId=${testerId}
Wait For Lines Per Thread Partition 1: Thread %THREAD% \\(id %ID%, prio %PRIO%\\): .* Wakeups 1 testerId=${testerId}
Wait For Line On Uart HiRTOS: Idle thread started testerId=${testerId}
# Check if Partition 2 has been started
Wait For Line On Uart HiRTOS running on CPU ${cpu} testerId=${testerId}
Wait For Line On Uart Hello Partition 2 on CPU ${cpu} testerId=${testerId}
Wait For Line On Uart HiRTOS: Thread scheduler started testerId=${testerId}
Wait For Line On Uart HiRTOS: Timer thread started testerId=${testerId}
Wait For Lines Per Thread Partition 2: Thread %THREAD% \\(id %ID%, prio %PRIO%\\): .* Wakeups 1 testerId=${testerId}
Wait For Line On Uart HiRTOS: Idle thread started testerId=${testerId}
# Finally, make sure each thread has been woken up at least once
Wait For Lines Per Thread Partition 1: Thread %THREAD% \\(id %ID%, prio %PRIO%\\): .* Wakeups 2
... Partition 2: Thread %THREAD% \\(id %ID%, prio %PRIO%\\): .* Wakeups 2
... testerId=${testerId}
*** Test Cases ***
Should Run Hello Sample On One Core
Create Machine
${tester}= Create Terminal Tester ${UART0} defaultPauseEmulation=true
Execute Command sysbus LoadELF ${HELLO_ELF}
Wait For Hello Sample ${tester}
Should Run Hello Partitions Sample On One Core
Create Machine
${tester}= Create Terminal Tester ${UART0} defaultPauseEmulation=true
Execute Command sysbus LoadELF ${HELLO_PARTITIONS_ELF}
Wait For Hello Partitions Sample ${tester}
Should Run Hello Sample On Two Cores
Create Multicore Machine
${cpu0_tester}= Create Terminal Tester ${UART0}
${cpu1_tester}= Create Terminal Tester ${UART1}
Execute Command sysbus LoadELF ${HELLO_ELF}
Wait For Hello Sample ${cpu0_tester} cpu=0
Wait For Hello Sample ${cpu1_tester} cpu=1
Should Run Hello Partitions Sample On Two Cores
Create Multicore Machine
${cpu0_tester}= Create Terminal Tester ${UART0}
${cpu1_tester}= Create Terminal Tester ${UART1}
Execute Command sysbus LoadELF ${HELLO_PARTITIONS_ELF}
Wait For Hello Partitions Sample ${cpu0_tester} cpu=0
Wait For Hello Partitions Sample ${cpu1_tester} cpu=1