userver: pytest_userver.chaos.UdpGate Class Reference
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts

Implements UDP chaos-proxy logic such as waiting for first message and setting up sockets for forwarding messages between udp-client and udp-server. More...

+ Inheritance diagram for pytest_userver.chaos.UdpGate:
+ Collaboration diagram for pytest_userver.chaos.UdpGate:

Public Member Functions

 __init__ (self, GateRoute route, EvLoop loop)
 
bool is_connected (self)
 Returns True if there is active pair of sockets ready to transfer data at the moment.
 
None start_accepting (self)
 Start accepting tasks.
 
None stop_accepting (self)
 Stop accepting tasks without closing the accepting socket.
 
None to_server_concat_packets (self, int packet_size)
 Pass data in bigger parts.
 
None to_client_concat_packets (self, int packet_size)
 Pass data in bigger parts.
 
None to_server_smaller_parts (self, int max_size, *float sleep_per_packet=0)
 Pass data to server in smaller parts.
 
None to_client_smaller_parts (self, int max_size, *float sleep_per_packet=0)
 Pass data to client in smaller parts.
 
- Public Member Functions inherited from pytest_userver.chaos.BaseGate
'BaseGate__aenter__ (self)
 
None __aexit__ (self, exc_type, exc_value, traceback)
 
 start (self)
 Open the socket and start accepting tasks.
 
None stop (self)
 Stop accepting tasks, close all the sockets.
 
None sockets_close (self, *typing.Optional[int] count=None)
 Close all the connection going through the gate.
 
Address get_sockname_for_clients (self)
 Returns the client socket address that the gate listens on.
 
str info (self)
 Print info on open sockets.
 
None set_to_server_interceptor (self, Interceptor interceptor)
 Replace existing interceptor of client to server data with a custom.
 
None set_to_client_interceptor (self, Interceptor interceptor)
 Replace existing interceptor of server to client data with a custom.
 
None to_server_pass (self)
 Pass data as is.
 
None to_client_pass (self)
 Pass data as is.
 
None to_server_noop (self)
 Do not read data, causing client to keep multiple data.
 
None to_client_noop (self)
 Do not read data, causing server to keep multiple data.
 
None to_server_delay (self, float delay)
 Delay data transmission.
 
None to_client_delay (self, float delay)
 Delay data transmission.
 
None to_server_close_on_data (self)
 Close on first bytes of data from client.
 
None to_client_close_on_data (self)
 Close on first bytes of data from server.
 
None to_server_corrupt_data (self)
 Corrupt data received from client.
 
None to_client_corrupt_data (self)
 Corrupt data received from server.
 
None to_server_limit_bps (self, float bytes_per_second)
 Limit bytes per second transmission by network from client.
 
None to_client_limit_bps (self, float bytes_per_second)
 Limit bytes per second transmission by network from server.
 
None to_server_limit_time (self, float timeout, float jitter)
 Limit connection lifetime on receive of first bytes from client.
 
None to_client_limit_time (self, float timeout, float jitter)
 Limit connection lifetime on receive of first bytes from server.
 
None to_server_limit_bytes (self, int bytes_limit)
 Drop all connections each bytes_limit of data sent by network.
 
None to_client_limit_bytes (self, int bytes_limit)
 Drop all connections each bytes_limit of data sent by network.
 
None to_server_substitute (self, str pattern, str repl)
 Apply regex substitution to data from client.
 
None to_client_substitute (self, str pattern, str repl)
 Apply regex substitution to data from server.
 

Protected Member Functions

None _make_socket_nonblocking (self, Socket sock)
 
typing.List[Socket] _create_accepting_sockets (self)
 
 _connect_to_server (self)
 
 _do_accept (self, Socket accept_sock)
 This task should wait for connections and create SocketPair.
 
- Protected Member Functions inherited from pytest_userver.chaos.BaseGate
None _collect_garbage (self)
 

Protected Attributes

 _sockets
 
 _client_addr
 
 _loop
 
 _to_server_intercept
 
 _to_client_intercept
 
- Protected Attributes inherited from pytest_userver.chaos.BaseGate
 _route
 
 _loop
 
 _connected_event
 
 _NOT_IMPLEMENTED_MESSAGE
 
 _accept_tasks
 
 _sockets
 
 _to_server_intercept
 
 _to_client_intercept
 

Static Protected Attributes

str _NOT_IMPLEMENTED_IN_UDP = 'This method is not allowed in UDP gate'
 
- Static Protected Attributes inherited from pytest_userver.chaos.BaseGate
tuple _NOT_IMPLEMENTED_MESSAGE
 

Detailed Description

