Developing
----------

In order to build Qpid you need Ant 1.6.5. Use ant -p to list the
available targets. The default ant target, build, creates a working
development-mode distribution in the build directory. To run the
scripts in build/bin set QPID_HOME to the build directory and put
${QPID_HOME}/bin on your PATH. The scripts in that directory include
the standard ones in the distribution and a number of testing scripts.

Running Tests
-------------

The simplest test to ensure everything is working is the "service
request reply" test. This involves one client that is known as a
"service provider" and it listens on a well-known queue for
requests. Another client, known as the "service requester" creates a
private (temporary) response queue, creates a message with the private
response queue set as the "reply to" field and then publishes the
message to the well known service queue. The test allows you to time
how long it takes to send messages and receive the response back. It
also allows varying of the message size.

You must start the service provider first:

serviceProvidingClient.sh nop host:port

where host:port is the host and port you are running the broker
on.

To run the service requester:

serviceRequestingClient.sh nop host:post <count> <bytes>

This requests <count> messages, each of size <bytes>. After
receiving all the messages the client outputs the rate it achieved.

A more realistic test is the "headers test", which tests the
performance of routing messages based on message headers to a
configurable number of clients (e.g. 50). A publisher sends 10000
messages to each client and waits to receive a message from each
client when it has received all the messages.

You run the listener processes first:

run_many.sh 10 header "headersListener.sh -host 10.0.0.1 -port 5672"

In this command, the first argument means start 10 processes, the
second is just a name use in the log files generated and the third
argument is the command to run. In this case it runs another shell
script but it could be anything.

Then run the publisher process:

headersPublisher.sh -host 10.0.0.1 -port 5672 10000 10

The last two arguments are: the number of messages to send to each
client, and the number of clients.

Note that before starting the publisher you should wait about 30
seconds to ensure all the clients are registered with the broker (you
can see this from the broker output). Otherwise the numbers will be
slightly skewed.

A third useful test, which can easily be ported to other JMS
implementations is the "topic test". It does the same as the headers
test but using a standard topic (e.g. pub sub).

To run the listeners:

run_many.sh 10 topic "topicListener.sh -host 10.0.0.1 -port 5672"

and to run the publisher:

topicPublisher.sh -host 10.0.0.1 -port 5672 -clients 10 -messages 10000
