userver: pytest_userver.chaos.UdpGate Class Reference
Loading...
Searching...
No Matches
pytest_userver.chaos.UdpGate Class Reference

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: