我终于找到了解决这个问题的方法,但是这并不简单,因为它涉及到 taurus 代码的扩展。
问题就在这里,在 taurus repo中文件gatling.py的第 309 行。它显式添加前缀“gatling-”以查找 gatling 报告。
但是,-Dgatling.core.outputDirectoryBaseName=./my_scenario
文件scenario.yml 中的参数将这个前缀更改为my_scenario。我将在下面描述的是一种扩展金牛座的方法,以便快速扩展。
使用此代码创建文件./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 的方法;-)