{ "info": { "author": "Lin, Ke-fei", "author_email": "kfei@kfei.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Testing" ], "description": "# Stresser\n\n![Latest Version](https://pypip.in/version/stresser/badge.svg)\n\nStresser is a large-scale stress testing framework consists of one\n**Commander** (client) and an arbitrary number of **Soldiers** (servers).\n\nBy broadcasting a pre-defined **task**, the Commander can trigger all Soldiers\nto generate workloads concurrently.\n\nA task can be:\n\n* [Sikuli](http://www.sikuli.org/) - Great for tests based on GUI operations.\n* script - e.g. `script.sh` on Unix-like systems or `batch.bat` on Windows.\n* bin - Binary executables.\n\nTo generate more stress, just add more Soldiers.\n\n## Installation\n\nYou can install Stresser by `pip`:\n\n```bash\npip install stresser\n```\n\n## Quick Start\n\nOnce you've got Stresser installed, prepare configuration files for the\nCommander and Soldiers. Then run `stress-commander` and `stress-soldier`\nrespectively.\n\n### Start Soldiers\n\nA sample configuration file for Soldiers:\n\n```INI\n[amqp]\n# The AMQP server for message broker\nserver = 5.5.6.6\n\n[bin]\n# Path for Sikuli's runIDE.cmd\nsikuli_cmd = C:\\sikuli\\runIDE.cmd\n# Path for Shell (*nix systems only)\nshell = /bin/zsh\n```\n\nStart listening tasks:\n\n```\n$ stress-soldier soldier.conf\n [x] Soldier bd88148e-fa36-4017-ac5b-099ba83570fe is awaiting RPC requests\n ...\n```\n\n### Start the Commander\n\nA sample configuration file (with a Sikuli task defined) for the Commander:\n\n```INI\n[amqp]\n# The AMQP server for message broker\nserver = 5.5.6.6\n\n[task]\n# Task name\nname = The First Task\n# Task type, e.g. sikuli, script and bin.\ntype = sikuli\n# URL for executable which will be downloaded by Soldiers\nurl = http://5.5.6.6:8000/first.skl\n# The number of Soldiers. Commander will stop when the specified number of\n# results have got.\ncount = 32\n```\n\nStart broadcasting task:\n\n```\n$ stress-commander commander.conf\n [x] Broadcasting task: 'The First Task'...\n```\n\n### Soldiers performing task\n\nAfter the Commander broadcasting a task, Soldiers are wake up to download and\nperform that task. You may see following messages on the Soldiers's console:\n\n```\n [x] Soldier bd88148e-fa36-4017-ac5b-099ba83570fe is awaiting RPC requests\n [.] Discoverd task: 'The First Task'\n [.] Downloading task executable from http://5.5.6.6:8000/first.skl\n [.] Running task: 'The First Task'\n... (some outputs for task)\n [.] Task: 'The First Task' is completed\n```\n\n### The Commander stops after all results from Soldiers are collected\n\nOn the Commander's console:\n\n```\n [.] Solider dfbe093d-54e0-4b6d-adb3-6935f3c6a31e took 0:12:02 to complete.\n [.] Solider 1bcfb3e2-dd69-4957-ab6d-be91422c44f7 took 0:12:03 to complete.\n ... (skipped)\n [.] Soldier bd88148e-fa36-4017-ac5b-099ba83570fe took 0:11:59 to complete.\n```\n\nThe Commander will stop when the task is done on all Soldiers, but Soldiers are\nstill running, hence you can submit another task over and over again.\n\n## Requirements\n\nYou only have to deploy a message broker which speaks\n[AMQP](http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol).\n\n## Versioning\nStresser follows [Semantic Versioning](http://semver.org/), both SemVer and\nSemVerTag.", "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/kfei/stresser", "keywords": "stress,test,automation,framework,sikuli", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "stresser", "package_url": "https://pypi.org/project/stresser/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/stresser/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/kfei/stresser" }, "release_url": "https://pypi.org/project/stresser/0.2.1/", "requires_dist": null, "requires_python": null, "summary": "A large-scale stress testing framework.", "version": "0.2.1" }, "last_serial": 1295196, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "af0af5a44aed95cefea303710cda0709", "sha256": "046a329f73d40acf2e0476a24cb7b0790c2a51868aa50d4300fd7dde19455fbe" }, "downloads": -1, "filename": "stresser-0.1.0.tar.gz", "has_sig": false, "md5_digest": "af0af5a44aed95cefea303710cda0709", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5235, "upload_time": "2014-07-02T08:43:24", "url": "https://files.pythonhosted.org/packages/1c/23/5e20056eac2cd1366eeb2c760ebf3379e33f91fdf2014ec041980806ab2a/stresser-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2fa01a268254f0edfa10eb18a5dc3fff", "sha256": "aa2e54d5d3e402ceb94938bdfaa7b8a837ef0a566afb11ec7911f8ecd5c896f5" }, "downloads": -1, "filename": "stresser-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2fa01a268254f0edfa10eb18a5dc3fff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5587, "upload_time": "2014-07-02T09:22:41", "url": "https://files.pythonhosted.org/packages/6c/19/babc6605a154ae878adf29aa6e2ab74334591cc2d9abe9bfb19c423c5c7b/stresser-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "e2f908796ba110854c88a4f5bebd30fa", "sha256": "c5576e64fc821945a340080818f0722b3e860c30cfb8e593a2fb52b92f11bdfe" }, "downloads": -1, "filename": "stresser-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e2f908796ba110854c88a4f5bebd30fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5724, "upload_time": "2014-07-02T10:34:51", "url": "https://files.pythonhosted.org/packages/86/ed/7add8aa02c4e464f9f65a00eff92ad565b27f60eed521d0052d903121bb6/stresser-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "78f0373f7b78da51e41b1a7e50d243b1", "sha256": "fb7a665bc17930a0abfd6fa294e69c94899e1d1fc9df9826c747db79e4afa228" }, "downloads": -1, "filename": "stresser-0.1.3.tar.gz", "has_sig": false, "md5_digest": "78f0373f7b78da51e41b1a7e50d243b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5754, "upload_time": "2014-07-02T13:36:31", "url": "https://files.pythonhosted.org/packages/6f/e7/62353fddbf690950636d876b4708106da6ca58f1a1b5516ac035e02aef8b/stresser-0.1.3.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "18d69692aa95362b2718251dac98d799", "sha256": "cc85824a53820ad44ce988ee13cd42df541230d795558daf885ea25445a17063" }, "downloads": -1, "filename": "stresser-0.2.1.tar.gz", "has_sig": false, "md5_digest": "18d69692aa95362b2718251dac98d799", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5720, "upload_time": "2014-11-05T10:10:40", "url": "https://files.pythonhosted.org/packages/ca/44/6147c1458bd221b3c0d2c604f6ce5ee32174aec84ed6c66d59d94f3df12f/stresser-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "18d69692aa95362b2718251dac98d799", "sha256": "cc85824a53820ad44ce988ee13cd42df541230d795558daf885ea25445a17063" }, "downloads": -1, "filename": "stresser-0.2.1.tar.gz", "has_sig": false, "md5_digest": "18d69692aa95362b2718251dac98d799", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5720, "upload_time": "2014-11-05T10:10:40", "url": "https://files.pythonhosted.org/packages/ca/44/6147c1458bd221b3c0d2c604f6ce5ee32174aec84ed6c66d59d94f3df12f/stresser-0.2.1.tar.gz" } ] }