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_zmqrpc.py
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
from locust.exception import RPCError, RPCReceiveError, RPCSendError
|
2
|
-
from locust.rpc import Message, zmqrpc
|
3
|
-
from locust.test.testcases import LocustTestCase
|
4
|
-
|
5
|
-
from time import sleep
|
6
|
-
|
7
|
-
import zmq
|
8
|
-
|
9
|
-
|
10
|
-
class ZMQRPC_tests(LocustTestCase):
|
11
|
-
def setUp(self):
|
12
|
-
super().setUp()
|
13
|
-
self.server = zmqrpc.Server("*", 0)
|
14
|
-
self.client = zmqrpc.Client("localhost", self.server.port, "identity")
|
15
|
-
|
16
|
-
def tearDown(self):
|
17
|
-
self.server.close()
|
18
|
-
self.client.close()
|
19
|
-
super().tearDown()
|
20
|
-
|
21
|
-
def test_constructor(self):
|
22
|
-
self.assertEqual(self.server.socket.getsockopt(zmq.TCP_KEEPALIVE), 1)
|
23
|
-
self.assertEqual(self.server.socket.getsockopt(zmq.TCP_KEEPALIVE_IDLE), 30)
|
24
|
-
self.assertEqual(self.server.socket.getsockopt(zmq.IPV6), 1)
|
25
|
-
self.assertEqual(self.client.socket.getsockopt(zmq.TCP_KEEPALIVE), 1)
|
26
|
-
self.assertEqual(self.client.socket.getsockopt(zmq.TCP_KEEPALIVE_IDLE), 30)
|
27
|
-
self.assertEqual(self.client.socket.getsockopt(zmq.IPV6), 1)
|
28
|
-
|
29
|
-
def test_client_send(self):
|
30
|
-
self.client.send(Message("test", "message", "identity"))
|
31
|
-
addr, msg = self.server.recv_from_client()
|
32
|
-
self.assertEqual(addr, "identity")
|
33
|
-
self.assertEqual(msg.type, "test")
|
34
|
-
self.assertEqual(msg.data, "message")
|
35
|
-
|
36
|
-
def test_client_recv(self):
|
37
|
-
sleep(0.1)
|
38
|
-
# We have to wait for the client to finish connecting
|
39
|
-
# before sending a msg to it.
|
40
|
-
self.server.send_to_client(Message("test", "message", "identity"))
|
41
|
-
msg = self.client.recv()
|
42
|
-
self.assertEqual(msg.type, "test")
|
43
|
-
self.assertEqual(msg.data, "message")
|
44
|
-
self.assertEqual(msg.node_id, "identity")
|
45
|
-
|
46
|
-
def test_client_retry(self):
|
47
|
-
server = zmqrpc.Server("*", 0)
|
48
|
-
server.socket.close()
|
49
|
-
with self.assertRaises(RPCError):
|
50
|
-
server.recv_from_client()
|
51
|
-
|
52
|
-
def test_rpc_error(self):
|
53
|
-
server = zmqrpc.Server("*", 0)
|
54
|
-
with self.assertRaises(RPCError):
|
55
|
-
server = zmqrpc.Server("*", server.port)
|
56
|
-
server.close()
|
57
|
-
with self.assertRaises(RPCSendError):
|
58
|
-
server.send_to_client(Message("test", "message", "identity"))
|
locust/test/testcases.py
DELETED
@@ -1,248 +0,0 @@
|
|
1
|
-
import locust
|
2
|
-
from locust import log
|
3
|
-
from locust.env import Environment
|
4
|
-
from locust.event import Events
|
5
|
-
from locust.test.mock_logging import MockedLoggingHandler
|
6
|
-
from locust.test.util import clear_all_functools_lru_cache
|
7
|
-
|
8
|
-
import base64
|
9
|
-
import logging
|
10
|
-
import random
|
11
|
-
import sys
|
12
|
-
import unittest
|
13
|
-
import warnings
|
14
|
-
from io import BytesIO
|
15
|
-
|
16
|
-
import gevent
|
17
|
-
import gevent.pywsgi
|
18
|
-
from flask import Flask, Response, make_response, redirect, request, send_file, stream_with_context
|
19
|
-
|
20
|
-
app = Flask(__name__)
|
21
|
-
app.jinja_env.add_extension("jinja2.ext.do")
|
22
|
-
|
23
|
-
|
24
|
-
@app.route("/ultra_fast")
|
25
|
-
def ultra_fast():
|
26
|
-
return "This is an ultra fast response"
|
27
|
-
|
28
|
-
|
29
|
-
@app.route("/fast")
|
30
|
-
def fast():
|
31
|
-
gevent.sleep(random.choice([0.1, 0.2, 0.3]))
|
32
|
-
return "This is a fast response"
|
33
|
-
|
34
|
-
|
35
|
-
@app.route("/slow")
|
36
|
-
def slow():
|
37
|
-
if delay := request.args.get("delay"):
|
38
|
-
gevent.sleep(float(delay))
|
39
|
-
else:
|
40
|
-
gevent.sleep(random.choice([0.5, 1, 1.5]))
|
41
|
-
return "This is a slow response"
|
42
|
-
|
43
|
-
|
44
|
-
@app.route("/consistent")
|
45
|
-
def consistent():
|
46
|
-
gevent.sleep(0.2)
|
47
|
-
return "This is a consistent response"
|
48
|
-
|
49
|
-
|
50
|
-
@app.route("/request_method", methods=["POST", "GET", "HEAD", "PUT", "DELETE", "PATCH"])
|
51
|
-
def request_method():
|
52
|
-
return request.method
|
53
|
-
|
54
|
-
|
55
|
-
@app.route("/request_header_test")
|
56
|
-
def request_header_test():
|
57
|
-
x_header_test = request.headers["X-Header-Test"]
|
58
|
-
response = Response(x_header_test)
|
59
|
-
response.headers["X-Header-Test"] = x_header_test
|
60
|
-
|
61
|
-
return response
|
62
|
-
|
63
|
-
|
64
|
-
@app.route("/post", methods=["POST"])
|
65
|
-
@app.route("/put", methods=["PUT"])
|
66
|
-
def manipulate():
|
67
|
-
return str(request.form.get("arg", ""))
|
68
|
-
|
69
|
-
|
70
|
-
@app.route("/get_arg", methods=["GET"])
|
71
|
-
def get_arg():
|
72
|
-
return request.args.get("arg")
|
73
|
-
|
74
|
-
|
75
|
-
@app.route("/fail")
|
76
|
-
def failed_request():
|
77
|
-
return "This response failed", 500
|
78
|
-
|
79
|
-
|
80
|
-
@app.route("/status/204")
|
81
|
-
def status_204():
|
82
|
-
return "", 204
|
83
|
-
|
84
|
-
|
85
|
-
@app.route("/redirect", methods=["GET", "POST"])
|
86
|
-
def do_redirect():
|
87
|
-
if delay := request.args.get("delay"):
|
88
|
-
gevent.sleep(float(delay))
|
89
|
-
url = request.args.get("url", "/ultra_fast")
|
90
|
-
return redirect(url)
|
91
|
-
|
92
|
-
|
93
|
-
@app.route("/basic_auth")
|
94
|
-
def basic_auth():
|
95
|
-
auth = base64.b64decode(request.headers.get("Authorization", "").replace("Basic ", "")).decode("utf-8")
|
96
|
-
if auth == "locust:menace":
|
97
|
-
return "Authorized"
|
98
|
-
resp = make_response("401 Authorization Required", 401)
|
99
|
-
resp.headers["WWW-Authenticate"] = 'Basic realm="Locust"'
|
100
|
-
return resp
|
101
|
-
|
102
|
-
|
103
|
-
@app.route("/no_content_length")
|
104
|
-
def no_content_length():
|
105
|
-
r = send_file(
|
106
|
-
BytesIO(b"This response does not have content-length in the header"),
|
107
|
-
etag=False,
|
108
|
-
mimetype="text/plain",
|
109
|
-
)
|
110
|
-
r.headers.remove("Content-Length")
|
111
|
-
return r
|
112
|
-
|
113
|
-
|
114
|
-
@app.errorhandler(404)
|
115
|
-
def not_found(error):
|
116
|
-
return "Not Found", 404
|
117
|
-
|
118
|
-
|
119
|
-
@app.route("/streaming/<int:iterations>")
|
120
|
-
def streaming_response(iterations):
|
121
|
-
import time
|
122
|
-
|
123
|
-
def generate():
|
124
|
-
yield "<html><body><h1>streaming response</h1>"
|
125
|
-
for i in range(iterations):
|
126
|
-
yield f"<span>{i}</span>\n"
|
127
|
-
time.sleep(0.01)
|
128
|
-
yield "</body></html>"
|
129
|
-
|
130
|
-
return Response(stream_with_context(generate()), mimetype="text/html")
|
131
|
-
|
132
|
-
|
133
|
-
@app.route("/set_cookie", methods=["POST"])
|
134
|
-
def set_cookie():
|
135
|
-
response = make_response("ok")
|
136
|
-
response.set_cookie(request.args.get("name"), request.args.get("value"))
|
137
|
-
return response
|
138
|
-
|
139
|
-
|
140
|
-
@app.route("/get_cookie")
|
141
|
-
def get_cookie():
|
142
|
-
return make_response(request.cookies.get(request.args.get("name"), ""))
|
143
|
-
|
144
|
-
|
145
|
-
@app.route("/rest", methods=["POST"])
|
146
|
-
def rest():
|
147
|
-
return request.json
|
148
|
-
|
149
|
-
|
150
|
-
@app.route("/content_type_missing_charset")
|
151
|
-
def content_type_missing_charset():
|
152
|
-
resp = make_response("stuff")
|
153
|
-
resp.headers["Content-Type"] = "Content-Type: application/json;"
|
154
|
-
return resp
|
155
|
-
|
156
|
-
|
157
|
-
@app.route("/content_type_regular")
|
158
|
-
def content_type_regular():
|
159
|
-
resp = make_response("stuff")
|
160
|
-
resp.headers["Content-Type"] = "Content-Type: application/json; charset=utf-8;"
|
161
|
-
return resp
|
162
|
-
|
163
|
-
|
164
|
-
@app.route("/content_type_with_extra_stuff")
|
165
|
-
def content_type_with_extra_stuff():
|
166
|
-
resp = make_response("stuff")
|
167
|
-
resp.headers["Content-Type"] = "Content-Type: application/json; charset=utf-8; api-version=3.0"
|
168
|
-
return resp
|
169
|
-
|
170
|
-
|
171
|
-
class LocustTestCase(unittest.TestCase):
|
172
|
-
"""
|
173
|
-
Test case class that restores locust.events.EventHook listeners on tearDown, so that it is
|
174
|
-
safe to register any custom event handlers within the test.
|
175
|
-
"""
|
176
|
-
|
177
|
-
def setUp(self):
|
178
|
-
# Prevent args passed to test runner from being passed to Locust
|
179
|
-
del sys.argv[1:]
|
180
|
-
|
181
|
-
locust.events = Events()
|
182
|
-
self.environment = Environment(events=locust.events, catch_exceptions=False)
|
183
|
-
self.runner = self.environment.create_local_runner()
|
184
|
-
|
185
|
-
# When running the tests in Python 3 we get warnings about unclosed sockets.
|
186
|
-
# This causes tests that depends on calls to sys.stderr to fail, so we'll
|
187
|
-
# suppress those warnings. For more info see:
|
188
|
-
# https://github.com/requests/requests/issues/1882
|
189
|
-
warnings.filterwarnings(action="ignore", message="unclosed <socket object", category=ResourceWarning)
|
190
|
-
warnings.filterwarnings(
|
191
|
-
action="ignore", message="unclosed context <zmq.green.Context", category=ResourceWarning
|
192
|
-
)
|
193
|
-
|
194
|
-
# set up mocked logging handler
|
195
|
-
self._logger_class = MockedLoggingHandler()
|
196
|
-
self._logger_class.setLevel(logging.INFO)
|
197
|
-
self._root_log_handlers = [h for h in logging.root.handlers]
|
198
|
-
[logging.root.removeHandler(h) for h in logging.root.handlers]
|
199
|
-
logging.root.addHandler(self._logger_class)
|
200
|
-
logging.root.setLevel(logging.INFO)
|
201
|
-
self.mocked_log = MockedLoggingHandler
|
202
|
-
|
203
|
-
# set unhandled exception flag to False
|
204
|
-
log.unhandled_greenlet_exception = False
|
205
|
-
|
206
|
-
def tearDown(self):
|
207
|
-
# restore logging class
|
208
|
-
logging.root.removeHandler(self._logger_class)
|
209
|
-
[logging.root.addHandler(h) for h in self._root_log_handlers]
|
210
|
-
self.mocked_log.reset()
|
211
|
-
|
212
|
-
clear_all_functools_lru_cache()
|
213
|
-
|
214
|
-
|
215
|
-
class WebserverTestCase(LocustTestCase):
|
216
|
-
"""
|
217
|
-
Test case class that sets up an HTTP server which can be used within the tests
|
218
|
-
"""
|
219
|
-
|
220
|
-
def setUp(self):
|
221
|
-
super().setUp()
|
222
|
-
|
223
|
-
self.connections_count = 0
|
224
|
-
self.requests_count = 0
|
225
|
-
|
226
|
-
class CountingWSGIHandler(gevent.pywsgi.WSGIHandler):
|
227
|
-
def handle(this):
|
228
|
-
self.connections_count += 1
|
229
|
-
super().handle()
|
230
|
-
|
231
|
-
def log_request(this):
|
232
|
-
self.requests_count += 1
|
233
|
-
super().log_request()
|
234
|
-
|
235
|
-
self._web_server = gevent.pywsgi.WSGIServer(
|
236
|
-
("127.0.0.1", 0),
|
237
|
-
app,
|
238
|
-
log=None,
|
239
|
-
handler_class=CountingWSGIHandler,
|
240
|
-
)
|
241
|
-
gevent.spawn(lambda: self._web_server.serve_forever())
|
242
|
-
gevent.sleep(0.01)
|
243
|
-
self.port = self._web_server.server_port
|
244
|
-
|
245
|
-
def tearDown(self):
|
246
|
-
super().tearDown()
|
247
|
-
self._web_server.stop_accepting()
|
248
|
-
self._web_server.stop()
|
locust/test/util.py
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
import datetime
|
2
|
-
import functools
|
3
|
-
import gc
|
4
|
-
import os
|
5
|
-
import socket
|
6
|
-
import warnings
|
7
|
-
from contextlib import contextmanager
|
8
|
-
from tempfile import NamedTemporaryFile
|
9
|
-
|
10
|
-
from cryptography import x509
|
11
|
-
from cryptography.hazmat.backends import default_backend
|
12
|
-
from cryptography.hazmat.primitives import hashes, serialization
|
13
|
-
from cryptography.hazmat.primitives.asymmetric import rsa
|
14
|
-
from cryptography.x509.oid import NameOID
|
15
|
-
|
16
|
-
|
17
|
-
@contextmanager
|
18
|
-
def temporary_file(content, suffix="_locustfile.py", dir=None):
|
19
|
-
f = NamedTemporaryFile(suffix=suffix, delete=False, dir=dir)
|
20
|
-
f.write(content.encode("utf-8"))
|
21
|
-
f.close()
|
22
|
-
try:
|
23
|
-
yield f.name
|
24
|
-
finally:
|
25
|
-
if os.path.exists(f.name):
|
26
|
-
os.remove(f.name)
|
27
|
-
|
28
|
-
|
29
|
-
@contextmanager
|
30
|
-
def patch_env(name: str, value: str):
|
31
|
-
prev_value = os.getenv(name)
|
32
|
-
os.environ[name] = value
|
33
|
-
try:
|
34
|
-
yield
|
35
|
-
finally:
|
36
|
-
if prev_value is None:
|
37
|
-
del os.environ[name]
|
38
|
-
else:
|
39
|
-
os.environ[name] = prev_value
|
40
|
-
|
41
|
-
|
42
|
-
def get_free_tcp_port():
|
43
|
-
"""
|
44
|
-
Find an unused TCP port
|
45
|
-
"""
|
46
|
-
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
47
|
-
s.bind(("127.0.0.1", 0))
|
48
|
-
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
49
|
-
port = s.getsockname()[1]
|
50
|
-
s.close()
|
51
|
-
return port
|
52
|
-
|
53
|
-
|
54
|
-
def create_tls_cert(hostname):
|
55
|
-
"""Generate a TLS cert and private key to serve over https"""
|
56
|
-
key = rsa.generate_private_key(public_exponent=2**16 + 1, key_size=2048, backend=default_backend())
|
57
|
-
name = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, hostname)])
|
58
|
-
now = datetime.datetime.now(tz=datetime.timezone.utc)
|
59
|
-
cert = (
|
60
|
-
x509.CertificateBuilder()
|
61
|
-
.subject_name(name)
|
62
|
-
.issuer_name(name)
|
63
|
-
.public_key(key.public_key())
|
64
|
-
.serial_number(1000)
|
65
|
-
.not_valid_before(now)
|
66
|
-
.not_valid_after(now + datetime.timedelta(days=10 * 365))
|
67
|
-
.sign(key, hashes.SHA256(), default_backend())
|
68
|
-
)
|
69
|
-
cert_pem = cert.public_bytes(encoding=serialization.Encoding.PEM)
|
70
|
-
key_pem = key.private_bytes(
|
71
|
-
encoding=serialization.Encoding.PEM,
|
72
|
-
format=serialization.PrivateFormat.TraditionalOpenSSL,
|
73
|
-
encryption_algorithm=serialization.NoEncryption(),
|
74
|
-
)
|
75
|
-
|
76
|
-
return cert_pem, key_pem
|
77
|
-
|
78
|
-
|
79
|
-
def clear_all_functools_lru_cache() -> None:
|
80
|
-
# Clear all `functools.lru_cache` to ensure that no state are persisted from one test to another.
|
81
|
-
# Taken from https://stackoverflow.com/a/50699209.
|
82
|
-
with warnings.catch_warnings():
|
83
|
-
warnings.simplefilter(action="ignore", category=ResourceWarning)
|
84
|
-
gc.collect()
|
85
|
-
wrappers = [a for a in gc.get_objects() if isinstance(a, functools._lru_cache_wrapper)]
|
86
|
-
assert len(wrappers) > 0
|
87
|
-
for wrapper in wrappers:
|
88
|
-
wrapper.cache_clear()
|
@@ -1,79 +0,0 @@
|
|
1
|
-
locust/__init__.py,sha256=Hmw2vNf75eLQ1mQIPXAwlQrJ_XFY65MOb92fGsNCukQ,1458
|
2
|
-
locust/__main__.py,sha256=vBQ82334kX06ImDbFlPFgiBRiLIinwNk3z8Khs6hd74,31
|
3
|
-
locust/_version.py,sha256=JBB9SnH1JVeprCyiBeHwUccW_DTDmJF3v1M32Sj6GuA,428
|
4
|
-
locust/argument_parser.py,sha256=sjQoJ1NTac9LdNYT7zn8RajlWqBQs8YFNv6uRExb2gg,28941
|
5
|
-
locust/clients.py,sha256=OHPv6hBAt4gt3HI67yqyT1qrSsF8uMdCwIRu0kIsRWI,19491
|
6
|
-
locust/debug.py,sha256=We6Z9W0btkKSc7PxWmrZx-xMynvOOsKhG6jmDgQin0g,5134
|
7
|
-
locust/dispatch.py,sha256=vYh0QEDFgJ3hY0HgSk-EiNO7IP9ffzXF_Et8wB9JvsI,16995
|
8
|
-
locust/env.py,sha256=sP-fCnZs0e2xodRemLHgTgyyUt5eezwtdA9WsCoqJkQ,12767
|
9
|
-
locust/event.py,sha256=iXEwIYFzra-j1WRldXB9SUibydtD8q8EIKaFPGTTIjk,8729
|
10
|
-
locust/exception.py,sha256=jGgJ32ubuf4pWdlaVOkbh2Y0LlG0_DHi-lv3ib8ppOE,1791
|
11
|
-
locust/html.py,sha256=_n3aB3fxiYzSeE_7RqHF3iiEPjPnbQ3e2Pw9P8AVtPU,3920
|
12
|
-
locust/input_events.py,sha256=ZIyePyAMuA_YFYWg18g_pE4kwuQV3RbEB250MzXRwjY,3314
|
13
|
-
locust/log.py,sha256=Wrkn0Ibugh5Sqjm4hGQ2-jUsy1tNMBdTctp4FyXQI24,3457
|
14
|
-
locust/main.py,sha256=NGjL5QqakU5aeyUzwu2Fh00xVZfC3eoBE3DtfOmRtcM,27854
|
15
|
-
locust/py.typed,sha256=gkWLl8yD4mIZnNYYAIRM8g9VarLvWmTAFeUfEbxJLBw,65
|
16
|
-
locust/runners.py,sha256=otH-ZxTygBRXN46Nmocs5ac8R4b0MsnKAUcHRwVnD1E,69869
|
17
|
-
locust/shape.py,sha256=t-lwBS8LOjWcKXNL7j2U3zroIXJ1b0fazUwpRYQOKXw,1973
|
18
|
-
locust/stats.py,sha256=KLVIdw-jh09u75JFucl7PHXNktAnPnQx-DrV_rUH5xM,45772
|
19
|
-
locust/web.py,sha256=rN1NVeZ9LKSEeDwvpRbOJ0bcy8U1U4VjP-7vK7ejlwM,27367
|
20
|
-
locust/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
-
locust/contrib/fasthttp.py,sha256=tcCeXkDou-WlQwdXhj0Wt29sS9gDrqyA2aA9BMqTzeY,28501
|
22
|
-
locust/rpc/__init__.py,sha256=nVGoHWFQxZjnhCDWjbgXIbmFbN9sizAjkhvSs9_642c,58
|
23
|
-
locust/rpc/protocol.py,sha256=n-rb3GZQcAlldYDj4E4GuFGylYj_26GSS5U29meft5Y,1282
|
24
|
-
locust/rpc/zmqrpc.py,sha256=AAY6w7wSFHsW34qqN28666boHFf6dTSAXPQJnAO6iUI,2707
|
25
|
-
locust/test/__init__.py,sha256=CaVC4yA4DnCO8EY3LbedPHFg86a9Lqlpe92JuiX3THw,396
|
26
|
-
locust/test/fake_module1_for_env_test.py,sha256=dzGYWCr1SSkd8Yyo68paUNrCNW7YY_QgjRb7sM37gG0,164
|
27
|
-
locust/test/fake_module2_for_env_test.py,sha256=dzGYWCr1SSkd8Yyo68paUNrCNW7YY_QgjRb7sM37gG0,164
|
28
|
-
locust/test/mock_locustfile.py,sha256=4xgoAYlhvdIBjGsLFFN0abpTNM7k12iSkrfTPUQhAMQ,1271
|
29
|
-
locust/test/mock_logging.py,sha256=qapKrKhTdlVc8foJB2Hxjn7SB6soaLeAj3VF4A6kZtw,806
|
30
|
-
locust/test/test_debugging.py,sha256=omQ0w5_Xh1xuTBzkd3VavEIircwtlmoOEHcMInY67vU,1053
|
31
|
-
locust/test/test_dispatch.py,sha256=RjoncanN4FFt-aiTl4G8XRoc81n6fwfO8CacbjzpvP8,168856
|
32
|
-
locust/test/test_env.py,sha256=l0fLl9nubdgzxwFNajmBkJvQc5cO5rOTE4p12lbCbs0,8919
|
33
|
-
locust/test/test_fasthttp.py,sha256=cuWsS9t875Mrik0xTXlsfHde90F6_cgKWKJ3_Dr0ldw,30723
|
34
|
-
locust/test/test_http.py,sha256=VQCVY0inLC0RS-V3E9WHL3vBLGokZjQt0zKSrTNlQmM,12536
|
35
|
-
locust/test/test_interruptable_task.py,sha256=LZKSV-aJNnwfvAxguz6SckBEuGEnfGimoIgVfJ2wQTA,1377
|
36
|
-
locust/test/test_load_locustfile.py,sha256=v-muHoM-CYu8t7DXm4AQtFP2q8RYfnTTUBqj7uVqhig,8494
|
37
|
-
locust/test/test_locust_class.py,sha256=oGhhOX848jHRQnIfFlhLlW-kHGYLyYsfDX8hM07Ro7g,25506
|
38
|
-
locust/test/test_log.py,sha256=YPY6vgTAy1KaNU2qoVvQrTH5x_mzRrljEHrkSBy3yxs,7553
|
39
|
-
locust/test/test_main.py,sha256=7OuH2-7noD_rbeoKJD9hIZsylSugu7ze3XFIrU1u0HI,85016
|
40
|
-
locust/test/test_old_wait_api.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
41
|
-
locust/test/test_parser.py,sha256=-2VO5Dopg-VoWvIgXrmr7GN40cqrnjUoctBHmVlyewg,17826
|
42
|
-
locust/test/test_runners.py,sha256=jvyv5JCD4sJ_8nmB8ZzqGINLkepIAKyIgwdVTzMtG7I,169468
|
43
|
-
locust/test/test_sequential_taskset.py,sha256=4RMJp6_xEIrLh8wjNzhIQjKmBvoqgzCNz57Zz6kWz-k,3900
|
44
|
-
locust/test/test_stats.py,sha256=F51VkL3k3y4OhYBlRyV6vWzisenSAOmSWKy2IPVrnWM,33929
|
45
|
-
locust/test/test_tags.py,sha256=mzhGLPMizSnSItTHLHizYvloxDfuIDAOgelwInyrf28,13138
|
46
|
-
locust/test/test_taskratio.py,sha256=SQ-sBqeFm2GhkfCD_57-fPzQrk1ilSw3DRb0_nwyxAI,2742
|
47
|
-
locust/test/test_users.py,sha256=lp6yAKGK9_MIs9F7s1Vc3561P4oRavhpeVo2y9w3SUU,2135
|
48
|
-
locust/test/test_util.py,sha256=DmFTgNSWWx8zrsx9_ZGO6MsySmBV1H_GzNIVzzyapCM,1229
|
49
|
-
locust/test/test_wait_time.py,sha256=3evSEp6amMWFrzmSYs71MCeIsu7Rtarldb_HnwgSrU0,2353
|
50
|
-
locust/test/test_web.py,sha256=MxLdLIiOFdS6zoRoPJqviFPKwymLsaQRzVzbvr3qpEc,46789
|
51
|
-
locust/test/test_zmqrpc.py,sha256=kONaZ11hwnneLwaVn7lIDVV7KHpEP2nkxuKhfb9ba3o,2173
|
52
|
-
locust/test/testcases.py,sha256=ZaPYNxSSChAs0nts_13mCGY7WFW8AjXQZdPOvwAK0TY,6961
|
53
|
-
locust/test/util.py,sha256=98HXLClkycNTxLiuy1d3W_tM6dBU9bA-p5ZXMfncaWE,2754
|
54
|
-
locust/user/__init__.py,sha256=S2yvmI_AU9kXirtTIVqiV_Hs7yXzqXvaSgkNo9ig-fk,71
|
55
|
-
locust/user/inspectuser.py,sha256=KgrWHyE5jhK6or58R7soLRf-_st42AaQrR72qbiXw9E,2641
|
56
|
-
locust/user/sequential_taskset.py,sha256=SbrrGU9HV2nEWe6zQVtjymn8NgPISP7QSNoVdyoXjYg,2687
|
57
|
-
locust/user/task.py,sha256=doCOclhPC92ePfVa1KfIceZC-YofpnM4VaKplWYNH8o,16730
|
58
|
-
locust/user/users.py,sha256=BsKyxzLq1lmdYBXnwHNyMH_Nxfy7QRlyLnfiE8539HY,9989
|
59
|
-
locust/user/wait_time.py,sha256=bGRKMVx4lom75sX3POYJUa1CPeME2bEAXG6CEgxSO5U,2675
|
60
|
-
locust/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
61
|
-
locust/util/cache.py,sha256=IxbpGawl0-hoWKvCrtksxjSLf2GbBBTVns06F7mFBkM,1062
|
62
|
-
locust/util/date.py,sha256=pqyUuqzPds-A8ai6ZYTxe5Eak1M1BR9iuQcqEcrtHwc,179
|
63
|
-
locust/util/deprecation.py,sha256=pFipULkYFjYnuFSycJZ0s95r0CTSlvx8otGnqSu1bsQ,2028
|
64
|
-
locust/util/exception_handler.py,sha256=jTMyBq2a0O07fRjmqGkheyaPj58tUgnbbcjoesKGPws,797
|
65
|
-
locust/util/load_locustfile.py,sha256=hn70KcIG8jHmZyuKv2pcEmwgWtOEu24Efeji1KRYNUE,2964
|
66
|
-
locust/util/rounding.py,sha256=5haxR8mKhATqag6WvPby-MSRRgIw5Ob6thbyvMYZM7o,92
|
67
|
-
locust/util/timespan.py,sha256=Y0LtnhUq2Mq19p04u0XtBlYQ_-S2cRvwRdgru8W9WhA,986
|
68
|
-
locust/webui/dist/auth.html,sha256=NE_pYWbFjnBEkq2tG5mS_9YoL7JHX4Gkx9zhQoxlSC8,501
|
69
|
-
locust/webui/dist/index.html,sha256=S78UvAUZbQ-sH0wBxqFKrT2ZSfRxUFGx5xwQY6FaVMk,507
|
70
|
-
locust/webui/dist/report.html,sha256=sOdZZVgZbqgu86BBCSQf3uQUYXgmgSnXF32JpnyAII8,513
|
71
|
-
locust/webui/dist/assets/favicon.ico,sha256=IUl-rYqfpHdV38e-s0bkmFIeLS-n3Ug0DQxk-h202hI,8348
|
72
|
-
locust/webui/dist/assets/index-e9ad42b4.js,sha256=aXKF6Qug5b9n5e160A0PFvM0qgJQgVwtwQhLwCsek-4,1647570
|
73
|
-
locust/webui/dist/assets/logo.png,sha256=EIVPqr6wE_yqguHaqFHIsH0ZACLSrvNWyYO7PbyIj4w,19299
|
74
|
-
locust-2.29.2.dev34.dist-info/LICENSE,sha256=78XGpIn3fHVBfaxlPNUfjVufSN7QsdhpJMRJHv2AFpo,1095
|
75
|
-
locust-2.29.2.dev34.dist-info/METADATA,sha256=JxBhCMRud-_bXYMsQ-Bbo6Gs9yXAEKQCdfo40CmNP1Q,7390
|
76
|
-
locust-2.29.2.dev34.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
|
77
|
-
locust-2.29.2.dev34.dist-info/entry_points.txt,sha256=RAdt8Ku-56m7bFjmdj-MBhbF6h4NX7tVODR9QNnOg0E,44
|
78
|
-
locust-2.29.2.dev34.dist-info/top_level.txt,sha256=XSsjgPA8Ggf9TqKVbkwSqZFuPlZ085X13M9orDycE20,7
|
79
|
-
locust-2.29.2.dev34.dist-info/RECORD,,
|
@@ -1 +0,0 @@
|
|
1
|
-
locust
|
File without changes
|