znsio / perfiz Goto Github PK
View Code? Open in Web Editor NEWA Dockerised API Performance Test Setup based on Gatling with Grafana Dashboards and Prometheus Monitoring
Home Page: https://perfiz.com/
License: MIT License
A Dockerised API Performance Test Setup based on Gatling with Grafana Dashboards and Prometheus Monitoring
Home Page: https://perfiz.com/
License: MIT License
Write bat file or powershell script that is similar to perfiz.sh. Any other mechanisms / ideas to get Perfiz running on Windows are welcome as long as they solve below problems.
Also need to write upgrade scripts similar to linux / mac
It seems that this document is not very clear and messy. How to install and use this tool? Can you write it in detail
Add upgrade command to the CLI which allows users to move to the latest version of Perfiz. Also need to make sure we keep Grafana and Prometheus Data.
Describe the bug
On running the command: $PERFIZ_HOME/perfiz.sh start
to Start Performance Test Monitoring Stack on Docker. I don't see prometheus container. Hence, Metrics on Grafana dashboard is not visible.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
$PERFIZ_HOME/perfiz.sh test
. All the metrics should be visible on the Grafana Dashboard.Screenshots
Docker containers List:
Grafana Dashboard - Metrics Not visible:
Promethues server not running:
Desktop (please complete the following information):
Describe the bug
The documentation for perfiz.config is not very well explained. Especially for load pattern type
Based on what i could gather from Gatlin website; i prepared the markup
* Open model keywords
* nothingFor: Pause for a given duration.
* atOnceUsers: Injects a given number of users at once.
* rampUsers: Injects a given number of users distributed evenly on a time window of a given duration.
* constantUsersPerSec: Injects users at a constant rate, defined in users per second, during a given duration. Users will be injected at regular intervals.
* rampUsersPerSec: Injects users from starting rate to target rate, defined in users per second, during a given duration. Users will be injected at regular intervals.
* heavisideUsers
* Closed model keywords
* constantConcurrentUsers: Inject so that number of concurrent users in the system is constant
* rampConcurrentUsers: Inject so that number of concurrent users in the system ramps linearly from a number to another
However; some are still missing and some are very vague and does not explains well well with lot more examples of mixing the patterns as well.
It would be great if the documentation is enhanced alot more!
What we tried already:
Changed the version in pom.xml
<karate.version>1.0.1</karate.version>
Deleted the dependency according to this upgrade guide.
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-apache</artifactId>
<version>${karate.version}</version>
<scope>test</scope>
</dependency>
perfiz start
works fine but perfiz test
gives me the following error while downloading some scala dependency
Downloaded from jcenter: https://jcenter.bintray.com/org/scala-sbt/zinc-persist-core-assembly/1.4.3/zinc-persist-core-assembly-1.4.3.jar (2.6 MB at 463 kB/s)
2021/06/25 12:42:25 07:12:25.244 [main] INFO io.gatling.compiler.ZincCompiler$ - compiling 2 Scala sources to /usr/src/performance-testing/target/test-classes ...
2021/06/25 12:42:37 07:12:37.730 [main] ERROR io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:63:51: type mismatch;
2021/06/25 12:42:37 found : scala.collection.mutable.Buffer[(String, scala.collection.immutable.Nil.type)]
2021/06/25 12:42:37 required: Seq[(String, Seq[com.intuit.karate.gatling.MethodPause])]
2021/06/25 12:42:37 karateFeatureConfig.uriPatterns.asScala.map { uriPattern => uriPattern -> Nil }: _*
2021/06/25 12:42:37 ^
2021/06/25 12:42:37 07:12:37.971 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:23:65: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getKarateFeatures,
2021/06/25 12:42:37 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:37 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:37 private val builders: List[PopulationBuilder] = configuration.getKarateFeatures.asScala.toList.map(karateFeatureConfig => {
2021/06/25 12:42:37 ^
2021/06/25 12:42:37 07:12:37.990 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:24:50: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getLoadPattern,
2021/06/25 12:42:37 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:37 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:37 val openInjectionSteps = karateFeatureConfig.getLoadPattern.asScala.toList.filter(loadPattern => {
2021/06/25 12:42:37 ^
2021/06/25 12:42:37 07:12:37.998 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:28:43: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getPatternType,
2021/06/25 12:42:37 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:37 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:37 val openInjectionStep = loadPattern.getPatternType match {
2021/06/25 12:42:37 ^
2021/06/25 12:42:37 07:12:38.003 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:30:53: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getUserCount,
2021/06/25 12:42:37 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:37 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:37 case AtOnceUsers => atOnceUsers(loadPattern.getUserCount)
2021/06/25 12:42:37 ^
2021/06/25 12:42:37 07:12:38.008 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:31:49: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getUserCount,
2021/06/25 12:42:37 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:37 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:37 case RampUsers => rampUsers(loadPattern.getUserCount) during
2021/06/25 12:42:37 ^
2021/06/25 12:42:37 07:12:38.018 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:33:72: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getUserCount,
2021/06/25 12:42:37 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:37 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:37 case ConstantUsersPerSecond => constantUsersPerSec(loadPattern.getUserCount) during
2021/06/25 12:42:37 ^
2021/06/25 12:42:37 07:12:38.022 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:35:64: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getUserCount,
2021/06/25 12:42:37 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:37 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:37 case RampUsersPerSecond => rampUsersPerSec(loadPattern.getUserCount) to
2021/06/25 12:42:37 ^
2021/06/25 12:42:37 07:12:38.025 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:38:59: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getUserCount,
2021/06/25 12:42:37 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:37 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:37 case HeavisideUsers => heavisideUsers(loadPattern.getUserCount) during
2021/06/25 12:42:37 ^
2021/06/25 12:42:38 07:12:38.029 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:50:52: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getLoadPattern,
2021/06/25 12:42:38 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:38 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:38 val closedInjectionSteps = karateFeatureConfig.getLoadPattern.asScala.toList.filter(loadPattern => {
2021/06/25 12:42:38 ^
2021/06/25 12:42:38 07:12:38.032 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:54:19: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getPatternType,
2021/06/25 12:42:38 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:38 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:38 loadPattern.getPatternType match {
2021/06/25 12:42:38 ^
2021/06/25 12:42:38 07:12:38.035 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:55:77: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getUserCount,
2021/06/25 12:42:38 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:38 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:38 case ConstantConcurrentUsers => constantConcurrentUsers(loadPattern.getUserCount) during
2021/06/25 12:42:38 ^
2021/06/25 12:42:38 07:12:38.039 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:57:69: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getUserCount,
2021/06/25 12:42:38 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:38 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:38 case RampConcurrentUsers => rampConcurrentUsers(loadPattern.getUserCount) to
2021/06/25 12:42:38 ^
2021/06/25 12:42:38 07:12:38.051 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:66:36: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getGatlingSimulationName,
2021/06/25 12:42:38 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:38 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:38 scenario(karateFeatureConfig.getGatlingSimulationName).
2021/06/25 12:42:38 ^
2021/06/25 12:42:38 07:12:38.054 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:67:63: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getKarateFile,
2021/06/25 12:42:38 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:38 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:38 exec(karateFeature("classpath:" + karateFeatureConfig.getKarateFile)).
2021/06/25 12:42:38 ^
2021/06/25 12:42:38 07:12:38.058 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:71:36: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getGatlingSimulationName,
2021/06/25 12:42:38 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:38 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:38 scenario(karateFeatureConfig.getGatlingSimulationName).
2021/06/25 12:42:38 ^
2021/06/25 12:42:38 07:12:38.062 [main] WARN io.gatling.compiler.ZincCompiler$ - /usr/src/performance-testing/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala:72:63: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method getKarateFile,
2021/06/25 12:42:38 or remove the empty argument list from its definition (Java-defined methods are exempt).
2021/06/25 12:42:38 In Scala 3, an unapplied method like this will be eta-expanded into a function.
2021/06/25 12:42:38 exec(karateFeature("classpath:" + karateFeatureConfig.getKarateFile)).
2021/06/25 12:42:38 ^
2021/06/25 12:42:38 07:12:38.098 [main] WARN io.gatling.compiler.ZincCompiler$ - 16 warnings found
2021/06/25 12:42:38 07:12:38.111 [main] ERROR io.gatling.compiler.ZincCompiler$ - one error found
2021/06/25 12:42:38 07:12:38.156 [main] ERROR io.gatling.compiler.ZincCompiler$ - Compilation crashed
2021/06/25 12:42:38 sbt.internal.inc.CompileFailed: null
2021/06/25 12:42:38 at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:335)
2021/06/25 12:42:38 at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:420)
2021/06/25 12:42:38 at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
2021/06/25 12:42:38 at io.gatling.compiler.ZincCompiler$.doCompile(ZincCompiler.scala:255)
2021/06/25 12:42:38 at io.gatling.compiler.ZincCompiler$.delayedEndpoint$io$gatling$compiler$ZincCompiler$1(ZincCompiler.scala:262)
2021/06/25 12:42:38 at io.gatling.compiler.ZincCompiler$delayedInit$body.apply(ZincCompiler.scala:40)
2021/06/25 12:42:38 at scala.Function0.apply$mcV$sp(Function0.scala:39)
2021/06/25 12:42:38 at scala.Function0.apply$mcV$sp$(Function0.scala:39)
2021/06/25 12:42:38 at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
2021/06/25 12:42:38 at scala.App.$anonfun$main$1(App.scala:73)
2021/06/25 12:42:38 at scala.App.$anonfun$main$1$adapted(App.scala:73)
2021/06/25 12:42:38 at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:553)
2021/06/25 12:42:38 at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:551)
2021/06/25 12:42:38 at scala.collection.AbstractIterable.foreach(Iterable.scala:920)
2021/06/25 12:42:38 at scala.App.main(App.scala:73)
2021/06/25 12:42:38 at scala.App.main$(App.scala:71)
2021/06/25 12:42:38 at io.gatling.compiler.ZincCompiler$.main(ZincCompiler.scala:40)
2021/06/25 12:42:38 at io.gatling.compiler.ZincCompiler.main(ZincCompiler.scala)
2021/06/25 12:42:38 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2021/06/25 12:42:38 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2021/06/25 12:42:38 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2021/06/25 12:42:38 at java.lang.reflect.Method.invoke(Method.java:498)
2021/06/25 12:42:38 at io.gatling.mojo.MainWithArgsInFile.runMain(MainWithArgsInFile.java:53)
2021/06/25 12:42:38 at io.gatling.mojo.MainWithArgsInFile.main(MainWithArgsInFile.java:34)
2021/06/25 12:42:38 [INFO] ------------------------------------------------------------------------
2021/06/25 12:42:38 [INFO] BUILD FAILURE
2021/06/25 12:42:38 [INFO] ------------------------------------------------------------------------
2021/06/25 12:42:38 [INFO] Total time: 02:10 min
2021/06/25 12:42:38 [INFO] Finished at: 2021-06-25T07:12:38Z
2021/06/25 12:42:38 [INFO] ------------------------------------------------------------------------
2021/06/25 12:42:38 [ERROR] Failed to execute goal io.gatling:gatling-maven-plugin:3.1.2:test (default-cli) on project perfiz: Gatling failed.: Simulations compilation failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1]
2021/06/25 12:42:38 [ERROR]
2021/06/25 12:42:38 [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
2021/06/25 12:42:38 [ERROR] Re-run Maven using the -X switch to enable full debug logging.
2021/06/25 12:42:38 [ERROR]
2021/06/25 12:42:38 [ERROR] For more information about the errors and possible solutions, please read the following articles:
2021/06/25 12:42:38 [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.