必威国际有限公司
  • 提供什么? 必威国际有限公司詹金斯X Tekton 旋转运动员
  • 博客
  • 用户指南 ——安装詹金斯必威国际有限公司 - 必威国际有限公司- - - - -詹金斯管道 ——管理詹金斯必威国际有限公司 ——确保詹金斯必威国际有限公司 - - -系统管理 -术语和定义 解决方案的页面 2018必威体育下载 ——导游 2018必威体育下载 58必威 贡献者指南
  • 插件
  • 概述 满足 2020刀塔必威赛事 问题跟踪器 路线图 特殊利益集团 -宣传和外展 - 中国本地化 - 云本地人 ——文档 谷歌代码之夏 365必威 ——管道创作 ——平台 ——用户体验
  • 概述 常绿 谷歌詹金斯的代码之夏必威国际有限公司 基础设施 CI/CD和Jenk必威国际有限公司ins区域聚会 必威国际有限公司Jenkins配置为代码 必威国际有限公司詹金斯运营商 必威国际有限公司詹金斯远程 记录下詹金斯和库伯必威国际有限公司内特的关系
  • 路线图 安全 新闻 奖 行为 艺术作品
  • 中中国文
  • 下载

推特

发表于2019-06-21Abhyudaya沙玛
  • JMH.
  • 插件
  • 基准
  • 表现
  • 开发人员
  • GSOC.
  • GSOC2019

我一直在努力提高角色战略插件的表现,作为我的一部分谷歌夏季的代码项目.由于没有现成的方法来测量Jenkins插件的性能和进行基准测试,我在项目的第一阶段的工作是创建一个框架,使用可用的Jenkins实例在Jenkins插件必威国际有限公司中运行基准测试。为了让我们的工作轻松一点,我们选择了Java Microbenchmark Marness用于运行这些基准。这使我们能够可靠地测量我们的时间关键函数的性能,并有助于使Jenkins为每个人执行更快。必威国际有限公司

微基准测试框架最近在Jenkins单元测试工具中发布必威国际有限公司2.50.下面的博文展示了如何在插件中运行基准测试。

介绍

框架通过为JMH基准的每个分支启动临时Jenkins实例来运行,就像必威国际有限公司必威国际有限公司JenkinsRule来自Jen必威国际有限公司kins测试线束。基准从junit测试中直接运行,允许您在飞行中失败,并轻松地从IDE运行基准,就像单位测试一样。您可以通过使用Java方法或使用Jenkins轻松配置基准测试必威国际有限公司Configuration-as-Code插件并将路径传递给YAML文件。

要从你的插件运行基准测试,你需要做以下事情:

  • 将Jenkins版本的最低要求提高到2.60.3或以上必威国际有限公司

  • bump Plugin-POM到版本≥3.46或手动升级到Jenkins Test Harness≥2.51。必威国际有限公司

现在,要运行基准测试,您需要拥有一个包含一个的基准赛道@测试所以它可以像JUnit测试一样运行。在测试方法内部,可以使用OptionsBuilder由JMH提供以配置基准测试。例如:

