pub struct TcpServerMocker { /* private fields */ }
Expand description
A TCP server mocker
Can be used to mock a TCP server if the application you want to test uses TCP sockets to connect to a server.
Only 1 client can be connected to the mocked server. When the connection is closed, the mocked server will stop.
Implementations
sourceimpl TcpServerMocker
impl TcpServerMocker
TcpServerMocker implementation
Example
use std::io::Write;
use std::net::TcpStream;
use socket_server_mocker::server_mocker_instruction::{ServerMockerInstructionsList, ServerMockerInstruction};
use socket_server_mocker::tcp_server_mocker::TcpServerMocker;
let tcp_server_mocker = TcpServerMocker::new(1234);
let mut client = TcpStream::connect("127.0.0.1:1234").unwrap();
tcp_server_mocker.add_mock_instructions_list(ServerMockerInstructionsList::new_with_instructions([
ServerMockerInstruction::ReceiveMessage,
ServerMockerInstruction::StopExchange,
].as_slice()));
client.write_all(&[1, 2, 3]).unwrap();
let mock_server_received_message = tcp_server_mocker.pop_received_message();
assert_eq!(Some(vec![1, 2, 3]), mock_server_received_message);
sourcepub const DEFAULT_TCP_TIMEOUT_MS: u64 = 100u64
pub const DEFAULT_TCP_TIMEOUT_MS: u64 = 100u64
Default timeout in milliseconds for the server to wait for a message from the client
sourcepub const DEFAULT_THREAD_RECEIVER_TIMEOUT_MS: u64 = 100u64
pub const DEFAULT_THREAD_RECEIVER_TIMEOUT_MS: u64 = 100u64
Timeout if no more instruction is available and ServerMockerInstruction::StopExchange hasn’t been sent
sourcepub fn new(port: u16) -> Self
pub fn new(port: u16) -> Self
Creates a new TCP server mocker
Arguments
port - the port to listen on, should be the same as the port the application you want to test uses to connect to the server
Will listen on the local interface, port should not be used by another listening application
Note that only 1 client will be able to connect to the server
Panics
Will panic if the port is already used by another application, or in case of any other error with TCP sockets
Will panic in case of error with thread channel
sourcepub fn add_mock_instructions_list(
&self,
instructions_list: ServerMockerInstructionsList
)
pub fn add_mock_instructions_list(
&self,
instructions_list: ServerMockerInstructionsList
)
Adds a list of instructions to the server mocker
The server mocker will execute the instructions in the order they are added
This function could be called as many times as you want, until the connection is closed (event by the client or the server if received a ServerMockerInstruction::StopExchange instruction)
If you push a ServerMockerInstruction::SendMessage instruction, you must ensure that there is a client connected to the server mocker
If you push a ServerMockerInstruction::ReceiveMessage instruction, you must ensure that the client will send a message to the server mocker within the timeout defined in TcpServerMocker::DEFAULT_TCP_TIMEOUT_MS
Panics
Will panic in case of error with thread channel
sourcepub fn pop_received_message(&self) -> Option<BinaryMessage>
pub fn pop_received_message(&self) -> Option<BinaryMessage>
Return first message received by the mock server on the messages queue
If no message is available, wait during TcpServerMocker::DEFAULT_TCP_TIMEOUT_MS and then return None
If a message is available, will return the message and remove it from the queue
sourcepub fn listening_port(&self) -> u16
pub fn listening_port(&self) -> u16
Returns the port on which the mock server is listening
Listen only on local interface
Port should not be used by another listening process