示例#1
0
    def test_spawn_zero_locusts(self):
        class MyTaskSet(TaskSet):
            @task
            def my_task(self):
                pass

        class MyTestUser(User):
            tasks = [MyTaskSet]
            wait_time = constant(0.1)

        environment = Environment(user_classes=[MyTestUser])
        runner = LocalRunner(environment)

        timeout = gevent.Timeout(2.0)
        timeout.start()

        try:
            runner.start(0, 1, wait=True)
            runner.hatching_greenlet.join()
        except gevent.Timeout:
            self.fail(
                "Got Timeout exception. A locust seems to have been spawned, even though 0 was specified."
            )
        finally:
            timeout.cancel()
示例#2
0
    def test_no_reset_stats(self):
        class MyUser(User):
            wait_time = constant(0)

            @task
            class task_set(TaskSet):
                @task
                def my_task(self):
                    self.user.environment.events.request_success.fire(
                        request_type="GET",
                        name="/test",
                        response_time=666,
                        response_length=1337,
                    )
                    sleep(2)

        environment = Environment(reset_stats=False, user_classes=[MyUser])
        runner = LocalRunner(environment)
        runner.start(user_count=6, hatch_rate=12, wait=False)
        sleep(0.25)
        self.assertGreaterEqual(
            runner.stats.get("/test", "GET").num_requests, 3)
        sleep(0.3)
        self.assertEqual(6, runner.stats.get("/test", "GET").num_requests)
        runner.quit()
示例#3
0
 def test_change_user_count_during_hatching(self):
     class MyUser(User):
         wait_time = constant(1)
         @task
         def my_task(self):
             pass
     
     environment = Environment(user_classes=[MyUser])
     runner = LocalRunner(environment)
     runner.start(user_count=10, hatch_rate=5, wait=False)
     sleep(0.6)
     runner.start(user_count=5, hatch_rate=5, wait=False)
     runner.hatching_greenlet.join()
     self.assertEqual(5, len(runner.user_greenlets))
     runner.quit()
示例#4
0
    def test_stop_event_quit(self):
        class MyUser(User):
            wait_time = constant(1)
            @task
            def my_task(self):
                pass

        test_stop_run = [0]
        environment = Environment(user_classes=[User])
        def on_test_stop(*args, **kwargs):
            test_stop_run[0] += 1
        environment.events.test_stop.add_listener(on_test_stop)

        runner = LocalRunner(environment)
        runner.start(user_count=3, hatch_rate=3, wait=False)
        self.assertEqual(0, test_stop_run[0])
        runner.quit()
        self.assertEqual(1, test_stop_run[0])
示例#5
0
 def test_start_event(self):
     class MyUser(User):
         wait_time = constant(1)
         task_run_count = 0
         @task
         def my_task(self):
             MyUser.task_run_count += 1
     
     test_start_run = [0]
     
     environment = Environment(user_classes=[MyUser])
     def on_test_start(*args, **kwargs):
         test_start_run[0] += 1
     environment.events.test_start.add_listener(on_test_start)
     
     runner = LocalRunner(environment)
     runner.start(user_count=3, hatch_rate=3, wait=False)
     runner.hatching_greenlet.get(timeout=3)
     
     self.assertEqual(1, test_start_run[0])
     self.assertEqual(3, MyUser.task_run_count)
示例#6
0
    def test_gracefully_handle_exceptions_in_listener(self):
        class MyUser(User):
            wait_time = constant(1)
            @task
            def my_task(self):
                pass

        test_stop_run = [0]
        environment = Environment(user_classes=[User])
        def on_test_stop_ok(*args, **kwargs):
            test_stop_run[0] += 1
        def on_test_stop_fail(*args, **kwargs):
            assert 0

        environment.events.test_stop.add_listener(on_test_stop_ok)
        environment.events.test_stop.add_listener(on_test_stop_fail)
        environment.events.test_stop.add_listener(on_test_stop_ok)

        runner = LocalRunner(environment)
        runner.start(user_count=3, hatch_rate=3, wait=False)
        self.assertEqual(0, test_stop_run[0])
        runner.stop()
        self.assertEqual(2, test_stop_run[0])