Apache JMeter Test Script Recorder gRPC HTTP/2 support - jmeter

I want to load test a web application server which communicates through gRPC (which uses HTTP/2 for transport) with the clients.
It seems that Apache JMeter extended by the plugin JMeter gRPC Plugin and JMeter gRPC Request sampler would be perfect for this.
Among other things JMeter provides a Test Script Recorder which helps quickly generate scenarios by acting as a HTTP proxy between the client and the server.
Question 1: Is it possible to use the JMeter Recorder for recording the communication through the gRPC protocol?
Question 2: Is it possible to use the JMeter Recorder for recording the communication through the underlying HTTP/2 protocol?
I have tried already the JMeter Recorder to record the gRPC communication without success :-( Maybe caused by wrong configuration of the recorder?

No, at least not with JMeter 5.5
No, as of JMeter 5.5 the HTTP(S) Test Script Recorder doesn't support HTTP/2. Neither it does support .proto files so even if you record the raw packets you won't be able to decode them into anything meaningful
So I would recommend using a sniffer tool like Wireshark for capturing the packets between client and the system under test and then replicating the same using JMeter's GRPC sampler.

Related

SignalR does not connect when i record it with JMeter

Hi I am doing performance testing over a application but i cannot replicate the signalR connection what i do is call to the negociate api
/signalr/negociate getting the response as expected with the connection token
"Url":"/MyApp/signalr","ConnectionToken":"gM8NUnZtDg6oYU3Y9sfZgnIDlInyvspePwDuRdmqZlslRgkPIp8w/c0FZzllhwiUdZlOmPkyBd2DGU76ldt3v1B25lQlTeg1jETBWRkqaXD0QGpeNJLl3KqvnJ3v4YQ2","ConnectionId":"e1adc41d-ad0d-439f-858c-1fa47bb59083","KeepAliveTimeout":20.0,"DisconnectTimeout":30.0,"ConnectionTimeout":110.0,"TryWebSockets":true,"ProtocolVersion":"1.5","TransportConnectTimeout":5.0,"LongPollDelay":0.0}
Then i extract with JMeter that token (and i use it into the connect call)
GET https://myHost/myApp/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=gM8NUnZtDg6oYU3Y9sfZgnIDlInyvspePwDuRdmqZlslRgkPIp8w%2Fc0FZzllhwiUdZlOmPkyBd2DGU76ldt3v1B25lQlTeg1jETBWRkqaXD0QGpeNJLl3KqvnJ3v4YQ2&connectionData=%5B%7B%22name%22%3A%22workhub%22%7D%5D&tid=2
But the response is always a 400 Bad Request
Not a valid web socket request.
Any idea why that call fail?
Thank you very much
I don't think you can record WebSocket requests using JMeter's HTTP(S) Test Script Recorder as the aforementioned HTTP(S) Test Script Recorder is only capable of generating HTTP Request samplers as of JMeter 5.2
I would recommend using one of the following approaches for capturing outgoing WebSocket requests:
Browser developer tools (network tab should have WebSocket traffic filtering option)
Fiddler
Wireshark
Once done you can install JMeter WebSocket Samplers plugin and use the appropriate Samplers to simulate the WebSocket requests, you will need to manually set up the payload.

Performance testing for Desktop application who uses UDP

Looking for tool to do performance testing for desktop application.
I was trying to use Jmeter for performance testing but since my application uses UDP protocol so i think i cannot use jmeter record and replay functionality.
How can i record and replay desktop application which uses UDP using JMeter?
You need to add UDP Request plugin
This plugin adds UDP protocol support to JMeter. With this plugin you can load test DNS, NTP, TFTP, Boot servers
JMeter can record and replay only HTTP and HTTPS traffic (both are using TCP protocol as underlying transport) with its HTTP(S) Test Script Recorder therefore you will not be able to record the traffic using JMeter.
So I would recommend capturing raw UDP datagrams using a sniffer tool like Wireshark and building the JMeter test plan by manually adding and populating appropriate UDP Sampler requests. Check out Load Testing UDP - The Ultimate Guide article for detailed information.

JMeter recording use non http/https protocol

I am recording our game app using JMeter
And it has an API server, which using the WebSocket's protocol
While meeting that request sent to API server, I always get this message, and can't go further
Is that means I need to modify the original JMeter's source code to walk around this problem? Or any way out? If so, that'd be appreciated.
I don't think you will be able to record and replay WebSocket transport using JMeter's HTTP(S) Test Script Recorder as WebSocket is a different beast, given you have a game application my expectation is that it might be the case application opens a WebSocket connection and re-uses it until the end of session and so you won't be able to mimic this behavior using "normal" HTTP Request samplers as WebSocket assumes either ws or wss protocol.
I would suggest considering one of the following JMeter Plugins:
WebSocket Sampler by Maciej Zaleski
WebSocket Samplers by Peter Doornbosch
Both plugins can be installed using JMeter Plugins Manager:

JMeter API Testing - Recording the Incoming Traffic

Using JMeter, the HTTP Request is hitting a URL with the port.
Eg : apitesting.com:8888/api/series/one
I have also added a HTTP Test Script Recorder in JMeter, where I can mention the port and domain.
How do I import the incoming traffic to JMeter using tcpreplay and JMeter Proxy for the above example.
Thanks for your help in Advance.
Have you read the FAQ?
Does tcpreplay support sending traffic to a server?
If by server you mean a daemon (Unix) or service (Windows) which listens on a port (a web or mail server would be common examples), then probably not. The biggest issue is that tcpreplay doesn't understand the state of common protocols like TCP. This means it is unable to synchronize Syn/Ack's to create valid TCP sessions.
So you have the following options:
Consider using Wireplay tool instead
Convert your .pcap file into JMeter .jmx script using BlazeMeter JMX Converter
In both cases be aware that you will get only a "skeleton" of the project, you won't be able to replay production traffic, all you will get would be a set of HTTP Request samplers, you will have to figure out the workload model on your own.
In JMeter you can add to your HTTP request a Post Processor Named Response Assertion, If you check the Ignore Status checkbox you will ignore response of the server so even if server is down it'll not fail test and continue.

Desktop based application recording in jmeter

I have a desktop based(.exe) application used for trading of equities.
1.Developed in VB uses TCP/IP.
2.Uses a database server which is an another server which the exe sends requests on.
3.I want to get the entire response using jmeter for 50 users at a time.
I wanted to record the responses for the transactions.I have worked with web applications where we create Http proxy server and start it and the recording happenes from browser but in this case i cant use browser.
Please guide me how to record the responses in jmeter with .exe applications.
Thanks and Regards,
Kumar
JMeter HTTP(S) Test Script Recorder is capable of recording only HTTP or HTTPS traffic so if following conditions are met:
Your .exe application talks to server using HTTP
Your .exe application can be configured to use HTTP proxy or respects Windows global HTTP Proxy settings from registry (or configured in Internet Explorer)
the answer is "yes", you can use JMeter to record the traffic. See Load Testing Mobile Apps. But Made Easy. guide for details on how to do it.
If one of above conditions cannot be satisfied there are following options available:
If you still want to use JMeter there is a possibility to use a sniffer tool like Wireshark to capture requests and manually construct them using JMeter HTTP Request or TCP Sampler.
Consider switching to Grinder tool which offers TCP Proxy
Hope this helps.

Resources