Load Test Client


SMPP Testing Service

Load Test Client is part of the Melrose Labs SMPP Testing service.

The Load Test Client (LTC) is used to submit one or more messages via SMPP to an SMS gateway, SMSC, or SMSC simulator. The LTC submits the messages at a defined transaction rate (SMS/sec).

The version of the LTC described on this page enables messages to be submitted from a range of numbers to an individual recipient number.

A separate version of the LTC is available that can submit messages from an individual number to a range of recipient numbers.

SSH to LTC instance

The hostname and PEM will have been provided to enable you to SSH to your LTC instance.

Load Test Client instances run on AWS EC2 instances.

ssh -i [file].pem ec2-user@[hostname]

where [file] and [hostname] represent the PEM file and instance hostname respectively.

tmux sessions

The LTC application, MLLoadTestClient, should be run in a tmux session. This allows the application to run without being connected to the host, and allows other applications to be run alongside, such as other LTC application instances, or tshark for packet capturing.

To connect to an existing tmux session (where there is only one session):

tmux attach

To detach from the current tmux session:

Ctrl-B D

If there are multiple tmux sessions, then you can list them using:

tmux ls

To attach to a specific session:

tmux attach -t N (where N identifies the session)

Load Test Client application (MLLoadTestClient)

The MLLoadTestClient application is located in the home directory and can be run as follows:


This will produce the following usage information:

$ ./MLLoadTestClient  
Usage: ./MLLoadTestClient <submitquantity> <submittpslimit> <systemid>[@<host>:<port>[,<bindcount>]] <password> <srcrangestart> <srcrangesize> <destination> <message>

For example:

./MLLoadTestClient 10000 200 abcd1234 pass9087 4477000000 100000 605209 "Hello World"

Running the Load Test Client application

Example LTC command-line:

./MLLoadTestClient 10000 200 abcd1234 pass9087 4477000000 100000 605209 "Hello World"

The above example will submit 10000 SMS at a rate of 200 SMS/sec using an SMPP account with system ID "abcd1234" and password "pass9087". The messages will be submitted from a range of 100000 consecutive numbers starting at 4477000000. Messages with the content “Hello World” will be sent to 605209.

The <systemid> can be suffixed with the following:


./MLLoadTestClient 10000 200 [email protected]:2775,5 pass9087 4477000000 100000 605209 "Hello World"

The extra parameters are:

<host>: hostname or IP address of SMPP server

<port>: port number of SMPP server

<bindcount>: number of binds between LTC and SMPP server for this system ID.

The <destination> can be one of the following:

<msisdn>: mobile number

<msisdn>/<destrangesize>: contiguous range of <destrangesize> numbers starting at <msisdn>

<msisdn>,...: list of numbers separated by commas

The LTC application will run until it received all delivery receipts for the submissions it has made. Where delivery receipts will not be received, Ctrl-C can be used to stop the application.

Output of the LTC application

When running the LTC application the output will be similar to the following:

./MLLoadTestClient 1 1 abcd1234 pass9087 4477000000 1 605209 "Hello World"  
0002 Connected  
0002 BindTRX  
0002 Bind response  
[Binds=1; Remain=0; DeliverSM=0 Attempted=1 SubmitSMResp OK=1 NAK=0 OutstandingSMResp=0 sendsubmitsm_call_fail=0 sOK/sec=7299.0 sAtt/sec=7299.0]  
Submit: [0x0000=1]

If the application is able to connect to the SMSC/SMS gateway/simulator platform, it will display the “Connected” line and will then will display the “BindTRX” line when it attempts a TRX bind. On receiving a response from the platform it will display “Bind response” and then attempt to submit messages.

The last lines above will show repeatedly.

[Binds=1; Remain=0; DeliverSM=0 Attempted=1 SubmitSMResp OK=1 NAK=0 OutstandingSMResp=0 sendsubmitsm_call_fail=0 sOK/sec=7299.0 sAtt/sec=7299.0]

The above line has the following meaning:

  • Binds: the number of binds from the LTC application to the platform
  • Remain: the number of messages still to be submitted
  • DeliverSM: the number of deliver_sm PDUs received
  • Attempted: the number of messages submitted
  • SubmitSMResp OK: the number of submit_sm successfully submitted
  • NAK: the number of submit_sm that failed to be successfully submitted
  • OutstandingSMResp: the number of submit_sm_resp that are yet to be received (for which submit_sm have been sent)
  • sOK/sec: rate of successfully submitted messages
  • sAtt/sec: rate of submitted messages (successful or unsuccessful)

Submit: [0x0000=1]

The above line indicates the count (1 in this case) of a particular error. For each error received for a submit_sm/submit_sm_resp, the error and count will be displayed on this line.

DLR: [0x20000=1]

The above line (or similar) may also be displayed (only where LTC has been configured to request delivery receipts), and indicates the count of each DLR status and error:

Test completion summary

On completion of the test, output similar to the following will be seen:

1671646505.631546 0xffffd2db4390    INFO MLSMPPClient::run Finished (true)  
1671646505.635653 0xffffd2db4390    INFO MLSMPPClient::run Submit duration: 9.2s  
1671646505.636140 0xffffd2db4390    INFO MLSMPPClient::run window_limit=0  
1671646505.636161 0xffffd2db4390    INFO MLSMPPClient::run max_outstandingsubmitsmresp=0  
1671646505.636168 0xffffd2db4390    INFO MLSMPPClient::run opportunities_to_send=0  
1671646505.636186 0xffffd2db4390    INFO MLSMPPClient::run count_allow_send_true=0

SMS count: 40000  
DLR count: 40000  
DSM count: 40000  

sOK/sec=4350.0 (1671646463391153->1671646472584782=9.2s)
dRcv/sec=4350.0 (1671646466434350->1671646475628748=9.2s)

The “SMS count” value shows the number of SMS submissions made.

The “DLR count” value shows the number of delivery receipts received.

the “DSM count” value show the number of SMPP deliver_sm PDUs received, including received delivery receipts.

“sOK/sec” shows the rate at which submit_sm_resp were received. The start, end and duration are also shown for submit_sm_resp.

“dRcv/sec” shows the date at which delivery receipts were received. The start, end and duration are also shown for deliver_sm.