zaqar/README.rst
Nataliia Uvarova 3eef684d05 Improve benchmarking tool
This commit adds several enhancements to benchmarking tool: server_url
and path to messages now can be configured in config file.  Default
output of program has been changed: now it prints values in json so they
can be parsed more easily. Previous human readable representation is
accessible via --verbose flag.

The `total_requests` metric now shows all performed requests (either
failed or successful) and new metric - `successful_requests` - was
introduced to store count of successful requests.

Change-Id: Id6fe4b2046394a348ba07eb5b2b003c6024b78b0
Partially-implements: blueprint gen-bench-reports
2014-08-19 10:57:13 +03:00

145 lines
4.0 KiB
ReStructuredText

Zaqar
=====
Message queuing service for `OpenStack`_.
To find more information read our `wiki`_.
Running a local Zaqar server with MongoDB
-----------------------------------------
**Note:** These instructions are for running a local instance of Zaqar and
not all of these steps are required. It is assumed you have `MongoDB`_
installed and running.
1. From your home folder create the ``~/.zaqar`` folder and clone the repo::
$ cd
$ mkdir .zaqar
$ git clone https://github.com/openstack/zaqar.git
2. Copy the Zaqar config files to the directory ``~/.zaqar``::
$ cp zaqar/etc/zaqar.conf.sample ~/.zaqar/zaqar.conf
$ cp zaqar/etc/logging.conf.sample ~/.zaqar/logging.conf
3. Find ``[drivers]`` section in ``~/.zaqar/zaqar.conf``
and specify to use mongodb storage::
storage = mongodb
Then find the ``[drivers:storage:mongodb]`` section
and modify the URI to point to your local mongod instance::
uri = mongodb://$MONGODB_HOST:$MONGODB_PORT
By default, you will have::
uri = mongodb://127.0.0.1:27017
4. For logging, find the ``[DEFAULT]`` section in
``~/.zaqar/zaqar.conf`` and modify as desired::
log_file = server.log
5. Change directories back to your local copy of the repo::
$ cd zaqar
6. Run the following so you can see the results of any changes you
make to the code without having to reinstall the package each time::
$ pip install -e .
7. Start the Zaqar server with logging level set to INFO so you can see
the port on which the server is listening::
$ zaqar-server -v
8. Test out that Zaqar is working by creating a queue::
$ curl -i -X PUT http://127.0.0.1:8888/v1/queues/samplequeue -H
"Content-type: application/json"
You should get an **HTTP 201** along with some headers that will look
similar to this::
HTTP/1.0 201 Created
Date: Fri, 25 Oct 2013 15:34:37 GMT
Server: WSGIServer/0.1 Python/2.7.3
Content-Length: 0
Location: /v1/queues/samplequeue
Running tests
-------------
First install additional requirements::
pip install tox
And then run tests::
tox -e py27
You can read more about running functional tests in separate `TESTS_README`_.
Running the benchmarking tool
----------------------
First install and run zaqar-server (see above).
Then install additional requirements::
pip install -r bench-requirements.txt
Copy the configuration file to ``~/.zaqar``::
cp etc/zaqar-benchmark.conf.sample ~/.zaqar/zaqar-benchmark.conf
In the configuration file specify where zaqar-server can be found::
server_url = http://localhost:8888
The benchmarking tool needs a set of messages to work with. Specify the path to the file with messages
in the configuration file. Alternatively, put it in the directory with the configuration file and name it
``zaqar-benchmark-messages.json``. As a starting point, you can use the sample file from the ``etc`` directory:
cp etc/zaqar-benchmark-messages.json ~/.zaqar/
If the file is not found or no file is specified, a single hard-coded message is used for all requests.
Run the benchmarking tool using the following command::
zaqar-bench-pc --processes 2 --workers 2 --time 10
By default, the results are in JSON. For more human-readable output add the ``--verbose`` flag.
Verbose output looks similar to the following::
Starting Producer...
Starting Consumer...
Params
processes: 2.0
workers: 2.0
Consumer
duration_sec: 4.2
ms_per_req: 38.9
total_reqs: 104.0
successful_reqs: 104.0
reqs_per_sec: 24.8
Producer
duration_sec: 4.1
ms_per_req: 6.9
total_reqs: 575.0
successful_reqs: 575.0
reqs_per_sec: 138.6
.. _`OpenStack` : http://openstack.org/
.. _`MongoDB` : http://docs.mongodb.org/manual/installation/
.. _`pyenv` : https://github.com/yyuu/pyenv/
.. _`virtualenv` : https://pypi.python.org/pypi/virtualenv/
.. _`wiki` : https://wiki.openstack.org/wiki/Zaqar
.. _`TESTS_README` : https://github.com/openstack/zaqar/blob/master/tests/functional/README.rst