EN

新闻中心

LOONGSON NEWS

栏目导航

Jenkins在龙芯JVM测试中的实践

发布时间:2018-11-23    已阅读:

1Jenkins简介

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

主要用于:

  1. 持续、自动地构建/测试软件项目。
  2. 监控一些定时执行的任务。[1]

2背景

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

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

3向龙芯平台迁移Jenkins

表1 迁移前后的服务器对比
  CPU OS JDK
x86平台 Intel(R) Xeon(R) CPU           E5506 CentOS 6.10 OpenJDK 8u181
龙芯平台 3B3000四路 Loongnix 1.0 龙芯OpenJDK 8

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

  1. 在龙芯平台上准备环境。Jenkins的运行需要依赖JDK,在Loongnix系统上执行以下命令即可完成龙芯OpenJDK的安装:
$ sudo yum install java-1.8.0-openjdk-devel
  1. 迁移Jenkins工作目录。Jenkins的工作目录一般位于$HOME/.jenkins,将迁移前x86上的$HOME/.jenkins目录完整拷贝至龙芯服务器上就完成了工作目录的迁移。由于该Jenkins系统已在x86平台上使用了一年以上,工作目录包含了大量内容,总体积已达到几百G,因此该步骤可能会需要一定的拷贝时间。
  2. 在龙芯平台上启动Jenkins。访问Jenkins官网并下载最新版本Jenkins(jenkins.war文件),或将x86平台上的jenkins.war拷贝至龙芯平台,输入如下命令:
$ java -jar jenkins.war

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

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

4一个实例

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

图1 龙芯OpenJDK 8的Jenkins测试流程
图2 部分龙芯OpenJDK 8测试项目

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

接下来以测试流程中SPEC JVM98测试集为例说明一个具体测试项目在龙芯上的应用:
1 配置测试参数
  • 配置SPEC JVM98的参数JVM98OPTIONS,例如:-s1 -M5 -m5 -t -a和-s100 -M200 -m50 -g -a
  • 配置测试JVM的参数JVMOPTIONS,例如:-Xmixed、-Xcomp和-XX:+UseNUMA
  • 配置测试JVM的版本BUILD_TYPE,例如:release和fastdebug
  • 配置运行测试的机器节点,例如:mips64el、numa和3a3000

配置界面如图3所示。

图3 SPEC JVM98测试集的参数配置
2 执行测试。

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

3 查看测试结果

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

图4 SPEC JVM98一次测试结果
4 产生测试报告

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

5 Jenkins运行现状

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

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

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

图5 过去90天Jenkins服务器节点日均任务数量
图6 过去90天所有节点日均任务数量
图7 过去一年所有节点日均任务数量

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

6结语

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

  1. https://baike.baidu.com/item/Jenkins/10917210?fr=aladdin
  2. http://www.loongnix.org/index.php/%E8%87%AA%E4%B8%BB%E5%8F%AF%E9%9D%A0%EF%BC%8C%E9%BE%99%E8%8A%AF%E5%BC%80%E6%BA%90%E7%A4%BE%E5%8C%BA%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%81%E7%A7%BB%E4%B8%80%E8%A7%88