【发布时间】:2018-11-22 05:10:58
【问题描述】:
我是 Gatling (2.1.2) 的新手,想做一个小型原型项目展示给我的同事。
根据quick start 页面,我可以通过多种方式使用 Gatling 运行模拟:
- 将 Gatling 包解压到一个文件夹中,然后将我的模拟文件放到 user-files/simulations 文件夹中。 bin/gatling.sh 将编译并运行模拟文件。
- 使用
gatling-maven-pluginmaven 插件来执行模拟。 - 使用
gatling-highcharts-maven-archetype创建一个项目,然后运行Engine 类。
我发现了这些问题
对于 1,很难为模拟类添加依赖项。我必须弄清楚需要什么 jar 并将它们放到 lib 文件夹中。
对于2,需要安装maven。
对于 3,它只能从 IDE 运行
我只想要一个简单的可执行 JAR 文件,其中包含捆绑在一起的所有依赖项(我的模拟、Gatling 和第三方),并从任何机器(如 EC2 实例)运行它。
有没有办法做到这一点?
更新 1:
我尝试了方法3,但是将所有项目文件从test文件夹移动到main,并使用maven-assembly-plugin构建了一个带有依赖项的jar。当我尝试运行该文件时,出现以下错误:
Exception in thread "main" java.lang.ExceptionInInitializerError
at Engine$.delayedEndpoint$Engine$1(Engine.scala:7)
at Engine$delayedInit$body.apply(Engine.scala:4)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.collection.immutable.List.foreach(List.scala:381)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
at scala.App$class.main(App.scala:76)
at Engine$.main(Engine.scala:4)
at Engine.main(Engine.scala)
Caused by: java.nio.file.FileSystemNotFoundException
at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171)
at com.sun.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:157)
at java.nio.file.Paths.get(Paths.java:143)
at io.gatling.core.util.PathHelper$.uri2path(PathHelper.scala:32)
at IDEPathHelper$.<init>(IDEPathHelper.scala:7)
at IDEPathHelper$.<clinit>(IDEPathHelper.scala)
... 11 more
我猜这与 Gatling 配置有关,但不知道出了什么问题。
【问题讨论】:
-
如果你想构建一个 PoC,为什么不首先坚持官方支持的部署策略呢?
-
@StephaneLandelle,我实际上已经尝试过官方策略,这就是我发现我必须将所有 jar 放入 lib 文件夹的原因。我只是想知道是否可以构建一个可运行的 JAR,以及为什么。
-
@Philippe,您也许可以在我的问题中使用方法 1。您需要做的是解压缩 Gatling bundle zip 文件,并将您的场景 scala 文件粘贴到 ${GATLING}/user-files/simulations 文件夹中。任何依赖的 jar 都应该进入 ${GATLING}/lib (如果它不在包中,则需要创建文件夹)。然后你可以通过 ${GATLING}/bin/gatlin.sh 运行 Gatling。 file 告诉你它是如何工作的。
-
这是目前最好的做法,直到 Gatling 提供了一个独立的可运行文件,这正是我想要的。
标签: java load-testing gatling