{"id":13585395,"url":"https://github.com/rajeevnaikte/distbot","last_synced_at":"2025-07-04T21:32:23.812Z","repository":{"id":57462347,"uuid":"179933329","full_name":"rajeevnaikte/distbot","owner":"rajeevnaikte","description":"Distributed/parallel execution of Robot Framework test suites using multiple docker containers","archived":false,"fork":false,"pushed_at":"2022-08-10T13:35:54.000Z","size":38,"stargazers_count":21,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-07T10:03:51.655Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rajeevnaikte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-07T07:47:21.000Z","updated_at":"2023-09-25T18:52:52.000Z","dependencies_parsed_at":"2022-09-10T19:20:16.349Z","dependency_job_id":null,"html_url":"https://github.com/rajeevnaikte/distbot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajeevnaikte%2Fdistbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajeevnaikte%2Fdistbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajeevnaikte%2Fdistbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajeevnaikte%2Fdistbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rajeevnaikte","download_url":"https://codeload.github.com/rajeevnaikte/distbot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247085995,"owners_count":20881160,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T15:04:55.052Z","updated_at":"2025-04-03T22:18:37.823Z","avatar_url":"https://github.com/rajeevnaikte.png","language":"Python","funding_links":[],"categories":["Python","Tools"],"sub_categories":["Containerization"],"readme":"# distbot\nDistributed/parallel execution of Robot Framework (RF) test suites using multiple docker containers\n# Demo\nhttps://www.youtube.com/watch?v=KL4V0QkMMVc\n# How it works\nStart multiple docker containers of \u003ca href=\"https://hub.docker.com/r/rajeevnaikte/distbot\"\u003erajeevnaikte/distbot\u003c/a\u003e (e.g. ```docker-compose up --scale=4```), with all pointing to a shared volume folder (please refer \u003ca href=\"https://docs.docker.com/compose/compose-file/#volume-configuration-reference\"\u003edocker-compose volumes\u003c/a\u003e for configurations), where the robot framework test suites are stored, and set argument ```--mode distributed``` (e.g. in docker-compose.yml file). Each robot suite/file will be run in a separate process/container. This program will automatically distribute the suites among the docker containers and run in parallel (without need of a master node). Also, in each container multiple suites can be run in parallel as per the --max-* configurations mentioned below. Once all suites are completed, one of the container will execute ```rebot``` of robot framework to combine all the reports. The report will be stored in same shared volume folder (You can also specify different location using --outputdir \u003ca href=\"http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#all-command-line-options\"\u003eargument of robot frameowrk\u003c/a\u003e).\n# Usage\n```pip install robotframework-distbot```\u003cbr/\u003e\nRun the docker container or ```python -m distbot``` with -h argument to see all options of the progam.\u003cbr/\u003e\n```\nusage: -e ENV [options] main_suite [robot arguments]\n\nExplanation: first give options from below list as per your need (these are specific to this library),\nnext give main suite name (folder name), next give RF arguments as per your needs (these are RF specific as mentioned in thier guide).\nIf there is a conflicting options between this library and RF, then you can use full name for that option in RF.\nE.g. -e is used by this library for ENV, but RF as well has it for exclude option. So you can use --exclude for RF.\ni.e. -e ENV my_suite --exclude something\n\npositional arguments:\n  main_suite            Folder name containing all the robot framework scripts.\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -e E                  dev, stage, prod etc. This value will be available as variable ENV.\n  -b B                  This value will be available as variable BROWSER.\n  --mode {sequential,distributed}\n  --max-cpu-percent MAX_CPU_PERCENT\n                        Program will stop spawning new process when cpu usage reaches this value.\n  --max-memory MAX_MEMORY\n                        Program will stop spawning new process when memory usage reaches this value.\n  --max-processes MAX_PROCESSES\n                        Program will stop spawning new process when running processes count is this value.\n  -d OUTPUTDIR, --outputdir OUTPUTDIR\n                        Directory to save report files. Default is workingdir/report\n  -s SUITE, --suite SUITE\n                        Only run suites matching this value\n```\n# Assistant mode\nThere is an assistant library here to use during development. This program will keep the robot framework running, and allow you to type in the keywords from terminal/cmd prompt. It is a good tool for web-developers while coding to see the effect while trying out differnet logics.\u003cbr/\u003e\nStarting assistant is simply using keywork 'start assistant'. e.g. in this repo there is file Assistant/assistant.robot. Just run that - \u003cbr/\u003e\n```python -m distbot -e local -b ff Assistant```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajeevnaikte%2Fdistbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frajeevnaikte%2Fdistbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajeevnaikte%2Fdistbot/lists"}