Linux内核开发人员在提交代码后如何在本地测试他们的代码?他们是否使用某种单元测试和构建自动化?测试计划?
当前回答
Linux内核开发人员在提交代码后如何在本地测试他们的代码? 他们是否使用某种单元测试和构建自动化?
从传统意义上来说,没有。
例如,Ingo Molnar正在运行以下工作负载:
用一组随机配置选项构建一个新内核 引导进入 转到第1节
每个构建失败、启动失败、错误或运行时警告都将得到处理。24/7。乘以几个方框,就可以发现很多问题。
测试计划?
No.
可能存在误解,认为有一个中央测试设施,但实际上没有。每个人都做他/她想做的事。
其他回答
据我所知,英特尔有一个自动性能回归检查工具(名为lkp/0 day)运行/资助。它将测试发送到邮件列表的每个有效补丁,并检查从不同的微基准测试(如hackbench, fio, unixbench, netperf等)更改的分数。
一旦出现性能下降/改进,相应的报告将直接发送给补丁作者和Cc相关的维护者。
Linux内核开发人员在提交代码后如何在本地测试他们的代码? 他们是否使用某种单元测试和构建自动化?
从传统意义上来说,没有。
例如,Ingo Molnar正在运行以下工作负载:
用一组随机配置选项构建一个新内核 引导进入 转到第1节
每个构建失败、启动失败、错误或运行时警告都将得到处理。24/7。乘以几个方框,就可以发现很多问题。
测试计划?
No.
可能存在误解,认为有一个中央测试设施,但实际上没有。每个人都做他/她想做的事。
我曾经做过Linux内核编译,并对Android (Android 6.0 (Marshmallow)和Android 7.0 (Nougat))做过一些修改,其中我使用的是Linux版本3。我在Linux系统上交叉编译它,手动调试错误,然后在Android上运行它的引导映像文件,检查它是否进入了一个漏洞。如果它运行完美,则意味着它根据系统需求进行了完美的编译。
用于MotoG内核编译
注意:Linux内核将根据依赖于系统硬件的需求进行更改
我可以想象他们使用虚拟化来进行快速测试。它可以是QEMU、VirtualBox或Xen之类的东西,以及一些执行配置和自动化测试的脚本。
自动化测试可能是通过尝试许多随机配置或少数特定配置(如果他们处理特定问题)来完成的。Linux有很多低级工具(比如dmesg)来监视和记录来自内核的调试数据,所以我认为也会使用它。
adobriyan提到了Ingo的随机配置构建测试循环。现在,零日测试机器人(又名kbuild测试机器人)几乎涵盖了这一点。这里有一篇关于基础结构的不错的文章:内核构建/引导测试
这种设置背后的想法是尽快通知开发人员,以便他们能够尽快纠正错误(在某些情况下,在补丁进入Linus的树之前,因为kbuild基础设施也会针对维护人员的子系统树进行测试)。
推荐文章
- 使用sudo时未找到命令
- 当有命令行参数时,如何使用GDB分析程序的核心转储文件?
- 如何强制从另一个SSH会话分离屏幕?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- Linux Bash中双&和分号有什么区别?
- 在SSH会话中查找客户端的IP地址
- C++ Linux的想法?
- 如何为Fedora安装g++ ?
- Linux删除大小为0的文件
- Spring引导应用程序作为服务
- 如何重定向标准derr和标准输出到不同的文件在同一行脚本?
- Windows和Linux上的c++编译:ifdef开关
- Linux: kill后台任务
- 如何修改Linux系统中打开文件的数量限制?
- errno线程安全吗?