Metadata-Version: 1.1
Name: boom
Version: 1.0
Summary: Simple HTTP Load tester
Home-page: https://github.com/tarekziade/boom
Author: Tarek Ziade
Author-email: tarek@ziade.org
License: UNKNOWN
Description: .. image:: http://blog.ziade.org/boom.png
        
        **Boom!** is a simple command line tool to send some load to a web app.
        
        .. image:: https://img.shields.io/coveralls/tarekziade/boom.svg
            :target: https://coveralls.io/r/tarekziade/boom
        
        .. image:: https://img.shields.io/travis/tarekziade/boom/master.svg
            :target: https://travis-ci.org/tarekziade/boom
        
        .. image:: https://img.shields.io/pypi/v/boom.svg
            :target: https://pypi.python.org/pypi/boom
        
        .. image:: https://img.shields.io/pypi/pyversions/boom.svg
            :target: https://pypi.python.org/pypi/boom/
        
        .. image:: https://img.shields.io/pypi/dd/boom.svg
            :target: https://pypi.python.org/pypi/boom/
        
        Boom! is a script you can use to quickly smoke-test your
        web app deployment. If you need a more complex tool,
        I'd suggest looking at `Funkload <http://funkload.nuxeo.org/>`_
        or `Locust <https://github.com/locustio/locust>`_.
        
        Boom! was specifically written to replace my Apache Bench usage,
        to provide a few missing features and fix a few annoyances I had
        with AB.
        
        I have no special ambitions for this tool, and since I have not
        found any tool like this in the Python-land, I wrote this one.
        
        There are a lot of other tools out there, like Siege which
        seems very popular.
        
        However, Boom! is a good choice because it works on any platform
        and is able to simulate thousands of users by using greenlets.
        
        Installation
        ============
        
        Boom! requires **Gevent** and **Requests**. If you are under Windows
        I strongly recommend installing Gevent with the *xxx-win32-py2.7.exe*
        installer you will find  at: https://github.com/surfly/gevent/downloads
        
        Boom! should work with the latest versions.
        
        If you are under Linux, installing the source version is usually a better
        idea. You will need libev for Gevent.
        
        Example under Ubuntu::
        
            $ sudo apt-get install libev libev-dev python-dev
        
        Then::
        
            $ pip install boom
        
        
        Basic usage
        ===========
        
        Basic usage example: 100 queries with a maximum concurrency of
        10 users::
        
            $ boom http://localhost:80 -c 10 -n 100
            Server Software: nginx/1.2.2
            Running 100 queries - concurrency: 10.
            Starting the load [===================================] Done
        
            -------- Results --------
            Successful calls        100
            Total time              0.3260 s
            Average                 0.0192 s
            Fastest                 0.0094 s
            Slowest                 0.0285 s
            Amplitude               0.0191 s
            RPS                     306
            BSI                     Pretty good
        
            -------- Legend --------
            RPS: Request Per Second
            BSI: Boom Speed Index
        
        
        Boom! has more options::
        
            $ boom --help
            usage: boom [-h] [--version] [-m {GET,POST,DELETE,PUT,HEAD,OPTIONS}]
                        [--content-type CONTENT_TYPE] [-D DATA] [-c CONCURRENCY] [-a AUTH]
                        [--header HEADER] [--pre-hook PRE_HOOK] [--post-hook POST_HOOK]
                        [--json-output] [-n REQUESTS | -d DURATION]
                        [url]
        
            Simple HTTP Load runner.
        
            positional arguments:
              url                   URL to hit
        
            optional arguments:
              -h, --help            show this help message and exit
              --version             Displays version and exits.
              -m {GET,POST,DELETE,PUT,HEAD,OPTIONS}, --method {GET,POST,DELETE,PUT,HEAD,OPTIONS}
                                    HTTP Method
              --content-type CONTENT_TYPE
                                    Content-Type
              -D DATA, --data DATA  Data. Prefixed by "py:" to point a python callable.
              -c CONCURRENCY, --concurrency CONCURRENCY
                                    Concurrency
              -a AUTH, --auth AUTH  Basic authentication user:password
              --header HEADER       Custom header. name:value
              --pre-hook PRE_HOOK   Python module path (eg: mymodule.pre_hook) to a
                                    callable which will be executed before doing a request
                                    for example: pre_hook(method, url, options). It must
                                    return a tupple of parameters given in function
                                    definition
              --post-hook POST_HOOK
                                    Python module path (eg: mymodule.post_hook) to a
                                    callable which will be executed after a request is
                                    done for example: eg. post_hook(response). It must
                                    return a given response parameter or raise an
                                    `boom.boom.RequestException` for failed request.
              --json-output         Prints the results in JSON instead of the default
                                    format
              -n REQUESTS, --requests REQUESTS
                                    Number of requests
              -d DURATION, --duration DURATION
                                    Duration in seconds
        
        
        
        Design
        ======
        
        Boom uses greenlets through Gevent to create *virtual users*, and uses Requests to do the
        queries.
        
        Using greenlets allows Boom to spawn large amounts of virtual users with very little
        resources. It's not a problem to spawn 1000 users and hammer a web application with them.
        
        If you are interested in this project, you are welcome to join the fun at
        https://github.com/tarekziade/boom
        
        Make sure to add yourself to the contributors list if your PR gets merged. And make sure it's in alphabetical order!
        
        
        History
        =======
        
        1.0 - 2016-09-05
        ----------------
        
        - Update `.gitignore` for pycharm users
        - Alphabetize contributors list for simplicity (read OCD)
        - Replace BSI response of Hahahaha with sadface
        - Add Travis CI
        - Add Coveralls
        - Update tox to test for 2.7 and 3.5 locally (travis ci handles the rest)
        
        
        0.9 - 2016-08-28
        ----------------
        
        - python 3 support
        - removal of python 2.6 support
        - fix unittest2 dep
        - Added --validator option for validating request response data
        - Change --hook to --pre-hook
        - added new option --post-hook for validating request response data
        - fixed the error handling of failed DNS resolution
        - Replace urlparse.urlparse with urllib3's parse_url
        
        
        0.8 - 2013-07-14
        ----------------
        
        - Nicer progress bar
        - Added the --json-output option
        - Integrated Tox
        - Make sure the DNS resolution works with gevent 0.x and 1.x
        - Improved tests
        - Removed the globals
        
        
        0.7 - 2013-05-21
        ----------------
        
        - fixed the TypeError on empty stats - #19
        - catch the dns error and display it nicely
        - added SSL support - #17
        - added clean error display - #16
        
        No notes on earlier releases.
        
        
        Owner
        =====
        
        - Tarek Ziade
        
        Contributors
        ============
        
        - Chris Adams
        - Rikard Anglerud
        - Lukasz Balcerzak
        - Ralph Bean
        - Andrea Crotti
        - Adolfo Fitoria
        - Tomas Hanacek
        - Hanley Hansen
        - Marcin Kuzminski
        - Jack Pearkes
        - Wang Zhen Pu
        - Venelin Stoykov
        - Martin Voldrich
        
        
        
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Development Status :: 1 - Planning
