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

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);

Default timeout in milliseconds for the server to wait for a message from the client

Timeout if no more instruction is available and ServerMockerInstruction::StopExchange hasn’t been sent

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

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

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

Returns the port on which the mock server is listening

Listen only on local interface

Port should not be used by another listening process

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.