JMeter Apache for testing your web app

Posted on December 9, 2019

 

1. Install jmeter and run it

sudo apt install jmeter
jmeter

In my case, openjdk version was in version 10.0.2 that it wasn't compatible with jmeter. I had to downgrade it:

java -version
sudo apt-get remove openjdk-*
sudo apt-get install openjdk-8-jre
java -version

 

2. Create your tests

A good introduction to create your tests is in jmeter's documentation

http://jmeter.apache.org/usermanual/test_plan.html

Tutorialspoint: https://www.tutorialspoint.com/jmeter/jmeter_environment.htm

 

3. Install jmeter in your AWS EC2 server

After installing jemeter succesfully on the server we won't need to connect again. The following script will copy and then run the tests using ssh connection, and then download the results so we can visualize them on our local machine.

 

4. Run the script

Add in the same folder of your jmeter tests this script, set the variables with yours and run it. Note that ~/ path should be used with $HOME/ in a bash script.

#!/bin/bash

# jmeter_ec2 - A script to run jmeter tests from ec2 instance

# set variables
key_path="$HOME/.ssh/key.pem"
public_dns="ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com"
test_path="$HOME/path_to/mytest.jmx"
results_path="$HOME/path_to/results_auto.csv"
ec2_user="ubuntu"

echo $key_path

echo "coping test file to EC2"
scp -i "$key_path" $test_path $ec2_user@$public_dns:jmeter_ec2_tmp.jmx

# make test file writable, so can be overwritten later with scp
ssh -i "$key_path" $ec2_user@$public_dns 'chmod +w jmeter_ec2_tmp.jmx'

# run test in cli mode
ssh -i "$key_path" $ec2_user@$public_dns 'jmeter -n -t jmeter_ec2_tmp.jmx -l jmeter_ec2_tmp.csv' &
echo "testing..."

wait
# copy the results to your computer
sudo scp -i "$key_path" $ec2_user@$public_dns:jmeter_ec2_tmp.csv $results_path

echo "Test finished and results are saved."