gatling的环境配置
我最近在一个项目中工作,我们不得不将出色的负载测试工具Gatling集成到基于Gradle的版本中。 有可用的gradle插件使此操作变得容易,其中有两个是this和this ,但是对于大多数需求而言,只需简单执行命令行工具本身就足够了,因此本文将详细介绍如何将gatling连接起来进入gradle构建过程,并在此过程中了解一些良好的gradle概念。
来源集和配置
要执行gatling cli,我需要做一些事情,需要一个位置来获取Gatling模拟的源代码和相关内容,并且需要一种获取gatling库的方法。 这是Gradle的两个概念(SourceSets和Configuration)起作用的地方。
让我们从第一个开始-SourceSets。
源集
SourceSet只是相关文件的逻辑分组,最好通过一个示例进行演示。 如果要在gradle版本中添加“ java”插件:
apply plugin: 'java'
现在,sourceSets属性将显示两个值“ main”和“ test”,如果我想查找这些sourceSets的详细信息,可以使用gradle任务来打印详细信息:
task sourceSetDetails {doLast {sourceSets {main {println java.propertiesprintln resources.properties}test {println java.propertiesprintln resources.properties}}}
}
回到gatling,我基本上可以创建一个新的sourceSet来保存gatling模拟:
sourceSets {simulations
}
现在,这将使加特林模拟驻留在“ src / simulations / java”中,并将与之相关的资源驻留在“ src / simulations / resources”文件夹中,这是可以的,但理想情况下,我希望将其与项目完全分开资料来源。 我希望我的文件夹结构与“ simulations / load”中的负载模拟以及“ simulations / resources”文件夹中的资源一起使用。 可以通过首先应用“ scala”插件来对此进行调整,该插件为项目带来了scala编译支持,然后根据以下内容修改了“ simulations”源集:
apply plugin: 'scala'sourceSets {simulations {scala {srcDirs = ['simulations/load']}resources {srcDirs = ['simulations/resources']}}
}
通过这些更改,我现在可以将仿真放置在正确的位置,但是尚未掌握加特林和scala的依赖性,这就是gradle的“配置”功能所在的地方。
组态
Gradle配置是将相关依赖项分组在一起的一种方式。 如果要使用任务打印现有的一组配置:
task showConfigurations {doLast {configurations.all { conf -> println(conf) }}
}
这些出现:
configuration ':archives'
configuration ':compile'
configuration ':compileClasspath'
configuration ':compileOnly'
configuration ':default'
configuration ':runtime'
configuration ':simulationsCompile'
configuration ':simulationsCompileClasspath'
configuration ':simulationsCompileOnly'
configuration ':simulationsRuntime'
configuration ':testCompile'
configuration ':testCompileClasspath'
configuration ':testCompileOnly'
configuration ':testRuntime'
configuration ':zinc'
应该熟悉“ compile”和“ testCompile”,即通常这样声明正常的源依赖性和测试依赖性:
dependencies {compile 'org.slf4j:slf4j-api:1.7.21'testCompile 'junit:junit:4.12'
}
但是,看起来现在还可以使用“ simulations”源集的配置-“ simulationsCompile”和“ simulationsRuntime”等,因此我可以使用这些配置声明我的加特林仿真所需的依赖项,但是我的目的是声明一种自定义配置只是为了进一步介绍该概念,因此让我们显式声明一个:
configurations {gatling
}
并使用此配置声明加特林的依赖关系:
dependencies {gatling 'org.scala-lang:scala-library:2.11.8'gatling 'io.gatling.highcharts:gatling-charts-highcharts:2.2.5'
}
几乎在那儿,现在我们如何通过稍微调整sourceSet来告诉模拟源集中的源使用来自gatling配置的依赖项。
sourceSets {simulations {scala {srcDirs = ['simulations/load']}resources {srcDirs = ['simulations/resources']}compileClasspath += configurations.gatling}
}
运行加特林场景
在定义了源集和配置之后,我们要做的就是编写一个任务来运行一次加特林模拟,可以遵循以下步骤:
task gatlingRun(type: JavaExec) {description = 'Run gatling tests'new File("${buildDir}/reports/gatling").mkdirs()classpath = sourceSets.simulations.runtimeClasspath + configurations.gatlingmain = "io.gatling.app.Gatling"args = ['-s', 'simulations.SimpleSimulation','-sf', 'simulations/resources','-df', 'simulations/resources','-rf', "${buildDir}/reports/gatling"]
}
了解如何将模拟的编译源以及来自gatling配置的依赖项设置为“ JavaExec”任务的类路径
审查此问题的一种好方法是查看我在此处提供的完整的工作示例。
我的github仓库 – https://github.com/bijukunjummen/cf-show-env
翻译自: https://www.javacodegeeks.com/2017/05/integrating-gatling-gradle-build-understanding-sourcesets-configuration.html
gatling的环境配置