SDKPerf is a tool for validating the performance of the Solace Messaging Platform. It is also a very capable tool for checking your Solace message router configuration or exploring Solace messaging platform features.
SDKPerf is available for the following programming languages and technologies.
|SDKPerf for C||sdkperf_c is a C++ application which uses the Solace C API. It is available on the follow operating systems.
|SDKPerf for CS||sdkperf_cs is a C# application which uses the Solace .NET API. It is available on Windows.|
|SDKPerf for Java & JMS||sdkperf_java actually contains two client implementations in a single package. It supports both the Solace Java API and the Solace JMS API. The
|SDKPerf for MQTT||sdkperf_mqtt uses the Java SDKPerf platform and implements an MQTT client using the Paho Java API. It will work against all MQTT message brokers including the Solace message router. sdkperf_mqtt will work on all platforms that have at least Java 1.6.|
|SDKPerf for REST||sdkperf_rest uses the Java SDKPerf platform and implements an HTTP client that follows the Solace REST Messaging Protocol. It is a quick and easy way to explore the Solace REST Messaging Protocol. sdkperf_rest will work on all platforms that have at least Java 1.6.|
SDKPerf is a test tool that is used to explore Solace message router features. As such there is often required configuration on the Solace message router to coincide with the various command line options of SDKPerf. Users of the tool should keep this in mind as they explore various different tool command lines. The following are specific dependencies that are critical.
- SDKPerf JMS—All JMS connections to Solace message routers depend on being able to look up the connection factory from a JNDI store. Therefore it is important to enable JNDI look-ups within the Message VPN and configure a connection factory at a minimum.
- SDKPerf REST—On the REST message consume side, SDKPerf REST acts as HTTP server with the ability to correctly terminate Solace REST messaging connections and receive messages. For SDKPerf REST to receive messages, the Solace message router must be configured appropriately with a REST delivery point and REST consumer within the Message VPN.
Many of the command line examples shown below assume that this Solace message router configuration has been completed in order for the commands to work successfully.
Here are some details if you just want to quickly get started with the tool and try sending and receiving messages. All of the options and more examples are explained further in the sections that follow.
Sdkperf –cip=HOST -stl=a/topic –ptl=a/topic –mn=1 -msa=10 –md
That’s it! This publishes a ten byte message to topic
a and subscribes to the same topic, displaying the messages it receives. Topic wildcards can be used for the subscription option. You can learn all about Solace topics in Topic Support and Syntax.
If you set up a new Message VPN and use a non-default username, use the
-cu option, with
Sdkperf –cip=HOST -stl=a/topic –ptl=a/topic –mn=1 -msa=10 –md –cu USERNAME@MSGVPN
If you’re using Solace queues, provision your queue and substitute the
-ptl options with the
Sdkperf –cip=HOST -sql=a/durable/queue –ptl=a/durable/queue –mn=1 -msa=10 –md
That’s just a quick introduction. Now go further by learning more about SDKPerf options, architecture, application flow, and check out more examples.
The SDKPerf tools all share a common architecture across all the supported APIs and platforms. The following figure shows this architecture at a high level.
Because SDKPerf is a tool for testing messaging, internally it is modeled as a common core and a bunch of messaging clients implementations. The SDKPerf core platform exposes a client interface which it uses to generically interact with clients across any API. This allows for the SDKPerf tool to work in the same manner across all APIs and protocols it supports. This is depicted in the architecture figure where you can see that for each API or protocol there is a corresponding SDKPerf client implementation that makes use of the API protocol and implements SDKPerf's client interface. This allows the SDKPerf platform to code to focus on the performance and functional testing required in a client-agnostic way.
As a command line application SDKPerf will follow a specific application flow for a given invocation. On each invocation of SDKPerf it will do the following:
- Connect clients
- Add any required subscriptions and/or bind to endpoints
- Start publishing
- Wait until publishing is done
- Remove any subscriptions that were added
- Disconnect clients
- Cleanup and report stats
Note: If the set of command line options used does not result in messages being published, the application will wait for
SIGINT (Ctrl-C) instead of waiting until publishing has been completed.