Implements UDP chaos-proxy logic such as waiting for first message and setting up sockets for forwarding messages between udp-client and udp-server.

See also
Chaos Testing

Definition at line 848 of file chaos.py.

Constructor & Destructor Documentation

◆ __init__()

pytest_userver.chaos.UdpGate.__init__ (   self,
GateRoute  route,
EvLoop  loop 
)

Reimplemented from pytest_userver.chaos.BaseGate.

Definition at line 861 of file chaos.py.

Member Function Documentation

◆ _connect_to_server()

pytest_userver.chaos.UdpGate._connect_to_server (   self)
protected

Definition at line 891 of file chaos.py.

◆ _create_accepting_sockets()

typing.List[Socket] pytest_userver.chaos.UdpGate._create_accepting_sockets (   self)
protected

Reimplemented from pytest_userver.chaos.BaseGate.

Definition at line 876 of file chaos.py.

◆ _do_accept()

pytest_userver.chaos.UdpGate._do_accept (   self,
Socket  accept_sock 
)
protected

This task should wait for connections and create SocketPair.

Reimplemented from pytest_userver.chaos.BaseGate.

Definition at line 907 of file chaos.py.

◆ _make_socket_nonblocking()

None pytest_userver.chaos.UdpGate._make_socket_nonblocking (   self,
Socket  sock 
)
protected

Definition at line 872 of file chaos.py.

◆ is_connected()

bool pytest_userver.chaos.UdpGate.is_connected (   self)

Returns True if there is active pair of sockets ready to transfer data at the moment.

Definition at line 865 of file chaos.py.

◆ start_accepting()

None pytest_userver.chaos.UdpGate.start_accepting (   self)

Start accepting tasks.

Reimplemented from pytest_userver.chaos.BaseGate.

Definition at line 937 of file chaos.py.

◆ stop_accepting()

None pytest_userver.chaos.UdpGate.stop_accepting (   self)

Stop accepting tasks without closing the accepting socket.

Reimplemented from pytest_userver.chaos.BaseGate.

Definition at line 944 of file chaos.py.

◆ to_client_concat_packets()

None pytest_userver.chaos.UdpGate.to_client_concat_packets (   self,
int  packet_size 
)

Pass data in bigger parts.

Parameters
packet_sizeminimal size of the resulting packet

Reimplemented from pytest_userver.chaos.BaseGate.

Definition at line 954 of file chaos.py.

◆ to_client_smaller_parts()

None pytest_userver.chaos.UdpGate.to_client_smaller_parts (   self,
int  max_size,
*float   sleep_per_packet = 0 
)

Pass data to client in smaller parts.

Parameters
max_sizeMax packet size to send to client
sleep_per_packetOptional sleep interval per packet, seconds

Reimplemented from pytest_userver.chaos.BaseGate.

Definition at line 962 of file chaos.py.

◆ to_server_concat_packets()

None pytest_userver.chaos.UdpGate.to_server_concat_packets (   self,
int  packet_size 
)

Pass data in bigger parts.

Parameters
packet_sizeminimal size of the resulting packet

Reimplemented from pytest_userver.chaos.BaseGate.

Definition at line 951 of file chaos.py.

◆ to_server_smaller_parts()

None pytest_userver.chaos.UdpGate.to_server_smaller_parts (   self,
int  max_size,
*float   sleep_per_packet = 0 
)

Pass data to server in smaller parts.

Parameters
max_sizeMax packet size to send to server
sleep_per_packetOptional sleep interval per packet, seconds

Reimplemented from pytest_userver.chaos.BaseGate.

Definition at line 957 of file chaos.py.

Member Data Documentation

◆ _client_addr

pytest_userver.chaos.UdpGate._client_addr
protected

Definition at line 913 of file chaos.py.

◆ _loop

pytest_userver.chaos.UdpGate._loop
protected

Definition at line 924 of file chaos.py.

◆ _NOT_IMPLEMENTED_IN_UDP

str pytest_userver.chaos.UdpGate._NOT_IMPLEMENTED_IN_UDP = 'This method is not allowed in UDP gate'
staticprotected

Definition at line 859 of file chaos.py.

◆ _sockets

pytest_userver.chaos.UdpGate._sockets
protected

Definition at line 870 of file chaos.py.

◆ _to_client_intercept

pytest_userver.chaos.UdpGate._to_client_intercept
protected

Definition at line 928 of file chaos.py.

◆ _to_server_intercept

pytest_userver.chaos.UdpGate._to_server_intercept
protected

Definition at line 927 of file chaos.py.


The documentation for this class was generated from the following file:
  • /data/code/service_template/third_party/userver/testsuite/pytest_plugins/pytest_userver/chaos.py