diff --git a/CHANGELOG.md b/CHANGELOG.md index 90167e5712..09e02392a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,7 +37,7 @@ **Fixed bugs:** -- autoscaling slaves resets users [\#1143](https://github.com/locustio/locust/issues/1143) +- autoscaling drones resets users [\#1143](https://github.com/locustio/locust/issues/1143) - Repeated secure requests with FastHttpLocust crashes in cookie management [\#1138](https://github.com/locustio/locust/issues/1138) - FastHttpLocust gives ssl error with let's encrypt certs [\#1137](https://github.com/locustio/locust/issues/1137) - stop\_timeout defined in Locust class takes precedence over --run-time option [\#1117](https://github.com/locustio/locust/issues/1117) @@ -52,7 +52,7 @@ - Stop locusts graceful [\#1062](https://github.com/locustio/locust/issues/1062) - could we report 99.9% percentile in CSV file? [\#1040](https://github.com/locustio/locust/issues/1040) - Provide an official Docker image [\#849](https://github.com/locustio/locust/issues/849) -- Number of Users Dependent on Number of slaves ? [\#724](https://github.com/locustio/locust/issues/724) +- Number of Users Dependent on Number of drones ? [\#724](https://github.com/locustio/locust/issues/724) - Allow a fixed RPS rate [\#646](https://github.com/locustio/locust/issues/646) - nitpick: "\# requests" should be "\# successful requests"? [\#145](https://github.com/locustio/locust/issues/145) - Display percentiles in the UI instead of just min, max and average [\#140](https://github.com/locustio/locust/issues/140) @@ -90,7 +90,7 @@ - Exceptions tab not working for on\_start method [\#269](https://github.com/locustio/locust/issues/269) - Percentile response time anomalies at 100% [\#254](https://github.com/locustio/locust/issues/254) - log.py's StdErrWrapper swallows fatal stacktraces [\#163](https://github.com/locustio/locust/issues/163) -- Slave count doesn't get updated in the UI if no more slaves are alive [\#62](https://github.com/locustio/locust/issues/62) +- Slave count doesn't get updated in the UI if no more drones are alive [\#62](https://github.com/locustio/locust/issues/62) **Closed issues:** @@ -109,7 +109,7 @@ - locust's statistic collect N/A records [\#626](https://github.com/locustio/locust/issues/626) - how to make all locust users wait after executing on\_start method ? [\#611](https://github.com/locustio/locust/issues/611) - EventHook\(\) fired when locust user has stopped [\#604](https://github.com/locustio/locust/issues/604) -- Is there a way to de-register slave with master on a slave node shutdown? [\#603](https://github.com/locustio/locust/issues/603) +- Is there a way to de-register drone with master on a node shutdown? [\#603](https://github.com/locustio/locust/issues/603) - Unable to Stop locust from Web interface occasionally [\#602](https://github.com/locustio/locust/issues/602) - no-web performance data saved [\#601](https://github.com/locustio/locust/issues/601) - Can you add or can I create a Pull Request to accept a command line option that would enable ALL events \(http requests\) to be logged to a file/location? [\#576](https://github.com/locustio/locust/issues/576) diff --git a/docker_start.sh b/docker_start.sh index a1618d3327..990f9aace2 100644 --- a/docker_start.sh +++ b/docker_start.sh @@ -10,13 +10,13 @@ _LOCUST_OPTS="-f ${LOCUSTFILE_PATH:-/locustfile.py} -H ${TARGET_URL}" if [ "${LOCUST_MODE}" = "master" ]; then _LOCUST_OPTS="${_LOCUST_OPTS} --master" -elif [ "${LOCUST_MODE}" = "slave" ]; then +elif [ "${LOCUST_MODE}" = "drone" ]; then if [ -z "${LOCUST_MASTER_HOST}" ]; then - echo "ERROR: MASTER_HOST is empty. Slave mode requires a master" >&2 + echo "ERROR: MASTER_HOST is empty. Drone mode requires a master" >&2 exit 1 fi - _LOCUST_OPTS="${_LOCUST_OPTS} --slave --master-host=${LOCUST_MASTER_HOST} --master-port=${LOCUST_MASTER_PORT:-5557}" + _LOCUST_OPTS="${_LOCUST_OPTS} --drone --master-host=${LOCUST_MASTER_HOST} --master-port=${LOCUST_MASTER_PORT:-5557}" fi echo "Starting Locust in ${LOCUST_MODE} mode..." diff --git a/docs/quickstart.rst b/docs/quickstart.rst index 35232bc8df..5d62a7abb7 100644 --- a/docs/quickstart.rst +++ b/docs/quickstart.rst @@ -131,20 +131,20 @@ To run Locust distributed across multiple processes we would start a master proc $ locust -f locust_files/my_locust_file.py --master -and then we would start an arbitrary number of slave processes: +and then we would start an arbitrary number of drone processes: .. code-block:: console - $ locust -f locust_files/my_locust_file.py --slave + $ locust -f locust_files/my_locust_file.py --drone If we want to run Locust distributed on multiple machines we would also have to specify the master host when -starting the slaves (this is not needed when running Locust distributed on a single machine, since the master +starting the drones (this is not needed when running Locust distributed on a single machine, since the master host defaults to 127.0.0.1): .. code-block:: console - $ locust -f locust_files/my_locust_file.py --slave --master-host=192.168.0.100 + $ locust -f locust_files/my_locust_file.py --drone --master-host=192.168.0.100 Parameters can also be set in a `config file `_ (locust.conf or ~/.locust.conf) or in env vars, prefixed by LOCUST\_ diff --git a/docs/running-locust-distributed.rst b/docs/running-locust-distributed.rst index c9071056d6..8edfda68ee 100644 --- a/docs/running-locust-distributed.rst +++ b/docs/running-locust-distributed.rst @@ -10,24 +10,24 @@ running load tests distributed across multiple machines. To do this, you start one instance of Locust in master mode using the ``--master`` flag. This is the instance that will be running Locust's web interface where you start the test and see live statistics. The master node doesn't simulate any users itself. Instead you have to start one or -—most likely—multiple slave Locust nodes using the ``--slave`` flag, together with the +—most likely—multiple drone Locust nodes using the ``--drone`` flag, together with the ``--master-host`` (to specify the IP/hostname of the master node). -A common set up is to run a single master on one machine, and then run one slave instance per -processor core, on the slave machines. +A common set up is to run a single master on one machine, and then run one drone instance per +processor core, on the drone machines. .. note:: - Both the master and each slave machine, must have a copy of the locust test scripts + Both the master and each drone machine, must have a copy of the locust test scripts when running Locust distributed. .. note:: It's recommended that you start a number of simulated users that are greater than - ``number of locust classes * number of slaves`` when running Locust distributed. + ``number of locust classes * number of drones`` when running Locust distributed. Otherwise - due to the current implementation - you might end up with a distribution of the Locust classes that doesn't correspond to the - Locust classes' ``weight`` attribute. And if the hatch rate is lower than the number of slave - nodes, the hatching would occur in "bursts" where all slave node would hatch a single user and + Locust classes' ``weight`` attribute. And if the hatch rate is lower than the number of drone + nodes, the hatching would occur in "bursts" where all drone node would hatch a single user and then sleep for multiple seconds, hatch another user, sleep and repeat. @@ -38,9 +38,9 @@ To start locust in master mode:: locust -f my_locustfile.py --master -And then on each slave (replace ``192.168.0.14`` with IP of the master machine):: +And then on each drone (replace ``192.168.0.14`` with IP of the master machine):: - locust -f my_locustfile.py --slave --master-host=192.168.0.14 + locust -f my_locustfile.py --drone --master-host=192.168.0.14 Options @@ -52,22 +52,22 @@ Options Sets locust in master mode. The web interface will run on this node. -``--slave`` +``--drone`` ----------- -Sets locust in slave mode. +Sets locust in drone mode. ``--master-host=X.X.X.X`` ------------------------- -Optionally used together with ``--slave`` to set the hostname/IP of the master node (defaults +Optionally used together with ``--drone`` to set the hostname/IP of the master node (defaults to 127.0.0.1) ``--master-port=5557`` ---------------------- -Optionally used together with ``--slave`` to set the port number of the master node (defaults to 5557). +Optionally used together with ``--drone`` to set the port number of the master node (defaults to 5557). Note that locust will use the port specified, as well as the port number +1. So if 5557 is used, locust will use both port 5557 and 5558. @@ -84,10 +84,10 @@ Optionally used together with ``--master``. Determines what network ports that t listen to. Defaults to 5557. Note that locust will use the port specified, as well as the port number +1. So if 5557 is used, locust will use both port 5557 and 5558. -``--expect-slaves=X`` +``--expect-drones=X`` --------------------- -Used when starting the master node with ``--no-web``. The master node will then wait until X slave +Used when starting the master node with ``--no-web``. The master node will then wait until X drone nodes has connected before the test is started. diff --git a/docs/running-locust-docker.rst b/docs/running-locust-docker.rst index 37a3f44ef9..a7027d0b81 100644 --- a/docs/running-locust-docker.rst +++ b/docs/running-locust-docker.rst @@ -4,14 +4,14 @@ Running Locust with Docker ================================= -To keep things simple we provide a single Docker image that can run standalone, as a master, or as a slave. +To keep things simple we provide a single Docker image that can run standalone, as a master, or as a drone. Environment Variables --------------------------------------------- - ``LOCUST_MODE`` -One of 'standalone', 'master', or 'slave'. Defaults to 'standalone'. +One of 'standalone', 'master', or 'drone'. Defaults to 'standalone'. - ``LOCUSTFILE_PATH`` diff --git a/docs/running-locust-without-web-ui.rst b/docs/running-locust-without-web-ui.rst index 3b83963545..0e59dc8917 100644 --- a/docs/running-locust-without-web-ui.rst +++ b/docs/running-locust-without-web-ui.rst @@ -37,7 +37,7 @@ Running Locust distributed without the web UI --------------------------------------------- If you want to :ref:`run Locust distributed ` without the web UI, -you should specify the ``--expect-slaves`` option when starting the master node, to specify -the number of slave nodes that are expected to connect. It will then wait until that many slave +you should specify the ``--expect-drones`` option when starting the master node, to specify +the number of drone nodes that are expected to connect. It will then wait until that many drone nodes have connected before starting the test. diff --git a/docs/third-party-tools.rst b/docs/third-party-tools.rst index 4c8899383b..6c440e0899 100644 --- a/docs/third-party-tools.rst +++ b/docs/third-party-tools.rst @@ -5,9 +5,9 @@ Third party tools Using other languages ===================== -A Locust master and a Locust slave communicate by exchanging `msgpack `_ messages, which is +A Locust master and a Locust drone communicate by exchanging `msgpack `_ messages, which is supported by many languages. So, you can write your Locust tasks in any languages you like. For convenience, some -libraries do the job as a slave runner. They run your Locust tasks, and report to master regularly. +libraries do the job as a drone runner. They run your Locust tasks, and report to master regularly. Golang diff --git a/examples/docker-compose/docker-compose.yml b/examples/docker-compose/docker-compose.yml index e3de7b5b3c..fb1ee5fc1c 100644 --- a/examples/docker-compose/docker-compose.yml +++ b/examples/docker-compose/docker-compose.yml @@ -17,9 +17,9 @@ services: <<: *common-env LOCUST_MODE: master - locust-slave: + locust-drone: <<: *common environment: <<: *common-env - LOCUST_MODE: slave + LOCUST_MODE: drone LOCUST_MASTER_HOST: locust-master \ No newline at end of file diff --git a/examples/events.py b/examples/events.py index fca5c11673..2b68e02bd9 100644 --- a/examples/events.py +++ b/examples/events.py @@ -27,7 +27,7 @@ class WebsiteUser(HttpLocust): We need somewhere to store the stats. On the master node stats will contain the aggregated sum of all content-lengths, -while on the slave nodes this will be the sum of the content-lengths since the +while on the drone nodes this will be the sum of the content-lengths since the last stats report was sent to the master """ stats = {"content-length":0} @@ -40,17 +40,17 @@ def on_request_success(request_type, name, response_time, response_length): def on_report_to_master(client_id, data): """ - This event is triggered on the slave instances every time a stats report is + This event is triggered on the drone instances every time a stats report is to be sent to the locust master. It will allow us to add our extra content-length - data to the dict that is being sent, and then we clear the local stats in the slave. + data to the dict that is being sent, and then we clear the local stats in the drone. """ data["content-length"] = stats["content-length"] stats["content-length"] = 0 -def on_slave_report(client_id, data): +def on_drone_report(client_id, data): """ This event is triggered on the master instance when a new stats report arrives - from a slave. Here we just add the content-length to the master's aggregated + from a drone. Here we just add the content-length to the master's aggregated stats dict. """ stats["content-length"] += data["content-length"] @@ -58,7 +58,7 @@ def on_slave_report(client_id, data): # Hook up the event listeners events.request_success += on_request_success events.report_to_master += on_report_to_master -events.slave_report += on_slave_report +events.drone_report += on_drone_report @web.app.route("/content-length") def total_content_length(): diff --git a/examples/vagrant/supervisord.conf b/examples/vagrant/supervisord.conf index db42b5daa4..ecd1e436db 100644 --- a/examples/vagrant/supervisord.conf +++ b/examples/vagrant/supervisord.conf @@ -26,11 +26,11 @@ autostart=true directory=/vagrant priority=1 -[program:locustslaves] -command=locust --slave -f examples/basic.py ; TODO host should perhaps be configurable through the web UI -process_name=slave_%(process_num)s +[program:locustdrones] +command=locust --drone -f examples/basic.py ; TODO host should perhaps be configurable through the web UI +process_name=drone_%(process_num)s numprocs=2 numprocs_start=1 autostart=true priority=2 -directory=/vagrant \ No newline at end of file +directory=/vagrant diff --git a/locust/events.py b/locust/events.py index 9679c80430..8c675eeeb6 100644 --- a/locust/events.py +++ b/locust/events.py @@ -71,7 +71,7 @@ def fire(self, reverse=False, **kwargs): report_to_master = EventHook() """ -*report_to_master* is used when Locust is running in --slave mode. It can be used to attach +*report_to_master* is used when Locust is running in --drone mode. It can be used to attach data to the dicts that are regularly sent to the master. It's fired regularly when a report is to be sent to the master server. @@ -83,17 +83,17 @@ def fire(self, reverse=False, **kwargs): * *data*: Data dict that can be modified in order to attach data that should be sent to the master. """ -slave_report = EventHook() +drone_report = EventHook() """ -*slave_report* is used when Locust is running in --master mode and is fired when the master -server receives a report from a Locust slave server. +*drone_report* is used when Locust is running in --master mode and is fired when the master +server receives a report from a Locust drone server. -This event can be used to aggregate data from the locust slave servers. +This event can be used to aggregate data from the locust drone servers. Event is fired with following arguments: -* *client_id*: Client id of the reporting locust slave -* *data*: Data dict with the data from the slave node +* *client_id*: Client id of the reporting locust drone +* *data*: Data dict with the data from the drone node """ hatch_complete = EventHook() diff --git a/locust/main.py b/locust/main.py index 2b5ff7b8d7..8f0cdf2cbf 100644 --- a/locust/main.py +++ b/locust/main.py @@ -16,7 +16,7 @@ from .core import HttpLocust, Locust from .inspectlocust import get_task_ratio_dict, print_task_ratio from .log import console_logger, setup_logging -from .runners import LocalLocustRunner, MasterLocustRunner, SlaveLocustRunner +from .runners import LocalLocustRunner, MasterLocustRunner, DroneLocustRunner from .stats import (print_error_report, print_percentile_stats, print_stats, stats_printer, stats_writer, write_stat_csvs) from .util.timespan import parse_timespan @@ -72,25 +72,25 @@ def parse_options(args=None, default_config_files=['~/.locust.conf','locust.conf help="Set locust to run in distributed mode with this process as master" ) - # if locust should be run in distributed mode as slave + # if locust should be run in distributed mode as drone parser.add_argument( - '--slave', + '--drone', action='store_true', - help="Set locust to run in distributed mode with this process as slave" + help="Set locust to run in distributed mode with this process as drone" ) # master host options parser.add_argument( '--master-host', default="127.0.0.1", - help="Host or IP address of locust master for distributed load testing. Only used when running with --slave. Defaults to 127.0.0.1." + help="Host or IP address of locust master for distributed load testing. Only used when running with --drone. Defaults to 127.0.0.1." ) parser.add_argument( '--master-port', type=int, default=5557, - help="The port to connect to that is used by the locust master for distributed load testing. Only used when running with --slave. Defaults to 5557. Note that slaves will also connect to the master node on this port + 1." + help="The port to connect to that is used by the locust master for distributed load testing. Only used when running with --drone. Defaults to 5557. Note that drones will also connect to the master node on this port + 1." ) parser.add_argument( @@ -110,21 +110,21 @@ def parse_options(args=None, default_config_files=['~/.locust.conf','locust.conf '--heartbeat-liveness', type=int, default=3, - help="set number of seconds before failed heartbeat from slave" + help="set number of seconds before failed heartbeat from drone" ) parser.add_argument( '--heartbeat-interval', type=int, default=1, - help="set number of seconds delay between slave heartbeats to master" + help="set number of seconds delay between drone heartbeats to master" ) parser.add_argument( - '--expect-slaves', + '--expect-drones', type=int, default=1, - help="How many slaves master should expect to connect before starting the test (only when --no-web used)." + help="How many drones master should expect to connect before starting the test (only when --no-web used)." ) # if we should print stats in the console @@ -202,7 +202,7 @@ def parse_options(args=None, default_config_files=['~/.locust.conf','locust.conf parser.add_argument( '--reset-stats', action='store_true', - help="Reset statistics once hatching has been completed. Should be set on both master and slaves when running in distributed mode", + help="Reset statistics once hatching has been completed. Should be set on both master and drones when running in distributed mode", ) # List locust commands found in loaded locust files/source files @@ -453,12 +453,12 @@ def timelimit_stop(): runners.locust_runner.quit() gevent.spawn_later(options.run_time, timelimit_stop) - if not options.no_web and not options.slave: + if not options.no_web and not options.drone: # spawn web greenlet logger.info("Starting web monitor at http://%s:%s" % (options.web_host or "*", options.port)) main_greenlet = gevent.spawn(web.start, locust_classes, options) - if not options.master and not options.slave: + if not options.master and not options.drone: runners.locust_runner = LocalLocustRunner(locust_classes, options) # spawn client spawning/hatching greenlet if options.no_web: @@ -469,28 +469,28 @@ def timelimit_stop(): elif options.master: runners.locust_runner = MasterLocustRunner(locust_classes, options) if options.no_web: - while len(runners.locust_runner.clients.ready) 5.0: - # warnings.warn("The slave node's clock seem to be out of sync. For the statistics to be correct the different locust servers need to have synchronized clocks.") + # warnings.warn("The drone node's clock seem to be out of sync. For the statistics to be correct the different locust servers need to have synchronized clocks.") elif msg.type == "client_stopped": del self.clients[msg.node_id] logger.info("Removing %s client from running clients" % (msg.node_id)) @@ -391,7 +391,7 @@ def client_listener(self): self.clients[msg.node_id].heartbeat = self.heartbeat_liveness self.clients[msg.node_id].state = msg.data['state'] elif msg.type == "stats": - events.slave_report.fire(client_id=msg.node_id, data=msg.data) + events.drone_report.fire(client_id=msg.node_id, data=msg.data) elif msg.type == "hatching": self.clients[msg.node_id].state = STATE_HATCHING elif msg.type == "hatch_complete": @@ -411,12 +411,12 @@ def client_listener(self): self.state = STATE_STOPPED @property - def slave_count(self): + def drone_count(self): return len(self.clients.ready) + len(self.clients.hatching) + len(self.clients.running) -class SlaveLocustRunner(DistributedLocustRunner): +class DroneLocustRunner(DistributedLocustRunner): def __init__(self, *args, **kwargs): - super(SlaveLocustRunner, self).__init__(*args, **kwargs) + super(DroneLocustRunner, self).__init__(*args, **kwargs) self.client_id = socket.gethostname() + "_" + uuid4().hex self.client = rpc.Client(self.master_host, self.master_port, self.client_id) @@ -425,13 +425,13 @@ def __init__(self, *args, **kwargs): self.greenlet.spawn(self.heartbeat).link_exception(callback=self.noop) self.greenlet.spawn(self.worker).link_exception(callback=self.noop) self.client.send(Message("client_ready", None, self.client_id)) - self.slave_state = STATE_INIT + self.drone_state = STATE_INIT self.greenlet.spawn(self.stats_reporter).link_exception(callback=self.noop) # register listener for when all locust users have hatched, and report it to the master node def on_hatch_complete(user_count): self.client.send(Message("hatch_complete", {"count":user_count}, self.client_id)) - self.slave_state = STATE_RUNNING + self.drone_state = STATE_RUNNING events.hatch_complete += on_hatch_complete # register listener that adds the current number of spawned locusts to the report that is sent to the master node @@ -452,14 +452,14 @@ def on_locust_error(locust_instance, exception, tb): def heartbeat(self): while True: - self.client.send(Message('heartbeat', {'state': self.slave_state}, self.client_id)) + self.client.send(Message('heartbeat', {'state': self.drone_state}, self.client_id)) gevent.sleep(self.heartbeat_interval) def worker(self): while True: msg = self.client.recv() if msg.type == "hatch": - self.slave_state = STATE_HATCHING + self.drone_state = STATE_HATCHING self.client.send(Message("hatching", None, self.client_id)) job = msg.data self.hatch_rate = job["hatch_rate"] @@ -471,7 +471,7 @@ def worker(self): self.stop() self.client.send(Message("client_stopped", None, self.client_id)) self.client.send(Message("client_ready", None, self.client_id)) - self.slave_state = STATE_INIT + self.drone_state = STATE_INIT elif msg.type == "quit": logger.info("Got quit message from master, shutting down...") self.stop() @@ -486,7 +486,7 @@ def stats_reporter(self): logger.error("Connection lost to master server. Aborting...") break - gevent.sleep(SLAVE_REPORT_INTERVAL) + gevent.sleep(DRONE_REPORT_INTERVAL) def _send_stats(self): data = {} diff --git a/locust/static/locust.js b/locust/static/locust.js index 67c0847077..fd4c8a0b4e 100644 --- a/locust/static/locust.js +++ b/locust/static/locust.js @@ -48,7 +48,7 @@ $("ul.tabs").tabs("div.panes > div").on("onClick", function(event) { var stats_tpl = $('#stats-template'); var errors_tpl = $('#errors-template'); var exceptions_tpl = $('#exceptions-template'); -var slaves_tpl = $('#slave-template'); +var drones_tpl = $('#drone-template'); function setHostName(hostname) { hostname = hostname || ""; @@ -104,7 +104,7 @@ var sortBy = function(field, reverse, primer){ // Sorting by column var alternate = false; //used by jqote2.min.js var sortAttribute = "name"; -var slaveSortAttribute = "id"; +var droneSortAttribute = "id"; var desc = false; var report; @@ -147,12 +147,12 @@ function updateStats() { renderTable(report); - if (report.slaves) { - slaves = (report.slaves).sort(sortBy(slaveSortAttribute, desc)); - $("#slaves tbody").empty(); + if (report.drones) { + drones = (report.drones).sort(sortBy(droneSortAttribute, desc)); + $("#drones tbody").empty(); window.alternate = false; - $("#slaves tbody").jqoteapp(slaves_tpl, slaves); - $("#slaveCount").html(slaves.length); + $("#drones tbody").jqoteapp(drones_tpl, drones); + $("#droneCount").html(drones.length); } if (report.state !== "stopped"){ diff --git a/locust/static/style.css b/locust/static/style.css index f05608ed72..c3643c5fa6 100644 --- a/locust/static/style.css +++ b/locust/static/style.css @@ -80,7 +80,7 @@ a:hover { max-width: 165px; word-wrap: break-word; } -.boxes .box_rps .value, .boxes .box_slaves .value { +.boxes .box_rps .value, .boxes .box_drones .value { font-size: 32px; } .boxes .box_fail .value { diff --git a/locust/stats.py b/locust/stats.py index f8adb579f9..b537f3a931 100644 --- a/locust/stats.py +++ b/locust/stats.py @@ -646,7 +646,7 @@ def on_report_to_master(client_id, data): data["errors"] = global_stats.serialize_errors() global_stats.errors = {} -def on_slave_report(client_id, data): +def on_drone_report(client_id, data): for stats_data in data["stats"]: entry = StatsEntry.unserialize(stats_data) request_key = (entry.name, entry.method) @@ -667,7 +667,7 @@ def on_slave_report(client_id, data): global_stats.total.extend(StatsEntry.unserialize(data["stats_total"])) if global_stats.total.last_request_timestamp and global_stats.total.last_request_timestamp > (old_last_request_timestamp or 0): # If we've entered a new second, we'll cache the response times. Note that there - # might still be reports from other slave nodes - that contains requests for the same + # might still be reports from other drone nodes - that contains requests for the same # time periods - that hasn't been received/accounted for yet. This will cause the cache to # lag behind a second or two, but since StatsEntry.current_response_time_percentile() # (which is what the response times cache is used for) uses an approximation of the @@ -678,7 +678,7 @@ def on_slave_report(client_id, data): events.request_success += on_request_success events.request_failure += on_request_failure events.report_to_master += on_report_to_master -events.slave_report += on_slave_report +events.drone_report += on_drone_report def print_stats(stats, current=True): diff --git a/locust/templates/index.html b/locust/templates/index.html index a19bfa68ff..216862a963 100644 --- a/locust/templates/index.html +++ b/locust/templates/index.html @@ -28,9 +28,9 @@ Edit {% if is_distributed %} -
-
SLAVES
-
0
+
+
DRONES
+
0
{% endif %}
@@ -101,7 +101,7 @@

Change the locust count

  • Exceptions
  • Download Data
  • {% if is_distributed %} -
  • Slaves
  • +
  • Drones
  • {% endif %} @@ -163,12 +163,12 @@

    Change the locust count

    - +
    - + - + @@ -265,7 +265,7 @@

    Version +

    SlaveDrone State# users# users