RTI 的 IIoT 实验室虚拟之旅
“确保你告诉他们运行实验室的软件系统, ”我的团队告诉我,作为 Connext 会议硅谷版的一部分,我正准备引导参观 RTI 的 IIoT 实验室。如果您参观实验室,最引人注目的是成排的硬件,从大型服务器到 Raspberry Pi。然而,实验室中的物理系统只讲述了幕后构建和测试我们的软件的故事的一部分。软件系统将空间从“计算机集合”转变为真正的实验室。内部软件系统对实验室资源的协调一直在发展,并已集成到 RTI 内部构建、测试和支持流程中。
在我们进入细节之前,让我描绘一下我们实验室需要支持的软件开发类型。 RTI Connext 软件在 100 多种不同的处理器/操作系统/工具链组合上运行,范围从英特尔处理器上的常见 Linux 发行版到定制嵌入式系统上的利基实时操作系统。我们支持各种网络技术和传输,并与许多数据库接口。 RTI Connext 库支持使用 C、C++、Java、C#、Ada、Lua、Python、Javascript 和 Go 进行开发。我们的产品套件包含 20 多种单独的产品。由于客户 IIoT 系统的性质和升级周期,我们将继续支持和发布补丁到较旧的软件版本,这可以追溯到十多年前。为了支持这一点,我们建立了一个令人印象深刻的 IIoT 实验室。
在RTI,我们托管和运营我们自己的构建和测试系统。虽然有些部分可以轻松迁移到托管的 Atlassian、Amazon Web Services 或 Microsoft Azure 环境,但实验室的很大一部分却不能。一起来看看吧。
RTI IIoT 实验室由三大系统组组成:
- 构建和测试集群 - 运行各种 x86/x64 虚拟机
- 企业和嵌入式测试目标机 - 特殊硬件、实时操作系统和不太常用的系统的组合
- 可扩展性和性能机器 - 一组功能强大的测试机和大量 Raspberry Pi 板。
构建和测试集群
每天,开发人员和持续集成系统都会在我们的构建和测试集群上启动大量构建和测试周期。该系统使用 openstack 和 ceph 构建,以虚拟化计算和存储环境。我们目前使用 Atlassian Bamboo 进行持续集成,并且正在迁移到 Jenkins。稍后会详细介绍。
每周,我们都会在所有支持的架构中启动一个完整的构建和回归测试周期。这涉及到虚拟化系统,以及对企业和嵌入式测试目标的测试。
回归测试仪表板
我们目前使用一组本土脚本来自动化每周构建。这些脚本启动本机和交叉编译、重置嵌入式板卡、在嵌入式和企业目标上运行测试、收集结果并将其提供在仪表板中供开发人员查看。在所有架构中实现这项工作是一项不小的努力。我们的平台团队不仅擅长将我们的软件移植到各种操作系统,他们还熟悉每个嵌入式目标的特殊性以及如何自动化测试。
企业和嵌入式测试目标机器
并非我们所有的测试目标都可以在我们的构建和测试集群上进行虚拟化。例如,我们支持 IBM Power 服务器上的 AIX 和 Sparc 上的 Solaris。我们甚至有客户在 DEC Alpha 系统上使用 openVMS。当我们的一位客户使用 Cell 处理器构建定制(且昂贵)的系统时,我们得到了一些 Playstation 3 游戏机,并在其上运行 Linux 作为成本较低的替代方案。他们继续像魅力一样工作。我们还运行了各种 MacOS 版本,以及来自 Concurrent 的强化 Redhawk Linux 系统。
RTI IIoT 实验室中的各种企业操作系统目标
大部分测试目标是嵌入式系统。其中许多是片上系统。我们拥有实验室中最多的处理器家族之一:x86、PowerPC、MIPS、ARM(包括Zynq和NVIDA Tegra X2)等。我们支持多种实时操作系统,包括VxWorks、VxWorks 653、Integrity、LynxOS、QNX、 Nucleus、FreeRTOS、实时 Linux、DEOS 和 Intime。
在某些情况下,特别是当我们没有可购买的等效系统时,我们的客户会向我们提供系统、操作系统和板级支持包(BSP)。在大多数情况下,我们的平台团队会集成系统并构建嵌入式内核。通常,我们是最先尝试新 BSP 甚至全新硬件的人之一。
RTI IIoT 实验室中的各种嵌入式目标
可扩展性和性能机器
第三组系统是可扩展性和性能测试机。我们有一套强大的 x64 系统,与实验室的其余部分隔离,以测量我们软件在每次构建时的延迟和吞吐量。我们还使用这些系统来执行发现和其他可扩展性测试,使用自己开发的测试框架。例如,使用我们的“Polygraph”测试框架,我们可以大规模验证发现协议。它允许我们回答以下问题:是否所有需要相互发现的应用程序都这样做?发现阶段的 CPU、内存和带宽消耗情况如何?发现需要多长时间?
此外,我们构建了一个小型 Raspberry Pi 集群,允许我们测试我们软件在各种网络拓扑中的可扩展性。作为我们研究项目的一部分,研究团队构建了一个系统,可以在使用大量机器时轻松部署和管理测试应用程序和结果。
在大量机器上部署测试应用程序的软件系统
网络
我们使用各种网络技术和拓扑测试我们的中间件。我们拥有 10/100Mbps、千兆和 10 Gbit 以太网网络的组合。我们有一个非常强大的电缆管理系统,并建立了一个无线测试平台来验证传输移动功能,同时切换到其他 WIFI 网络。我们有一个小型的 Infiniband 设置,过去也通过卫星链路测试过我们的中间件。我们可以模拟丢包或损坏的数据包。
如果您有机会参观实验室,您会发现里面设备齐全,但人不多。通过联网的电源开关和串行服务器,世界各地的 RTI 工程师几乎可以访问并完全控制实验室中的每个系统。
下一代构建系统
我们当前的构建和测试基础架构在过去几年中一直为我们服务。然而,我们已经发挥了它的潜力。我们正在构建一个新的构建系统,允许:
- 工程团队通过更快的构建和使用更现代的技术(例如 Cmake、Conan.io、Jfrog artifactory、Docker 容器和 Jenkins)来提高工作效率
- 发布团队并行执行更多构建和测试工作
- 更简单的机器协调和预订
RTI IIoT 实验室是 RTI 总部行动的核心,一年 365 天 24x7 全天候工作,以确保我们客户的任务关键型分布式系统 - 当前和未来——经过充分测试并继续跑赢大盘。展望未来,我们将在以后的博文中分享更多有关新构建系统的信息。
物联网技术