Sending json payload to mqtt using jmeter - jmeter

I am new to jmeter .Could someone provide me some idea how I can push a json payload using jmeter to my mqtt .
Added mqtt plugin and able to connect to my mqtt server and there is only option for string ,HexString or RandomString .
Also want to know the latency ,throughput for each message,any plugin please suggest ,I am using perfmon for cpu ,memory tracking now .

Just replace your `hi this is Chintamani" with your JSON payload like:
{"hi":"this is Chintamani"}
as JSON is nothing more than a structured string so String type should be just fine.
If you're using xmeter mqtt plugin - it does measure latency
Throughput is being measured by JMeter itself and according to JMeter Glossary it's just a number of requests which JMeter executed for the duration of the test.
You might be interested in Testing the MQTT Messaging Broker for IoT - A Guide article which sheds some light on the specifics of the MQTT load testing using JMeter

Related

How to listen to a port in cloverleaf using JMeter to receive messages and get them as response into JMeter Listeners?

I have tried using Java Requests, TCP Samplers, JSR223 but nothing seems to work, a connection is established but no message is shown in the Listeners.
If you use Java Request or JSR223 Sampler it's you who needs to get the response, convert it into a byte array or a string and set it as a SampleResult.
See JavaDoc for all available functions (you're interested in setResponseData() mainly) and Top 8 JMeter Java Classes You Should Be Using with Groovy article for more information on this and other most commonly used JMeter API classes

'remote write receiver' HTTP API request in Prometheus

I am trying to find a working example of how to use the remote write receiver in Prometheus.
Link : https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver
I am able to send a request to the endpoint ( POST /api/v1/write ) and can authenticate with the server. However, I have no idea in what format I need to send the data over.
The official documentation says that the data needs to be in Protobuf format and snappy encoded. I know the libraries for them. I have a few metrics i need to send over to prometheus http:localhost:1234/api/v1/write.
The metrics i am trying to export are scraped from a metrics endpoint (http://127.0.0.1:9187/metrics ) and looks like this :
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 1.11e-05
go_gc_duration_seconds{quantile="0.25"} 2.4039e-05
go_gc_duration_seconds{quantile="0.5"} 3.4507e-05
go_gc_duration_seconds{quantile="0.75"} 5.7043e-05
go_gc_duration_seconds{quantile="1"} 0.002476999
go_gc_duration_seconds_sum 0.104596342
go_gc_duration_seconds_count 1629
As of now, i can authenticate with my server via a POST request in Golang.
Please note that it isn't recommended to send application data to Prometheus via remote_write protocol, since Prometheus is designed to scrape metrics from the targets specified in Prometheus config. This is known as pull model, while you are trying to push metrics to Prometheus aka push model.
If you need pushing application metrics to Prometheus, then the following options exist:
Pushing metrics to pushgateway. Please read when to use the pushgateway before using it.
Pushing metrics to statsd_exporter.
Pushing application metrics to VictoriaMetrics (this is an alternative Prometheus-like monitoring system) via any supported text-based data ingestion protocol:
Prometheus text exposition format
Graphite
Influx line protocol
OpenTSDB
DataDog
JSON
CSV
All these protocols are much easier to implement and debug comparing to Prometheus remote_write protocol, since these protocols are text-based, while Prometheus remote_write protocol is a binary protocol (basically, it is snappy-compressed protobuf messages sent over HTTP).

Performing load test on Tibco JMS endpoint with JMeter

I want to perform load test on a Tibco JMS endpoint using JMeter. The endpoint is a JMS Queue Receiver that will reply to the JMS Message to end the sessions. I have done a lot of googling regarding what parameters to fill in each field of the JMS Point-to-Point sampler with no success. Attached is a screen shot of the Jmeter window. I am not sure whether this is the right sampler to use or if I should use Publisher. Either way, I do not know what to fill in each of these fields. I am currently stuck at the JNDI name Request queue field. When I put my queue name for the JMS on Tibco, I get an error that that name is not found. Leaving the field blank is also problematic. What should I fill in this field to make the request work?
We don't know your topic/queue names so we cannot help, you can ask around, see the application you're trying to simulate configuration or use Graphical Administration Tool for TIBCO® EMS to explore the endpoint and identify the proper queues for messages sending/receiving. For sending the messages you might need to set JMS_TIBCO_SENDER JNDI property
You might also be interested in Building a JMS Testing Plan - Apache JMeter article

how to send custom metrics from Jmeter to InfluxDB

We are creating custom metrics in JMeter using beanshell scripting and saving them to a file.Our requirement is to send this metrics to InfluxDB. We tried using Backend Listener with Graphite and InfluxDB implementation client but couldn't send the custom values. Only the default Jmeter metrics are being passed.
Has anyone done this before, can you guide us to resolve this issues.
We are using Jmeter 3.3 and influxdb-1.4.2-1
Thanks,
BB
Two words: line protocol.
Another two words: custom listener (Beanshell/JSR223 with Groovy).
Marry them, and you'll have what you want.
I did that work once, and it didn't take long.
There may be other options (like, take this result file and feed it to script that shapes it to the same line protocol, but post-execution, not live) - but the one I suggest is the simplest.
To do it you can use /write endpoint as it described in influxdb.com
Image below shows how it can be done in Jmeter using "HTTP Request" sampler.
How to send custom data to influxDB:
In a DB it will looks like on image below:

JMeter JMS Point to Point not returning correct response

JMeter Version: 2.10 .
ActiveMQ 5.9
I have a point to point JMeter script that successfully places a message on a queue. This messaged is then consumed, transformed and placed on a different queue. When I test just a request method (from jmeter), the message is successfully submitted, transformed and returned to the out queue, however when I configure JMeter to consume the response on the out queue, it shows the original request message payload as the response.
Here is my JMeter script details:
JMS Resources
QueueuConnectionFactory: ConnectionFactory
JNDI Name Request Queue: Q.REQ
JNDI Name Reply Queue: Q.RPL
Message Properties
Communication Style: Request Response
Use alternate fields for message correlation: Use Request Message ID (ticked)
Content: (XML Payload)
JNDI Properties
InitialContextFactory: org.apache.activemq.jndi.ActiveMQInitialContextFactory
queue.Q.REQ: message.in
queue.Q.RPL: message.out
java.naming.security.principal: admin
java.naming.security.credentials: admin
Properties
Provider URL: tcp://localhost:61616
I've also tried a few different combinations such as removing the reply queue and specifying a JMSReplyTo as well as manually specifying a JMSCorrelationID. If someone could point me in the right direction or even provide a working jmeter proj example, it would be much appreciated. I also used this guide: http://jmeter.apache.org/usermanual/build-jms-point-to-point-test-plan.html to help build my test.
It looks like that you're missing Q.REQ and Q.RPL definition in JNDI Properties section. They should go along with InitialContextFactory bit.
See Building a JMS Testing Plan - Apache JMeter guide for more details.
Having spoke to a few people, this is a known issue and I haven't found a suitable workaround for this issue right now.
Currently I have had to use the JMeter JMS Pub/Sub Samplers to get this to work properly. If I hear back from the user group I will update this answer accordingly.

Resources