通过 taurus 在 Jenkins 管道中设置 Gatling 报告名称
Set Gatling report name in Jenkins pipeline througt taurus
我正在编写一个声明性的 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,但已经存在大量数据。
终于找到了解决这个问题的方法,但是并不简单,涉及到taurus代码的扩展
问题是 here,在 taurus 存储库中文件 gatling.py 的第 309 行。它明确添加前缀 'gatling-' 以查找加特林报告。
但是,文件 scenario.yml 中的参数 -Dgatling.core.outputDirectoryBaseName=./my_scenario
将此前缀更改为 my_scenario。下面我要介绍的是taurus的扩展方法,以便快速扩展。
创建文件 ./extensions/gatling.py 使用此代码扩展 class 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()
更新文件 scenario.yml 使用新设置 属性 dir_prefix 并定义新的执行器 class:
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
最后,通过调用新文件 bztx.py[=46= 替换 bzt 调用来更新 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 的方法 ;-)
我正在编写一个声明性的 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,但已经存在大量数据。
终于找到了解决这个问题的方法,但是并不简单,涉及到taurus代码的扩展
问题是 here,在 taurus 存储库中文件 gatling.py 的第 309 行。它明确添加前缀 'gatling-' 以查找加特林报告。
但是,文件 scenario.yml 中的参数 -Dgatling.core.outputDirectoryBaseName=./my_scenario
将此前缀更改为 my_scenario。下面我要介绍的是taurus的扩展方法,以便快速扩展。
创建文件 ./extensions/gatling.py 使用此代码扩展 class 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()
更新文件 scenario.yml 使用新设置 属性 dir_prefix 并定义新的执行器 class:
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
最后,通过调用新文件 bztx.py[=46= 替换 bzt 调用来更新 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 的方法 ;-)