{ "info": { "author": "MixBytes LLC", "author_email": "hello@mixbytes.io", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: MacOS", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Testing", "Topic :: System :: Benchmark", "Topic :: System :: Clustering", "Topic :: System :: Distributed Computing" ], "description": "# MixBytes Tank [![master](https://travis-ci.org/mixbytes/tank.svg?branch=master)](https://travis-ci.org/mixbytes/tank)\n\nMixBytes Tank is a console tool which can set up a blockchain cluster in minutes in a cloud and bench it using various transaction loads.\nIt'll highlight blockchain problems and give insights into performance and stability of the technology.\n\nAt the moment, supported blockchains are [Haya](https://github.com/mixbytes/haya) and [Polkadot](https://polkadot.network).\n\nSetup - bench - dispose workflow is very similar to a test case, that is why configuration of such run is described in a declarative YAML file called \"testcase\".\n\nMore info can be found at:\n\n* [Guide](docs/guide/README.md)\n* [Cookbook](docs/cookbook/README.md)\n* Quick guide below\n\nContributions are welcomed!\n\nDiscuss in our chat: [https://t.me/MixBytes](https://t.me/MixBytes).\n\n\n# Quick guide\n\n## Requirements\n\n- Python3\n\n## Installation\n\n```shell\npip3 install mixbytes-tank\n```\n\nUse the `--pre` option to get the latest release candidate:\n\n```shell\npip3 install mixbytes-tank --pre\n```\n\n\n## Usage\n\n### 1. Configure the user config\n\nConfigure `~/.tank.yml`. The example can be found at [docs/config.yml.example](docs/config.yml.example).\n\nPlease configure at least one cloud provider. The essential steps are:\n* providing (and possibly creating) a key pair\n* registering a public key with your cloud provider (if needed)\n* specifying a cloud provider access token or credentials\n\n### 2. Create or get a tank testcase\n\nThe example can be found at [docs/testcase_example.yml](docs/testcase_example.yml).\n\n### 3. Start a tank run\n\n```shell\ntank cluster deploy \n```\n\nAs a result, the cluster instance listing will be printed along with the run id and the monitoring link.\n\n### 4. Log in to the monitoring\n\nOpen the monitoring link in your browser, type in 'tank' in the username and password fields.\nYou will see cluster metrics in the predefined dashboards.\n\n### 5. List current active runs\n\nThere can be multiple tank runs at the same time. The runs list and brief information about each run can be seen via: \n\n```shell\ntank cluster list\n```\n\n### 6. Create synthetic load\n\n```shell\ntank cluster bench [--tps N] [--total-tx N]\n```\n\n`` - run ID\n\n`` - a js file with a load profile: custom logic which creates transactions to be sent to the cluster\n\n`--tps` - total number of generated transactions per second,\n\n`--total-tx` - total number of transactions to be sent.\n\n### 7. Shutdown and remove the cluster\n\n```shell\ntank cluster destroy \n```\n\n\n# Development\n\n## Branching\n\nfeatures -> `develop` -> `master`.\n\n`master` is production-ready code.\n\n`develop` is expected-to-be production-ready code which is merged into master after thorough testing\n(so, no faulty code in `develop` pls).\n\n`develop` and `master` branches are permanent.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mixbytes/tank/", "keywords": "bench benchmark blockchain", "license": "Apache-2.0", "maintainer": "", "maintainer_email": "", "name": "mixbytes-tank", "package_url": "https://pypi.org/project/mixbytes-tank/", "platform": "", "project_url": "https://pypi.org/project/mixbytes-tank/", "project_urls": { "Homepage": "https://github.com/mixbytes/tank/" }, "release_url": "https://pypi.org/project/mixbytes-tank/1.0.2/", "requires_dist": [ "cement (==3.0.4)", "ansible (>=2.8.0)", "jinja2", "pyyaml", "colorlog", "sh (==1.12.13)", "jsonschema (==3.0.1)", "filelock", "tabulate (==0.8.3)", "namesgenerator (==0.3)" ], "requires_python": ">=3", "summary": "Benchmark engine for blockchains", "version": "1.0.2" }, "last_serial": 5879930, "releases": { "0.1.2.dev20190704124001": [ { "comment_text": "", "digests": { "md5": "8583a560d9f281d0cf2ff1721a2e4572", "sha256": "2f82034d20eb72b6d1a547544bf8659e933373a8774f32543ccda587553ee4f3" }, "downloads": -1, "filename": "mixbytes_tank-0.1.2.dev20190704124001-py3-none-any.whl", "has_sig": false, "md5_digest": "8583a560d9f281d0cf2ff1721a2e4572", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 26654, "upload_time": "2019-07-04T12:49:46", "url": "https://files.pythonhosted.org/packages/db/08/b74e8e0cbdc48615a077bd208a1d22f941c8aeb21713fc020208ffed50ed/mixbytes_tank-0.1.2.dev20190704124001-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ddfcca5d8a729b10d7b38e4be8b0f4c6", "sha256": "387ff165ba36e12606981740b891e366d66e1ed585780b6e7d4bbebe6fa62f3a" }, "downloads": -1, "filename": "mixbytes-tank-0.1.2.dev20190704124001.tar.gz", "has_sig": false, "md5_digest": "ddfcca5d8a729b10d7b38e4be8b0f4c6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 19798, "upload_time": "2019-07-04T12:49:47", "url": "https://files.pythonhosted.org/packages/e5/0f/a3e18e8b9ae19d0ba9b664fe0d55eb482985d7e6b9d7d8624b489ee879d3/mixbytes-tank-0.1.2.dev20190704124001.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "738a06e34b14f10b50370bd6a59ba1db", "sha256": "a7d87cb6fd397e99615c73539d4cde9bab653c7336674b621406c7af84bcac7d" }, "downloads": -1, "filename": "mixbytes_tank-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "738a06e34b14f10b50370bd6a59ba1db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 26402, "upload_time": "2019-07-04T13:07:35", "url": "https://files.pythonhosted.org/packages/51/ce/68688339fe9128eafb4a8a25aa8684e95e497683ba67b3280127c4e015cf/mixbytes_tank-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "280c26683023904b396e042ede3cb1ca", "sha256": "db31e5c2ffc53a57b305c33a249fb7067ed9fa9228cb3379028c44f24770ccc7" }, "downloads": -1, "filename": "mixbytes-tank-0.2.0.tar.gz", "has_sig": false, "md5_digest": "280c26683023904b396e042ede3cb1ca", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 19775, "upload_time": "2019-07-04T13:07:37", "url": "https://files.pythonhosted.org/packages/e6/67/89fcf8692586c505aa4ce32dc59b6ab3e29cae9cf6b8c4c4b5d774a378bd/mixbytes-tank-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "436ac240ab7a4f1a715b315f6072ec29", "sha256": "a1ce6d334e3cc3f6e7d869bf9a9133b4549c6e368f4d3735bdbc48f3d8ed68ac" }, "downloads": -1, "filename": "mixbytes_tank-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "436ac240ab7a4f1a715b315f6072ec29", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 28569, "upload_time": "2019-07-05T10:53:57", "url": "https://files.pythonhosted.org/packages/78/41/bee731a7b53cc74fb0bb6f3ebc5e1f4c7be7875541eaf40dd10e4b8edc37/mixbytes_tank-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3fef0e5acdf35b801178c60f9356e9ec", "sha256": "86ae82d5dc4552a0d3bce0dd1a51a2568b4bd54a2feec70526b66ab600eb397c" }, "downloads": -1, "filename": "mixbytes-tank-0.2.1.tar.gz", "has_sig": false, "md5_digest": "3fef0e5acdf35b801178c60f9356e9ec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 19907, "upload_time": "2019-07-05T10:53:59", "url": "https://files.pythonhosted.org/packages/40/08/475bc6c71b42844d7496a89c62d68325771189a0359610ddde7fa1357e69/mixbytes-tank-0.2.1.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "5951959cad50920184522d5384b692dc", "sha256": "337f89dc59c630dea36649f6e419cda1b50b22d579bcc493007e05a697599f1b" }, "downloads": -1, "filename": "mixbytes_tank-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5951959cad50920184522d5384b692dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 27714, "upload_time": "2019-07-11T16:05:51", "url": "https://files.pythonhosted.org/packages/e0/0f/5e6a10b2046535b5dd332831ec387dc53fa4e4b4a4e005664aa51a7a80ef/mixbytes_tank-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "309b8a2b740c42fb742d98afd2e154b3", "sha256": "18267bdad5eeddd81f838d4b73cfff1cef27ff503c26ff44869ed90595c6f3a3" }, "downloads": -1, "filename": "mixbytes-tank-0.2.3.tar.gz", "has_sig": false, "md5_digest": "309b8a2b740c42fb742d98afd2e154b3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 20613, "upload_time": "2019-07-11T16:05:52", "url": "https://files.pythonhosted.org/packages/0a/94/bee4b4aa810354faf3389549e443a8c0f50ec6a5bb062851a8c9ec7a195f/mixbytes-tank-0.2.3.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "cfef6fcca62389282d7180b77687d59a", "sha256": "90ac771a734fe6942ec6f41f567a689aa49e6a88c2608c3134663198ca5574e7" }, "downloads": -1, "filename": "mixbytes_tank-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cfef6fcca62389282d7180b77687d59a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 35928, "upload_time": "2019-09-02T15:48:43", "url": "https://files.pythonhosted.org/packages/16/b4/b6e11170bd7331fcdfebd567d2fa8c1634254f2c3f7127bc04b2b8f833d4/mixbytes_tank-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "86898d3a8e2dffc1c587e5deddac1a4c", "sha256": "a5a1d950792333234d10ff2ffd5a5324571dae0396c99b5b565bbe15bd80bf37" }, "downloads": -1, "filename": "mixbytes-tank-1.0.0.tar.gz", "has_sig": false, "md5_digest": "86898d3a8e2dffc1c587e5deddac1a4c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 27153, "upload_time": "2019-09-02T15:48:45", "url": "https://files.pythonhosted.org/packages/d3/40/a82236f7a3cbc86c90390efb4eef1106ed111026d466760c98b0623cd93e/mixbytes-tank-1.0.0.tar.gz" } ], "1.0.0rc1": [ { "comment_text": "", "digests": { "md5": "4acf0a6be5923a14b0a67e9392957353", "sha256": "b5d5fbbdb85f5e1c995b0f69ad6e35031c55f67283ac2908f00743edf0142383" }, "downloads": -1, "filename": "mixbytes_tank-1.0.0rc1-py3-none-any.whl", "has_sig": false, "md5_digest": "4acf0a6be5923a14b0a67e9392957353", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 36007, "upload_time": "2019-08-30T14:23:58", "url": "https://files.pythonhosted.org/packages/e1/fb/c738c77ee0568f79c6de71c479ad3c7e5aca7a25b65c4274e229dafef156/mixbytes_tank-1.0.0rc1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fc78a88eb9ce3482f67307ebe39a6a2", "sha256": "22e31070bb072164ee9a333e4f42cee732b89b5a5ff43a166dcf3c423ab0f87c" }, "downloads": -1, "filename": "mixbytes-tank-1.0.0rc1.tar.gz", "has_sig": false, "md5_digest": "4fc78a88eb9ce3482f67307ebe39a6a2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 27132, "upload_time": "2019-08-30T14:24:00", "url": "https://files.pythonhosted.org/packages/c3/05/2bd7869a1ba5f3732b4885a943a40235ac81a34177a5d29363bc56f75334/mixbytes-tank-1.0.0rc1.tar.gz" } ], "1.0.0rc3": [ { "comment_text": "", "digests": { "md5": "acdf8650a815b21e4ac2e0958194c883", "sha256": "b2ad94498dc2a5502479b7eb7aa7883961280e5c3b200b1a1f20e81aa8697daa" }, "downloads": -1, "filename": "mixbytes_tank-1.0.0rc3-py3-none-any.whl", "has_sig": false, "md5_digest": "acdf8650a815b21e4ac2e0958194c883", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 36041, "upload_time": "2019-08-30T15:56:14", "url": "https://files.pythonhosted.org/packages/fe/87/e871756311d92cd13752dbd02ba18b3e7de202d2ca06fa9f7127498a676c/mixbytes_tank-1.0.0rc3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4f3eb24dcb382fefb42b9f5785700178", "sha256": "dce199ee431a7d633dda27997dd01ad7fdf99925b0e0825dfd26819af6dc3769" }, "downloads": -1, "filename": "mixbytes-tank-1.0.0rc3.tar.gz", "has_sig": false, "md5_digest": "4f3eb24dcb382fefb42b9f5785700178", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 27188, "upload_time": "2019-08-30T15:56:16", "url": "https://files.pythonhosted.org/packages/0e/8e/c176c40948d95934e4a806c1d19d15733b4dacb5e4d7aba1fb0814080eb9/mixbytes-tank-1.0.0rc3.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "0596b2d0f26d380524554f79066f205d", "sha256": "abb38d968bd3f40c26b797a5e993897e24f3f498cf80a433a448ac881ec7666b" }, "downloads": -1, "filename": "mixbytes_tank-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0596b2d0f26d380524554f79066f205d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 35872, "upload_time": "2019-09-10T13:00:03", "url": "https://files.pythonhosted.org/packages/1e/3f/4ca5a2a84bdc3ba94b0bbd0438b87d40938018938d15eac2d1271f0400de/mixbytes_tank-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "00f447b89d06d0a9363a265c365b86b4", "sha256": "fb22987f52948ca93b785579bf176a6d60824d36a23284b7ba66bf79a9b08680" }, "downloads": -1, "filename": "mixbytes-tank-1.0.1.tar.gz", "has_sig": false, "md5_digest": "00f447b89d06d0a9363a265c365b86b4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 27139, "upload_time": "2019-09-10T13:00:05", "url": "https://files.pythonhosted.org/packages/76/4a/ea28675bcca3490b74b409be437484384cc01f3bd3dd584a0c43a3a4c593/mixbytes-tank-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "8321652105f52e3c590ca8015d167e78", "sha256": "cb966d569e3568bea573f01f304a44efdae36033dc2c846a9247fb5fd1ea3c10" }, "downloads": -1, "filename": "mixbytes_tank-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8321652105f52e3c590ca8015d167e78", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 35964, "upload_time": "2019-09-24T14:07:39", "url": "https://files.pythonhosted.org/packages/17/45/0d8d5ceee40f4fad0dcb53dede597ef9a11fe4b32261d542954ac81fb58b/mixbytes_tank-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48647efd4b9a40f1294fdcec2d45ebf5", "sha256": "f4d843bfa63e036367de5e1ca0a4415ea1e44450180ab4060f4bddeca4b0f291" }, "downloads": -1, "filename": "mixbytes-tank-1.0.2.tar.gz", "has_sig": false, "md5_digest": "48647efd4b9a40f1294fdcec2d45ebf5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 27251, "upload_time": "2019-09-24T14:07:41", "url": "https://files.pythonhosted.org/packages/dd/da/7b26838c1191a6bccd368082ce90835b35ee6929583c122b9de2dbd8dd7b/mixbytes-tank-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8321652105f52e3c590ca8015d167e78", "sha256": "cb966d569e3568bea573f01f304a44efdae36033dc2c846a9247fb5fd1ea3c10" }, "downloads": -1, "filename": "mixbytes_tank-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8321652105f52e3c590ca8015d167e78", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 35964, "upload_time": "2019-09-24T14:07:39", "url": "https://files.pythonhosted.org/packages/17/45/0d8d5ceee40f4fad0dcb53dede597ef9a11fe4b32261d542954ac81fb58b/mixbytes_tank-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48647efd4b9a40f1294fdcec2d45ebf5", "sha256": "f4d843bfa63e036367de5e1ca0a4415ea1e44450180ab4060f4bddeca4b0f291" }, "downloads": -1, "filename": "mixbytes-tank-1.0.2.tar.gz", "has_sig": false, "md5_digest": "48647efd4b9a40f1294fdcec2d45ebf5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 27251, "upload_time": "2019-09-24T14:07:41", "url": "https://files.pythonhosted.org/packages/dd/da/7b26838c1191a6bccd368082ce90835b35ee6929583c122b9de2dbd8dd7b/mixbytes-tank-1.0.2.tar.gz" } ] }