openstack rdo_为什么我们在RDO中对OpenStack软件包构建使用测试

RDO在构建OpenStack软件包时执行单元测试以确保与不同操作系统版本和组件的兼容性,检测潜在问题,以及提前发现上游项目中的错误。这有助于在打包过程中保证代码质量,防止依赖冲突,并警告缺失的依赖项。单元测试应避免依赖互联网资源,保持合理运行时间,并考虑在有限资源环境中执行。
摘要由CSDN通过智能技术生成

openstack rdo

所有OpenStack项目都带有自己的单元测试集,例如, 是oslo.config项目的单元测试文件夹。 当建议提出新补丁进行审核时,将执行这些测试,以确保新代码不会破坏现有(或新)功能。 例如,如果您查看此评论 ,您会看到执行的持续集成作业之一是“ openstack-tox-py27”,它使用Python 2.7运行单元测试。

RDO units

这如何转化为包装界? 作为规范文件的一部分,我们可以定义%check部分,在其中添加脚本以测试已安装的代码。 尽管这不是Fedora打包指南中的强制性部分,但强烈建议您这样做,因为它可以很好地保证打包的代码是正确的。

在许多情况下,RDO软件包的规范中都包含此%check部分,并且在构建软件包时将执行项目的单元测试。 这是为python-oslo-utils包执行的单元测试的示例

“但是为什么包装时又要再次执行这些测试?” Ÿ欧可以问。 毕竟,这些相同的测试在合并之前由Zuul门执行。 好吧,这有很多原因:

  • 这些单元测试使用特定的操作系统版本和特定的软件包集运行。 这些可能与RDO使用的那些有所不同,因此我们需要确保项目与那些组件的兼容性。

  • 使用pip将项目依赖项安装在OpenStack Gate中,某些版本可能有所不同。 这是因为OpenStack项目为每个依赖项支持多种版本,但通常仅使用一个版本进行测试。 我们已经看到了这样的情况:项目声明支持库的x.0版本,但随后添加了需要x.1版本的代码。 这种变化不会被OpenStack门注意到,但是会使打包时的单元测试失败。

  • 它们还使我们能够在上游闸门中发现问题之前将其发现。 OpenStack项目使用需求项目来决定其他项目应使用自己的库的哪个版本。 这允许出现一些相互依赖的问题,其中Oslo库中的更改可能会发现另一个项目中的错误,但是直到用新版本的Oslo库更新需求项目后,该问题才引起注意。 在RDO情况下,我们在所有项目中使用master分支中的代码运行RDO干线构建器,这使我们能够提前通知,如本示例bug所示

  • 当新的依赖项已添加到项目中时,它们会向我们发出预警,但它们尚未包含在软件包规格中。 由于单元测试使用大多数代码,因此任何缺少的依赖关系都应使它们失败。

由于在包构建过程中执行单元测试的方式,因此在定义它们时需要牢记一些细节。 如果您作为开发人员关注他们,则将使包装商的生活更轻松:

  • 不要创建依赖于Internet可用资源的单元测试。 大多数打包环境在构建包时都不允许Internet访问,因此依赖于通过DNS解析IP地址的单元测试将失败。

  • 尝试将单元测试的运行时间保持在合理的范围内。 如果一个项目的单元测试需要1个小时才能完成,那么很可能在打包过程中将不会执行它们,例如在本示例中

  • 不要以为总是会在具有8个快速核心的机器上执行单元测试。 我们已经看到,在有限的环境中运行或者单元测试花费的时间超过一定时间时,单元测试会失败。

既然您知道单元测试对于RDO封装的重要性,那么您可以继续进行并确保我们在每个包装上都使用它。 骇客骇客!


想更多地了解打包和安装OpenStack? OpenStack峰会将于5月 21 至24日 在温哥华 举行,这 是一次学习更多有关此主题的绝好机会。 本文还发布在RDO Project博客上

翻译自: https://opensource.com/article/18/5/unit-tests-rdo-package-builds

openstack rdo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值