Commit 7652f8d1 authored by Jamie Tanna's avatar Jamie Tanna

Merge branch 'article/fat-gatling' into 'master'

Add fat Gatling + Gatling response time bounds articles

Closes #265

See merge request !207
parents 230ab802 d9c79ad1
Pipeline #37181396 passed with stages
in 9 minutes and 30 seconds
<groupId>me.jvt.hacking</groupId>
<artifactId>fat-gatling-jar</artifactId>
- <version>0.4</version>
+ <version>0.5</version>
<packaging>jar</packaging>
<properties>
@@ -14,7 +14,7 @@
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<gatling.version>3.0.0</gatling.version>
- <gatling-plugin.version>3.0.0</gatling-plugin.version>
+ <maven-exec.version>1.2.1</maven-exec.version>
<scala-maven-plugin.version>3.4.4</scala-maven-plugin.version>
</properties>
@@ -76,28 +76,36 @@
</plugin>
<plugin>
- <groupId>io.gatling</groupId>
- <artifactId>gatling-maven-plugin</artifactId>
- <version>${gatling-plugin.version}</version>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>${maven-exec.version}</version>
<executions>
<execution>
<id>BasicSimulation</id>
<goals>
- <goal>test</goal>
+ <goal>java</goal>
</goals>
- <phase>verify</phase>
+ <phase>integration-test</phase>
<configuration>
- <simulationClass>me.jvt.hacking.BasicSimulation</simulationClass>
+ <mainClass>io.gatling.app.Gatling</mainClass>
+ <arguments>
+ <argument>-s</argument>
+ <argument>me.jvt.hacking.BasicSimulation</argument>
+ </arguments>
</configuration>
</execution>
<execution>
<id>OtherSimulation</id>
<goals>
- <goal>test</goal>
+ <goal>java</goal>
</goals>
- <phase>verify</phase>
+ <phase>integration-test</phase>
<configuration>
- <simulationClass>me.jvt.hacking.OtherSimulation</simulationClass>
+ <mainClass>io.gatling.app.Gatling</mainClass>
+ <arguments>
+ <argument>-s</argument>
+ <argument>me.jvt.hacking.OtherSimulation</argument>
+ </arguments>
</configuration>
</execution>
</executions>
% ls -al target/*.jar
-rw-r--r-- 1 jamie jamie 44578503 Nov 18 14:14 target/fat-gatling-jar-0.4.jar
-rw-r--r-- 1 jamie jamie 7559 Nov 18 14:14 target/original-fat-gatling-jar-0.4.jar
% unzip -l target/fat-gatling-jar-0.4.jar
Archive: target/fat-gatling-jar-0.4.jar
Length Date Time Name
--------- ---------- ----- ----
167 2018-11-18 14:14 META-INF/MANIFEST.MF
0 2018-11-18 14:14 META-INF/
0 2018-11-18 14:14 me/
0 2018-11-18 14:14 me/jvt/
0 2018-11-18 14:14 me/jvt/hacking/
5272 2018-11-18 14:14 me/jvt/hacking/BasicSimulation.class
5272 2018-11-18 14:14 me/jvt/hacking/OtherSimulation.class
0 2018-11-18 14:14 META-INF/maven/
0 2018-11-18 14:14 META-INF/maven/me.jvt.hacking/
0 2018-11-18 14:14 META-INF/maven/me.jvt.hacking/fat-gatling-jar/
4148 2018-11-18 14:12 META-INF/maven/me.jvt.hacking/fat-gatling-jar/pom.xml
112 2018-11-18 14:14 META-INF/maven/me.jvt.hacking/fat-gatling-jar/pom.properties
...
0 2018-11-18 14:14 META-INF/maven/com.eatthepath/
0 2018-11-18 14:14 META-INF/maven/com.eatthepath/fast-uuid/
5857 2018-01-26 21:04 META-INF/maven/com.eatthepath/fast-uuid/pom.xml
87 2018-01-26 21:04 META-INF/maven/com.eatthepath/fast-uuid/pom.properties
--------- -------
102144180 24150 files
This diff is collapsed.
<groupId>me.jvt.hacking</groupId>
<artifactId>fat-gatling-jar</artifactId>
- <version>0.3</version>
+ <version>0.4</version>
+ <packaging>jar</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
@@ -22,7 +23,6 @@
<groupId>io.gatling.highcharts</groupId>
<artifactId>gatling-charts-highcharts</artifactId>
<version>${gatling.version}</version>
- <scope>test</scope>
</dependency>
</dependencies>
@@ -32,7 +32,49 @@
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>${scala-maven-plugin.version}</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>compile</goal>
+ <goal>testCompile</goal>
+ </goals>
+ </execution>
+ </executions>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>3.1.1</version>
+ <configuration>
+ <filters>
+ <!-- https://stackoverflow.com/a/6743609 -->
+ <filter>
+ <artifact>*:*</artifact>
+ <excludes>
+ <exclude>META-INF/*.DSA</exclude>
+ <exclude>META-INF/*.SF</exclude>
+ <exclude>META-INF/*.RSA</exclude>
+ </excludes>
+ </filter>
+ </filters>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <transformers>
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+ <mainClass>io.gatling.app.Gatling</mainClass>
+ </transformer>
+ </transformers>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
This diff is collapsed.
% ls -al target/*.jar
-rw-r--r-- 1 jamie jamie 2019 Nov 18 14:03 target/fat-gatling-jar-0.3.jar
% unzip -l target/*.jar
Archive: target/fat-gatling-jar-0.3.jar
Length Date Time Name
--------- ---------- ----- ----
0 2018-11-18 14:03 META-INF/
131 2018-11-18 14:03 META-INF/MANIFEST.MF
0 2018-11-18 14:03 META-INF/maven/
0 2018-11-18 14:03 META-INF/maven/me.jvt.hacking/
0 2018-11-18 14:03 META-INF/maven/me.jvt.hacking/fat-gatling-jar/
2563 2018-11-18 14:03 META-INF/maven/me.jvt.hacking/fat-gatling-jar/pom.xml
112 2018-11-18 14:03 META-INF/maven/me.jvt.hacking/fat-gatling-jar/pom.properties
--------- -------
2903 8 files
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< me.jvt.hacking:fat-gatling-jar >-------------------
[INFO] Building fat-gatling-jar 0.3
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ fat-gatling-jar ---
[INFO] Deleting /home/jamie/workspaces/jvt.me/tmp/fat-gatling-jar/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ fat-gatling-jar ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ fat-gatling-jar ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ fat-gatling-jar ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/jamie/workspaces/jvt.me/tmp/fat-gatling-jar/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ fat-gatling-jar ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ fat-gatling-jar ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ fat-gatling-jar ---
[INFO] Building jar: /home/jamie/workspaces/jvt.me/tmp/fat-gatling-jar/target/fat-gatling-jar-0.3.jar
[INFO]
[INFO] --- gatling-maven-plugin:3.0.0:test (BasicSimulation) @ fat-gatling-jar ---
Simulation me.jvt.hacking.BasicSimulation started...
================================================================================
2018-11-18 14:03:45 5s elapsed
---- Requests ------------------------------------------------------------------
> Global (OK=2 KO=0 )
> request_1 (OK=1 KO=0 )
> request_1 Redirect 1 (OK=1 KO=0 )
---- BasicSimulation -----------------------------------------------------------
[--------------------------------------------------------------------------] 0%
waiting: 0 / active: 1 / done: 0
================================================================================
================================================================================
2018-11-18 14:03:47 6s elapsed
---- Requests ------------------------------------------------------------------
> Global (OK=2 KO=0 )
> request_1 (OK=1 KO=0 )
> request_1 Redirect 1 (OK=1 KO=0 )
---- BasicSimulation -----------------------------------------------------------
[##########################################################################]100%
waiting: 0 / active: 0 / done: 1
================================================================================
Simulation me.jvt.hacking.BasicSimulation completed in 5 seconds
Parsing log file(s)...
Parsing log file(s) done
Generating reports...
================================================================================
---- Global Information --------------------------------------------------------
> request count 2 (OK=2 KO=0 )
> min response time 32 (OK=32 KO=- )
> max response time 117 (OK=117 KO=- )
> mean response time 75 (OK=75 KO=- )
> std deviation 43 (OK=43 KO=- )
> response time 50th percentile 75 (OK=75 KO=- )
> response time 75th percentile 96 (OK=96 KO=- )
> response time 95th percentile 113 (OK=113 KO=- )
> response time 99th percentile 116 (OK=116 KO=- )
> mean requests/sec 0.333 (OK=0.333 KO=- )
---- Response Time Distribution ------------------------------------------------
> t < 25 ms 0 ( 0%)
> 25 ms < t < 50 ms 1 ( 50%)
> t > 50 ms 1 ( 50%)
> failed 0 ( 0%)
================================================================================
Reports generated in 0s.
Please open the following file: /home/jamie/workspaces/jvt.me/tmp/fat-gatling-jar/target/gatling/basicsimulation-20181118140340625/index.html
[INFO]
[INFO] --- gatling-maven-plugin:3.0.0:test (OtherSimulation) @ fat-gatling-jar ---
Simulation me.jvt.hacking.OtherSimulation started...
================================================================================
2018-11-18 14:03:57 5s elapsed
---- Requests ------------------------------------------------------------------
> Global (OK=2 KO=0 )
> request_2 (OK=1 KO=0 )
> request_2 Redirect 1 (OK=1 KO=0 )
---- BasicSimulation -----------------------------------------------------------
[--------------------------------------------------------------------------] 0%
waiting: 0 / active: 1 / done: 0
================================================================================
================================================================================
2018-11-18 14:03:58 6s elapsed
---- Requests ------------------------------------------------------------------
> Global (OK=2 KO=0 )
> request_2 (OK=1 KO=0 )
> request_2 Redirect 1 (OK=1 KO=0 )
---- BasicSimulation -----------------------------------------------------------
[##########################################################################]100%
waiting: 0 / active: 0 / done: 1
================================================================================
Simulation me.jvt.hacking.OtherSimulation completed in 5 seconds
Parsing log file(s)...
Parsing log file(s) done
Generating reports...
================================================================================
---- Global Information --------------------------------------------------------
> request count 2 (OK=2 KO=0 )
> min response time 39 (OK=39 KO=- )
> max response time 105 (OK=105 KO=- )
> mean response time 72 (OK=72 KO=- )
> std deviation 33 (OK=33 KO=- )
> response time 50th percentile 72 (OK=72 KO=- )
> response time 75th percentile 89 (OK=89 KO=- )
> response time 95th percentile 102 (OK=102 KO=- )
> response time 99th percentile 104 (OK=104 KO=- )
> mean requests/sec 0.333 (OK=0.333 KO=- )
---- Response Time Distribution ------------------------------------------------
> t < 25 ms 0 ( 0%)
> 25 ms < t < 50 ms 1 ( 50%)
> t > 50 ms 1 ( 50%)
> failed 0 ( 0%)
================================================================================
Reports generated in 0s.
Please open the following file: /home/jamie/workspaces/jvt.me/tmp/fat-gatling-jar/target/gatling/othersimulation-20181118140352474/index.html
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 33.747 s
[INFO] Finished at: 2018-11-18T14:03:59Z
[INFO] ------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>me.jvt.hacking</groupId>
<artifactId>fat-gatling-jar</artifactId>
<version>0.3</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<gatling.version>3.0.0</gatling.version>
<gatling-plugin.version>3.0.0</gatling-plugin.version>
<scala-maven-plugin.version>3.4.4</scala-maven-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>io.gatling.highcharts</groupId>
<artifactId>gatling-charts-highcharts</artifactId>
<version>${gatling.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>${scala-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
<version>${gatling-plugin.version}</version>
<executions>
<execution>
<id>BasicSimulation</id>
<goals>
<goal>test</goal>
</goals>
<phase>verify</phase>
<configuration>
<simulationClass>me.jvt.hacking.BasicSimulation</simulationClass>
</configuration>
</execution>
<execution>
<id>OtherSimulation</id>
<goals>
<goal>test</goal>
</goals>
<phase>verify</phase>
<configuration>
<simulationClass>me.jvt.hacking.OtherSimulation</simulationClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
......@@ -450,12 +450,12 @@ OK (2 tests)
We're now building a JAR for our Cucumber tests, which allows us to build once and run many times. We have confidence in releasing our JARs by writing tests for our steps, meaning we're able to release our tests before we actually run them against our API, as we are happy they'll do what they are meant to.
Note that I've also implemented this process for Gatling, which follows a very similar set of instructions. I'll be creating a follow-up article with the Gatling steps, but you can [vote on the <i class="fa fa-gitlab"></i> issue][issue-gatling-article] to make me aware you'd like it prioritised.
Note that I've also implemented this process for Gatling, which follows a very similar set of instructions. I've created a follow-up article with the Gatling steps in [_Creating a versionable, self-contained (fat-/uber-) JAR for Gatling tests_][fat-gatling-jar].
[our POM]: https://gitlab.com/jamietanna/fat-cucumber-jar/blob/5367d363f4038dcce2cec5a04856dc3d7c9afc0e/pom.xml
[update our POM]: https://gitlab.com/jamietanna/fat-cucumber-jar/blob/cccd0c167eb444cb1c8d7cf9e09eb23b564b4b4e/pom.xml
[hooking into the `integration-test` phase in our parent POM]: https://gitlab.com/jamietanna/fat-cucumber-jar/blob/d1f3458a0b6e601d0043f65afe1344a9308c7de3/pom.xml
[resurrecting-dinosaurs]: {% post_url 2017-02-15-resurrecting-dinosaurs %}
[fat-cucumber-jar]: https://gitlab.com/jamietanna/fat-cucumber-jar
[issue-gatling-article]: https://gitlab.com/jamietanna/jvt.me/issues/265
[fat-gatling-jar]: {% post_url 2018-11-19-self-contained-gatling-jar %}
[amending the `CucumberOptions` annotation]: https://gitlab.com/jamietanna/fat-cucumber-jar/commit/8e61448d656bd39b4f2e3daa0d3391bbec2decd1
---
layout: post
title: Tweaking Gatling HighCharts Response Time Bounds
description: How to configure the bounds that Gatling marks your response times within for console output and graphing purposes.
categories: blogumentation gatling
tags: blogumentation gatling gatling-highcharts
no_toc: true
image: /assets/img/vendor/gatling-logo.png
---
It feels that since I've moved to having a [Fat/Uber- Jar for my Gatling tests][fat-gatling-jar], the reports that Gatling produces haven't quite looked the same.
It turns out that the response times boundaries were a little off and were defaulting to 800ms and 1200ms for the lowest and highest bound respectively. This was odd, as each of the API calls was well within that threshold.
This meant that the graph and results weren't really that effective:
```
================================================================================
---- Global Information --------------------------------------------------------
> request count 2 (OK=2 KO=0 )
> min response time 39 (OK=39 KO=- )
> max response time 93 (OK=93 KO=- )
> mean response time 66 (OK=66 KO=- )
> std deviation 27 (OK=27 KO=- )
> response time 50th percentile 66 (OK=66 KO=- )
> response time 75th percentile 80 (OK=80 KO=- )
> response time 95th percentile 90 (OK=90 KO=- )
> response time 99th percentile 92 (OK=92 KO=- )
> mean requests/sec 0.333 (OK=0.333 KO=- )
---- Response Time Distribution ------------------------------------------------
> t < 800 ms 2 (100%)
> 800 ms < t < 1200 ms 0 ( 0%)
> t > 1200 ms 0 ( 0%)
> failed 0 ( 0%)
================================================================================
```
This makes the charts pretty useless, as all the responses are under 800ms, so they're then just within that bound:
![All response times in the "under 800ms" bound in the Gatling report](/assets/img/gatling-highcharts-response-time-bounds/before.png)
I did some searching, but couldn't find much that documented why I'd be seeing this. I eventually landed on the [gatling-defaults.conf][gatling-defaults] in the source of gatling-core and found that I needed to tweak these values in my project's `gatling.conf` to override the defaults:
```
# src/main/resources/gatling.conf
# OR
# src/test/resources/gatling.conf
gatling {
charting {
indicators {
lowerBound = 25
higherBound = 50
}
}
}
```
Once this was done, the console output correctly split the response times within our bounds:
```
=================================================================================
---- Global Information --------------------------------------------------------
> request count 2 (OK=2 KO=0 )
> min response time 33 (OK=33 KO=- )
> max response time 114 (OK=114 KO=- )
> mean response time 74 (OK=74 KO=- )
> std deviation 41 (OK=41 KO=- )
> response time 50th percentile 74 (OK=74 KO=- )
> response time 75th percentile 94 (OK=94 KO=- )
> response time 95th percentile 110 (OK=110 KO=- )
> response time 99th percentile 113 (OK=113 KO=- )
> mean requests/sec 0.333 (OK=0.333 KO=- )
---- Response Time Distribution ------------------------------------------------
> t < 25 ms 0 ( 0%)
> 25 ms < t < 50 ms 1 ( 50%)
> t > 50 ms 1 ( 50%)
> failed 0 ( 0%)
===============================================================================
```
As well as doing the same within the report:
![Response times split between the higher and lower bounds within the Gatling report](/assets/img/gatling-highcharts-response-time-bounds/after.png).
[fat-gatling-jar]: {% post_url 2018-11-19-self-contained-gatling-jar %}
[gatling-defaults]: https://github.com/gatling/gatling/blob/master/gatling-core/src/main/resources/gatling-defaults.conf
---
title: 'Creating a versionable, self-contained (fat-/uber-) JAR for Gatling tests'
description: Why you'd want a fat JAR for your Gatling tests and how you'd achieve it.
categories: blogumentation
tags: java gatling testing jar artifact artefact maven uber-jar
image: /assets/img/vendor/gatling-logo.png
---
## Why
The reasoning behind this post is very similar to [_Creating a versionable, self-contained (fat-/uber-) JAR for Cucumber tests_]({% post_url 2018-08-16-self-contained-cucumber-jar %}), but doesn't include the comment about the separation of unit tests and cucumber steps.
This means that the two reasons we'd want a fat JAR is:
- We want to have a versionable artefact for our Gatling tests
- We only want a single JAR downloaded, which contains our dependencies as well as simulations and scenarios, rather than all of the dependencies separately
As mentioned in the Cucumber post, we don't necessarily want both of these, but they're both achieved with this approach.
## Before
A traditional setup for a Gatling project in Maven is as follows:
```
pom.xml
src/test/scala/me/jvt/hacking/BasicSimulation.scala
src/test/scala/me/jvt/hacking/OtherSimulation.scala
```
Our POM uses the `gatling-maven-plugin` to run our tests, hooking it into the `verify` phase:
```xml
{% include src/self-contained-gatling-jar/before/pom.xml %}
```
When we perform a `mvn clean verify`:
```
{% include src/self-contained-gatling-jar/before/mvn-verify.txt %}
```
Also notice the warning about the JAR not having anything to be included in it. This is expected, as at this stage we don't have anything in `src/main` to be included:
```
{% include src/self-contained-gatling-jar/before/jar.txt %}
```
## After
To enable the creation of a self-contained Gatling artefact, we first need to move our Gatling files from `src/test` to `src/main` to fit within Maven's directory structures:
```
pom.xml
src/main/scala/me/jvt/hacking/BasicSimulation.scala
src/main/scala/me/jvt/hacking/OtherSimulation.scala
```
Then, we need to make sure that the `scala-maven-plugin` is hooked in to to the `compile` phase, so our Scala files are built and available to be pulled into the JAR:
```diff
{% include src/self-contained-gatling-jar/after/pom.xml.diff %}
```
Note that we're marking the `packaging` of the project as a `jar` because we've now got an actual artefact that this project creates.
```
{% include src/self-contained-gatling-jar/after/jar.txt %}
```
Now, when we perform a `mvn clean verify`:
```
{% include src/self-contained-gatling-jar/after/mvn-verify.txt %}
```
It builds as before, but as we can see, there's a bit more in there which relates to building the JAR.
We set the Gatling class as our `main` to allow us to run the JAR on its own, allowing us to specify the simulation on the command-line:
```
{% include src/self-contained-gatling-jar/after/run-jar.txt %}
```
We ideally should remove our `gatling-maven-plugin` and instead run our JARs separately:
```diff
{% include src/self-contained-gatling-jar/after-exec/pom.xml.diff %}
```
## Notes
You may receive the following error if your Maven shade configuration doesn't include the `excludes` mentioned in [this StackOverflow post](https://stackoverflow.com/a/6743609):
```
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:330)
at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:263)
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:318)
at java.util.jar.JarVerifier.update(JarVerifier.java:230)
at java.util.jar.JarFile.initializeVerifier(JarFile.java:383)
at java.util.jar.JarFile.ensureInitialization(JarFile.java:612)
at java.util.jar.JavaUtilJarAccessImpl.ensureInitialization(JavaUtilJarAccessImpl.java:69)
at sun.misc.URLClassPath$JarLoader$2.getManifest(URLClassPath.java:991)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:451)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
```
You may also want to tweak your [bounds for response times] so your graphs are a little more useful than the defaults.
This blog post is supported by the repo [<i class="fa fa-gitlab"></i> fat-gatling-jar](https://gitlab.com/jamietanna/fat-gatling-jar).
[bounds for response times]: {% post_url 2018-11-19-gatling-highcharts-response-time-bounds %}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment