Mesa CI 是Intel的一个持续集成系统,用于运行Mesa图形库的构建和一致性测试套件。它运行在200多个系统中,每天运行 数千万次 测试。
Mesa项目 是 OpenGL 和 Vulkan 等图形标准的OSS实现。Intel和AMD将其作为图形驱动程序的基础。它充当图形API和硬件驱动程序之间的转换层。Mesa开发人员使用一个名为Mesa CI的框架进行持续集成,特别是在他们的测试套件中。Mesa需要支持 各种供应商图形驱动程序 以及不同版本的API标准。这就需要一个全面的测试套件,它需要与每个提交一起运行,以确保功能和性能。 Piglit 、 dEQP 、 VK-GL-CTS 和 Crucibleare 是一些在Mesa CI上运行的测试套件。在最近的X Org开发者大会上, Mark Janes 和Clayton Craft分享了一些 关于Mesa CI的细节 。
Mesa CI 包括一组配置文件和一个可以在Jenkins上运行的作业调度器及作业实现。它主要是用 Python 编写的,其原则是“把最小化 Jenkins 中的配置作为Mesa CI最重要的设计考虑”。根据 文档 ,Mesa CI理论上可以运行在任何CI基础设施之上,而不仅仅是Jenkins。目前,它被用于开发测试、发布验证、Intel驱动程序模拟器的投产前(硬件)测试、性能测试和一致性测试套件的验证。典型的开发测试周转时间是30分钟,即使向主分支的一次提交触发了数百万个测试。自定义数据库提供对测试历史的即时访问,系统还为公共基准测试生成性能趋势线。
Mesa CI创建于2014年,但人们认识到Mesa自动化测试的好处 比这要早 。从那时起,发布过程就正规化了,并且一直在 发展 (PDF)。在 之前的一篇文章 (PDF)中,Janes分享了为Mesa建立持续集成的理念。将测试作为一等工件,其中包括对测试可靠性和运行时间进行优先级排序。
图片来源: https://xdc2018.x.org/slides/Mesa_Continuous_Integration_at_Intel.pdf
每个平台都有一个单独的CI配置文件,一些测试套件需要一个单独的配置用于32位构建。由提交引起的测试失败会触发一系列步骤,其中一些是手动的。失败的测试被添加到CI配置的跳过列表中。不过,这并不是由开发人员完成的,也不知道这是否是因为测试框架没有注解测试用例而导致它们被忽略了。 JUnit 和 NUnit 等常见测试套件都提供了这个特性。跳过列表中的测试仍然运行,但失败时 不会报告 。这可以避免在Bug修复之前损失测试覆盖率。
当在包含未修复的Bug的分支上开发特性时,由于CI配置会跟踪主分支,所以会导致构建失败。对于每个测试状态更改,Mesa CI都会记录导致这种情况的提交。在这种情况下,由于Bug修复会被推送到主分支,所以当测试开始通过时,它会记录提交id。Mesa CI会检查特性分支是否已经修复。如果没有,它就认为测试状态是错误的,即预计测试会失败。最终,旧的稳定分支会在Mesa CI上运行,因为它们具有与该分支上的源代码一致的测试状态CI配置。但是,对于旧的分支,测试仍然会失败,测试机器上有硬件更新,而这些更新会影响所有分支。
Mesa CI的未来计划包括在构建执行期间显示日志和组件的状态,并允许开发人员对构建进行A/B比较。他们还可以使用 公共仪表板 。
查看英文原文: Continuous Integration at Intel for the Mesa Graphics Library
以上所述就是小编给大家介绍的《Intel图形库Mesa的持续集成》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- JavaScript图形实例:迭代函数系统生成图形
- 从图形到像素:前端图形编程技术概览
- TensorFlow也可以做图形渲染了:当神经网络遇上计算机图形学
- Shader 绘制基础图形
- 图形算法可视化
- iOS 图形性能优化
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Node.js开发指南
郭家寶(BYVoid) / 人民邮电出版社 / 2012-7 / 45.00元
Node.js是一种方兴未艾的新技术,诞生于2009年。经过两年的快速变化,Node.js生态圈已经逐渐走向稳定。Node.js采用了以往类似语言和框架中非常罕见的技术,总结为关键词就是:非阻塞式控制流、异步I/O、单线程消息循环。不少开发者在入门时总要经历一个痛苦的思维转变过程,给学习带来巨大的障碍。 而本书的目的就是帮助读者扫清这些障碍,学会使用Node.js进行Web后端开发,同时掌握事件驱......一起来看看 《Node.js开发指南》 这本书的介绍吧!