How to put delay in multiple API request with delay in jmeter - jmeter

I am hitting an API request in JMeter by reading a CSV file, which has 130 records.I want to execute those 130 records within 5 minutes and then put a delay of 30 minutes then again execute those 130 records. What I have done up till now is:
Created a thread group
Created a loop controller with loop count 2 and
Added the request with CSV under the loop controller
Added a constant timer to the loop controller with a delay of 30 minutes.
Can anyone please help me out with this?
Screenshot:

use the following configuration:
Thread Group - set Loop Count to 2.
Loop Controller - set Loop Count to 130
Add CSV Dataset Config under Loop Controller
Add If Controller under Loop Controller to know the last loop. put the condition as ${__counter(,)}==130
Add Constant Timer under If Controller and set the value to 30 minutes
Add Debug Sampler under If Controller to make Constant Timer applicable. (without any sampler, timers won't apply)
Added the screenshot for reference:

Related

How to keep certain thread delay between requests and store correlation id for all the request during load test

May i know how to achieve this scenario in JMeter.
Requirement 1 : Request 1 should execute for 15 mins, once 15 mins crossed request 2 should execute and request 1 to be stopped.
Requirement 2 : In request 1, we need to capture all dynamic value and store it some place and same dynamic value we should use it as request body for request 2. We like to run large numbers of users. Not sure, how to store all the response in some files or other alternatives.
Ex : Request 1 - > Trigger -> Store response somewhere(15 min run & 100 iteration) - stopped
Request 2 - > Trigger after 15 min - Execute request with above 100 iteration response)
Either take a look at Runtime Controller, using this guy you can choose how long its child(ren) will be run or just put your requests 1 and 2 into separate Thread Groups
If you want to store full responses into a file take a look at:
Post-Processors to capture the required part of the response into a JMeter Variable
Sample Variables property to tell JMeter to save this variable into .jtl results file
Flexible File Writer if you want to write the values into a separate file

Jmeter - Until request gets success execute max. 60 requests in 5 minutes with 5 seconds pause

I have one request, which triggers every 5 seconds and maximum for 5 minutes until it gets 200 in response code. So ideally that request executes 12 times in a minute and 60 requests total if it fails everytime.
My problem is how I define those maximum 60 requests.
Here is my configuration
I have taken one While Controller
${__javaScript(parseInt(vars.get("Response_code"))!=200)}
In that while controller this components are there,
While Controller
User Defined Variable (Response_code)
Counter (Starting value: 1, Increment:1, Maximum Value:60)
My HTTP Request
JSR223 PostProcessor (vars.put("Response_code",prev.getResponseCode());)
Constant Throughput Timer (Targer throughput: 12.0)
Where should I have to put condition like if my HTTP request gets success in 3rd attempt go ahead to next request else repeat that request again after 5 seconds till 5 minutes?
I am using jmeter Ver. 5.5
You can amend your While Controller's condition to look like:
${__javaScript((parseInt(vars.get("Response_code"))!=200 && ${counter} < 60),)}
this way it will loop until response code is 200 but not more than 60 times.
Instead of Constant Throughput Timer you can use Flow Control Action sampler to introduce static delay of 5000 ms.
There is no need to have a counter, While Controller exposes a special variable, in your case it will be ${__jm__While Controller For Thumbnail-1 QA1.pdf__idx}
More information: Using the While Controller in JMeter

Jmeter - executed a script with and without timer. but the result doesnt seem to work well

i executed a script for login in Jmeter.
User 1, rampup time 1, loop 5, cache and cookie manager added. Clear cache of each iteration checked.
without timer below are the time taken for a user in next iteration
after adding constant timerof 3000ms below are the values obtained.
can someone please explain the results after adding constant timer of 3000ms?
according to me the result should be approx. 2+30sec =around 32 sec foreach iteration.
JMeter doesn't include Pre-Processors, Post-Processors and Timers duration into Sample Result by default
If you want to include these 3 extra seconds added by the Timer put your Sampler under the Transaction Controller and tick both Generate parent sample and Include duration of timer and pre-post processors in generated sample boxes:

Loop threw Thread Group with Jmeter

I got a thread group of 10 users. I want to to connect these 10 users to an URL path mysite.com/1.
Then I want to loop a second time on these thread group and connect them to mysite.com/2.
And I need to repeat this process 10 times (i.e until mysite.com/10)...
I there a simple way of achieving that? I've already tried to use counter but what it does is connecting user1 to /1, user2 to /2 and so on...
Add While Controller to your Thread Group and put the following expression to the "Condition" area:
${__javaScript(${counter} < 11,)}
Add Counter test element as a child of the While Controller and configure it as follows:
In your HTTP Request sampler refer the incrementing value as ${counter} where required.
See How to Use a Counter in a JMeter Test to learn how to properly generate incrementing values in JMeter tests.

without using only once controller,i want the login request to be executed once

I am trying to do the load testing of the pages which can be access after login only.
As I am using Once Only Controller for login request ,when I changed Number of thread- 5 or more,login executes 5 times.
as Once Only Controller works for loopcount so I used loopcount but it slowdown my process and it executes the whole testplan.
My test-plan is:
login thread A- one time execution - how to do it?
http request B- multiple times(by using Number of threads)
http request C- multiple times(by using Number of threads)
What should I use for one time login execution and other successor requests needs to be executed multiple times without using Once Only Controller?
Kindly follow these steps:-
In Thread Group put number of threads:5 , Ramp-up:0 , Loop count: 1
Put your Login part in Once only controller
Right click on Your thread group > add > logic controller > loop controller
Now put your http request part in loop controller and set loop count of loop controller how many times you want to run
Then run the test you will get whatever you want
The Loop count in "Thread Group" is your full script Loop count not for your Transactions, for your transactions you have to put separate loop count before transaction starts.
Please do below
Your thread group setting should be below:
A.Number of threads :1
B:Ramp up period : 0 or as per application response.
C:Loop Count :5
Put your login request under Only once controller.
Request B and Request C should be at thread group Level.ie one step above it.
Run the request.
please find Sample Jmxsample Jmx for your reference Plse try. Hope it resolves your issue.

Resources