sim:tests: add shodan_stress robot script
Script to stress Cantrip and in particular the MemoryManager. To start
we sequentially run randomly selected applications.
Note this is mostly useful with a release build where there is limited
memory and the MemoryManager needs to constantly recycle resources.
Bug: 274954207
Change-Id: I06223856e0e652ce86416b70a9d1466a822bb9e1
diff --git a/shodan_stress.robot b/shodan_stress.robot
new file mode 100644
index 0000000..5778ab3
--- /dev/null
+++ b/shodan_stress.robot
@@ -0,0 +1,102 @@
+*** Comments ***
+Stress test for shodan system.
+
+*** Variables ***
+${MAX_ITER} 100
+
+${LOG_TIMEOUT} 2
+${ROOTDIR} ${CURDIR}/../..
+${SCRIPT} sim/config/shodan.resc
+${PROMPT} CANTRIP>
+${UART5} sysbus.uart5
+
+${MATCHA_BUNDLE_RELEASE} ${ROOTDIR}/out/matcha-bundle-release.elf
+${CANTRIP_KERNEL_RELEASE} ${ROOTDIR}/out/cantrip/riscv32-unknown-elf/release/kernel/kernel.elf
+${CANTRIP_ROOTSERVER_RELEASE} ${ROOTDIR}/out/cantrip/riscv32-unknown-elf/release/capdl-loader
+
+${OUT_TMP} ${ROOTDIR}/out/tmp
+
+${FLASH_RELEASE_TAR} out/ext_flash_release.tar
+${CPIO_RELEASE} out/cantrip/riscv32-unknown-elf/release/ext_builtins.cpio
+
+*** Keywords ***
+Prepare Machine
+ Execute Command path set @${ROOTDIR}
+ Execute Command $tar=@${FLASH_RELEASE_TAR}
+ Execute Command $cpio=@${CPIO_RELEASE}
+ Execute Command $kernel=@${CANTRIP_KERNEL_RELEASE}
+ Set Default Uart Timeout 10
+ Create Log Tester ${LOG_TIMEOUT}
+ 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
+
+Stop App
+ [Arguments] ${app}
+ Write Line To Uart stop ${app}
+ Wait For Line On Uart Bundle "${app}" stopped
+
+*** Test Cases ***
+Prepare Flash Tarball
+ Run Process mkdir -p ${ROOTDIR}/out/tmp
+ Run Process cp -f ${MATCHA_BUNDLE_RELEASE} ${OUT_TMP}/matcha-tock-bundle-release
+ Run Process riscv32-unknown-elf-strip ${OUT_TMP}/matcha-tock-bundle-release
+ Run Process riscv32-unknown-elf-objcopy -O binary -g ${OUT_TMP}/matcha-tock-bundle-release ${OUT_TMP}/matcha-tock-bundle.bin
+ Run Process ln -sfr ${CANTRIP_KERNEL_RELEASE} ${OUT_TMP}/kernel
+ Run Process ln -sfr ${CANTRIP_ROOTSERVER_RELEASE} ${OUT_TMP}/capdl-loader
+ Run Process tar -C ${OUT_TMP} -cvhf ${ROOTDIR}/${FLASH_RELEASE_TAR} matcha-tock-bundle.bin kernel capdl-loader
+ Provides flash-tarball
+
+Test Shodan Boot
+ Requires flash-tarball
+ Prepare Machine
+ Start Emulation
+ Create Terminal Tester ${UART5}
+ Wait For Prompt On Uart ${PROMPT}
+
+ FOR ${iter} IN RANGE ${MAX_ITER}
+ IF ${{random.randint(0, 2)}} == 0
+ Write Line to Uart start hello
+ Wait For Line On Uart Done, sleeping in WFI loop
+ Stop App hello
+ END
+
+ IF ${{random.randint(0, 2)}} == 0
+ Write Line to Uart start fibonacci
+ Wait For Line On Uart [10]
+ Stop App fibonacci
+ END
+
+ IF ${{random.randint(0, 2)}} == 0
+ Write Line to Uart start keyval
+ Wait For Line On Uart delete ok (for missing key)
+ Stop App keyval
+ END
+
+ IF ${{random.randint(0, 2)}} == 0
+ Write Line to Uart start logtest
+ Wait For Line On Uart DONE
+ Stop App logtest
+ END
+
+ IF ${{random.randint(0, 2)}} == 0
+ Write Line to Uart start panic
+ Wait For Line On Uart Goodbye, cruel world
+ Stop App panic
+ END
+
+ IF ${{random.randint(0, 2)}} == 0
+ Write Line to Uart start timer
+ Wait For Line On Uart DONE!
+ Stop App timer
+ END
+
+ IF ${{random.randint(0, 4)}} == 0
+ Write Line to Uart start mltest
+ Wait For Line On Uart DONE!
+ Stop App mltest
+ END
+
+ Write Line to Uart mdebug
+ END