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

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 864 of file chaos.py.

+ 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_drop (self)
 Read and discard data.
 
None to_client_drop (self)
 Read and discard 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
 

Constructor & Destructor Documentation

◆ __init__()

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

Reimplemented from pytest_userver.chaos.BaseGate.

Definition at line 877 of file chaos.py.

Member Function Documentation

◆ _connect_to_server()

pytest_userver.chaos.UdpGate._connect_to_server ( self)
protected

Definition at line 907 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 892 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 923 of file chaos.py.

◆ _make_socket_nonblocking()

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

Definition at line 888 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 881 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 953 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 960 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 970 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 978 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 967 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 973 of file chaos.py.

Member Data Documentation

◆ _client_addr

pytest_userver.chaos.UdpGate._client_addr
protected

Definition at line 929 of file chaos.py.

◆ _loop

pytest_userver.chaos.UdpGate._loop
protected

Definition at line 940 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 875 of file chaos.py.

◆ _sockets

pytest_userver.chaos.UdpGate._sockets
protected

Definition at line 886 of file chaos.py.

◆ _to_client_intercept

pytest_userver.chaos.UdpGate._to_client_intercept
protected

Definition at line 944 of file chaos.py.

◆ _to_server_intercept

pytest_userver.chaos.UdpGate._to_server_intercept
protected

Definition at line 943 of file chaos.py.


The documentation for this class was generated from the following file: