GithubHelp home page GithubHelp logo

electronicarts / gatling-aws-maven-plugin Goto Github PK

View Code? Open in Web Editor NEW
99.0 22.0 35.0 267 KB

The Gatling AWS Maven plugin takes the pain out of scaling up your Gatling tests. It runs your load test on a configurable number of EC2 instances, aggregates a single load test report, and uploads the results to S3. All EC2 instances are terminated at the end of the test to ensure you are only paying for what you need.

License: Other

Shell 0.12% Java 99.88%

gatling-aws-maven-plugin's Introduction

Gatling AWS Maven Plugin

Build Status Gitter

The Gatling AWS Maven plugin takes the pain out of scaling up your Gatling tests. It runs your load test on a configurable number of EC2 instances, aggregates a single load test report, and uploads the results to S3. All EC2 instances are terminated at the end of the test to ensure you are only paying for what you need.

Getting Started

This section shows you which setup is required to use the plugin, how to configure your existing Maven project, how to run tests locally for testing, and how to let Jenkins start a cluster of EC2 instances that will run your load test.

For the 5 minute version of this document, take a look at Quickstart.

AWS Setup

Make the following changes in AWS to allow the Gatling AWS Maven plugin to launch EC2 instances and upload the results to S3 on your behalf.

  1. Create a S3 bucket to upload results to e.g. loadtest-results.
  2. Create new access/secret key in IAM with the following permissions. Ensure that the S3 bucket you picked is referenced in the Resource section of "Action":"s3:*".
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:RunInstances",
        "ec2:StopInstances",
        "ec2:CreateTags",
        "ec2:TerminateInstances",
        "ec2:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "autoscaling:Describe*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::loadtest-results/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Resource": "*"
    }
  ]
}

This example policy is very permissive. Consider restricting it more depending on your needs.

The plugin expects that the access/secret key are provided at runtime to interact with EC2 and S3. Please refer to the AWS documentation on how to provide the keys to an application. To use the plugin on Jenkins, we recommend setting up password parameters for both values. You can then inject both as environment variables or write them into a temporary aws.properties file.

  1. In your pom.xml file, set the Maven property ${ec2.key.pair.name} to the name of the new EC2 key pair you created for the access/secret key (or use the default "gatling-key-pair").

Maven integration

Create a new Maven project that follows the following structure:

  1. Create a Gatling simulation (e.g. com.FooTest) in src/test/scala/com/FooTest.scala. See the Gatling concepts docs for more information.
  2. Put a gatling.conf and logback.xml file in src/test/resources. See the Gatling configuration docs for more information.
  3. Create a install-gatling.sh script in src/test/resources This script will run on each load generator to install Gatling and do any other setup necessary before starting your test. Make sure the script is executable and looks similar to the following:
#!/bin/sh
# Increase the maximum number of open files
sudo ulimit -n 65536
echo "*       soft    nofile  65535" | sudo tee --append /etc/security/limits.conf
echo "*       hard    nofile  65535" | sudo tee --append /etc/security/limits.conf

# Replace Java 7 with 8 and install other requirements
sudo yum remove  --quiet --assumeyes java-1.7.0-openjdk.x86_64
sudo yum install --quiet --assumeyes java-1.8.0-openjdk-devel.x86_64 htop screen

# Install Gatling
GATLING_VERSION=2.2.0
URL=https://repo1.maven.org/maven2/io/gatling/highcharts/gatling-charts-highcharts-bundle/${GATLING_VERSION}/gatling-charts-highcharts-bundle-${GATLING_VERSION}-bundle.zip
GATLING_ARCHIVE=gatling-charts-highcharts-bundle-${GATLING_VERSION}-bundle.zip

wget --quiet ${URL} -O ${GATLING_ARCHIVE}
unzip -q -o ${GATLING_ARCHIVE}

# Remove example code to reduce Scala compilation time at the beginning of load test
rm -rf gatling-charts-highcharts-bundle-${GATLING_VERSION}/user-files/simulations/computerdatabase/
  1. Make sure your pom.xml contains the following properties, dependencies, and plugins. Start by setting the following properties to configure the access to AWS and control how Gatling will be executed on the remote load generators.
  <properties>
    <gatling.version>2.2.0</gatling.version>
    <gatling-plugin.version>2.2.0</gatling-plugin.version>
    <gatling.skip>false</gatling.skip>

    <!-- Information required to start EC2 instances and control them via SSH -->
    <ssh.user>ec2-user</ssh.user>
    <ssh.private.key>${user.home}/.ssh/loadtest.pem</ssh.private.key>
    <ec2.key.pair.name>loadtest-keypair</ec2.key.pair.name>
    <ec2.security.group>default</ec2.security.group>
    <ec2.instance.count>1</ec2.instance.count>

    <gatling.local.home>${project.basedir}/gatling/gatling-charts-highcharts-bundle-2.2.0/bin/gatling.sh</gatling.local.home>
    <gatling.install.script>${project.basedir}/src/test/resources/install-gatling.sh</gatling.install.script>
    <gatling.root>gatling-charts-highcharts-bundle-2.2.0</gatling.root>
    <gatling.java.opts> -Xms1g -Xmx25g -Xss8M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M</gatling.java.opts>

    <!-- Fully qualified name of the Gatling simulation and a name describing the test -->
    <gatling.simulation>com.FooTest</gatling.simulation>
    <gatling.test.name>LoadTest</gatling.test.name>

    <!-- S3 integration settings -->
    <s3.upload.enabled>true</s3.upload.enabled>
    <s3.bucket>loadtest-results</s3.bucket>
    <s3.subfolder>my-loadtest</s3.subfolder>

    <!-- Any additional properties you might have -->
  </properties>
  1. Add the following two dependencies:
  <dependencies>
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>2.11.4</version>
    </dependency>
    <dependency>
      <groupId>io.gatling.highcharts</groupId>
      <artifactId>gatling-charts-highcharts</artifactId>
      <version>${gatling.version}</version>
      <scope>test</scope>
    </dependency>
    <!-- Any additional dependencies you might have -->
  <dependencies>
  1. Add the following two plugins to your <build> section.

io.gatling:gatling-maven-plugin will allow you to run com.FooTest locally for fast testing and troubleshooting. Consider enabling the JVM arguments for debugging. If you have seen your test fail remotely, this is a great way to quickly understand and fix problems on your local dev environment. Specify additional <jvmArg> elements to customize the heap size to allow you to run bigger tests locally.

com.ea.gatling:gatling-aws-maven-plugin will allow you to run com.FooTest at scale on a cluster of EC2 instances based on the properties you configured above.

  <build>
    <sourceDirectory>src/test/scala</sourceDirectory>
    <testSourceDirectory>src/test/scala</testSourceDirectory>
    <plugins>
      <!-- Required for running smaller Gatling simulations locally for debugging purposes -->
      <plugin>
        <groupId>io.gatling</groupId>
        <artifactId>gatling-maven-plugin</artifactId>
        <version>${gatling-plugin.version}</version>
        <executions>
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>execute</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <dataFolder>src/test/resources/data</dataFolder>
          <resultsFolder>target/gatling/results</resultsFolder>
          <simulationsFolder>src/test/scala</simulationsFolder>
          <simulationClass>${gatling.simulationClass}</simulationClass>
          <jvmArgs>
            <!-- Enable this for debugging: -->
            <!--jvmArg>-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=7000</jvmArg-->
          </jvmArgs>
        </configuration>
      </plugin>
      <!-- Required for running large scale Gatling simulations on EC2 instances -->
      <plugin>
        <groupId>com.ea.gatling</groupId>
        <artifactId>gatling-aws-maven-plugin</artifactId>
        <version>1.0.11</version>
        <configuration>
          <simulationOptions>
            <custom.simulation.option>some value</custom.simulation.option>
          </simulationOptions>
        </configuration>
      </plugin>

      <!-- Any additional plugins you might have -->
    </plugins>
  </build>

