コード例 #1
0
class LocustRunner:
    def __init__(self, base_url: str, user: User = RootUser):
        self.env = Environment(user_classes=[user])
        self.env.host = base_url
        self.env.create_local_runner()

    def start_web_ui(self):
        self.env.create_web_ui("127.0.0.1", 8089)

    def stop_web_ui(self):
        self.env.web_ui.stop()

    def run(self, user_count: int, hatch_rate: int, total_run_time: int,
            csv_prefix: str):
        self.env.runner.start(user_count, hatch_rate)
        gevent.spawn(stats_writer, self.env, csv_prefix, True)
        gevent.spawn_later(total_run_time, lambda: self.env.runner.quit())

    def wait_runner(self):
        self.env.runner.greenlet.join()
コード例 #2
0
ファイル: bench.py プロジェクト: fsaez/pidotapi
def locust_run(c, r, t, base, path, webui):
    class User(HttpUser):
        wait_time = constant(1)
        host = base

        @task
        def my_task(self):
            self.client.get(path)

    env = Environment(user_classes=[User])
    env.create_local_runner()
    if webui:
        env.create_web_ui("127.0.0.1", 8089)
        webbrowser.open('http://127.0.0.1:8089')
    gevent.spawn(stats_printer(env.stats))
    gevent.spawn(stats_history, env.runner)
    env.runner.start(c, spawn_rate=c)
    gevent.spawn_later(t, lambda: env.runner.quit())
    env.runner.greenlet.join()
    if webui:
        env.web_ui.stop()
コード例 #3
0
ファイル: locustfile.py プロジェクト: abdullahqutb/teenyURL
    @task
    def task_404(self):
        self.client.get("/non-existing-path")

    @task
    def my_task(self):
        self.client.get("/api/Url/1")


# setup Environment and Runner
env = Environment(user_classes=[User])
env.create_local_runner()

# start a WebUI instance
env.create_web_ui("127.0.0.1", 8089)

# start a greenlet that periodically outputs the current stats
gevent.spawn(stats_printer(env.stats))

# start a greenlet that save current stats to history
gevent.spawn(stats_history, env.runner)

# start the test
env.runner.start(1, spawn_rate=100)

# in 60 seconds stop the runner
gevent.spawn_later(60, lambda: env.runner.quit())

# wait for the greenlets
env.runner.greenlet.join()
コード例 #4
0
ファイル: main.py プロジェクト: kiran94/covid19
    print(args)
    logger.info('Initialising Load Testing')

    class User(GraphQLLocust):
        host = args.host
        tasks = [CountryBehaviour, TimeseriesBehaviour]
        wait_time = between(args.wait_time_min, args.wait_time_max)

    logger.info('Setting up Environment and Runner')
    env = Environment(user_classes=[User], events=events)
    env.create_local_runner()

    if args.web:
        logger.info(f'Launching Web UI in {args.web_host}:{args.web_port}')
        env.create_web_ui(args.web_host, args.web_port)

    gevent.spawn(stats_printer(env.stats))

    logger.info(f'Starting Run with {args.number_of_users} users with hatch rate {args.user_hatch_rate}')
    env.runner.start(args.number_of_users, hatch_rate=args.user_hatch_rate)

    gevent.spawn_later(args.duration, lambda: env.runner.quit())
    env.runner.greenlet.join()

    if args.web:
        logger.debug('Stopping Web UI')
        env.web_ui.stop()

    logger.info(f'Writing results to output directory {args.output_directory}')
    os.makedirs(args.output_directory, exist_ok=True)