How to make Jmeter recognize "localhost" URL? - jmeter

How to do performance testing of localhost url which is accessible only to my computer?
I am able to do performance testing using jmeter for live websites like google etc but jmeter is not able to detect local url.
URL of application-192.168.121.20:8001
2. Output of View Results Tree listener- ALL failed http alerts Description of screenshot of HTTP Request sampler- added only server name i.e URL –

I have the same problem, but my mistake is that I thik the Server Name was the URL Base and it is not works.
This is the wrong way:
Server Name: "localhost/api/v1" (Wrong)
Http Request -> Path: "/auth"
Http Request Defaults (Jmeter):
The correct way:
Server Name: "localhost"
Http Request -> Path: "/api/v1/auth"
Http Request Defaults (Jmeter):
Http Request (Test):

JMeter doesn't care whether application under test is local or remote, if you cannot hit local URL with JMeter - something is wrong with your HTTP Request Sampler configuration, most likely "Port" value is wrong.
In order to be able to help we need to know the following:
1. URL of your application
2. Output of View Results Tree listener
3. Contents of JMeter log
4. Description of screenshot of your HTTP Request sampler
As an alternative option you can try recording your scenario using JMeter Chrome Extension and see if you're able to replay recorded scenario without errors. Again, use View Results Tree listener to inspect request and response details.
In general it is not recommended to run the application under test and the load generator on the same physical or virtual machine as the load generator (JMeter in your case) may consume immense amount of resources like CPU and RAM and it may interfere your application health (unless you're using completely isolated containers), so I would recommend use separate hosts for application and the load generator.

For anyone testing localhost with JMeter for the first time, make sure endpoint are configured correctly.
For a Get request of http://localhost:8080/rest/comments, set:
Server Name or IP: localhost
Port Number: 8080
Path: /rest/comments
Method: Get

please note that i have attached images for each step
Step 1 : First create Thread Group .After Create thread group you will see three part.
Number of thread means how many requests you want to perform and loop count means how many time you want to execute
Step 2 : right click on the thread group Add --> Sampler --> http request as like attach image .In the name filed just give a name as like whats you want.In my case it was Order Service http request
In protocol filed i am going to http request so for that i have given http in the box
In the server name i have set it to localhost because i am using local machine .If you use just remote server then use Ip address or domain name . Don't use http or port number before or after the ip address or domain name
In the port number field i am using 9003 that's why I have given 9003 .
In the http request field use your desired http method in my case i will post some data so i am using POST method so that i have selected post method
Path field just use the path after the ip address or domain name or localhost in my case it was order/create-order . please note that do not add forward slash before that. slash will automatically added by JMeter.
As it is post request so My server side request some body data so i have attached that as json format so click on the body data
step 3 : Sometimes you need to pass some header information for example content type . for that you need to create another option HTTP header manager to create that option . Right click on the thread group then add-> config element- > http header manage as like attach image . I have given the content type
Step 4 : Now you are ready to for request to server but sometimes you need to check the response and other thing so for that click on the thread group then add -> listner -> view result tree
Final Step : To execute the request, click on the greeen button from the top bar.

In order to have Jmeter "recognize" localhost (and any other program on your machine) you have to modify host file:
On Windows
Typically host is located under C:/windows/system32/drivers/etc/. Just open it with any text editor.
Add following record to this file and save changes:
127.0.0.1 localhost
On OSx
Open /private/etc/hosts file for editing with any text editor
Add following record to this file and save changes:
127.0.0.1 localhost
As a result you'll map localhost to your computers default local IP address which is 127.0.0.1

Get your ip addres using ipconfig (windows)
Think your URL is - http://192.168.8.149:3000/api/user/showTeams
Use Server Name or IP -192.168.8.149
Use Port Number - 3000
Use Protocol - http
Use Path - api/user/showTeams

Use IPv4 address instead of using localhost or 127.0.0.1 to access your local application.
Get JMeter's recording template from File > Template.
Set proxy on 8888 port and start recording

In my case, I was running a web app using local Tomcat on port 8080. JMeter was unable to connect using localhost:8080/app-name. It was connecting just fine to the remote-host:8080/app-name.
Solution: I found out that there was another application accessible using 127.0.0.1:8080/another-app. Perhaps, this was confusing JMeter. So, eventually, I changed my tomcat port to 9090 using server.xml and then JMeter was able to connect to localhost:9090/app-name

for your path use http://[::1]:{port}/route
[::1] instead of localhost fixed this for me, took me hours to figure that out

Related

Can one NiFi node have multiple host names?

Problem:
Not able to allow multiple host names for one single NiFi node.
Description:
I have an internal NiFi server with internal computer name 'nifi-1'. nifi.properties has the following:
nifi.web.https.host=0.0.0.0
nifi.web.https.port=9443
This works fine when I hit "https://nifi-1:9443/nifi/" internally.
I have another dns name - "nifi-1.company.com" (both names must be supported) that is routed to the same nifi node. The nifi node rejects with the following error messages when I hit "https://nifi-1.company.com:9443/nifi/":
System Error
The request contained an invalid host header [nifi-1.company.com:9443] in the request [/nifi]. Check for request manipulation or third-party intercept.
Valid host headers are [empty] or:
127.0.0.1
127.0.0.1:9443
localhost
localhost:9443
[::1]
[::1]:9443
nifi-1
nifi-1:9443
10.0.1.82
10.0.1.82:9443
0.0.0.0
0.0.0.0:9443
Question:
How to resolve this problem? Any solutions? (Thanks!)
Another way to phrase the question is how I may add more host names into the list of "valid host headers" as the above.
This issue was pointed at in NiFi 1.5 NIFI-4761. To resolve this issue, whitelist the hostname used to access NiFi using the following parameter in the nifi.properties configuration file :
nifi.web.proxy.host = host:port
Its a comma-separated list of allowed HTTP Host header values to consider when NiFi is running securely and will be receiving requests to a different host[:port]. For example, when running in a Docker container or behind a proxy (e.g. localhost:18443, proxyhost:443). By default, this value is blank, meaning NiFi should allow only requests sent to the host[:port] that NiFi is bound to.
original answer source: how to use nifi.web.proxy.host and nifi.web.proxy.context.path?

I doing performance testing using JMeter, but every time I get status fail. What is missing in Test plan?

I am doing performace testing of http://www.google.com. Thread no=10, ramp-up period:10
loop count=10
In config element iI have enter server name as http://www.google.com and port no=80 similar in sampler I entered all data as server name: http://www.google.com and port no :8080
still it shows failed
You need to remove http:// prefix from Server:
Server (proxy) Hostname or IP address of a proxy server to perform request. [Do not include the http:// prefix.]
Also port 8080 won't work for google and most sites.
Another option is to put full URL (http://www.google.com) in Path field:
As a special case, if the path starts with "http://" or "https://" then this is used as the full URL.

ip spoofing not working jmeter

I am trying IP spoofing in JMeter HTTP requests but my public IP is going to the request, not the IP address which I have specified under advanced option in HTTP sampler. can anyone help me in this?
I am also sharing the screenshot of my test plan.
here
In my test plan my let's say my IP is x.x.x.x and the IP which I have configured for IP spoofing is: 192.168.23.12 as shown in the screenshot but request to the server is still going with my IP which is x.x.x.x.
Can anyone help me out in this?
As per HTTP Request sampler documentation
Source address field [Only for HTTP Request with HTTPClient implementation]
So change "Implementation" to HttpClient4 and it should start working as expected.
Also be aware that you need to have this IP address (or alias) defined in the underlying operating system.
See Using IP Spoofing to Simulate Requests from Different IP Addresses with JMeter article for more information and configuration instructions for different operating systems.
Please check the below test plan:-

jmeter Cannot find interface error

I'm trying to run an test on jmeter. However, when I'm run an test I'm getting the following result: Non HTTP response code: java.net.UnknownHostException/Non HTTP response message: Cannot find interface ec2----*.compute-1.amazonaws.com
Why would I get the following error message when I'm trying to do an load test? I'm running jmeter from the desktop and I'm trying to an load test from the site from the AWS.
Thank you,
Kevin Davis
I have found the resolution. It was an advance setting of the http request defaults that was causing the issue.
It looks like you are attempting to do IP spoofing using wrong settings, you should not be using your AWS instance hostname in the Source address tab, it should be rather network adapter name, you can get it using i.e. ifconfig command.
Once you determine network adapter name - substitute your ec2----*.compute-1.amazonaws.com with the real adapter name, i.e. eth0
If you are not going to use the IP Spoofing - just leave this Source address field blank.

I'm not able to record a script in Jmeter, script is not generating

I had follow all the below given Steps.
Please check and suggest me solution for this.
1.Create Thread Group.
2.HTTP Request(with Port 8080 and IP/Server Name as localhost.
3.HTTP Request Defaults(with Port 8080 and IP/Server Name as localhost).
4.Added Recording Controller.
5.Under Workbench created HTTP(s) Test Script Recorder
6.Updated URL patterns (.*.html).
7.Added View Result Tree.
8.Clicked on Start and install Root CA certificate(Click OK).
9.Set a Proxy in Firefox.
10.Firefox Option Advanced Network Setting.
Check the Manual Proxy Configuration.
HTTP Proxy: localhost and Port: 8080.
11.Check the "Use this Proxy Server for all Protocol".
No Proxy for "localhost".
Finally I have did not see any script that has been recorded.
You Can Follow these below steps:
Open Jmeter.
Click on Templates... (File->Templates... )
Just Click on "Create" button.
Then open up your Firefox browser.
Then Open Menu-> Options -> Advanced -> Network -> Connection Settings.
Then configure just like this.
Then just click OK.
Start the HTTP(s) Test Script Recorder from Jmeter.
9.Now Install Root CA certificate.
Restart your Firefox and you are just ready to record your test script.
You will find your recorded script under the "Recording Controller" section!!
Hope, this will help you. :)
It might be the case you're trying to record secure (HTTPS) traffic.
Make sure "Use this proxy server for all protocols" box is checked
Make sure "No Proxy for" box is empty
You can also consider an alternative recording approach - JMeter Chrome Extension - in that case you won't have to worry about proxies, SSL certificates, browser configuration, etc. - click one single button and you're all set.
- In step #2, You don't need to specify anything in HTTP Requests, HTTP requests will
be added automatically when you record your script successfully.
- In step #3, DO NOT use server name as "Localhost" and port number as JMeter's port.
Only when you want to test HTTPS domains, you specify HTTPS as a protocol.
Also, if you are testing an application that requires a specific port number (Example:
htts://somedomain.com:9595/somepath/) you specify the Server/IP Name and the PORT in the
HTTPS Default.
- In step #5, you specify JMeter port number (8080 or 8888 or...), and chose "Target
Controller" to "Use Recording Controller". You will find recorded script in Recording
Controller when you expand it after recording is done.
- In step #10, use the same port number you specified in step #5.
For me, the solution was to create an alias for 127.0.0.1 in /etc/hosts:
127.0.0.1 myserver
and create the JMeter script from the Recording template as detailed at https://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.html, specifying "myserver" as the host (instead of www.example.com).
Also, if your backend listens on a specific port, you have to specify that port in the "HTTP Request Defaults", under "Port Number".

Resources