You should now be able to run tests locally and launch EC2 instances to run your test remotely. The next two section will show you how.

Running tests locally

To generate load from your local dev environment, run a normal mvn clean install. Ensure gatling.simulationClass points to the correct class name and set gatling.skip set to false.

$ mvn                                   \
-Dgatling.simulationClass=com.FooTest \
-Dgatling.skip=false -DskipTests      \
clean install

Running tests remotely

Use the com.ea.gatling:gatling-aws-maven-plugin:execute goal to launch EC2 instances to generate load. You will want to use this goal when integrating the Gatling AWS Maven plugin with Jenkins.

If your test has dependencies required to run, consider adding the assembly:single goal. This will assemble all of your dependencies in a single artifact which will be distributed to all load generators during the setup phase. A typical use case for this would be running a test which depends on POJOs or any other existing code from your client/server codebase which is represented by Maven artifacts.

Example:

$ mvn                                 \
-Dec2.instance.count=3                \
-Dec2.instance.type=c3.large          \
-Dgatling.simulationClass=com.FooTest \
-Dgatling.skip=true -DskipTests       \
clean install                         \
assembly:single com.ea.gatling:gatling-aws-maven-plugin:execute

This will spin up 3 c3.large instances and start the com.FooTest simulation on each instance.

Additional Information

Credits

We want to thank the Gatling team for creating a great load testing tool and maintaining a very active community around it.

The main authors of the plugin are Yuriy Gapon and Ingo Jaeckel.

License

Copyright (C) 2016 Electronic Arts Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of Electronic Arts, Inc. ("EA") nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY ELECTRONIC ARTS AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ELECTRONIC ARTS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

gatling-aws-maven-plugin's People

Contributors

boranx avatar cschenkea avatar dependabot[bot] avatar ingojaeckel avatar joshuafarrell avatar jpennell-ea avatar petrvlcek avatar philipdeegan avatar schenkman avatar snyk-bot avatar tystr avatar wontondon avatar ygapon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gatling-aws-maven-plugin's Issues

Configure EC2 endpoint

Hi,

Is this possible? I have created a fork and implemented a change for it, will make a pull request if you wish.

Invalid Group ID

