def test_user_count_in_csv_history_stats(self): start_time = int(time.time()) class TestUser(Locust): wait_time = constant(10) @task def t(self): self.environment.runner.stats.log_request("GET", "/", 10, 10) runner = LocalLocustRunner(self.environment, [TestUser]) runner.start(3, 5) # spawn a user every 0.2 second gevent.sleep(0.1) greenlet = gevent.spawn(stats_writer, self.environment, self.STATS_BASE_NAME, full_history=True) gevent.sleep(0.6) gevent.kill(greenlet) runner.stop() with open(self.STATS_HISTORY_FILENAME) as f: reader = csv.DictReader(f) rows = [r for r in reader] self.assertEqual(6, len(rows)) for i in range(3): row = rows.pop(0) self.assertEqual("%i" % (i + 1), row["User count"]) self.assertEqual("/", row["Name"]) self.assertEqual("%i" % (i + 1), row["# requests"]) self.assertGreaterEqual(int(row["Timestamp"]), start_time) row = rows.pop(0) self.assertEqual("%i" % (i + 1), row["User count"]) self.assertEqual("Aggregated", row["Name"]) self.assertEqual("%i" % (i + 1), row["# requests"]) self.assertGreaterEqual(int(row["Timestamp"]), start_time)
def test_stop_event(self): class User(Locust): wait_time = constant(1) @task def my_task(self): pass test_stop_run = [0] environment = Environment(options=mocked_options()) def on_test_stop(*args, **kwargs): test_stop_run[0] += 1 environment.events.test_stop.add_listener(on_test_stop) runner = LocalLocustRunner(environment, locust_classes=[User]) runner.start(locust_count=3, hatch_rate=3, wait=False) self.assertEqual(0, test_stop_run[0]) runner.stop() self.assertEqual(1, test_stop_run[0])