zCore icon indicating copy to clipboard operation
zCore copied to clipboard

关于本地测试和 Github CI 的一些改进意见

Open YdrMaster opened this issue 2 years ago • 12 comments

  • 缓存更多预编译程序

    Qemu、musl toolchain 等可以以预编译压缩文件的形式缓存,减少下载和编译的耗时。

  • 本地与 CI 的一致性

    应该实现本地脚本与 CI 流程的一致性,尤其是应该在本地体现测试矩阵。这样有 2 个好处:

    1. 提交前方便本地一键测试,发现问题更快;
    2. CI 出错方便本地复现;

    最好的方式是本地直接读取 Github CI 的脚本,复刻 CI 上的运行流程,但不清楚是否有支持这种操作的现成工具。本地也无法支持 CI 那么干净且多样化的环境配置。其次是减少 CI 脚本里的语句,尽量复用本地脚本逻辑。

  • 实现方便扩展的测试框架

    简化增加测例的步骤或者添加操作指南。


有一部分工作在做了:一个分支

YdrMaster avatar May 04 '22 02:05 YdrMaster

最好测试出错的时候直接由测试框架打印出一个复现脚本,出了错直接无脑复制粘贴就能再试。

YdrMaster avatar May 04 '22 02:05 YdrMaster

分支的 README 中增加了设计愿景。

YdrMaster avatar May 04 '22 03:05 YdrMaster

实现了一部分 #287 。

YdrMaster avatar May 06 '22 09:05 YdrMaster

缓存了更多东西 #288 。

YdrMaster avatar May 08 '22 13:05 YdrMaster

我觉得测试集的运行逻辑也应该改改。现在每个测例都要启动 qemu、引导 zCore、运行测例、反馈结果,大量时间花在引导 zCore 上,尤其是 x86_64。如果做成启动一次 zCore 然后运行多个测例直到测试集结束或者内核崩溃呢?这样 x86_64 的运行时间估计能直接缩短 95%。如果不算超时全部测例只要运行两分钟,就算需要刷一刷也没什么关系。

#288 之后,大部分东西都缓存了,除了两个 x86_64 测试集需要 40 分钟,其他所有测试运行时间都在 10 分钟以内。如果把全部测试压到 10 分钟以内,测试框架就有足以支持日常使用的可用性了。

YdrMaster avatar May 08 '22 13:05 YdrMaster

正在恢复 rootfs <- libc-test <- image 的自动递归,以及应对下载/克隆失败的情况。

YdrMaster avatar May 09 '22 12:05 YdrMaster

#292 完全理清了 rootfs 的建立过程。现在可以为使用烧写最小的镜像以节约烧写时间和 flash 空间。

向 rootfs 加入的测例与 CI job 保持一致,也就是说,libc 测试只加入 libc 测例,其他测试只加入其他测例。Action 脚本只需调用一两个指令即可测试,本地对失败测例进行复现也就比较容易了。

YdrMaster avatar May 11 '22 12:05 YdrMaster

  • 目前对测试环境的测试:

    • Ubuntu20.04/Ubuntu22.04/Debian,但 Ubuntu22.04 无法执行 linux libc test,原因是编译不出测例来
    • Qemu6.0~Qemu7.0
  • 需要手工安装:

    • git
    • wget
    • git lfs
    • rustup
    • build-essential
    • make
    • qemu
    • python3
    • ...

YdrMaster avatar May 12 '22 00:05 YdrMaster

增加新的功能 #296

YdrMaster avatar May 15 '22 14:05 YdrMaster

see #322

YdrMaster avatar Jun 13 '22 00:06 YdrMaster

#325 移除了 alphine,并使得 libos 有自己的 rootfs,这样就不用来回倒腾 x86_64 的 rootfs 了。理论上说现在所有架构的 rootfs 可以并行构建

YdrMaster avatar Jun 16 '22 11:06 YdrMaster

#334 完全移除了顶层 xtask 对内层 Makefile 的引用,并且补充了现有所有子命令的文档

YdrMaster avatar Jun 25 '22 22:06 YdrMaster

刚刚增加了一个 toml 配置文件控制不同硬件上的 feature 选择,构建系统进入新时代了

YdrMaster avatar Oct 13 '22 07:10 YdrMaster