locust 2.31.9.dev36__tar.gz → 2.31.9.dev42__tar.gz

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.
Files changed (53) hide show
  1. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/PKG-INFO +1 -1
  2. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/_version.py +2 -2
  3. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/rpc/zmqrpc.py +16 -5
  4. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/pyproject.toml +1 -1
  5. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/LICENSE +0 -0
  6. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/README.md +0 -0
  7. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/__init__.py +0 -0
  8. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/__main__.py +0 -0
  9. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/argument_parser.py +0 -0
  10. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/clients.py +0 -0
  11. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/contrib/__init__.py +0 -0
  12. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/contrib/fasthttp.py +0 -0
  13. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/contrib/mongodb.py +0 -0
  14. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/contrib/postgres.py +0 -0
  15. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/debug.py +0 -0
  16. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/dispatch.py +0 -0
  17. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/env.py +0 -0
  18. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/event.py +0 -0
  19. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/exception.py +0 -0
  20. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/html.py +0 -0
  21. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/input_events.py +0 -0
  22. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/log.py +0 -0
  23. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/main.py +0 -0
  24. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/py.typed +0 -0
  25. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/rpc/__init__.py +0 -0
  26. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/rpc/protocol.py +0 -0
  27. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/runners.py +0 -0
  28. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/shape.py +0 -0
  29. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/stats.py +0 -0
  30. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/user/__init__.py +0 -0
  31. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/user/inspectuser.py +0 -0
  32. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/user/sequential_taskset.py +0 -0
  33. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/user/task.py +0 -0
  34. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/user/users.py +0 -0
  35. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/user/wait_time.py +0 -0
  36. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/util/__init__.py +0 -0
  37. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/util/cache.py +0 -0
  38. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/util/date.py +0 -0
  39. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/util/deprecation.py +0 -0
  40. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/util/directory.py +0 -0
  41. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/util/exception_handler.py +0 -0
  42. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/util/load_locustfile.py +0 -0
  43. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/util/rounding.py +0 -0
  44. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/util/timespan.py +0 -0
  45. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/util/url.py +0 -0
  46. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/web.py +0 -0
  47. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/webui/dist/assets/favicon-dark.png +0 -0
  48. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/webui/dist/assets/favicon-light.png +0 -0
  49. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/webui/dist/assets/index-C35vpr6y.js +0 -0
  50. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/webui/dist/auth.html +0 -0
  51. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/webui/dist/index.html +0 -0
  52. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/locust/webui/dist/report.html +0 -0
  53. {locust-2.31.9.dev36 → locust-2.31.9.dev42}/poetry.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust
3
- Version: 2.31.9.dev36
3
+ Version: 2.31.9.dev42
4
4
  Summary: Developer-friendly load testing framework
5
5
  Home-page: https://locust.io/
6
6
  License: MIT
@@ -14,7 +14,7 @@ __version_tuple__: VERSION_TUPLE
14
14
  version_tuple: VERSION_TUPLE
15
15
 
16
16
 
17
- __version__ = "2.31.9.dev36"
17
+ __version__ = "2.31.9.dev42"
18
18
  version = __version__
19
- __version_tuple__ = (2, 31, 9, "dev36")
19
+ __version_tuple__ = (2, 31, 9, "dev42")
20
20
  version_tuple = __version_tuple__
@@ -1,22 +1,24 @@
1
1
  from locust.exception import RPCError, RPCReceiveError, RPCSendError
2
2
  from locust.util.exception_handler import retry
3
3
 
4
+ import socket as csocket
5
+ from socket import gaierror, has_dualstack_ipv6
6
+
4
7
  import msgpack.exceptions as msgerr
5
8
  import zmq.error as zmqerr
6
9
  import zmq.green as zmq
7
- from urllib3.util.connection import HAS_IPV6
8
10
 
9
11
  from .protocol import Message
10
12
 
11
13
 
12
14
  class BaseSocket:
13
- def __init__(self, sock_type):
15
+ def __init__(self, sock_type, ipv4_only):
14
16
  context = zmq.Context()
15
17
  self.socket = context.socket(sock_type)
16
18
 
17
19
  self.socket.setsockopt(zmq.TCP_KEEPALIVE, 1)
18
20
  self.socket.setsockopt(zmq.TCP_KEEPALIVE_IDLE, 30)
19
- if HAS_IPV6:
21
+ if has_dualstack_ipv6() and not ipv4_only:
20
22
  self.socket.setsockopt(zmq.IPV6, 1)
21
23
 
22
24
  @retry()
@@ -60,10 +62,19 @@ class BaseSocket:
60
62
  def close(self, linger=None):
61
63
  self.socket.close(linger=linger)
62
64
 
65
+ def ipv4_only(self, host, port) -> bool:
66
+ try:
67
+ if str(csocket.getaddrinfo(host, port, proto=csocket.IPPROTO_TCP)).find("Family.AF_INET6") == -1:
68
+ return True
69
+ except gaierror as e:
70
+ print(f"Error resolving address: {e}")
71
+ return False
72
+ return False
73
+
63
74
 
64
75
  class Server(BaseSocket):
65
76
  def __init__(self, host, port):
66
- BaseSocket.__init__(self, zmq.ROUTER)
77
+ BaseSocket.__init__(self, zmq.ROUTER, self.ipv4_only(host, port))
67
78
  if port == 0:
68
79
  self.port = self.socket.bind_to_random_port(f"tcp://{host}")
69
80
  else:
@@ -76,6 +87,6 @@ class Server(BaseSocket):
76
87
 
77
88
  class Client(BaseSocket):
78
89
  def __init__(self, host, port, identity):
79
- BaseSocket.__init__(self, zmq.DEALER)
90
+ BaseSocket.__init__(self, zmq.DEALER, self.ipv4_only(host, port))
80
91
  self.socket.setsockopt(zmq.IDENTITY, identity.encode())
81
92
  self.socket.connect("tcp://%s:%i" % (host, port))
@@ -5,7 +5,7 @@ build-backend = "poetry_dynamic_versioning.backend"
5
5
  [tool.poetry]
6
6
  name = "locust"
7
7
  description = "Developer-friendly load testing framework"
8
- version = "2.31.9.dev36"
8
+ version = "2.31.9.dev42"
9
9
  license = "MIT"
10
10
  readme = "README.md"
11
11
  authors = ["Jonatan Heyman", "Lars Holmberg"]
File without changes
File without changes
File without changes