Jenkins在龙芯JVM测试中的实践

Jenkins简介

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

主要用于:

1. 持续、自动地构建/测试软件项目。

2. 监控一些定时执行的任务。[1]

背景

Jenkins是龙芯在进行JVM测试时用到的重要工具,在龙芯OpenJDK的研发过程中,会使用Jenkins对相关源码进行周期性的自动编译构建和规模化测试,以验证研发效果和发现产品中的问题。除此之外,还会对社区的代码以及相关第三方库进行周期性的自动构建和自动测试,以监测这些软件的最新代码在龙芯平台上的正确性。

在早期,龙芯JVM的Jenkins测试服务是部署在x86服务器上的,随着龙芯OpenJDK以及相关软硬件产品的多次迭代和不断完善,龙芯平台已逐渐成熟,龙芯JVM组作为龙芯OpenJDK的第一用户,有必要将自己的产品运用到实践中,及时发现问题。因此,今年下半年龙芯JVM组将整个Jenkins自动测试系统从x86平台迁移至龙芯平台,以检验龙芯平台在Jenkins这个实际应用中能否经受得起考验。

向龙芯平台迁移Jenkins

表1 迁移前后的服务器对比

由于Jenkins是一个Java程序,具有跨平台的优点,因此向龙芯平台迁移Jenkins简单易行,不存在任何障碍,具体需要下面几个步骤:

1. 在龙芯平台上准备环境。Jenkins的运行需要依赖JDK,在Loongnix系统上执行以下命令即可完成龙芯OpenJDK的安装:

$ sudo yuminstall java-1.8.0-openjdk-devel

2. 迁移Jenkins工作目录。Jenkins的工作目录一般位于$HOME/.jenkins,将迁移前x86上的$HOME/.jenkins目录完整拷贝至龙芯服务器上就完成了工作目录的迁移。由于该Jenkins系统已在x86平台上使用了一年以上,工作目录包含了大量内容,总体积已达到几百G,因此该步骤可能会需要一定的拷贝时间。

3. 在龙芯平台上启动Jenkins。访问Jenkins官网并下载最新版本Jenkins(jenkins.war文件),或将x86平台上的jenkins.war拷贝至龙芯平台,输入如下命令:

$ java-jar jenkins.war

就完成了Jenkins的启动,启动后Jenkins会自动去工作目录寻找相关配置。

4. 迁移完毕,访问Jenkins服务。打开浏览器在地址栏上输入localhost:8080即可。

一个实例

接下来以一个龙芯OpenJDK8的测试实例,介绍一下Jenkins在龙芯平台上的应用。龙芯OpenJDK8在Jenkins上的测试流程框架如图1所示。

图1 龙芯OpenJDK8的Jenkins测试流程

图2 部分龙芯OpenJDK8测试项目

图2中的任务列表包含了龙芯OpenJDK8的主要测试,这些项目包含大量测试用例和测试参数,在测试时,这些测试用例会被部署至几十台龙芯节点上进行多参数、长时间的测试,实现大规模的功能、性能和稳定性测试。未来随着机器规模的增加,测试规模也将进一步扩大。

接下来以测试流程中SPECJVM98测试集为例说明一个具体测试项目在龙芯上的应用:

1.配置测试参数

l 配置SPECJVM98的参数JVM98OPTIONS,例如:-s1-M5 -m5 -t -a和-s100 -M200 -m50 -g-a

l 配置测试JVM的参数JVMOPTIONS,例如:-Xmixed、-Xcomp和-XX:+UseNUMA

l 配置测试JVM的版本BUILD_TYPE,例如:release和fastdebug

l 配置运行测试的机器节点,例如:mips64el、numa和3a3000

配置界面如图3所示。

图3 SPEC JVM98测试集的参数配置

2. 执行测试

该测试项目可以在上文介绍的周期性测试中被自动触发,也可有针对性地进行手动触发。不管通过哪种触发方式,Jenkins会根据相应的参数配置将测试部署至各机器节点上,进行相应的测试并反馈测试结果。

3. 查看测试结果

为了能够直观、快速、方便地查看所有测试结果,需进行相应的测试结果判定,使每项测试均能正确展示四种结果:测试PASSED、测试FAILED、未知错误和测试被终止ABORTED。

图4 SPEC JVM98一次测试结果

4. 产生测试报告

最终,“publish-and-report”项目会对所有测试项目的结果进行收集和汇总,生成测试报告,反馈给相关人员并做存档。

Jenkins运行现状

Jenkins迁移至龙芯平台已稳定运行数月,从未出现死机、JDK崩溃和异常等现象。

截至撰稿之日,该Jenkins系统共包含173个项目,136个插件。用于Jenkins测试的机器节点包括数十台龙芯服务器和数十台龙芯主机,还包含Docker等环境。测试机器节点的操作系统则包含Loongnix、中标、Debian、CentOS等。整套Jenkins系统可无缝迁移至龙芯平台,迁移过程中未出现任何问题。

在过去三个半月,该Jenkins系统共进行了2158次任务的构建,共进行配置1377次。近一年的Jenkins服务器节点和所有节点的日均构建数据图如下所示。

图5 过去90天Jenkins服务器节点日均任务数量

图6 过去90天所有节点日均任务数量

图7 过去一年所有节点日均任务数量

由上图可见,测试任务的数量成逐渐上涨的趋势,尤其是较一年前相比,测试任务数量有了显著的提高。这是由于龙芯JVM测试的不断改进以及不断增加测试强度所致。另一方面,在测试压力相比迁移之前有明显增长的情况下,运行在龙芯平台上的Jenkins仍能提供稳定高效的服务,保障产品研发和测试的有效进行。

结语

随着整个龙芯平台软硬件环境的不断完善,在龙芯平台上部署生产环境已经成为可能,龙芯公司已经开展将相关服务向龙芯平台迁移的进程[2]。Jenkins作为其中一个例子,迁移至龙芯平台后,在测试任务量相比迁移之前有明显增长的情况下,仍能保持稳定高效运行,可以满足龙芯JVM产品可持续、自动化的构建和规模化的测试,也为龙芯不断完善自己的产品提供了保障。

[1]https://baike.baidu.com/item/Jenkins/10917210?fr=aladdin

[2]http://www.loongnix.org/index.php/自主可靠,龙芯开源社区服务器迁移一览

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181120B0NRJG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

同媒体快讯

扫码关注腾讯云开发者

领取腾讯云代金券