-
Notifications
You must be signed in to change notification settings - Fork 210
Contribution
Runji Wang edited this page Apr 2, 2020
·
9 revisions
目前的开发目标有两个主线任务和一个支线任务:
- 主线:实现 Zircon 原始启动流程,支持运行到 shell(@PanQL @wangrunji0408)
- 主线:支持图形应用(@rzswh @heheda12345)
- 支线:补充功能和修复 bug,通过官方的单元测试
为了快速上手 zCore 的开发,一个可以马上拿来练手的小任务就是修复单元测试。
单元测试的状态在 Core tests 中维护。
Fuchsia 官方提供了一些用户态的测例,代码位于 zircon/system/utest
目录中,生成的程序位于 bootfs 中的 test/core/standalone-test
。在我们预编译好的 core-tests.zbi
中可以找到它。
zCore 运行这些测试的方法:
# zCore
# 首先修改 rboot.conf 中的 cmdline 为:
# cmdline=LOG=error:userboot=test/core/standalone-test
make run zbi_file=core-tests
# libos
cargo run -p zircon-loader prebuilt/zircon userboot=test/core/standalone-test
默认情况下会按顺序运行所有测试。如果想运行指定测试,可以给这个程序传启动参数,不过 userboot 并不支持给下一个程序传参数,因此这里需要一些 hack 的方法:参考这个 commit,我们截获了新进程读取 bootstrap channel 的操作,向启动信息中注入 args。通过修改硬编码的 test_args
变量,我们就可以给程序传不同的参数。如果不确定该传些什么,可以先传个 -h
试试。注意参数用\0
分割,且第一项是程序名。
修复测试的一般流程是这样的:
- 首先根据名字,找一个看上去容易修复的测试点
- 根据错误信息,推测导致测试挂掉的原因
- 查看文档,理解接口和对象的正确行为
- 如有必要,查看测试源码,了解具体操作过程
- 查看 zCore 现有实现代码,找到导致错误的原因(完全没实现?实现了但没导出syscall?实现得不正确?)
- 尝试修复并重新测试,重复以上过程直到测试通过
这个过程可以帮助你熟悉 Zircon 对象设计、具体接口语义,以及 zCore 的实现状态。
假如你完成了修复工作,希望能及时通报进展,并尽快 merge 到开发分支中(目前是 executor 分支)。