【问题标题】:Set Gatling report name in Jenkins pipeline througt taurus在 Jenkins 流水线 througt taurus 中设置 Gatling 报告名称
【发布时间】:2017-10-10 09:37:29
【问题描述】:

我正在编写一个声明式 jenkins 管道,但我遇到了 gatling 报告的问题:

平均响应时间趋势不正确,有没有办法用曲线替换后面的点云?

从我的 Jenkinsfile 中摘录:

stage('perf') {
  steps {
    bzt params: './taurus/scenario.yml', generatePerformanceTrend: false, printDebugOutput: true
    perfReport configType: 'PRT', graphType: 'PRT', ignoreFailedBuilds: true, modePerformancePerTestCase: true, modeThroughput: true, sourceDataFiles: 'results.xml'
    dir ("taurus/results") {
      gatlingArchive()
    }
  }
}

从我的 scenario.yml 中提取

modules:
  gatling:
    path:      ./bin/gatling.sh
    java-opts: -Dgatling.core.directory.data=./data

scenario.yml中,我尝试设置gatling.core.outputDirectoryBaseName

java-opts: -Dgatling.core.directory.data=./data -Dgatling.core.outputDirectoryBaseName=./my_scenario

在这种情况下,它仅将 gatling 替换为 my_scenario,但已经存在大量数字。

【问题讨论】:

  • bzt 是 taurus 的同义词,我觉得标签 bzt 应该去掉

标签: jenkins jenkins-pipeline gatling taurus


【解决方案1】:

我终于找到了解决这个问题的方法,但并不简单,因为它涉及到金牛座代码的扩展。

问题是here,位于 taurus 存储库中文件 gatling.py 的第 309 行。它显式添加前缀“gatling-”来查找 gatling 报告。

但是,文件 scenario.yml 中的参数 -Dgatling.core.outputDirectoryBaseName=./my_scenario 将这个前缀更改为 my_scenario。下面我将介绍一种扩展taurus的方法,以便快速扩展。

使用此代码创建一个文件 ./extensions/gatling.py 以扩展 GatlingExecutor 类:

from bzt.modules.gatling import GatlingExecutor, DataLogReader

class GatlingExecutorExtension(GatlingExecutor):
    def __init__(self):
        GatlingExecutor.__init__(self)

    def prepare(self):
        # From method bzt.modules.gatling.GatlingExecutor:prepare, copy code before famous line 309
        # Replace line 309 by
        self.dir_prefix = self.settings.get('dir_prefix', 'gatling-%s' % id(self))
        # From method bzt.modules.gatling.GatlingExecutor:prepare, copy code after famous line 309

创建一个文件./bztx.py来包装命令bzt:

import signal
import logging
from bzt.cli import main, signal_handler

if __name__ == "__main__":
    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGTERM, signal_handler)
    main()

使用新的设置属性dir_prefix更新文件scenario.yml并定义新的执行器类:

modules:
  gatling:
    path:       ./bin/gatling.sh
    class:      extensions.GatlingExecutorExtension
    dir_prefix: my_scenario
    java-opts:  -Dgatling.core.directory.data=./data -Dgatling.core.outputDirectoryBaseName=./my_scenario

最后,通过将 bzt 调用替换为对新文件 bztx.py 的调用来更新您的 Jenkinsfile:

stage('perf') {
  steps {
    sh 'python bztx.py ./taurus/scenario.yml'
    perfReport configType: 'PRT', graphType: 'PRT', ignoreFailedBuilds: true, modePerformancePerTestCase: true, modeThroughput: true, sourceDataFiles: 'results.xml'
    dir ("taurus/results") {
      gatlingArchive()
    }
  }
}

就是这样,它对我有用。奖励:此解决方案提供了一种使用您自己的插件轻松扩展 taurus 的方法;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    相关资源
    最近更新 更多