{
"info": {
"author": "Tarek Ziade",
"author_email": "tarek@ziade.org",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6"
],
"description": ".. image:: http://blog.ziade.org/boom.png\r\n\r\n**Boom!** is a simple command line tool to send some load to a web app.\r\n\r\n.. image:: https://img.shields.io/coveralls/tarekziade/boom.svg\r\n :target: https://coveralls.io/r/tarekziade/boom\r\n\r\n.. image:: https://img.shields.io/travis/tarekziade/boom/master.svg\r\n :target: https://travis-ci.org/tarekziade/boom\r\n\r\n.. image:: https://img.shields.io/pypi/v/boom.svg\r\n :target: https://pypi.python.org/pypi/boom\r\n\r\n.. image:: https://img.shields.io/pypi/pyversions/boom.svg\r\n :target: https://pypi.python.org/pypi/boom/\r\n\r\n.. image:: https://img.shields.io/pypi/dd/boom.svg\r\n :target: https://pypi.python.org/pypi/boom/\r\n\r\nBoom! is a script you can use to quickly smoke-test your\r\nweb app deployment. If you need a more complex tool,\r\nI'd suggest looking at `Funkload `_\r\nor `Locust `_.\r\n\r\nBoom! was specifically written to replace my Apache Bench usage,\r\nto provide a few missing features and fix a few annoyances I had\r\nwith AB.\r\n\r\nI have no special ambitions for this tool, and since I have not\r\nfound any tool like this in the Python-land, I wrote this one.\r\n\r\nThere are a lot of other tools out there, like Siege which\r\nseems very popular.\r\n\r\nHowever, Boom! is a good choice because it works on any platform\r\nand is able to simulate thousands of users by using greenlets.\r\n\r\nInstallation\r\n============\r\n\r\nBoom! requires **Gevent** and **Requests**. If you are under Windows\r\nI strongly recommend installing Gevent with the *xxx-win32-py2.7.exe*\r\ninstaller you will find at: https://github.com/surfly/gevent/downloads\r\n\r\nBoom! should work with the latest versions.\r\n\r\nIf you are under Linux, installing the source version is usually a better\r\nidea. You will need libev for Gevent.\r\n\r\nExample under Ubuntu::\r\n\r\n $ sudo apt-get install libev libev-dev python-dev\r\n\r\nThen::\r\n\r\n $ pip install boom\r\n\r\n\r\nBasic usage\r\n===========\r\n\r\nBasic usage example: 100 queries with a maximum concurrency of\r\n10 users::\r\n\r\n $ boom http://localhost:80 -c 10 -n 100\r\n Server Software: nginx/1.2.2\r\n Running 100 queries - concurrency: 10.\r\n Starting the load [===================================] Done\r\n\r\n -------- Results --------\r\n Successful calls 100\r\n Total time 0.3260 s\r\n Average 0.0192 s\r\n Fastest 0.0094 s\r\n Slowest 0.0285 s\r\n Amplitude 0.0191 s\r\n RPS 306\r\n BSI Pretty good\r\n\r\n -------- Legend --------\r\n RPS: Request Per Second\r\n BSI: Boom Speed Index\r\n\r\n\r\nBoom! has more options::\r\n\r\n $ boom --help\r\n usage: boom [-h] [--version] [-m {GET,POST,DELETE,PUT,HEAD,OPTIONS}]\r\n [--content-type CONTENT_TYPE] [-D DATA] [-c CONCURRENCY] [-a AUTH]\r\n [--header HEADER] [--pre-hook PRE_HOOK] [--post-hook POST_HOOK]\r\n [--json-output] [-n REQUESTS | -d DURATION]\r\n [url]\r\n\r\n Simple HTTP Load runner.\r\n\r\n positional arguments:\r\n url URL to hit\r\n\r\n optional arguments:\r\n -h, --help show this help message and exit\r\n --version Displays version and exits.\r\n -m {GET,POST,DELETE,PUT,HEAD,OPTIONS}, --method {GET,POST,DELETE,PUT,HEAD,OPTIONS}\r\n HTTP Method\r\n --content-type CONTENT_TYPE\r\n Content-Type\r\n -D DATA, --data DATA Data. Prefixed by \"py:\" to point a python callable.\r\n -c CONCURRENCY, --concurrency CONCURRENCY\r\n Concurrency\r\n -a AUTH, --auth AUTH Basic authentication user:password\r\n --header HEADER Custom header. name:value\r\n --pre-hook PRE_HOOK Python module path (eg: mymodule.pre_hook) to a\r\n callable which will be executed before doing a request\r\n for example: pre_hook(method, url, options). It must\r\n return a tupple of parameters given in function\r\n definition\r\n --post-hook POST_HOOK\r\n Python module path (eg: mymodule.post_hook) to a\r\n callable which will be executed after a request is\r\n done for example: eg. post_hook(response). It must\r\n return a given response parameter or raise an\r\n `boom.boom.RequestException` for failed request.\r\n --json-output Prints the results in JSON instead of the default\r\n format\r\n -n REQUESTS, --requests REQUESTS\r\n Number of requests\r\n -d DURATION, --duration DURATION\r\n Duration in seconds\r\n\r\n\r\n\r\nDesign\r\n======\r\n\r\nBoom uses greenlets through Gevent to create *virtual users*, and uses Requests to do the\r\nqueries.\r\n\r\nUsing greenlets allows Boom to spawn large amounts of virtual users with very little\r\nresources. It's not a problem to spawn 1000 users and hammer a web application with them.\r\n\r\nIf you are interested in this project, you are welcome to join the fun at\r\nhttps://github.com/tarekziade/boom\r\n\r\nMake sure to add yourself to the contributors list if your PR gets merged. And make sure it's in alphabetical order!\r\n\r\n\r\nHistory\r\n=======\r\n\r\n1.0 - 2016-09-05\r\n----------------\r\n\r\n- Update `.gitignore` for pycharm users\r\n- Alphabetize contributors list for simplicity (read OCD)\r\n- Replace BSI response of Hahahaha with sadface\r\n- Add Travis CI\r\n- Add Coveralls\r\n- Update tox to test for 2.7 and 3.5 locally (travis ci handles the rest)\r\n\r\n\r\n0.9 - 2016-08-28\r\n----------------\r\n\r\n- python 3 support\r\n- removal of python 2.6 support\r\n- fix unittest2 dep\r\n- Added --validator option for validating request response data\r\n- Change --hook to --pre-hook\r\n- added new option --post-hook for validating request response data\r\n- fixed the error handling of failed DNS resolution\r\n- Replace urlparse.urlparse with urllib3's parse_url\r\n\r\n\r\n0.8 - 2013-07-14\r\n----------------\r\n\r\n- Nicer progress bar\r\n- Added the --json-output option\r\n- Integrated Tox\r\n- Make sure the DNS resolution works with gevent 0.x and 1.x\r\n- Improved tests\r\n- Removed the globals\r\n\r\n\r\n0.7 - 2013-05-21\r\n----------------\r\n\r\n- fixed the TypeError on empty stats - #19\r\n- catch the dns error and display it nicely\r\n- added SSL support - #17\r\n- added clean error display - #16\r\n\r\nNo notes on earlier releases.\r\n\r\n\r\nOwner\r\n=====\r\n\r\n- Tarek Ziade\r\n\r\nContributors\r\n============\r\n\r\n- Chris Adams\r\n- Rikard Anglerud\r\n- Lukasz Balcerzak\r\n- Ralph Bean\r\n- Andrea Crotti\r\n- Adolfo Fitoria\r\n- Tomas Hanacek\r\n- Hanley Hansen\r\n- Marcin Kuzminski\r\n- Jack Pearkes\r\n- Wang Zhen Pu\r\n- Venelin Stoykov\r\n- Martin Voldrich",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/tarekziade/boom",
"keywords": "",
"license": "UNKNOWN",
"maintainer": "",
"maintainer_email": "",
"name": "boom",
"package_url": "https://pypi.org/project/boom/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/boom/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "https://github.com/tarekziade/boom"
},
"release_url": "https://pypi.org/project/boom/1.0/",
"requires_dist": null,
"requires_python": null,
"summary": "Simple HTTP Load tester",
"version": "1.0"
},
"last_serial": 2325966,
"releases": {
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "28d6fe97eb8147d10bb9c7f87e271f4f",
"sha256": "ea96c97e64dece501cbd5e7d759b808068ad179b60b565c1e155b5cd334fbb60"
},
"downloads": -1,
"filename": "boom-0.1.tar.gz",
"has_sig": false,
"md5_digest": "28d6fe97eb8147d10bb9c7f87e271f4f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2775,
"upload_time": "2012-12-11T15:03:54",
"url": "https://files.pythonhosted.org/packages/c6/6a/a4ebff8500d1bb6a77f3c2aeaa4df1c1fceb5bf584a67b93e408ef9682dd/boom-0.1.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "f9e6e9835e52f884e12f87222f167257",
"sha256": "384061bb2d79b317cac7ee51c6ea380b663882cd4fecb5a641fff45306acf35f"
},
"downloads": -1,
"filename": "boom-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "f9e6e9835e52f884e12f87222f167257",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2817,
"upload_time": "2012-12-11T15:33:53",
"url": "https://files.pythonhosted.org/packages/69/4a/f674272ad0e3a6ab746affccf86f5ca18cfaa3b2fc98569a15a2ee6b481c/boom-0.1.1.tar.gz"
}
],
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "f0b163fb03050dcae3c0595da8c0c6e0",
"sha256": "4a49abb87eb70db635c481142ed546a4fe12c347163d88a4e8b412351bfe348f"
},
"downloads": -1,
"filename": "boom-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "f0b163fb03050dcae3c0595da8c0c6e0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3178,
"upload_time": "2012-12-11T16:01:56",
"url": "https://files.pythonhosted.org/packages/da/26/3b1fd55e87f773a5a8006cb581344485aacfd609b0e8ca973b49afe8f7e6/boom-0.1.2.tar.gz"
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "d3839bc338fb6cb58a693b32649b4248",
"sha256": "ccac4f79d6c6f15629d2e95b871831e5ac2e26ed7102d1eb19c2180292261ecb"
},
"downloads": -1,
"filename": "boom-0.2.tar.gz",
"has_sig": false,
"md5_digest": "d3839bc338fb6cb58a693b32649b4248",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5431,
"upload_time": "2012-12-13T11:14:08",
"url": "https://files.pythonhosted.org/packages/19/24/d715afe440548bf17cc8580aeecdd749696fef2244cc699e8e8c1ed148fa/boom-0.2.tar.gz"
}
],
"0.3": [
{
"comment_text": "",
"digests": {
"md5": "fd891744382c8d5dcb511e7ce0c1c96d",
"sha256": "3d06db16b58e499a49ae66ac76a8b27802984a41c2fa02e2537d3097bdb45601"
},
"downloads": -1,
"filename": "boom-0.3.tar.gz",
"has_sig": false,
"md5_digest": "fd891744382c8d5dcb511e7ce0c1c96d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7539,
"upload_time": "2012-12-18T19:42:53",
"url": "https://files.pythonhosted.org/packages/18/95/b30eb6d2fbcc59a668e5a820dd0cf5a3c9ea0366180a74ad2cc4165adab1/boom-0.3.tar.gz"
}
],
"0.4": [
{
"comment_text": "",
"digests": {
"md5": "bdf0ec71837aee0c36a81c7db0c95aa8",
"sha256": "a2d2b14a70b9b0182ff0f034b1ddb62849ae5f5ee21b7bbe0ec949436f804f7e"
},
"downloads": -1,
"filename": "boom-0.4.tar.gz",
"has_sig": false,
"md5_digest": "bdf0ec71837aee0c36a81c7db0c95aa8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8362,
"upload_time": "2012-12-26T13:31:14",
"url": "https://files.pythonhosted.org/packages/ce/7b/76d33433ba4ab61f327ef410e62d10bfd0805a8fa133c1aa2ff53ab0989c/boom-0.4.tar.gz"
}
],
"0.5": [
{
"comment_text": "",
"digests": {
"md5": "5083a65372c1522260b1df2e8e9ad105",
"sha256": "c30148069794f66e6eb8a8e1cda46ca0868560bde8e95063732ae82dc926327c"
},
"downloads": -1,
"filename": "boom-0.5.tar.gz",
"has_sig": false,
"md5_digest": "5083a65372c1522260b1df2e8e9ad105",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8416,
"upload_time": "2013-02-21T17:45:10",
"url": "https://files.pythonhosted.org/packages/8c/28/b4b024dfea7378d0e55600128c15215b8eb8f2b6860d5e07a7c7f1fe39f0/boom-0.5.tar.gz"
}
],
"0.6": [
{
"comment_text": "",
"digests": {
"md5": "971fa17fefbf3c007be70b6bd48c9cd3",
"sha256": "31235398e2a39baf4870583d95393b948d489c2f4e50c5ee4c7b98c58e023ba4"
},
"downloads": -1,
"filename": "boom-0.6.tar.gz",
"has_sig": false,
"md5_digest": "971fa17fefbf3c007be70b6bd48c9cd3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8887,
"upload_time": "2013-05-11T08:03:11",
"url": "https://files.pythonhosted.org/packages/80/ab/b3b789857100942a5e299aa6463b9966ef42427a0eb47b6b4083058f13a2/boom-0.6.tar.gz"
}
],
"0.7": [
{
"comment_text": "",
"digests": {
"md5": "bd9ef22e10780d8e2eabeedc32270304",
"sha256": "2e8f3fb99500f6ab27a51be96548bae0516e7f0bfbf59f885118238de5508ca3"
},
"downloads": -1,
"filename": "boom-0.7.tar.gz",
"has_sig": false,
"md5_digest": "bd9ef22e10780d8e2eabeedc32270304",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10084,
"upload_time": "2013-05-21T07:49:19",
"url": "https://files.pythonhosted.org/packages/f6/eb/f9470f82322d60b3d988c02a4c2b06be9511831cf273c1be6fbcf91cef9e/boom-0.7.tar.gz"
}
],
"0.8": [
{
"comment_text": "",
"digests": {
"md5": "fc93363ca7e0a3d545c2fb63ed40e0d4",
"sha256": "e4404e3ae307f8d990ae2cf44ea6d62b8f25301d59ac9237746d371a6815188e"
},
"downloads": -1,
"filename": "boom-0.8.tar.gz",
"has_sig": false,
"md5_digest": "fc93363ca7e0a3d545c2fb63ed40e0d4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13261,
"upload_time": "2013-11-06T20:26:21",
"url": "https://files.pythonhosted.org/packages/c3/76/c0d7f23d20f8c9bf78ab73c897fbf87192ccfe3f97364bcd1739eb9e347c/boom-0.8.tar.gz"
}
],
"0.9": [
{
"comment_text": "",
"digests": {
"md5": "8dbd3301ba5a33a51faa02bdeaa532e0",
"sha256": "da46a20d6bb2342932396a387620d190ceb742a888e0f265761cedb697cfc107"
},
"downloads": -1,
"filename": "boom-0.9.tar.gz",
"has_sig": false,
"md5_digest": "8dbd3301ba5a33a51faa02bdeaa532e0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14530,
"upload_time": "2016-08-28T05:04:50",
"url": "https://files.pythonhosted.org/packages/41/c9/a7eb45b6b4abd906f35d258f9adbba29c1e3e236d359a9a390172eb01227/boom-0.9.tar.gz"
}
],
"1.0": [
{
"comment_text": "",
"digests": {
"md5": "8135234eddc56547e89cc5da16e1b739",
"sha256": "947e271f34b27adaf38ed4fc10583c91bcc157ddd1fff9a067c3834b7889beb7"
},
"downloads": -1,
"filename": "boom-1.0.tar.gz",
"has_sig": false,
"md5_digest": "8135234eddc56547e89cc5da16e1b739",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14233,
"upload_time": "2016-09-05T17:00:16",
"url": "https://files.pythonhosted.org/packages/e0/7f/d80b633e7d06a4d03d14ef11b7a8155abf1c150d4b60de398e2060e9e79f/boom-1.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "8135234eddc56547e89cc5da16e1b739",
"sha256": "947e271f34b27adaf38ed4fc10583c91bcc157ddd1fff9a067c3834b7889beb7"
},
"downloads": -1,
"filename": "boom-1.0.tar.gz",
"has_sig": false,
"md5_digest": "8135234eddc56547e89cc5da16e1b739",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14233,
"upload_time": "2016-09-05T17:00:16",
"url": "https://files.pythonhosted.org/packages/e0/7f/d80b633e7d06a4d03d14ef11b7a8155abf1c150d4b60de398e2060e9e79f/boom-1.0.tar.gz"
}
]
}