locust 2.29.2.dev34__py3-none-any.whl → 2.29.2.dev45__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- locust/_version.py +6 -2
- locust/contrib/fasthttp.py +1 -1
- locust/dispatch.py +7 -6
- locust/main.py +0 -1
- {locust-2.29.2.dev34.dist-info → locust-2.29.2.dev45.dist-info}/METADATA +31 -26
- locust-2.29.2.dev45.dist-info/RECORD +49 -0
- locust-2.29.2.dev45.dist-info/WHEEL +4 -0
- locust-2.29.2.dev45.dist-info/entry_points.txt +3 -0
- locust/test/__init__.py +0 -15
- locust/test/fake_module1_for_env_test.py +0 -7
- locust/test/fake_module2_for_env_test.py +0 -7
- locust/test/mock_locustfile.py +0 -56
- locust/test/mock_logging.py +0 -28
- locust/test/test_debugging.py +0 -39
- locust/test/test_dispatch.py +0 -4170
- locust/test/test_env.py +0 -283
- locust/test/test_fasthttp.py +0 -785
- locust/test/test_http.py +0 -325
- locust/test/test_interruptable_task.py +0 -48
- locust/test/test_load_locustfile.py +0 -228
- locust/test/test_locust_class.py +0 -831
- locust/test/test_log.py +0 -237
- locust/test/test_main.py +0 -2264
- locust/test/test_old_wait_api.py +0 -0
- locust/test/test_parser.py +0 -450
- locust/test/test_runners.py +0 -4476
- locust/test/test_sequential_taskset.py +0 -157
- locust/test/test_stats.py +0 -866
- locust/test/test_tags.py +0 -440
- locust/test/test_taskratio.py +0 -94
- locust/test/test_users.py +0 -69
- locust/test/test_util.py +0 -33
- locust/test/test_wait_time.py +0 -79
- locust/test/test_web.py +0 -1257
- locust/test/test_zmqrpc.py +0 -58
- locust/test/testcases.py +0 -248
- locust/test/util.py +0 -88
- locust-2.29.2.dev34.dist-info/RECORD +0 -79
- locust-2.29.2.dev34.dist-info/WHEEL +0 -5
- locust-2.29.2.dev34.dist-info/entry_points.txt +0 -2
- locust-2.29.2.dev34.dist-info/top_level.txt +0 -1
- {locust-2.29.2.dev34.dist-info → locust-2.29.2.dev45.dist-info}/LICENSE +0 -0
locust/test/test_env.py
DELETED
@@ -1,283 +0,0 @@
|
|
1
|
-
from locust import (
|
2
|
-
constant,
|
3
|
-
)
|
4
|
-
from locust.dispatch import UsersDispatcher
|
5
|
-
from locust.env import Environment, LoadTestShape
|
6
|
-
from locust.user import (
|
7
|
-
User,
|
8
|
-
task,
|
9
|
-
)
|
10
|
-
from locust.user.task import TaskSet
|
11
|
-
|
12
|
-
from .fake_module1_for_env_test import MyUserWithSameName as MyUserWithSameName1
|
13
|
-
from .fake_module2_for_env_test import MyUserWithSameName as MyUserWithSameName2
|
14
|
-
from .testcases import LocustTestCase
|
15
|
-
|
16
|
-
|
17
|
-
class TestEnvironment(LocustTestCase):
|
18
|
-
def test_user_classes_count(self):
|
19
|
-
class MyUser1(User):
|
20
|
-
wait_time = constant(0)
|
21
|
-
|
22
|
-
@task
|
23
|
-
def my_task(self):
|
24
|
-
pass
|
25
|
-
|
26
|
-
class MyUser2(User):
|
27
|
-
wait_time = constant(0)
|
28
|
-
|
29
|
-
@task
|
30
|
-
def my_task(self):
|
31
|
-
pass
|
32
|
-
|
33
|
-
environment = Environment(user_classes=[MyUser1, MyUser2])
|
34
|
-
|
35
|
-
self.assertDictEqual({"MyUser1": MyUser1, "MyUser2": MyUser2}, environment.user_classes_by_name)
|
36
|
-
|
37
|
-
def test_user_classes_with_same_name_is_error(self):
|
38
|
-
with self.assertRaises(ValueError) as e:
|
39
|
-
Environment(user_classes=[MyUserWithSameName1, MyUserWithSameName2])
|
40
|
-
|
41
|
-
self.assertEqual(
|
42
|
-
e.exception.args[0],
|
43
|
-
"The following user classes have the same class name: locust.test.fake_module1_for_env_test.MyUserWithSameName, locust.test.fake_module2_for_env_test.MyUserWithSameName",
|
44
|
-
)
|
45
|
-
|
46
|
-
def test_assign_equal_weights(self):
|
47
|
-
def verify_tasks(u, target_tasks):
|
48
|
-
self.assertEqual(len(u.tasks), len(target_tasks))
|
49
|
-
tasks = [t.__name__ for t in u.tasks]
|
50
|
-
self.assertEqual(len(tasks), len(set(tasks)))
|
51
|
-
self.assertEqual(set(tasks), set(target_tasks))
|
52
|
-
|
53
|
-
# Base case
|
54
|
-
class MyUser1(User):
|
55
|
-
wait_time = constant(0)
|
56
|
-
|
57
|
-
@task(4)
|
58
|
-
def my_task(self):
|
59
|
-
pass
|
60
|
-
|
61
|
-
@task(1)
|
62
|
-
def my_task_2(self):
|
63
|
-
pass
|
64
|
-
|
65
|
-
environment = Environment(user_classes=[MyUser1])
|
66
|
-
environment.assign_equal_weights()
|
67
|
-
u = environment.user_classes[0]
|
68
|
-
verify_tasks(u, ["my_task", "my_task_2"])
|
69
|
-
|
70
|
-
# Testing nested task sets
|
71
|
-
class MyUser2(User):
|
72
|
-
@task
|
73
|
-
class TopLevelTaskSet(TaskSet):
|
74
|
-
@task
|
75
|
-
class IndexTaskSet(TaskSet):
|
76
|
-
@task(10)
|
77
|
-
def index(self):
|
78
|
-
self.client.get("/")
|
79
|
-
|
80
|
-
@task
|
81
|
-
def stop(self):
|
82
|
-
self.client.get("/hi")
|
83
|
-
|
84
|
-
@task(2)
|
85
|
-
def stats(self):
|
86
|
-
self.client.get("/stats/requests")
|
87
|
-
|
88
|
-
environment = Environment(user_classes=[MyUser2])
|
89
|
-
environment.assign_equal_weights()
|
90
|
-
u = environment.user_classes[0]
|
91
|
-
verify_tasks(u, ["index", "stop", "stats"])
|
92
|
-
|
93
|
-
# Testing task assignment via instance variable
|
94
|
-
def outside_task():
|
95
|
-
pass
|
96
|
-
|
97
|
-
def outside_task_2():
|
98
|
-
pass
|
99
|
-
|
100
|
-
class SingleTaskSet(TaskSet):
|
101
|
-
tasks = [outside_task, outside_task, outside_task_2]
|
102
|
-
|
103
|
-
class MyUser3(User):
|
104
|
-
tasks = [SingleTaskSet, outside_task]
|
105
|
-
|
106
|
-
environment = Environment(user_classes=[MyUser3])
|
107
|
-
environment.assign_equal_weights()
|
108
|
-
u = environment.user_classes[0]
|
109
|
-
verify_tasks(u, ["outside_task", "outside_task_2"])
|
110
|
-
|
111
|
-
# Testing task assignment via dict
|
112
|
-
class DictTaskSet(TaskSet):
|
113
|
-
def dict_task_1():
|
114
|
-
pass
|
115
|
-
|
116
|
-
def dict_task_2():
|
117
|
-
pass
|
118
|
-
|
119
|
-
def dict_task_3():
|
120
|
-
pass
|
121
|
-
|
122
|
-
tasks = {
|
123
|
-
dict_task_1: 5,
|
124
|
-
dict_task_2: 3,
|
125
|
-
dict_task_3: 1,
|
126
|
-
}
|
127
|
-
|
128
|
-
class MyUser4(User):
|
129
|
-
tasks = [DictTaskSet, SingleTaskSet, SingleTaskSet]
|
130
|
-
|
131
|
-
# Assign user tasks in dict
|
132
|
-
environment = Environment(user_classes=[MyUser4])
|
133
|
-
environment.assign_equal_weights()
|
134
|
-
u = environment.user_classes[0]
|
135
|
-
verify_tasks(u, ["outside_task", "outside_task_2", "dict_task_1", "dict_task_2", "dict_task_3"])
|
136
|
-
|
137
|
-
class MyUser5(User):
|
138
|
-
tasks = {
|
139
|
-
DictTaskSet: 5,
|
140
|
-
SingleTaskSet: 3,
|
141
|
-
outside_task: 6,
|
142
|
-
}
|
143
|
-
|
144
|
-
environment = Environment(user_classes=[MyUser5])
|
145
|
-
environment.assign_equal_weights()
|
146
|
-
u = environment.user_classes[0]
|
147
|
-
verify_tasks(u, ["outside_task", "outside_task_2", "dict_task_1", "dict_task_2", "dict_task_3"])
|
148
|
-
|
149
|
-
def test_user_classes_with_zero_weight_are_removed(self):
|
150
|
-
class MyUser1(User):
|
151
|
-
wait_time = constant(0)
|
152
|
-
weight = 0
|
153
|
-
|
154
|
-
@task
|
155
|
-
def my_task(self):
|
156
|
-
pass
|
157
|
-
|
158
|
-
class MyUser2(User):
|
159
|
-
wait_time = constant(0)
|
160
|
-
weight = 1
|
161
|
-
|
162
|
-
@task
|
163
|
-
def my_task(self):
|
164
|
-
pass
|
165
|
-
|
166
|
-
environment = Environment(user_classes=[MyUser1, MyUser2])
|
167
|
-
|
168
|
-
self.assertEqual(len(environment.user_classes), 1)
|
169
|
-
self.assertIs(environment.user_classes[0], MyUser2)
|
170
|
-
|
171
|
-
def test_all_user_classes_with_zero_weight_raises_exception(self):
|
172
|
-
class MyUser1(User):
|
173
|
-
wait_time = constant(0)
|
174
|
-
weight = 0
|
175
|
-
|
176
|
-
@task
|
177
|
-
def my_task(self):
|
178
|
-
pass
|
179
|
-
|
180
|
-
class MyUser2(User):
|
181
|
-
wait_time = constant(0)
|
182
|
-
weight = 0
|
183
|
-
|
184
|
-
@task
|
185
|
-
def my_task(self):
|
186
|
-
pass
|
187
|
-
|
188
|
-
with self.assertRaises(ValueError) as e:
|
189
|
-
Environment(user_classes=[MyUser1, MyUser2])
|
190
|
-
|
191
|
-
self.assertEqual(
|
192
|
-
e.exception.args[0],
|
193
|
-
"There are no users with weight > 0.",
|
194
|
-
)
|
195
|
-
|
196
|
-
def test_shape_class_attribute(self):
|
197
|
-
class SubLoadTestShape(LoadTestShape):
|
198
|
-
"""Inherited from locust.env.LoadTestShape"""
|
199
|
-
|
200
|
-
with self.assertRaisesRegex(
|
201
|
-
ValueError, r"instance of LoadTestShape or subclass LoadTestShape", msg="exception message is mismatching"
|
202
|
-
):
|
203
|
-
Environment(user_classes=[MyUserWithSameName1], shape_class=SubLoadTestShape)
|
204
|
-
|
205
|
-
def test_dispatcher_class_attribute(self):
|
206
|
-
environment = Environment(user_classes=[MyUserWithSameName1])
|
207
|
-
|
208
|
-
self.assertEqual(environment.dispatcher_class, UsersDispatcher)
|
209
|
-
|
210
|
-
class MyUsersDispatcher(UsersDispatcher):
|
211
|
-
pass
|
212
|
-
|
213
|
-
environment = Environment(user_classes=[MyUserWithSameName1], dispatcher_class=MyUsersDispatcher)
|
214
|
-
|
215
|
-
self.assertEqual(environment.dispatcher_class, MyUsersDispatcher)
|
216
|
-
|
217
|
-
def test_update_user_class(self):
|
218
|
-
class MyUser1(User):
|
219
|
-
@task
|
220
|
-
def my_task(self):
|
221
|
-
pass
|
222
|
-
|
223
|
-
@task
|
224
|
-
def my_task_2(self):
|
225
|
-
pass
|
226
|
-
|
227
|
-
class MyUser2(User):
|
228
|
-
@task
|
229
|
-
def my_task(self):
|
230
|
-
pass
|
231
|
-
|
232
|
-
environment = Environment(
|
233
|
-
user_classes=[MyUser1, MyUser2],
|
234
|
-
available_user_classes={"User1": MyUser1, "User2": MyUser2},
|
235
|
-
available_user_tasks={"User1": MyUser1.tasks, "User2": MyUser2.tasks},
|
236
|
-
)
|
237
|
-
|
238
|
-
environment.update_user_class({"user_class_name": "User1", "host": "http://localhost", "tasks": ["my_task_2"]})
|
239
|
-
|
240
|
-
self.assertEqual(
|
241
|
-
environment.available_user_classes["User1"].json(),
|
242
|
-
{"host": "http://localhost", "tasks": ["my_task_2"], "fixed_count": 0, "weight": 1},
|
243
|
-
)
|
244
|
-
|
245
|
-
def test_distributed_update_user_class(self):
|
246
|
-
class MyUser1(User):
|
247
|
-
@task
|
248
|
-
def my_task(self):
|
249
|
-
pass
|
250
|
-
|
251
|
-
@task
|
252
|
-
def my_task_2(self):
|
253
|
-
pass
|
254
|
-
|
255
|
-
class MyUser2(User):
|
256
|
-
@task
|
257
|
-
def my_task(self):
|
258
|
-
pass
|
259
|
-
|
260
|
-
master_env = Environment(
|
261
|
-
user_classes=[MyUser1, MyUser2],
|
262
|
-
available_user_classes={"User1": MyUser1, "User2": MyUser2},
|
263
|
-
available_user_tasks={"User1": MyUser1.tasks, "User2": MyUser2.tasks},
|
264
|
-
)
|
265
|
-
master = master_env.create_master_runner("*", 0)
|
266
|
-
|
267
|
-
worker_env = Environment(
|
268
|
-
user_classes=[MyUser1, MyUser2],
|
269
|
-
available_user_classes={"User1": MyUser1, "User2": MyUser2},
|
270
|
-
available_user_tasks={"User1": MyUser1.tasks, "User2": MyUser2.tasks},
|
271
|
-
)
|
272
|
-
worker_env.create_worker_runner("127.0.0.1", master.server.port)
|
273
|
-
|
274
|
-
master_env.update_user_class({"user_class_name": "User1", "host": "http://localhost", "tasks": ["my_task_2"]})
|
275
|
-
|
276
|
-
self.assertEqual(
|
277
|
-
master_env.available_user_classes["User1"].json(),
|
278
|
-
{"host": "http://localhost", "tasks": ["my_task_2"], "fixed_count": 0, "weight": 1},
|
279
|
-
)
|
280
|
-
self.assertEqual(
|
281
|
-
worker_env.available_user_classes["User1"].json(),
|
282
|
-
{"host": "http://localhost", "tasks": ["my_task_2"], "fixed_count": 0, "weight": 1},
|
283
|
-
)
|