{ "info": { "author": "Eric Schwimmer", "author_email": "git@nerdvana.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: System :: Benchmark" ], "description": "Mobbage - a HTTP stress test and benchmark tool\n===============================================\n\nMobbage is a python script intended to be used as a stress testing tool\nfor HTTP(S) servers and web-aware applications. It is similar to (and\ndirectly inspired by) siege, a HTTP load testing utility by Jeffrey\nFulmer (and available at https://github.com/JoeDog/siege).\n\nMobbage, however, includes a few more bells and whistles (keepalives,\nhttp/2, authentication, cookiejar support, multipart/form-data uploads,\netc) as well as the ability to provide a complex test plan via a URL job\nfile.\n\nInstallation\n------------\n\nInstallation is as simple as:\n\n::\n\n pip install mobbage\n\nThis should install mobbage and all of its required Python modules\n(which is only the ``requests`` module at this point) from PyPI. If you\n*must* have the absolute latest and greatest, you can install directly\nfrom this repo:\n\n::\n\n pip install https://github.com/redfin/mobbage/zipball/master\n\nUsage\n-----\n\nMobbage can be controlled either via the command line or via a specially\nconstructed job file (or both; global defaults can be specified via the\ncommand line and overriden by variables in the job file).\n\nCommand-line options can be grouped into these categories:\n\nRequest control:\n~~~~~~~~~~~~~~~~\n\n::\n\n URL URL(s) to fetch\n -f str, --jobfile str Read job data from this file\n -F str, --urlfile str Read url data from this file. Mutually exclusive\n with -f\n -m str, --method str HTTP method to use. Default is 'GET'\n -a str, --agent str Set User-Agent request header\n -H str, --header str Send request header in 'name:value' format. Specify\n more than once for multiple headers\n -u str, --upload str Upload a file via multipart/form-data POST. Must be\n formatted as 'form_var:file_path[:content_type]'.\n If content type isn't specified, a best guess will\n be made based on the filename. This option can be\n specified more than once. Forces method to be POST\n -i, --insecure Disable SSL certificate validation\n -k, --nokeepalive Disable keep-alive requests\n -c str, --cookiejar str Path to Unix/Netscape formatted cookie jar file.\n -2, --http2 Use HTTP/2 standard (experimental).\n\nAuthentication:\n~~~~~~~~~~~~~~~\n\n::\n\n -A str, --auth str Auth credentials in 'username:password' format\n -T str, --authtype str Authentication type to use: basic(default), digest\n\nFlow control:\n~~~~~~~~~~~~~\n\n::\n\n -w N, --workers N Use this many concurrent workers. Default is 1\n -n N, --num N Quit after exceeding this number of requests\n -t N, --time N Quit after running for this number of seconds\n -b N, --bytes N Quit after for this number of seconds\n -e N, --errors N Quit after encountering this many errors\n -d N, --delay N Pause N ms after each request. Default is 0\n -r, --random Fetch URLs in random order instead of sequentially\n\nOutput control (mutually exclusive):\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n -q, --quiet Suppress all output\n -j, --json Format results as JSON\n -s, --csv Format results as CSV\n -p, --progress Show progress bar\n -V, --verbose Print verbose worker output\n\nReporting:\n~~~~~~~~~~\n\n::\n\n -g str, --graphite str Graphite host to use, defined as 'server[:port]'\n -P str, --prefix str Prefix for graphite metrics. Default is 'mobbage'\n\nInformation:\n~~~~~~~~~~~~\n\n::\n\n -v, --version Show version and quit\n -h, --help Show this help text\n\nURL File Format:\n----------------\n\nThe url file is a newline delimited list of URLs (and optionally methods\nand POST idata) compatible with the siege file format, e.g.:\n\n::\n\n http://www.site1.com\n http://www.site1.com GET\n http://www.site2.org POST foo=bar&bin=baz\n\nJob file format\n---------------\n\nThe job file is a JSON formatted array of objects, with each object\nrepresenting a single URL to test. Options for each test should be\nspecified in key:value form for each test object, using the same key\nname as the long versions of the option names from the command line.\nOptions that are honored in the job objects are: \\* url \\* num \\* data\n\\* delay \\* method \\* agent \\* header \\* upload \\* insecure \\*\nnokeepalive \\* auth \\* authtype\n\nOptions not specified in a job object will inherit values set on the\ncommand line, and default values otherwise. The \"header\" and \"upload\"\nshould be specified as JSON arrays of strings.\n\nExample file format:\n~~~~~~~~~~~~~~~~~~~~\n\n::\n\n [\n { \"url\": \"http://www.foo.com\", \"count\": 100,\n \"header\": [\"host:www.bar.com\", \"accept-language:en-us\"] },\n { \"url\": \"http://www.google.com/search?q=lmgtfy\",\n \"agent\": \"lulzBot/0.1\", \"delay\": 50 },\n { \"url\": \"http://www.bar.com\", \"method\": \"POST\",\n \"data\": \"field1=boo&field2=baz\" },\n { \"url\": \"http://www.myhost.com\", \"count\": 10,\n \"upload\": [\"file1:/tmp/foo.txt\", \"file2:/tmp/bar.zip\"] }\n ]\n\nCaveats\n-------\n\n- HTTP/2 support is implemented via the Python ``hyper`` module, which\n is in early alpha. There *will* be bugs. To enable HTTP/2 support,\n you must first installed hyper: ``pip install hyper``.\n- URLs cannot be specified on the command line if you are using a job\n control file\n- User agents can be specified either via the ``-a`` option or by\n specifying a ``user-agent`` header manually via the ``-H`` option. If\n both are specified, the value set by the ``-H`` option takes\n precedence.\n- Keep-alives can be disabled either via the ``-k`` flag or by setting\n the ``connection`` header to \"close\". If you use the ``-k`` flag,\n however, you will overwrite anything previously specified in the\n ``connection`` header.\n- Cookie jars (specified via ``-c``) are read and maintained on a\n per-worker basis, and not written back to the orignal file on disk.\n So, cookies that are set in each worker can be used for the next\n request to the same resource, but are not shared amongst workers, and\n cannot be persisted to subsequent mobbage sessions.\n- All of the output control flags are mutually exclusive (so you can't\n have a progress bar with CSV output, for example).\n- Reports sent to a Graphite carbon server are done via UDP, and thus\n will not produce an error if the carbon server is unreachable. If the\n carbon server's port is not specified, it is assumed to be 2003.\n\nWant to help?\n-------------\n\nPatches are always welcome! See `the contributing\nguide `__ to get started.", "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/redfin/mobbage", "keywords": "http http/2 benchmark stress load test", "license": "Apache 2.0", "maintainer": null, "maintainer_email": null, "name": "mobbage", "package_url": "https://pypi.org/project/mobbage/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/mobbage/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/redfin/mobbage" }, "release_url": "https://pypi.org/project/mobbage/0.2/", "requires_dist": null, "requires_python": null, "summary": "A HTTP stress test and benchmark tool", "version": "0.2" }, "last_serial": 5579567, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "15c11d226cd4387d537c0ce17f04699e", "sha256": "34cc26d8883bddf5bec1d6ac10534e224d00478c15c526b849d66aa4b0dbc21a" }, "downloads": -1, "filename": "mobbage-0.1.tar.gz", "has_sig": false, "md5_digest": "15c11d226cd4387d537c0ce17f04699e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17606, "upload_time": "2016-08-09T03:54:53", "url": "https://files.pythonhosted.org/packages/0b/82/25656c28ddd0904df79ea5ac09368288cf3cb9881d8dd0ff239836138d1e/mobbage-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "8370921884f0e7ed7774a55c39ab0c6a", "sha256": "f437b9dae94849bfab2f86354aa7ff3fce7d2775f4dbe8b33a24254b5ca0cf0d" }, "downloads": -1, "filename": "mobbage-0.2.tar.gz", "has_sig": false, "md5_digest": "8370921884f0e7ed7774a55c39ab0c6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16875, "upload_time": "2016-09-28T23:25:57", "url": "https://files.pythonhosted.org/packages/52/fb/8cc0090110cf9d8b4bdb786116d14942ce3b409320e3d52d07ee08a9a343/mobbage-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8370921884f0e7ed7774a55c39ab0c6a", "sha256": "f437b9dae94849bfab2f86354aa7ff3fce7d2775f4dbe8b33a24254b5ca0cf0d" }, "downloads": -1, "filename": "mobbage-0.2.tar.gz", "has_sig": false, "md5_digest": "8370921884f0e7ed7774a55c39ab0c6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16875, "upload_time": "2016-09-28T23:25:57", "url": "https://files.pythonhosted.org/packages/52/fb/8cc0090110cf9d8b4bdb786116d14942ce3b409320e3d52d07ee08a9a343/mobbage-0.2.tar.gz" } ] }