民众类BenchmarkRunner{@测试民众空白runJmhBenchmarks ()抛出例外{ChainedOptionsBuilder选项=新的OptionsBuilder () .mode Mode.AverageTime .forks (2) 。结果("JMH-Report.Json.");//自动检测带有@JmhBenchmark注释的基准类新的BenchmarkFinder (getClass ()) .findBenchmarks(选项);新的跑步者(options.build ()) .run ();}}

样本基准

现在,您可以编写您的第一个基准测试:

无需任何特殊设置

@jmhbenchmark.民众类JMHStateBenchmark.{民众静态类MyState扩展jmhbenchmarkstate {}@Benchmark民众空白基准(Mystate State){//基准代码在这里State.get必威国际有限公司jenkins()。SetSystemMessage("你好世界");}}

使用配置为代码

要将配置作为代码使用,除了上面的依赖项之外,还需要将以下内容添加到您的pom.xml:

<依赖>Io.必威国际有限公司jenkins.< / groupId >configuration-as-code< / artifactId ><版本>1.21<可选>真的< / >的依赖<依赖>Io.必威国际有限公司jenkins.< / groupId >configuration-as-code< / artifactId ><版本>1.21<分类>测试< /分类><范围>测试< / >的依赖

现在配置基准测试与您的YAML文件的路径一样简单,并指定包含基准状态的类。

@jmhbenchmark.民众类SampleBenchmark{民众静态类MyState扩展CascJmhBenchmarkState {@nonnull.@Override受保护的字符串getResourcePath () {返回"config.yml";}@nonnull.@Override受保护的类<?> getEnclosingClass () {返回SampleBenchmark.class;}}@Benchmark民众空白benchmark(MyState state) {J必威国际有限公司enkins Jenkins = state. getjenkins ();// 必威国际有限公司Jenkins已经配置好,可以进行基准测试了。//您的基准代码进入...}}

更多样本

作为此项目的一部分,在角色策略插件中创建了一些基准,其中显示了配置各种情况的实例。你可以找到它们这里.

运行基准测试

从Maven运行基准测试

为了方便地从Maven运行基准测试,已经创建了一个Maven概要文件来运行基准测试,并且可以从Plugin-POM 3.45版本开始使用。然后可以使用命令行运行基准测试mvn test -Dbenchmark.

在ci.jenkins.io上运行基准测试必威国际有限公司

如果你有你的插件托管在ci.jenkins。必威国际有限公司. io,您可以轻松地直接从您的Jenkinsfile运行基准测试必威国际有限公司runBenchmarks ()方法后buildPlugin ()Step in your现在可以在必威国际有限公司詹金斯管道图书馆.这个函数还接受生成的JMH基准测试报告的路径作为可选参数,并归档基准测试结果。在拉请求构建中运行基准测试允许您不断监视给定更改的性能影响。例如,角色策略插件中的Jenkin必威国际有限公司sfile:

buildPlugin () runBenchmarks ('JMH-Report.Json.')

可视化基准测试结果

生成的基准报告(JSON格式)可以使用JMH报告插件或者通过将基准测试报告传递给JMH Visualier.网络服务。作为一个例子,这里是来自角色战略插件的一些基准的可视化报告:

由JMH Visualizer可视化的角色策略插件基准">
        </div>
       </div>
       <div class=

通过一个小的上面看到的这些改进把请求到插件并展示了似乎似乎的变化甚至可以带来重大的性能改进。Microbenchmarks有助于找到这些热点并估计变化的影响。

一些提示和技巧

  • 自从BenchmarkRunner上面的例子中的类名并不资格作为Maven Surefire插件的命名约定的测试,基准将不会干扰您的JUnit测试。

  • 基准方法需要注释@Benchmark为了jmh来检测它们。

  • 属性自动查找包含基准的类BenchmarkFinder当注释@jmhbenchmark..

  • 对Jenkins实例的引用可以通过以下必威国际有限公司两种方式获得JmhBenchmarkState # g必威国际有限公司etJenkins ()或通过必威国际有限公司jenkins.getInstance()就像你会做的那样。

  • JmhBenchmarkState提供了设置()和拆除()方法,可以根据基准测试的要求重写这些方法来配置Jenkins实例。必威国际有限公司

  • CI.Jenkins.IO上的基准构建目前是由于有限的必威国际有限公司可用性而令人作呕highmem节点。

  • 基准框架是在Jenkins Test Harness 2.50中提供的,建议使用版本必威国际有限公司2.51因为它包含了一些bug修复。

链接和反馈

如果您有任何反馈,意见或疑问,请随时与我联系角色策略插件Gitter聊天或通过必威国际有限公司Jenkins开发者邮件列表.

  • 演示文稿的幻灯片

  • 平台SIG会议的演示

  • 微基准框架的文档:

    • 编写基准测试(Jenkins Test 必威国际有限公司Harness)

    • 使用JCasC预配置基准

    • 使用插件POM配置文件运行基准测试

    • 在CI.jenkins.io上运行基准的构建步骤必威国际有限公司

关于作者
Abhyudaya沙玛"类= Abhyudaya沙玛

Abhyudaya是印度Shiv Nadar大学的计算机科学专业学生。他正在参加谷歌Summer of Code 2019,以提高性能角色策略插件.

  • GitHub

betway必威足彩|

Creative Commons归因 -  Sharealike许可证"src=

驱动本网站的内容是在知识共享署名-共享相似4.0许可下许可的。

资源
  • 下载
  • 博客
  • 文档
  • 插件
  • 安全
  • 贡献
项目
  • 结构和治理
  • 问题跟踪器
  • 路线图
  • GitHub
  • 必威国际有限公司詹金斯詹金斯
社区
  • 2020刀塔必威赛事
  • 邮件列表
  • 聊天
  • 特殊利益集团
  • 推特
  • reddit.
其他
  • 的行为准则
  • 新闻信息
  • 商品
  • 艺术作品
  • 奖