From e5f43d25805bcea849139022df31ee30f7e47d1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thierry=20Yg=C3=A9?= Date: Wed, 15 Sep 2021 13:50:27 +0200 Subject: [PATCH] #1884 Make rebalance interval configurable --- locust/argument_parser.py | 8 + locust/runners.py | 6 +- report.html | 353 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 366 insertions(+), 1 deletion(-) create mode 100644 report.html diff --git a/locust/argument_parser.py b/locust/argument_parser.py index 5abe6b8376..11ccf81e92 100644 --- a/locust/argument_parser.py +++ b/locust/argument_parser.py @@ -471,6 +471,14 @@ def setup_parser_arguments(parser): dest="enable_rebalancing", help="Allow to automatically rebalance users if new workers are added after ramp up completed.", ) + other_group.add_argument( + "--rebalance-interval", + action="store", + type=int, + default=5, + dest="rebalance_interval", + help="Rebalance interval in seconds, default is 5 seconds. To be used with --enable-rebalancing", + ) user_classes_group = parser.add_argument_group("User classes") user_classes_group.add_argument( diff --git a/locust/runners.py b/locust/runners.py index b925ce7c79..6d257a0cc2 100644 --- a/locust/runners.py +++ b/locust/runners.py @@ -603,6 +603,10 @@ def __init__(self, environment, master_bind_host, master_bind_port): self.master_bind_port = master_bind_port self.spawn_rate: float = 0 self.spawning_completed = False + self.rebalanceInterval = REBALANCE_INTERVAL + + if self.environment.parsed_options: + self.rebalanceInterval = self.environment.parsed_options.rebalance_interval self.clients = WorkerNodes() try: @@ -825,7 +829,7 @@ def check_stopped(self): def rebalance_worker(self): while True: - gevent.sleep(REBALANCE_INTERVAL) + gevent.sleep(self.rebalanceInterval) if self.state == STATE_RUNNING and self.spawning_completed and len(self.clients.ready) > 0: logger.info( f"detected ready workers, rebalancing with target={self.target_user_count}, rate={self.spawn_rate}" diff --git a/report.html b/report.html new file mode 100644 index 0000000000..7e546f4f64 --- /dev/null +++ b/report.html @@ -0,0 +1,353 @@ + + + + + + + + +
Recording started
+Reporting mode enabled
+{
+    'reportversion': '1',
+    'toxversion': '3.24.3',
+    'platform': 'darwin',
+    'host': 'Thierrys-MacBook-Pro.local',
+    'commands': [
+        {
+            'command': ['/Users/thierryyge/.pyenv/versions/3.9.6/bin/python3.9', 'setup.py', 'sdist', '--formats=zip', '--dist-dir', '.tox/dist'],
+            'output': "/Users/thierryyge/.pyenv/versions/3.9.6/lib/python3.9/site-packages/setuptools/dist.py:710: UserWarning: Usage of dash-separated 
+'obsoletes-dist' will not be supported in future versions. Please use the underscore name 'obsoletes_dist' instead\n  
+warnings.warn(\n/Users/thierryyge/.pyenv/versions/3.9.6/lib/python3.9/site-packages/setuptools/dist.py:710: UserWarning: Usage of dash-separated 
+'obsoletes-dist' will not be supported in future versions. Please use the underscore name 'obsoletes_dist' instead\n  warnings.warn(\nrunning sdist\nrunning 
+egg_info\nwriting locust.egg-info/PKG-INFO\nwriting dependency_links to locust.egg-info/dependency_links.txt\nwriting entry points to 
+locust.egg-info/entry_points.txt\nwriting requirements to locust.egg-info/requires.txt\nwriting top-level names to locust.egg-info/top_level.txt\nreading 
+manifest template 'MANIFEST.in'\nadding license file 'LICENSE'\nwriting manifest file 'locust.egg-info/SOURCES.txt'\nrunning check\nwarning: Check: missing 
+meta-data: either (author and author_email) or (maintainer and maintainer_email) should be supplied\n\ncreating locust-2.2.2.dev34\ncreating 
+locust-2.2.2.dev34/.github\ncreating locust-2.2.2.dev34/.github/ISSUE_TEMPLATE\ncreating locust-2.2.2.dev34/.github/workflows\ncreating 
+locust-2.2.2.dev34/.vscode\ncreating locust-2.2.2.dev34/benchmarks\ncreating locust-2.2.2.dev34/docs\ncreating locust-2.2.2.dev34/docs/_static\ncreating 
+locust-2.2.2.dev34/docs/images\ncreating locust-2.2.2.dev34/examples\ncreating locust-2.2.2.dev34/examples/custom_shape\ncreating 
+locust-2.2.2.dev34/examples/custom_xmlrpc_client\ncreating locust-2.2.2.dev34/examples/docker-compose\ncreating 
+locust-2.2.2.dev34/examples/extend_web_ui\ncreating locust-2.2.2.dev34/examples/extend_web_ui/static\ncreating 
+locust-2.2.2.dev34/examples/extend_web_ui/templates\ncreating locust-2.2.2.dev34/examples/grpc\ncreating 
+locust-2.2.2.dev34/examples/sdk_session_patching\ncreating locust-2.2.2.dev34/examples/vagrant\ncreating locust-2.2.2.dev34/locust\ncreating 
+locust-2.2.2.dev34/locust.egg-info\ncreating locust-2.2.2.dev34/locust/contrib\ncreating locust-2.2.2.dev34/locust/rpc\ncreating 
+locust-2.2.2.dev34/locust/static\ncreating locust-2.2.2.dev34/locust/static/css\ncreating locust-2.2.2.dev34/locust/static/img\ncreating 
+locust-2.2.2.dev34/locust/static/sass\ncreating locust-2.2.2.dev34/locust/templates\ncreating locust-2.2.2.dev34/locust/test\ncreating 
+locust-2.2.2.dev34/locust/user\ncreating locust-2.2.2.dev34/locust/util\ncreating locust-2.2.2.dev34/scripts\ncopying files to locust-2.2.2.dev34...\ncopying 
+.coveragerc -> locust-2.2.2.dev34\ncopying .dockerignore -> locust-2.2.2.dev34\ncopying .git-blame-ignore-revs -> locust-2.2.2.dev34\ncopying .gitattributes 
+-> locust-2.2.2.dev34\ncopying .gitignore -> locust-2.2.2.dev34\ncopying .readthedocs.yml -> locust-2.2.2.dev34\ncopying CHANGELOG.md -> 
+locust-2.2.2.dev34\ncopying Dockerfile -> locust-2.2.2.dev34\ncopying LICENSE -> locust-2.2.2.dev34\ncopying MANIFEST.in -> locust-2.2.2.dev34\ncopying 
+Makefile -> locust-2.2.2.dev34\ncopying README -> locust-2.2.2.dev34\ncopying README.md -> locust-2.2.2.dev34\ncopying Vagrantfile -> 
+locust-2.2.2.dev34\ncopying codecov.yml -> locust-2.2.2.dev34\ncopying generate_changelog.py -> locust-2.2.2.dev34\ncopying pyproject.toml -> 
+locust-2.2.2.dev34\ncopying setup.cfg -> locust-2.2.2.dev34\ncopying setup.py -> locust-2.2.2.dev34\ncopying tox.ini -> locust-2.2.2.dev34\ncopying 
+.github/CONTRIBUTING.md -> locust-2.2.2.dev34/.github\ncopying .github/ISSUE_TEMPLATE/bug_report.md -> locust-2.2.2.dev34/.github/ISSUE_TEMPLATE\ncopying 
+.github/ISSUE_TEMPLATE/config.yml -> locust-2.2.2.dev34/.github/ISSUE_TEMPLATE\ncopying .github/ISSUE_TEMPLATE/feature_request.md -> 
+locust-2.2.2.dev34/.github/ISSUE_TEMPLATE\ncopying .github/workflows/stale.yml -> locust-2.2.2.dev34/.github/workflows\ncopying .github/workflows/tests.yml ->
+locust-2.2.2.dev34/.github/workflows\ncopying .vscode/launch.json -> locust-2.2.2.dev34/.vscode\ncopying .vscode/settings.json -> 
+locust-2.2.2.dev34/.vscode\ncopying benchmarks/dispatch.py -> locust-2.2.2.dev34/benchmarks\ncopying docs/api.rst -> locust-2.2.2.dev34/docs\ncopying 
+docs/changelog.rst -> locust-2.2.2.dev34/docs\ncopying docs/conf.py -> locust-2.2.2.dev34/docs\ncopying docs/configuration.rst -> 
+locust-2.2.2.dev34/docs\ncopying docs/custom-load-shape.rst -> locust-2.2.2.dev34/docs\ncopying docs/developing-locust.rst -> locust-2.2.2.dev34/docs\ncopying
+docs/extending-locust.rst -> locust-2.2.2.dev34/docs\ncopying docs/further-reading.rst -> locust-2.2.2.dev34/docs\ncopying docs/history.rst -> 
+locust-2.2.2.dev34/docs\ncopying docs/increase-performance.rst -> locust-2.2.2.dev34/docs\ncopying docs/index.rst -> locust-2.2.2.dev34/docs\ncopying 
+docs/installation.rst -> locust-2.2.2.dev34/docs\ncopying docs/logging.rst -> locust-2.2.2.dev34/docs\ncopying docs/quickstart.rst -> 
+locust-2.2.2.dev34/docs\ncopying docs/requirements.txt -> locust-2.2.2.dev34/docs\ncopying docs/retrieving-stats.rst -> locust-2.2.2.dev34/docs\ncopying 
+docs/running-locust-distributed.rst -> locust-2.2.2.dev34/docs\ncopying docs/running-locust-docker.rst -> locust-2.2.2.dev34/docs\ncopying 
+docs/running-without-web-ui.rst -> locust-2.2.2.dev34/docs\ncopying docs/tasksets.rst -> locust-2.2.2.dev34/docs\ncopying docs/testing-other-systems.rst -> 
+locust-2.2.2.dev34/docs\ncopying docs/testing-requests-based SDK's.rst -> locust-2.2.2.dev34/docs\ncopying docs/use-as-lib.rst -> 
+locust-2.2.2.dev34/docs\ncopying docs/what-is-locust.rst -> locust-2.2.2.dev34/docs\ncopying docs/writing-a-locustfile.rst -> locust-2.2.2.dev34/docs\ncopying
+docs/_static/theme-overrides.css -> locust-2.2.2.dev34/docs/_static\ncopying docs/images/number_of_users.png -> locust-2.2.2.dev34/docs/images\ncopying 
+docs/images/response_times.png -> locust-2.2.2.dev34/docs/images\ncopying docs/images/total_requests_per_second.png -> locust-2.2.2.dev34/docs/images\ncopying
+docs/images/webui-running-statistics.png -> locust-2.2.2.dev34/docs/images\ncopying docs/images/webui-splash-screenshot.png -> 
+locust-2.2.2.dev34/docs/images\ncopying examples/add_command_line_argument.py -> locust-2.2.2.dev34/examples\ncopying examples/basic.py -> 
+locust-2.2.2.dev34/examples\ncopying examples/browse_docs_sequence_test.py -> locust-2.2.2.dev34/examples\ncopying examples/browse_docs_test.py -> 
+locust-2.2.2.dev34/examples\ncopying examples/custom_messages.py -> locust-2.2.2.dev34/examples\ncopying examples/custom_wait_function.py -> 
+locust-2.2.2.dev34/examples\ncopying examples/dynamic_user_credentials.py -> locust-2.2.2.dev34/examples\ncopying examples/events.py -> 
+locust-2.2.2.dev34/examples\ncopying examples/fast_http_locust.py -> locust-2.2.2.dev34/examples\ncopying examples/locustfile.py -> 
+locust-2.2.2.dev34/examples\ncopying examples/manual_stats_reporting.py -> locust-2.2.2.dev34/examples\ncopying examples/multiple_hosts.py -> 
+locust-2.2.2.dev34/examples\ncopying examples/nested_inline_tasksets.py -> locust-2.2.2.dev34/examples\ncopying examples/semaphore_wait.py -> 
+locust-2.2.2.dev34/examples\ncopying examples/stop_on_threshold.py -> locust-2.2.2.dev34/examples\ncopying examples/test_data_management.py -> 
+locust-2.2.2.dev34/examples\ncopying examples/use_as_lib.py -> locust-2.2.2.dev34/examples\ncopying examples/custom_shape/double_wave.py -> 
+locust-2.2.2.dev34/examples/custom_shape\ncopying examples/custom_shape/stages.py -> locust-2.2.2.dev34/examples/custom_shape\ncopying 
+examples/custom_shape/step_load.py -> locust-2.2.2.dev34/examples/custom_shape\ncopying examples/custom_shape/wait_user_count.py -> 
+locust-2.2.2.dev34/examples/custom_shape\ncopying examples/custom_xmlrpc_client/server.py -> locust-2.2.2.dev34/examples/custom_xmlrpc_client\ncopying 
+examples/custom_xmlrpc_client/xmlrpc_locustfile.py -> locust-2.2.2.dev34/examples/custom_xmlrpc_client\ncopying examples/docker-compose/docker-compose.yml -> 
+locust-2.2.2.dev34/examples/docker-compose\ncopying examples/extend_web_ui/extend.py -> locust-2.2.2.dev34/examples/extend_web_ui\ncopying 
+examples/extend_web_ui/static/custom-stats-table.css -> locust-2.2.2.dev34/examples/extend_web_ui/static\ncopying examples/extend_web_ui/static/extend.js -> 
+locust-2.2.2.dev34/examples/extend_web_ui/static\ncopying examples/extend_web_ui/templates/extend.html -> 
+locust-2.2.2.dev34/examples/extend_web_ui/templates\ncopying examples/grpc/hello.proto -> locust-2.2.2.dev34/examples/grpc\ncopying examples/grpc/hello_pb2.py
+-> locust-2.2.2.dev34/examples/grpc\ncopying examples/grpc/hello_pb2_grpc.py -> locust-2.2.2.dev34/examples/grpc\ncopying examples/grpc/hello_server.py -> 
+locust-2.2.2.dev34/examples/grpc\ncopying examples/grpc/locustfile.py -> locust-2.2.2.dev34/examples/grpc\ncopying 
+examples/sdk_session_patching/session_patch_locustfile.py -> locust-2.2.2.dev34/examples/sdk_session_patching\ncopying examples/vagrant/README.md -> 
+locust-2.2.2.dev34/examples/vagrant\ncopying examples/vagrant/supervisord.conf -> locust-2.2.2.dev34/examples/vagrant\ncopying examples/vagrant/vagrant.sh -> 
+locust-2.2.2.dev34/examples/vagrant\ncopying locust/__init__.py -> locust-2.2.2.dev34/locust\ncopying locust/__main__.py -> locust-2.2.2.dev34/locust\ncopying
+locust/_version.py -> locust-2.2.2.dev34/locust\ncopying locust/argument_parser.py -> locust-2.2.2.dev34/locust\ncopying locust/clients.py -> 
+locust-2.2.2.dev34/locust\ncopying locust/dispatch.py -> locust-2.2.2.dev34/locust\ncopying locust/env.py -> locust-2.2.2.dev34/locust\ncopying 
+locust/event.py -> locust-2.2.2.dev34/locust\ncopying locust/exception.py -> locust-2.2.2.dev34/locust\ncopying locust/html.py -> 
+locust-2.2.2.dev34/locust\ncopying locust/input_events.py -> locust-2.2.2.dev34/locust\ncopying locust/log.py -> locust-2.2.2.dev34/locust\ncopying 
+locust/main.py -> locust-2.2.2.dev34/locust\ncopying locust/runners.py -> locust-2.2.2.dev34/locust\ncopying locust/shape.py -> 
+locust-2.2.2.dev34/locust\ncopying locust/stats.py -> locust-2.2.2.dev34/locust\ncopying locust/web.py -> locust-2.2.2.dev34/locust\ncopying 
+locust.egg-info/PKG-INFO -> locust-2.2.2.dev34/locust.egg-info\ncopying locust.egg-info/SOURCES.txt -> locust-2.2.2.dev34/locust.egg-info\ncopying 
+locust.egg-info/dependency_links.txt -> locust-2.2.2.dev34/locust.egg-info\ncopying locust.egg-info/entry_points.txt -> 
+locust-2.2.2.dev34/locust.egg-info\ncopying locust.egg-info/not-zip-safe -> locust-2.2.2.dev34/locust.egg-info\ncopying locust.egg-info/requires.txt -> 
+locust-2.2.2.dev34/locust.egg-info\ncopying locust.egg-info/top_level.txt -> locust-2.2.2.dev34/locust.egg-info\ncopying locust/contrib/__init__.py -> 
+locust-2.2.2.dev34/locust/contrib\ncopying locust/contrib/fasthttp.py -> locust-2.2.2.dev34/locust/contrib\ncopying locust/rpc/__init__.py -> 
+locust-2.2.2.dev34/locust/rpc\ncopying locust/rpc/protocol.py -> locust-2.2.2.dev34/locust/rpc\ncopying locust/rpc/zmqrpc.py -> 
+locust-2.2.2.dev34/locust/rpc\ncopying locust/static/chart.js -> locust-2.2.2.dev34/locust/static\ncopying locust/static/echarts.common.min.js -> 
+locust-2.2.2.dev34/locust/static\ncopying locust/static/jquery-1.11.3.min.js -> locust-2.2.2.dev34/locust/static\ncopying locust/static/jquery.jqote2.min.js 
+-> locust-2.2.2.dev34/locust/static\ncopying locust/static/jquery.tools.min.js -> locust-2.2.2.dev34/locust/static\ncopying locust/static/locust.js -> 
+locust-2.2.2.dev34/locust/static\ncopying locust/static/tasks.js -> locust-2.2.2.dev34/locust/static\ncopying locust/static/vintage.js -> 
+locust-2.2.2.dev34/locust/static\ncopying locust/static/css/application.css -> locust-2.2.2.dev34/locust/static/css\ncopying 
+locust/static/css/application.css.map -> locust-2.2.2.dev34/locust/static/css\ncopying locust/static/css/tables.css -> 
+locust-2.2.2.dev34/locust/static/css\ncopying locust/static/css/tables.css.map -> locust-2.2.2.dev34/locust/static/css\ncopying locust/static/img/favicon.ico 
+-> locust-2.2.2.dev34/locust/static/img\ncopying locust/static/img/logo.png -> locust-2.2.2.dev34/locust/static/img\ncopying 
+locust/static/img/ui-screenshot-charts.png -> locust-2.2.2.dev34/locust/static/img\ncopying locust/static/img/ui-screenshot-start-test.png -> 
+locust-2.2.2.dev34/locust/static/img\ncopying locust/static/img/ui-screenshot-stats.png -> locust-2.2.2.dev34/locust/static/img\ncopying 
+locust/static/img/ui-screenshot-workers.png -> locust-2.2.2.dev34/locust/static/img\ncopying locust/static/sass/_base.sass -> 
+locust-2.2.2.dev34/locust/static/sass\ncopying locust/static/sass/_mixins.sass -> locust-2.2.2.dev34/locust/static/sass\ncopying 
+locust/static/sass/application.sass -> locust-2.2.2.dev34/locust/static/sass\ncopying locust/static/sass/tables.sass -> 
+locust-2.2.2.dev34/locust/static/sass\ncopying locust/templates/index.html -> locust-2.2.2.dev34/locust/templates\ncopying locust/templates/report.html -> 
+locust-2.2.2.dev34/locust/templates\ncopying locust/templates/stats_data.html -> locust-2.2.2.dev34/locust/templates\ncopying locust/test/__init__.py -> 
+locust-2.2.2.dev34/locust/test\ncopying locust/test/fake_module1_for_env_test.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/fake_module2_for_env_test.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/mock_locustfile.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/mock_logging.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/test_dispatch.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/test_env.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/test_fasthttp.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/test_http.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/test_locust_class.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/test_log.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/test_main.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/test_old_wait_api.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/test_parser.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/test_runners.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/test_sequential_taskset.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/test_stats.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/test_tags.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/test_taskratio.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/test_users.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/test_util.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/test_wait_time.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/test_web.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/test_zmqrpc.py -> locust-2.2.2.dev34/locust/test\ncopying 
+locust/test/testcases.py -> locust-2.2.2.dev34/locust/test\ncopying locust/test/util.py -> locust-2.2.2.dev34/locust/test\ncopying locust/user/__init__.py -> 
+locust-2.2.2.dev34/locust/user\ncopying locust/user/inspectuser.py -> locust-2.2.2.dev34/locust/user\ncopying locust/user/sequential_taskset.py -> 
+locust-2.2.2.dev34/locust/user\ncopying locust/user/task.py -> locust-2.2.2.dev34/locust/user\ncopying locust/user/users.py -> 
+locust-2.2.2.dev34/locust/user\ncopying locust/user/wait_time.py -> locust-2.2.2.dev34/locust/user\ncopying locust/util/__init__.py -> 
+locust-2.2.2.dev34/locust/util\ncopying locust/util/cache.py -> locust-2.2.2.dev34/locust/util\ncopying locust/util/deprecation.py -> 
+locust-2.2.2.dev34/locust/util\ncopying locust/util/exception_handler.py -> locust-2.2.2.dev34/locust/util\ncopying locust/util/rounding.py -> 
+locust-2.2.2.dev34/locust/util\ncopying locust/util/timespan.py -> locust-2.2.2.dev34/locust/util\ncopying scripts/locustfile.py -> 
+locust-2.2.2.dev34/scripts\ncopying scripts/run-disributed-headless.sh -> locust-2.2.2.dev34/scripts\ncopying scripts/run-disributed-web.sh -> 
+locust-2.2.2.dev34/scripts\ncopying scripts/run-local-headless.sh -> locust-2.2.2.dev34/scripts\ncopying scripts/run-local-web.sh -> 
+locust-2.2.2.dev34/scripts\nWriting locust-2.2.2.dev34/setup.cfg\ncreating '.tox/dist/locust-2.2.2.dev34.zip' and adding 'locust-2.2.2.dev34' to it\nadding 
+'locust-2.2.2.dev34'\nadding 'locust-2.2.2.dev34/locust.egg-info'\nadding 'locust-2.2.2.dev34/locust'\nadding 'locust-2.2.2.dev34/docs'\nadding 
+'locust-2.2.2.dev34/examples'\nadding 'locust-2.2.2.dev34/benchmarks'\nadding 'locust-2.2.2.dev34/scripts'\nadding 'locust-2.2.2.dev34/.github'\nadding 
+'locust-2.2.2.dev34/.vscode'\nadding 'locust-2.2.2.dev34/.git-blame-ignore-revs'\nadding 'locust-2.2.2.dev34/PKG-INFO'\nadding 
+'locust-2.2.2.dev34/codecov.yml'\nadding 'locust-2.2.2.dev34/LICENSE'\nadding 'locust-2.2.2.dev34/CHANGELOG.md'\nadding 
+'locust-2.2.2.dev34/Dockerfile'\nadding 'locust-2.2.2.dev34/Makefile'\nadding 'locust-2.2.2.dev34/generate_changelog.py'\nadding 
+'locust-2.2.2.dev34/pyproject.toml'\nadding 'locust-2.2.2.dev34/MANIFEST.in'\nadding 'locust-2.2.2.dev34/.coveragerc'\nadding 
+'locust-2.2.2.dev34/.readthedocs.yml'\nadding 'locust-2.2.2.dev34/README'\nadding 'locust-2.2.2.dev34/README.md'\nadding 'locust-2.2.2.dev34/setup.py'\nadding
+'locust-2.2.2.dev34/.dockerignore'\nadding 'locust-2.2.2.dev34/.gitignore'\nadding 'locust-2.2.2.dev34/tox.ini'\nadding 
+'locust-2.2.2.dev34/.gitattributes'\nadding 'locust-2.2.2.dev34/Vagrantfile'\nadding 'locust-2.2.2.dev34/setup.cfg'\nadding 
+'locust-2.2.2.dev34/locust.egg-info/PKG-INFO'\nadding 'locust-2.2.2.dev34/locust.egg-info/not-zip-safe'\nadding 
+'locust-2.2.2.dev34/locust.egg-info/SOURCES.txt'\nadding 'locust-2.2.2.dev34/locust.egg-info/entry_points.txt'\nadding 
+'locust-2.2.2.dev34/locust.egg-info/requires.txt'\nadding 'locust-2.2.2.dev34/locust.egg-info/top_level.txt'\nadding 
+'locust-2.2.2.dev34/locust.egg-info/dependency_links.txt'\nadding 'locust-2.2.2.dev34/locust/test'\nadding 'locust-2.2.2.dev34/locust/util'\nadding 
+'locust-2.2.2.dev34/locust/user'\nadding 'locust-2.2.2.dev34/locust/contrib'\nadding 'locust-2.2.2.dev34/locust/static'\nadding 
+'locust-2.2.2.dev34/locust/templates'\nadding 'locust-2.2.2.dev34/locust/rpc'\nadding 'locust-2.2.2.dev34/locust/exception.py'\nadding 
+'locust-2.2.2.dev34/locust/event.py'\nadding 'locust-2.2.2.dev34/locust/web.py'\nadding 'locust-2.2.2.dev34/locust/env.py'\nadding 
+'locust-2.2.2.dev34/locust/_version.py'\nadding 'locust-2.2.2.dev34/locust/log.py'\nadding 'locust-2.2.2.dev34/locust/input_events.py'\nadding 
+'locust-2.2.2.dev34/locust/dispatch.py'\nadding 'locust-2.2.2.dev34/locust/html.py'\nadding 'locust-2.2.2.dev34/locust/__init__.py'\nadding 
+'locust-2.2.2.dev34/locust/stats.py'\nadding 'locust-2.2.2.dev34/locust/clients.py'\nadding 'locust-2.2.2.dev34/locust/runners.py'\nadding 
+'locust-2.2.2.dev34/locust/shape.py'\nadding 'locust-2.2.2.dev34/locust/main.py'\nadding 'locust-2.2.2.dev34/locust/__main__.py'\nadding 
+'locust-2.2.2.dev34/locust/argument_parser.py'\nadding 'locust-2.2.2.dev34/locust/test/test_parser.py'\nadding 
+'locust-2.2.2.dev34/locust/test/test_dispatch.py'\nadding 'locust-2.2.2.dev34/locust/test/fake_module1_for_env_test.py'\nadding 
+'locust-2.2.2.dev34/locust/test/mock_logging.py'\nadding 'locust-2.2.2.dev34/locust/test/test_stats.py'\nadding 
+'locust-2.2.2.dev34/locust/test/test_wait_time.py'\nadding 'locust-2.2.2.dev34/locust/test/test_tags.py'\nadding 
+'locust-2.2.2.dev34/locust/test/util.py'\nadding 'locust-2.2.2.dev34/locust/test/test_web.py'\nadding 
+'locust-2.2.2.dev34/locust/test/mock_locustfile.py'\nadding 'locust-2.2.2.dev34/locust/test/__init__.py'\nadding 
+'locust-2.2.2.dev34/locust/test/test_old_wait_api.py'\nadding 'locust-2.2.2.dev34/locust/test/test_env.py'\nadding 
+'locust-2.2.2.dev34/locust/test/test_util.py'\nadding 'locust-2.2.2.dev34/locust/test/test_log.py'\nadding 
+'locust-2.2.2.dev34/locust/test/test_zmqrpc.py'\nadding 'locust-2.2.2.dev34/locust/test/test_runners.py'\nadding 
+'locust-2.2.2.dev34/locust/test/test_taskratio.py'\nadding 'locust-2.2.2.dev34/locust/test/test_http.py'\nadding 
+'locust-2.2.2.dev34/locust/test/test_sequential_taskset.py'\nadding 'locust-2.2.2.dev34/locust/test/test_users.py'\nadding 
+'locust-2.2.2.dev34/locust/test/testcases.py'\nadding 'locust-2.2.2.dev34/locust/test/fake_module2_for_env_test.py'\nadding 
+'locust-2.2.2.dev34/locust/test/test_locust_class.py'\nadding 'locust-2.2.2.dev34/locust/test/test_fasthttp.py'\nadding 
+'locust-2.2.2.dev34/locust/test/test_main.py'\nadding 'locust-2.2.2.dev34/locust/util/deprecation.py'\nadding 
+'locust-2.2.2.dev34/locust/util/rounding.py'\nadding 'locust-2.2.2.dev34/locust/util/cache.py'\nadding 'locust-2.2.2.dev34/locust/util/__init__.py'\nadding 
+'locust-2.2.2.dev34/locust/util/timespan.py'\nadding 'locust-2.2.2.dev34/locust/util/exception_handler.py'\nadding 
+'locust-2.2.2.dev34/locust/user/task.py'\nadding 'locust-2.2.2.dev34/locust/user/users.py'\nadding 'locust-2.2.2.dev34/locust/user/__init__.py'\nadding 
+'locust-2.2.2.dev34/locust/user/inspectuser.py'\nadding 'locust-2.2.2.dev34/locust/user/sequential_taskset.py'\nadding 
+'locust-2.2.2.dev34/locust/user/wait_time.py'\nadding 'locust-2.2.2.dev34/locust/contrib/__init__.py'\nadding 
+'locust-2.2.2.dev34/locust/contrib/fasthttp.py'\nadding 'locust-2.2.2.dev34/locust/static/css'\nadding 'locust-2.2.2.dev34/locust/static/img'\nadding 
+'locust-2.2.2.dev34/locust/static/sass'\nadding 'locust-2.2.2.dev34/locust/static/jquery-1.11.3.min.js'\nadding 
+'locust-2.2.2.dev34/locust/static/chart.js'\nadding 'locust-2.2.2.dev34/locust/static/jquery.jqote2.min.js'\nadding 
+'locust-2.2.2.dev34/locust/static/echarts.common.min.js'\nadding 'locust-2.2.2.dev34/locust/static/tasks.js'\nadding 
+'locust-2.2.2.dev34/locust/static/jquery.tools.min.js'\nadding 'locust-2.2.2.dev34/locust/static/locust.js'\nadding 
+'locust-2.2.2.dev34/locust/static/vintage.js'\nadding 'locust-2.2.2.dev34/locust/static/css/application.css'\nadding 
+'locust-2.2.2.dev34/locust/static/css/tables.css.map'\nadding 'locust-2.2.2.dev34/locust/static/css/application.css.map'\nadding 
+'locust-2.2.2.dev34/locust/static/css/tables.css'\nadding 'locust-2.2.2.dev34/locust/static/img/favicon.ico'\nadding 
+'locust-2.2.2.dev34/locust/static/img/ui-screenshot-charts.png'\nadding 'locust-2.2.2.dev34/locust/static/img/ui-screenshot-start-test.png'\nadding 
+'locust-2.2.2.dev34/locust/static/img/ui-screenshot-workers.png'\nadding 'locust-2.2.2.dev34/locust/static/img/logo.png'\nadding 
+'locust-2.2.2.dev34/locust/static/img/ui-screenshot-stats.png'\nadding 'locust-2.2.2.dev34/locust/static/sass/tables.sass'\nadding 
+'locust-2.2.2.dev34/locust/static/sass/_mixins.sass'\nadding 'locust-2.2.2.dev34/locust/static/sass/_base.sass'\nadding 
+'locust-2.2.2.dev34/locust/static/sass/application.sass'\nadding 'locust-2.2.2.dev34/locust/templates/stats_data.html'\nadding 
+'locust-2.2.2.dev34/locust/templates/index.html'\nadding 'locust-2.2.2.dev34/locust/templates/report.html'\nadding 
+'locust-2.2.2.dev34/locust/rpc/zmqrpc.py'\nadding 'locust-2.2.2.dev34/locust/rpc/protocol.py'\nadding 'locust-2.2.2.dev34/locust/rpc/__init__.py'\nadding 
+'locust-2.2.2.dev34/docs/images'\nadding 'locust-2.2.2.dev34/docs/_static'\nadding 'locust-2.2.2.dev34/docs/what-is-locust.rst'\nadding 
+'locust-2.2.2.dev34/docs/index.rst'\nadding 'locust-2.2.2.dev34/docs/tasksets.rst'\nadding 'locust-2.2.2.dev34/docs/requirements.txt'\nadding 
+'locust-2.2.2.dev34/docs/testing-requests-based SDK's.rst'\nadding 'locust-2.2.2.dev34/docs/running-without-web-ui.rst'\nadding 
+'locust-2.2.2.dev34/docs/extending-locust.rst'\nadding 'locust-2.2.2.dev34/docs/custom-load-shape.rst'\nadding 
+'locust-2.2.2.dev34/docs/running-locust-docker.rst'\nadding 'locust-2.2.2.dev34/docs/configuration.rst'\nadding 'locust-2.2.2.dev34/docs/conf.py'\nadding 
+'locust-2.2.2.dev34/docs/testing-other-systems.rst'\nadding 'locust-2.2.2.dev34/docs/running-locust-distributed.rst'\nadding 
+'locust-2.2.2.dev34/docs/use-as-lib.rst'\nadding 'locust-2.2.2.dev34/docs/writing-a-locustfile.rst'\nadding 
+'locust-2.2.2.dev34/docs/increase-performance.rst'\nadding 'locust-2.2.2.dev34/docs/quickstart.rst'\nadding 
+'locust-2.2.2.dev34/docs/retrieving-stats.rst'\nadding 'locust-2.2.2.dev34/docs/history.rst'\nadding 'locust-2.2.2.dev34/docs/installation.rst'\nadding 
+'locust-2.2.2.dev34/docs/further-reading.rst'\nadding 'locust-2.2.2.dev34/docs/developing-locust.rst'\nadding 'locust-2.2.2.dev34/docs/logging.rst'\nadding 
+'locust-2.2.2.dev34/docs/changelog.rst'\nadding 'locust-2.2.2.dev34/docs/api.rst'\nadding 'locust-2.2.2.dev34/docs/images/webui-splash-screenshot.png'\nadding
+'locust-2.2.2.dev34/docs/images/webui-running-statistics.png'\nadding 'locust-2.2.2.dev34/docs/images/number_of_users.png'\nadding 
+'locust-2.2.2.dev34/docs/images/response_times.png'\nadding 'locust-2.2.2.dev34/docs/images/total_requests_per_second.png'\nadding 
+'locust-2.2.2.dev34/docs/_static/theme-overrides.css'\nadding 'locust-2.2.2.dev34/examples/custom_xmlrpc_client'\nadding 
+'locust-2.2.2.dev34/examples/grpc'\nadding 'locust-2.2.2.dev34/examples/vagrant'\nadding 'locust-2.2.2.dev34/examples/extend_web_ui'\nadding 
+'locust-2.2.2.dev34/examples/custom_shape'\nadding 'locust-2.2.2.dev34/examples/sdk_session_patching'\nadding 
+'locust-2.2.2.dev34/examples/docker-compose'\nadding 'locust-2.2.2.dev34/examples/nested_inline_tasksets.py'\nadding 
+'locust-2.2.2.dev34/examples/semaphore_wait.py'\nadding 'locust-2.2.2.dev34/examples/fast_http_locust.py'\nadding 
+'locust-2.2.2.dev34/examples/locustfile.py'\nadding 'locust-2.2.2.dev34/examples/custom_messages.py'\nadding 
+'locust-2.2.2.dev34/examples/stop_on_threshold.py'\nadding 'locust-2.2.2.dev34/examples/events.py'\nadding 'locust-2.2.2.dev34/examples/use_as_lib.py'\nadding
+'locust-2.2.2.dev34/examples/manual_stats_reporting.py'\nadding 'locust-2.2.2.dev34/examples/test_data_management.py'\nadding 
+'locust-2.2.2.dev34/examples/custom_wait_function.py'\nadding 'locust-2.2.2.dev34/examples/dynamic_user_credentials.py'\nadding 
+'locust-2.2.2.dev34/examples/basic.py'\nadding 'locust-2.2.2.dev34/examples/add_command_line_argument.py'\nadding 
+'locust-2.2.2.dev34/examples/browse_docs_test.py'\nadding 'locust-2.2.2.dev34/examples/browse_docs_sequence_test.py'\nadding 
+'locust-2.2.2.dev34/examples/multiple_hosts.py'\nadding 'locust-2.2.2.dev34/examples/custom_xmlrpc_client/xmlrpc_locustfile.py'\nadding 
+'locust-2.2.2.dev34/examples/custom_xmlrpc_client/server.py'\nadding 'locust-2.2.2.dev34/examples/grpc/locustfile.py'\nadding 
+'locust-2.2.2.dev34/examples/grpc/hello_server.py'\nadding 'locust-2.2.2.dev34/examples/grpc/hello_pb2_grpc.py'\nadding 
+'locust-2.2.2.dev34/examples/grpc/hello.proto'\nadding 'locust-2.2.2.dev34/examples/grpc/hello_pb2.py'\nadding 
+'locust-2.2.2.dev34/examples/vagrant/README.md'\nadding 'locust-2.2.2.dev34/examples/vagrant/supervisord.conf'\nadding 
+'locust-2.2.2.dev34/examples/vagrant/vagrant.sh'\nadding 'locust-2.2.2.dev34/examples/extend_web_ui/static'\nadding 
+'locust-2.2.2.dev34/examples/extend_web_ui/templates'\nadding 'locust-2.2.2.dev34/examples/extend_web_ui/extend.py'\nadding 
+'locust-2.2.2.dev34/examples/extend_web_ui/static/extend.js'\nadding 'locust-2.2.2.dev34/examples/extend_web_ui/static/custom-stats-table.css'\nadding 
+'locust-2.2.2.dev34/examples/extend_web_ui/templates/extend.html'\nadding 'locust-2.2.2.dev34/examples/custom_shape/wait_user_count.py'\nadding 
+'locust-2.2.2.dev34/examples/custom_shape/step_load.py'\nadding 'locust-2.2.2.dev34/examples/custom_shape/stages.py'\nadding 
+'locust-2.2.2.dev34/examples/custom_shape/double_wave.py'\nadding 'locust-2.2.2.dev34/examples/sdk_session_patching/session_patch_locustfile.py'\nadding 
+'locust-2.2.2.dev34/examples/docker-compose/docker-compose.yml'\nadding 'locust-2.2.2.dev34/benchmarks/dispatch.py'\nadding 
+'locust-2.2.2.dev34/scripts/run-disributed-headless.sh'\nadding 'locust-2.2.2.dev34/scripts/locustfile.py'\nadding 
+'locust-2.2.2.dev34/scripts/run-local-headless.sh'\nadding 'locust-2.2.2.dev34/scripts/run-local-web.sh'\nadding 
+'locust-2.2.2.dev34/scripts/run-disributed-web.sh'\nadding 'locust-2.2.2.dev34/.github/workflows'\nadding 'locust-2.2.2.dev34/.github/ISSUE_TEMPLATE'\nadding 
+'locust-2.2.2.dev34/.github/CONTRIBUTING.md'\nadding 'locust-2.2.2.dev34/.github/workflows/stale.yml'\nadding 
+'locust-2.2.2.dev34/.github/workflows/tests.yml'\nadding 'locust-2.2.2.dev34/.github/ISSUE_TEMPLATE/feature_request.md'\nadding 
+'locust-2.2.2.dev34/.github/ISSUE_TEMPLATE/bug_report.md'\nadding 'locust-2.2.2.dev34/.github/ISSUE_TEMPLATE/config.yml'\nadding 
+'locust-2.2.2.dev34/.vscode/settings.json'\nadding 'locust-2.2.2.dev34/.vscode/launch.json'\nremoving 'locust-2.2.2.dev34' (and everything under it)\n",
+            'retcode': 0
+        }
+    ],
+    'testenvs': {
+        'py39': {
+            'setup': [
+                {
+                    'command': [
+                        '/Users/thierryyge/data/qe/loadtest/locust/.tox/py39/bin/python',
+                        '-m',
+                        'pip',
+                        'install',
+                        '--no-deps',
+                        '-U',
+                        '.tox/.tmp/package/1/locust-2.2.2.dev34.zip'
+                    ],
+                    'output': "Processing ./.tox/.tmp/package/1/locust-2.2.2.dev34.zip\n  Installing build dependencies: started\n  Installing build 
+dependencies: finished with status 'done'\n  Getting requirements to build wheel: started\n  Getting requirements to build wheel: finished with status 
+'done'\n  Installing backend dependencies: started\n  Installing backend dependencies: finished with status 'done'\n    Preparing wheel metadata: started\n   
+Preparing wheel metadata: finished with status 'done'\nBuilding wheels for collected packages: locust\n  Building wheel for locust (PEP 517): started\n  
+Building wheel for locust (PEP 517): finished with status 'done'\n  Created wheel for locust: filename=locust-2.2.2.dev34-py3-none-any.whl size=792899 
+sha256=a082f442382c1104c371780fe0e337225737fba5c2dca74e2844de7fc3350f3d\n  Stored in directory: 
+/Users/thierryyge/Library/Caches/pip/wheels/94/f8/94/31cd99d1b60be6b2cc368084b442f8201a0011274d7ccec1e7\nSuccessfully built locust\nInstalling collected 
+packages: locust\n  Attempting uninstall: locust\n    Found existing installation: locust 2.2.2.dev34\n    Uninstalling locust-2.2.2.dev34:\n      
+Successfully uninstalled locust-2.2.2.dev34\nSuccessfully installed locust-2.2.2.dev34\nWARNING: You are using pip version 21.2.3; however, version 21.2.4 is 
+available.\nYou should consider upgrading via the '/Users/thierryyge/data/qe/loadtest/locust/.tox/py39/bin/python -m pip install --upgrade pip' command.\n",
+                    'retcode': 0
+                },
+                {
+                    'command': ['/Users/thierryyge/data/qe/loadtest/locust/.tox/py39/bin/python', '-m', 'pip', 'freeze'],
+                    'output': 'appdirs==1.4.4\nblack==21.5b2\nBrotli==1.0.9\ncertifi==2021.5.30\ncffi==1.14.6\ncharset-normalizer==2.0.4\nclick==8.0.1\ncodeco
+v==2.1.12\nConfigArgParse==1.5.2\ncoverage==5.5\ncryptography==3.4.8\ncssselect==1.1.0\nflake8==3.9.2\nFlask==2.0.1\nFlask-BasicAuth==0.2.0\nFlask-Cors==3.0.1
+0\ngevent==21.8.0\ngeventhttpclient==1.5.1\ngreenlet==1.1.1\nidna==3.2\nitsdangerous==2.0.1\nJinja2==3.0.1\nlocust @ file:///Users/thierryyge/data/qe/loadtest
+/locust/.tox/.tmp/package/1/locust-2.2.2.dev34.zip\nlxml==4.6.3\nMarkupSafe==2.0.1\nmccabe==0.6.1\nmock==4.0.3\nmsgpack==1.0.2\nmypy-extensions==0.4.3\npathsp
+ec==0.9.0\npsutil==5.8.0\npycodestyle==2.7.0\npycparser==2.20\npyflakes==2.3.1\npyquery==1.4.3\npyzmq==22.2.1\nregex==2021.8.28\nrequests==2.26.0\nroundrobin=
+=0.0.2\nsix==1.16.0\ntoml==0.10.2\nurllib3==1.26.6\nWerkzeug==2.0.1\nzope.event==4.5.0\nzope.interface==5.4.0\n',
+                    'retcode': 0
+                }
+            ],
+            'python': {
+                'executable': '/Users/thierryyge/data/qe/loadtest/locust/.tox/py39/bin/python',
+                'implementation': 'CPython',
+                'version_info': [3, 9, 6, 'final', 0],
+                'version': '3.9.6 (default, Aug 28 2021, 06:25:23) \n[Clang 12.0.5 (clang-1205.0.22.11)]',
+                'is_64': True,
+                'sysplatform': 'darwin',
+                'os_sep': '/',
+                'extra_version_info': None
+            },
+            'installpkg': {'sha256': '8fd31f4677696dab0aab2b01cb8c53beec37c424cea3abbcf3cede978101a8ed', 'basename': 'locust-2.2.2.dev34.zip'},
+            'installed_packages': [
+                'appdirs==1.4.4',
+                'black==21.5b2',
+                'Brotli==1.0.9',
+                'certifi==2021.5.30',
+                'cffi==1.14.6',
+                'charset-normalizer==2.0.4',
+                'click==8.0.1',
+                'codecov==2.1.12',
+                'ConfigArgParse==1.5.2',
+                'coverage==5.5',
+                'cryptography==3.4.8',
+                'cssselect==1.1.0',
+                'flake8==3.9.2',
+                'Flask==2.0.1',
+                'Flask-BasicAuth==0.2.0',
+                'Flask-Cors==3.0.10',
+                'gevent==21.8.0',
+                'geventhttpclient==1.5.1',
+                'greenlet==1.1.1',
+                'idna==3.2',
+                'itsdangerous==2.0.1',
+                'Jinja2==3.0.1',
+                'locust @ file:///Users/thierryyge/data/qe/loadtest/locust/.tox/.tmp/package/1/locust-2.2.2.dev34.zip',
+                'lxml==4.6.3',
+                'MarkupSafe==2.0.1',
+                'mccabe==0.6.1',
+                'mock==4.0.3',
+                'msgpack==1.0.2',
+                'mypy-extensions==0.4.3',
+                'pathspec==0.9.0',
+                'psutil==5.8.0',
+                'pycodestyle==2.7.0',
+                'pycparser==2.20',
+                'pyflakes==2.3.1',
+                'pyquery==1.4.3',
+                'pyzmq==22.2.1',
+                'regex==2021.8.28',
+                'requests==2.26.0',
+                'roundrobin==0.0.2',
+                'six==1.16.0',
+                'toml==0.10.2',
+                'urllib3==1.26.6',
+                'Werkzeug==2.0.1',
+                'zope.event==4.5.0',
+                'zope.interface==5.4.0'
+            ],
+            'test': [
+                {
+                    'command': ['/Users/thierryyge/data/qe/loadtest/locust/.tox/py39/bin/flake8', '.', '--count', '--show-source', '--statistics'],
+                    'output': None,
+                    'retcode': 0
+                },
+                {
+                    'command': ['/Users/thierryyge/data/qe/loadtest/locust/.tox/py39/bin/coverage', 'run', '-m', 'unittest', 'discover'],
+                    'output': None,
+                    'retcode': 0
+                },
+                {'command': ['/Users/thierryyge/data/qe/loadtest/locust/.tox/py39/bin/black', '--check', '.'], 'output': None, 'retcode': 0}
+            ]
+        }
+    }
+}
+Recording stopped
+
+
+ +