Websocket with Apache JMeter

By | 2020-10-22T16:54:50+00:00 October 14th, 2020|Tags: , , , , |

It’s apparent that the usage of Websocket has expanded greatly in recent years, and its reliability is expected to be high since it mostly carries crucial information to clients. Hence, testing their durability and reliability has become more important.

It is possible to execute performance tests on Websockets with Apache JMeter by using “Websocket Samplers” plugin developed by Peter Doornbosch.

Websocket Samplers Plugin

Let’s take a look at the plugin first. You can find the plugin here: https://jmeter-plugins.org/?search=websocket-samplers

Once you install the plugin, you will get 7 new Sampler elements:

  • Websocket Close

Closes the current Websocket connection

  • Websocket Open Connection

Initiates a new connection with given parameters, with options for connection&read timeouts

  • Websocket Ping/Pong

Performs a ping or ping/pong service for the current connection

  • Websocket Sampler

         A single sampler that performs one-time request.

  • Websocket Single Read Sampler

Reads response without sending a request.

  • Websocket Single Write Sampler

Sends a request without reading the response

  • Websocket request-response Sampler

Does both sending a request and reading response

Postman to Jmeter Convertor

The Script

Websockets’ behavior may reveal differences between each other, but the structure of a script for Websocket is usually similar to the following format:

  • Initiating a connection with Websocket
  • Sending the first request
  • Receiving the first request
  • Using a looper (Runtime controller or Loop Controller etc.) to continue the data transmission between the client and the server by sending a message and receiving it.

-First, we need to start a connection with the Websocket. It can be done either using “Websocket Open Connection”, or “Websocket Request” with the “setup new connection” option.

-The information about the sockets needs to be given. For example, you can find the socket’s information from Google Chrome’s Inspect mode>Network>WS

websocket

  • There is one another situation that requires a token that is received by another request for a Websocket to initiate a connection.

websocket

-When the connection has started, there will be a series of messages that will be transferred from both the client and the server-side. Some of the requests going from the client might be unique, but at some point, repetitive pattern requests can be seen and it will be imitated with a loop logic. Additionally, this repetitive pattern usually has a constant interval between requests, which might need to be taken into account.

websocket