Skip to content

Latest commit

 

History

History
57 lines (35 loc) · 3.63 KB

ci-test.md

File metadata and controls

57 lines (35 loc) · 3.63 KB

CI-test for Starry

本文档用于说明 Starry 的 CI 测试的具体情况和需求。

分支情况

目前最新的分支是:https://github.com/Arceos-monolithic/Starry/tree/x86_ZLMediaKit 。它同时支持宏内核的 RISC-Vx86_64。这个分支应该也支持 Unikernel 模式的 RISC-V/x86_64/aarch64 架构,不过目前还没测试。

启动前需要根据 README 指引先去修改系统启动时运行的程序,主要有以下可用:

  • "busybox sh" 是busybox 的终端
  • "./MediaServer -h" 是我们最近在测试的一个大应用,可以先不涉及
  • "busybox sh ./test_all.sh" 是我们期望系统通过的所有测例

此外,主分支支持宏内核的 RISC-VUnikernel 模式的 RISC-V/x86_64/aarch64 架构。

对测试的大致期望

  • 目前希望对架构(RISC-V/x86_64/aarch64)和文件系统(fat32/ext4)单独测试。

    • 对于与杨坤老师讨论的,关于车载系统暂不需要 RISC-Vfat32的问题,由于项目是从RISC-V与fat32的组合起步的,因此加入这些(RISCV-V, x86_64, aarch64)架构测试,既能帮助我们分析定位内核问题是出在移植代码上还是功能代码上,又能讲内核调试开发及测试方法,快速平替到车载系统的aarch64架构上。
  • 希望测试能更灵活,粒度更小 目前的测试的主要代码在 https://github.com/Arceos-monolithic/Starry/blob/x86_ZLMediaKit/testcases/testsuits-x86_64-linux-musl/test_all.sh 包含 libc-test busybox-test iozone lmbench netperf 等等。 还有一些零散测例用于测试一些零星的功能,比如

    "./readlink_parent"
    "./prctl",
    "./test-vfork-exit-x86_64",
    "./test-vfork-exec-x86_64",
    

    期望能实现以下功能:

    • 每个测例集包含许多测例,经常是个别测例无法通过,希望脚本能具体区分个别测例,实现对单个测试用例, 如./runtest.exe -w entry-static.exe argv,区分通过或不通过。
    • 有些测例失败时会自行退出,但另一些测例可能导致系统崩溃(这通常是系统本身设计不完善的问题)。希望脚本能区分这种情况,并且在系统崩溃时自动重启 Qemu,继续运行接下来的测例。方式可以通过:分别地维护通过列表和不通过列表。
    • 对通过与不通过的测试用例,输出数据统计;
  • 完善“跳过测试”的功能。

    • 例如 aarch64 目前不支持宏内核,就可以跳过这一整块测试。否则按照上一条描述,脚本可能会对几百条失败测例都重启 Qemu 进行测试,浪费算力和时间

一些参考

  • 一个同学做的简单 CI 版本。 https://github.com/cg1937/starry_ext4/tree/main/.github

  • zCore的CI测试,支持的架构及测试用例比较全: https://github.com/rcore-os/zCore/blob/master/.github/workflows/test.yml

  • OS比赛的初赛测试。用 python 脚本检查逐行比对测例输出。https://github.com/oscomp/testsuits-for-oskernel/tree/main/riscv-syscalls-testing

  • 另一个比赛内核的自动测试,使用 js 进行比对。

    • 代码仓库在 https://github.com/scPointer/maturin/blob/master/.github/workflows/classroom.yml
    • 用于测试的脚本仓库在 https://github.com/os-autograding/EvaluationScript
  • 我们本科OS课程实验的测试仓库 https://github.com/LearningOS/rCore-Tutorial-Test-2023A