action_utest.yml 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. name: AutoTestCI
  2. # Controls when the action will run. Triggers the workflow on push or pull request
  3. on: [push, pull_request]
  4. jobs:
  5. test:
  6. runs-on: ubuntu-latest
  7. name: ${{ matrix.legs.UTEST }}
  8. strategy:
  9. fail-fast: false
  10. matrix:
  11. legs:
  12. - {UTEST: "kernel/mem", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", CONFIG_FILE: "kernel/mem.conf", SD_FILE: "sd.bin"}
  13. - {UTEST: "kernel/ipc", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", CONFIG_FILE: "kernel/ipc.conf", SD_FILE: "sd.bin"}
  14. - {UTEST: "kernel/irq", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", CONFIG_FILE: "kernel/irq.conf", SD_FILE: "sd.bin"}
  15. - {UTEST: "kernel/timer", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", CONFIG_FILE: "kernel/timer.conf", SD_FILE: "sd.bin"}
  16. - {UTEST: "kernel/thread", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", CONFIG_FILE: "kernel/thread.conf", SD_FILE: "sd.bin"}
  17. - {UTEST: "components/utest", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", CONFIG_FILE: "utest_self/self.conf", SD_FILE: "sd.bin"}
  18. - {UTEST: "kernel/mem/riscv64", RTT_BSP: "bsp/qemu-riscv-virt64", QEMU_ARCH: "riscv64", QEMU_MACHINE: "virt", CONFIG_FILE: "kernel/mem.conf", SD_FILE: "None"}
  19. env:
  20. TEST_QEMU_ARCH: ${{ matrix.legs.QEMU_ARCH }}
  21. TEST_QEMU_MACHINE: ${{ matrix.legs.QEMU_MACHINE }}
  22. TEST_BSP_ROOT: ${{ matrix.legs.RTT_BSP }}
  23. TEST_CONFIG_FILE: ${{ matrix.legs.CONFIG_FILE }}
  24. TEST_SD_FILE: ${{ matrix.legs.SD_FILE }}
  25. steps:
  26. - uses: actions/checkout@v1
  27. - name: Install Tools
  28. shell: bash
  29. run: |
  30. sudo apt-get update
  31. sudo apt-get -yqq install scons qemu-system git
  32. - name: Install Arm ToolChains
  33. if: ${{ matrix.legs.QEMU_ARCH == 'arm' && success() }}
  34. shell: bash
  35. run: |
  36. wget -q https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
  37. sudo tar xjf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -C /opt
  38. /opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-gcc --version
  39. echo "RTT_EXEC_PATH=/opt/gcc-arm-none-eabi-10-2020-q4-major/bin" >> $GITHUB_ENV
  40. - name: Install RISC-V ToolChains
  41. if: ${{ matrix.legs.QEMU_ARCH == 'riscv64' && success() }}
  42. run: |
  43. wget -q https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz
  44. sudo tar zxvf riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz -C /opt
  45. /opt/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin/riscv64-unknown-elf-gcc --version
  46. echo "RTT_EXEC_PATH=/opt/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin" >> $GITHUB_ENV
  47. - name: Build BSP
  48. run: |
  49. echo CONFIG_RT_USING_UTESTCASES=y >> $TEST_BSP_ROOT/.config
  50. cat examples/utest/configs/$TEST_CONFIG_FILE >> $TEST_BSP_ROOT/.config
  51. scons --pyconfig-silent -C $TEST_BSP_ROOT
  52. scons -j$(nproc) -C $TEST_BSP_ROOT
  53. - name: Start Test
  54. if: ${{ success() }}
  55. run: |
  56. git clone https://github.com/armink/UtestRunner.git
  57. pushd $TEST_BSP_ROOT
  58. dd if=/dev/zero of=sd.bin bs=1024 count=65536
  59. popd
  60. pushd UtestRunner
  61. if [ $TEST_SD_FILE != "None" ]; then
  62. python3 qemu_runner.py --system $TEST_QEMU_ARCH --machine $TEST_QEMU_MACHINE --elf ../$TEST_BSP_ROOT/rtthread.elf --sd ../$TEST_BSP_ROOT/$TEST_SD_FILE
  63. else
  64. python3 qemu_runner.py --system $TEST_QEMU_ARCH --machine $TEST_QEMU_MACHINE --elf ../$TEST_BSP_ROOT/rtthread.elf
  65. fi
  66. cat rtt_console.log
  67. popd