diff --git a/jmeter/README.md b/jmeter/README.md new file mode 100644 index 0000000..e08a835 --- /dev/null +++ b/jmeter/README.md @@ -0,0 +1,15 @@ +# Assignment 3 Module 5-6 + +To run tests locally you need to have installed docker + +## Running tests + +just launch in current directory run.sh passing qty of users as parameter + +e.g. + +`bash run.sh 10` + +This will prepare sergii_input.csv file with 10 users, modify SergiiScenario.jmx to need thread pool quantity and run jmeter with this scenario + +Results will be saved in results folder. \ No newline at end of file diff --git a/jmeter/run.sh b/jmeter/run.sh new file mode 100644 index 0000000..b5b8477 --- /dev/null +++ b/jmeter/run.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Define the file name +filename="scenarios/sergii_input.csv" + +# Write the header to the file +echo "username,firstName,lastName,email,password,phone,userStatus" > $filename + +# Get the number of records to create from the first script argument +num_records=${1:-4} + +# Use a for loop to create the specified number of records +for (( i=1; i<=$num_records; i++ )) +do + # Write the data to the file + echo "username$i,Egor$i,Doe$i,username$i@gmail.com,password$i,+38067456890$i,$((i%2))" >> $filename +done + +# Replace the LoopController.loops value in the SergiiScenario.jmx file +sed -i "s/[0-9]*<\/stringProp>/$num_records<\/stringProp>/g" scenarios/SergiiScenario.jmx + +docker build -t sergii_jmeteri . +docker rm -f sergii_jmeter || true +docker run -v $(pwd)/scenarios:/jmeter/scenarios -v $(pwd)/results:/jmeter/results --entrypoint "" --name sergii_jmeter sergii_jmeteri java -jar '/opt/apache-jmeter-5.5/bin/ApacheJMeter.jar' -n -f -t '/jmeter/scenarios/SergiiScenario.jmx' -l '/jmeter/results/sergiiResults.jtl' -e -o '/jmeter/results/report' diff --git a/jmeter/scenarios/SergiiScenario.jmx b/jmeter/scenarios/SergiiScenario.jmx new file mode 100644 index 0000000..9b60cfe --- /dev/null +++ b/jmeter/scenarios/SergiiScenario.jmx @@ -0,0 +1,318 @@ + + + + + false + false + false + + + + + + + , + + sergii_input.csv + true + false + true + shareMode.all + false + username,firstName,lastName,email,password,phone,userStatus + + + + + + Content-Type + application/json + + + accept + application/json + + + + + + continue + + 5 + false + + 1 + 1 + false + false + + + true + + + + true + + + + false + { + "username": "${username}", + "firstName": "${firstName}", + "lastName": "${lastName}", + "email": "${email}", + "password": "${password}", + "phone": "${phone}", + "userStatus": ${userStatus} +} + = + + + + petstore.swagger.io + https + /v2/user + POST + true + false + true + false + false + false + false + 6 + false + 0 + + + + + 200 + + + Assertion.response_code + false + 8 + + + + code + 200 + false + false + false + true + + + + + true + + + + false + { + "username": "${username}", + "firstName": "${firstName}", + "lastName": "${lastName}", + "email": "${email}", + "password": "${password}", + "phone": "${phone}", + "userStatus": ${__intSum(${userStatus},1,)}} +} + = + + + + petstore.swagger.io + https + /v2/user/${username} + PUT + true + false + true + false + false + false + false + 6 + false + 0 + + + + + 200 + + + Assertion.response_code + false + 8 + + + + code + 200 + false + false + false + true + + + + + false + + + + petstore.swagger.io + https + /v2/user/${username} + DELETE + true + false + true + false + false + false + false + 6 + false + 0 + + + + + 200 + + + Assertion.response_code + false + 8 + + + + code + 200 + false + false + false + true + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + + diff --git a/jmeter/scenarios/sergii_input.csv b/jmeter/scenarios/sergii_input.csv new file mode 100644 index 0000000..6d8b2dd --- /dev/null +++ b/jmeter/scenarios/sergii_input.csv @@ -0,0 +1,6 @@ +username,firstName,lastName,email,password,phone,userStatus +username1,Egor1,Doe1,username1@gmail.com,password1,+380674568901,1 +username2,Egor2,Doe2,username2@gmail.com,password2,+380674568902,0 +username3,Egor3,Doe3,username3@gmail.com,password3,+380674568903,1 +username4,Egor4,Doe4,username4@gmail.com,password4,+380674568904,0 +username5,Egor5,Doe5,username5@gmail.com,password5,+380674568905,1