Я создал нагрузочный тест Гатлинга, используя архетип highcharts. Я решил не загружать последний ZIP-файл Gatling и не создавать симуляцию в извлеченной папке, поскольку я полагаюсь на количество зависимостей в общедоступных и частных репозиториях Maven.
Я хочу
- объединить мою симуляцию и все ее зависимости в один JAR,
- распространите JAR на несколько генераторов нагрузки в EC2/GCE и
- запустить тест на всех удаленных генераторах нагрузки.
плагин сборки от Maven выглядит очевидным кандидатом на решение #1. Поэтому я добавил в свой pom.xml следующее:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>io.gatling.app.Gatling</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
В этой конфигурации запуск файла JAR, созданного с помощью mvn clean package assembly:single
, приводит к следующему NoSuchFileException
:
$ java -jar target/myapp-0.1-SNAPSHOT-jar-with-dependencies.jar
Exception in thread "main" java.nio.file.NoSuchFileException: ./target/test-classes
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:407)
at java.nio.file.Files.newDirectoryStream(Files.java:457)
at io.gatling.core.util.PathHelper$RichPath$.deepListAux$1(PathHelper.scala:99)
at io.gatling.core.util.PathHelper$RichPath$.deepList$extension(PathHelper.scala:105)
at io.gatling.core.util.PathHelper$RichPath$.deepFiles$extension(PathHelper.scala)
at io.gatling.app.classloader.SimulationClassLoader.simulationClasses(SimulationClassLoader.scala:55)
at io.gatling.app.Gatling.loadSimulations(Gatling.scala:92)
at io.gatling.app.Gatling.start(Gatling.scala:70)
at io.gatling.app.Gatling$.fromArgs(Gatling.scala:59)
at io.gatling.app.Gatling$.main(Gatling.scala:44)
at io.gatling.app.Gatling.main(Gatling.scala)
- Это то, как я должен упаковать свой проект Gatling на основе Maven?
- Не неправильно ли я настроил подключаемый модуль Gatling Maven во время создания JAR-файла?
Обновление 1:
Создание каталога target/test-classes
позволяет обойти исключение NoSuchFileException. Однако затем гатлинг не находит ни одной из моих симуляций. Ни один из файлов *.scala не был добавлен в JAR, сгенерированный подключаемым модулем сборки.