Hello I am trying to configure your example in quick start guide.

     <ec2.subnet.id>vpc-39c1175c</ec2.subnet.id>
     <ec2.instance.count>1</ec2.instance.count>```


Tried with the group name and also with ec2.security.group.id. But it did not work.

After that I am getting the following error:

    Failed to execute goal com.ea.gatling:gatling-aws-maven-plugin:1.0.5:execute (default-cli) on project maven-gatling-aws-example-loadtest-project: Execution default-cli of goal com.ea.gatling:gatling-aws-maven-plugin:1.0.5:execute failed: Value () for parameter groupId is invalid. The value cannot be empty (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterValue; Request ID: eccd978a-796f-4f09-b622-52bb25fda176) -> [Help 1]


Can anyone please help me on this?

ec2 instances start the test desynchronized

Hi,

It's more like a feature request.
When there are multiple ec2 instances it would be nice to have the tests start synchronously.
Our network is not too good and I often face the situation of having the instances start with a few minutes offset to each other.
We have some short tests (5-10 minutes) because it's enough for validation but the desynchronized instance start spoils the results as the interval when all the instances are up and running is shortened...

Kind regards,
Jozsef

Maven surefire exception while following Quickstart guide

I was following the Quickstart guide and I came across some some surefire errors during maven build process.

I am seeing some NPEs on the SoakTest and StairCaseTest when running ./runLoadtestLocally.sh. Changing the names to Soaktest and StairCasetest allowed the build to complete successfully. I did some research (https://groups.google.com/forum/#!topic/gatling/O5EBA6_9__0) and it looks like the surefire plugin is trying to run them as JUnit3 tests.

I'm using Apache Maven 3.3.9

Here is the error if you are interested

rg.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: null
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.NullPointerException
    at io.gatling.core.akka.AkkaDefaults$class.$init$(AkkaDefaults.scala:36)
    at io.gatling.http.action.HttpActionBuilder.<init>(HttpActionBuilder.scala:22)
    at io.gatling.http.action.HttpRequestActionBuilder.<init>(HttpRequestActionBuilder.scala:30)
    at io.gatling.http.request.builder.HttpRequestBuilder$.toActionBuilder(HttpRequestBuilder.scala:44)
    at com.ea.gatling.example.StairCaseTest.<init>(StairCaseTest.scala:19)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at org.apache.maven.surefire.junit.PojoTestSet.<init>(PojoTestSet.java:63)
    at org.apache.maven.surefire.junit.JUnit3Provider.createTestSet(JUnit3Provider.java:107)
    at org.apache.maven.surefire.junit.JUnit3Provider.invoke(JUnit3Provider.java:97)
    ... 9 more

Upgrade sshj to 1.19.1 to "Enable PKCS5 Key files in DefaultConfig"

I came across a really strange issue where I was getting these errors when the gatling maven plugin was trying to connect to my EC2 instance:

[INFO] Client identity string: SSH-2.0-SSHJ_0.19.0
[INFO] Server identity string: SSH-2.0-OpenSSH_6.2
[INFO] Could not load keys from /home/xxx/.ssh/xxx.pem due to: No provider available for PKCS5 key file

It looks like something might have changed in the SSHJ code (maybe the maven-gatling-plugin), but in there most recent release 0.19.1 they have a line item for "enabling PKCS5 Key files in DefaultConfig".https://github.com/hierynomus/sshj/tree/v0.19.1#release-history. I tried it out locally and I was able to connect to the server by changing the version of ssh to 0.19.1 from 0.19.0.

Please let me know if I can provide any more information which can help. I can open a pull request with the tweak if you want as well.

Question - flag to switch between using public dns or private ip address

I'm not sure if this is just an issue in my environment, but I have been maintaining a fork of the plugin with one small change to use the ec2 private ip address instead of public dns name. https://github.com/electronicarts/gatling-aws-maven-plugin/blob/master/src/main/java/com/ea/gatling/GatlingAwsMojo.java#L160

I literally just change that line to String host = instance.getPrivateIpAddress();

I'm wondering if you would be game for putting this behind a flag i.e use.private.ip or something like that. If so, I will a pull request for you.

How do I make changes in the Java Code?

Hello!

I want to make some changes in the Java code you have.

I want to change the default user: ec2-user and also the default region to us-west.

I can change it in the code, but the changes are not being reflected in the build. I am trying to do the build from runLoadTestRemotely.sh

What do I need to change in the pom.xml to affect the changes?

New release ETA

Hi,

Is there any plan to release 1.0.7?
I really like the new tagging functionality which would solve our current difficulties (we would like to run multiple perf tests in parallel :) ).

Many thanks...
Jozsef

sshj exception

I am not sure if this is something anyone else is observing, - getting this a lot (version 1.0.14) running a simulation for > 30 mins or so across a few ec2 instances. Yes, I undertstand it is an error in sshj, but not sure if it has been introduced due to recent version upgrades

09:38:06.483 [ERROR] XSimulation - Expected: [ERROR] Dying because - {}
java.lang.IllegalArgumentException: Cannot get next power of 2; 1073745513 is too large
at net.schmizz.sshj.common.Buffer.getNextPowerOf2 (Buffer.java:69)
at net.schmizz.sshj.common.Buffer.ensureCapacity (Buffer.java:142)
at net.schmizz.sshj.common.Buffer.putRawBytes (Buffer.java:270)
at net.schmizz.sshj.connection.channel.ChannelInputStream.receive (ChannelInputStream.java:126)
at net.schmizz.sshj.connection.channel.AbstractChannel.receiveInto (AbstractChannel.java:369)
at net.schmizz.sshj.connection.channel.AbstractChannel.handle (AbstractChannel.java:171)
at net.schmizz.sshj.connection.ConnectionImpl.handle (ConnectionImpl.java:130)
at net.schmizz.sshj.transport.TransportImpl.handle (TransportImpl.java:500)
at net.schmizz.sshj.transport.Decoder.decode (Decoder.java:102)
at net.schmizz.sshj.transport.Decoder.received (Decoder.java:170)
at net.schmizz.sshj.transport.Reader.run (Reader.java:59)
[INFO] Disconnected - UNKNOWN
[ERROR] <<chan#0 / close>> woke to: net.schmizz.sshj.connection.ConnectionException: Cannot get next power of 2; 1073745513 is too large
net.schmizz.sshj.connection.ConnectionException: Cannot get next power of 2; 1073745513 is too large
at net.schmizz.sshj.connection.ConnectionException$1.chain(ConnectionException.java:32)
at net.schmizz.sshj.connection.ConnectionException$1.chain(ConnectionException.java:26)
at net.schmizz.concurrent.Promise.deliverError(Promise.java:96)
at net.schmizz.concurrent.Event.deliverError(Event.java:74)
at net.schmizz.concurrent.ErrorDeliveryUtil.alertEvents(ErrorDeliveryUtil.java:34)
at net.schmizz.sshj.connection.channel.AbstractChannel.notifyError(AbstractChannel.java:238)
at net.schmizz.sshj.connection.channel.direct.SessionChannel.notifyError(SessionChannel.java:229)
at net.schmizz.sshj.common.ErrorNotifiable$Util.alertAll(ErrorNotifiable.java:35)
at net.schmizz.sshj.connection.ConnectionImpl.notifyError(ConnectionImpl.java:258)
at net.schmizz.sshj.transport.TransportImpl.die(TransportImpl.java:601)
at net.schmizz.sshj.transport.Reader.run(Reader.java:67)
Caused by: net.schmizz.sshj.common.SSHException: Cannot get next power of 2; 1073745513 is too large
at net.schmizz.sshj.common.SSHException$1.chain(SSHException.java:36)
at net.schmizz.sshj.common.SSHException$1.chain(SSHException.java:29)
at net.schmizz.sshj.transport.TransportImpl.die(TransportImpl.java:595)
... 1 more
Caused by: java.lang.IllegalArgumentException: Cannot get next power of 2; 1073745513 is too large
at net.schmizz.sshj.common.Buffer.getNextPowerOf2(Buffer.java:69)
at net.schmizz.sshj.common.Buffer.ensureCapacity(Buffer.java:142)
at net.schmizz.sshj.common.Buffer.putRawBytes(Buffer.java:270)
at net.schmizz.sshj.connection.channel.ChannelInputStream.receive(ChannelInputStream.java:126)
at net.schmizz.sshj.connection.channel.AbstractChannel.receiveInto(AbstractChannel.java:369)
at net.schmizz.sshj.connection.channel.AbstractChannel.handle(AbstractChannel.java:171)
at net.schmizz.sshj.connection.ConnectionImpl.handle(ConnectionImpl.java:130)
at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:500)
at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:102)
at net.schmizz.sshj.transport.Decoder.received(Decoder.java:170)
at net.schmizz.sshj.transport.Reader.run(Reader.java:59)

If upload to s3 fails then plugin will be stuck there indefinitely

Hi,

I encountered a situation when the upload failed but the plugin still waited for the upload to finish.

Maybe a solution could be to also check the status (getState()) of the upload in the "while (!upload.isDone())" cycle and retry the upload a few times.

Here is the output:

Uploading /mnt/jenkins/workspace/Develop_Performance_Daily/test/perf-test/target/gatling/results/ingestion-continuous-1477308112629/simulation-ec2-52-212-123-48.eu-west-1.compute.amazonaws.com.log
Still uploading /mnt/jenkins/workspace/Develop_Performance_Daily/test/perf-test/target/gatling/results/ingestion-continuous-1477308112629/simulation-ec2-52-212-123-48.eu-west-1.compute.amazonaws.com.log
Still uploading /mnt/jenkins/workspace/Develop_Performance_Daily/test/perf-test/target/gatling/results/ingestion-continuous-1477308112629/simulation-ec2-52-212-123-48.eu-west-1.compute.amazonaws.com.log
Still uploading /mnt/jenkins/workspace/Develop_Performance_Daily/test/perf-test/target/gatling/results/ingestion-continuous-1477308112629/simulation-ec2-52-212-123-48.eu-west-1.compute.amazonaws.com.log
Still uploading /mnt/jenkins/workspace/Develop_Performance_Daily/test/perf-test/target/gatling/results/ingestion-continuous-1477308112629/simulation-ec2-52-212-123-48.eu-west-1.compute.amazonaws.com.log
Still uploading /mnt/jenkins/workspace/Develop_Performance_Daily/test/perf-test/target/gatling/results/ingestion-continuous-1477308112629/simulation-ec2-52-212-123-48.eu-west-1.compute.amazonaws.com.log
Oct 24, 2016 12:33:49 PM com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Unable to execute HTTP request: Read timed out
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
at sun.security.ssl.InputRecord.read(InputRecord.java:503)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:930)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:139)
at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:155)
at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:284)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:165)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272)
at com.amazonaws.http.protocol.SdkHttpRequestExecutor.doReceiveResponse(SdkHttpRequestExecutor.java:82)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
at com.amazonaws.http.apache.client.impl.SdkHttpClient.execute(SdkHttpClient.java:72)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:852)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:695)
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:447)
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:409)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:358)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3787)
at com.amazonaws.services.s3.AmazonS3Client.doUploadPart(AmazonS3Client.java:2859)
at com.amazonaws.services.s3.AmazonS3Client.uploadPart(AmazonS3Client.java:2844)
at com.amazonaws.services.s3.transfer.internal.UploadPartCallable.call(UploadPartCallable.java:33)
at com.amazonaws.services.s3.transfer.internal.UploadPartCallable.call(UploadPartCallable.java:23)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Still uploading /mnt/jenkins/workspace/Develop_Performance_Daily/test/perf-test/target/gatling/results/ingestion-continuous-1477308112629/simulation-ec2-52-212-123-48.eu-west-1.compute.amazonaws.com.log
Still uploading /mnt/jenkins/workspace/Develop_Performance_Daily/test/perf-test/target/gatling/results/ingestion-continuous-1477308112629/simulation-ec2-52-212-123-48.eu-west-1.compute.amazonaws.com.log
Still uploading /mnt/jenkins/workspace/Develop_Performance_Daily/test/perf-test/target/gatling/results/ingestion-continuous-1477308112629/simulation-ec2-52-212-123-48.eu-west-1.compute.amazonaws.com.log

Kind regards,
Jozsef

Restructure directory structure to multi-project Maven project

We should simplify building both the plugin and the example Maven project. Travis CI should detect if we broke either of those projects. Due to the current structure the CI process can only detect build issues on the plugin itself but not the example project using the plugin.

Simulations on nodes running serially.

Hi,

Using the version 1.0.6
We have noticed that tests on multiple nodes seem to be running serially. ie. The simulation runs against one node, - then the next, then the next and so on.

Standard out etc. does not appear to be interspersed or mixed up as one would expect.

It almost looks like the threadpool executor in GatlingAwsMojo is running on a single thread, though the configuration doesn't seem to suggest so. Another possibility perhaps is a synchronized block has been introduced in the SSH client etc

I am going to have investigate this in more detail tomorrow, - but we are wondering if this is something someone has noticed already?

Thanks,
Alan

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.