MockStateMachineHandler

Struct MockStateMachineHandler 

Source
pub struct MockStateMachineHandler<T>
where T: TypeConfig,
{ /* private fields */ }

Implementations§

Source§

impl<T> MockStateMachineHandler<T>
where T: TypeConfig,

Source

pub fn checkpoint(&mut self)

Validate that all current expectations for all methods have been satisfied, and discard them.

Source

pub fn new() -> Self

Create a new mock object with no expectations.

This method will not be generated if the real struct already has a new method. However, it will be generated if the struct implements a trait with a new method. The trait’s new method can still be called like <MockX as TraitY>::new

Source§

impl<T> MockStateMachineHandler<T>
where T: TypeConfig,

Source

pub fn expect_last_applied(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the last_applied method

Source

pub fn expect_update_pending(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the update_pending method

Source

pub fn expect_wait_applied(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the wait_applied method

Source

pub fn expect_apply_chunk(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the apply_chunk method

Source

pub fn expect_read_from_state_machine(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the read_from_state_machine method

Source

pub fn expect_apply_snapshot_stream_from_leader( &mut self, ) -> &mut Expectation<T>

Create an Expectation for mocking the apply_snapshot_stream_from_leader method

Source

pub fn expect_should_snapshot(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the should_snapshot method

Source

pub fn expect_create_snapshot(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the create_snapshot method

Source

pub fn expect_cleanup_snapshot(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the cleanup_snapshot method

Source

pub fn expect_validate_purge_request(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the validate_purge_request method

Source

pub fn expect_handle_purge_request(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the handle_purge_request method

Source

pub fn expect_get_latest_snapshot_metadata(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the get_latest_snapshot_metadata method

Source

pub fn expect_load_snapshot_data(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the load_snapshot_data method

Source

pub fn expect_load_snapshot_chunk(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the load_snapshot_chunk method

Source

pub fn expect_pending_range(&mut self) -> &mut Expectation<T>

Create an Expectation for mocking the pending_range method

Trait Implementations§

Source§

impl<T> Debug for MockStateMachineHandler<T>
where T: TypeConfig,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<T> Default for MockStateMachineHandler<T>
where T: TypeConfig,

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<T> StateMachineHandler<T> for MockStateMachineHandler<T>
where T: TypeConfig,

Source§

fn update_pending(&self, new_commit: u64)

Updates the highest known committed log index that hasn’t been applied yet

Source§

fn wait_applied<'life0, 'async_trait>( &'life0 self, target_index: u64, timeout: Duration, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Waits until the state machine has applied entries up to the target index. Returns error if timeout is reached before the target is applied.

This is used to ensure linearizable reads: after leader confirms a log entry is committed (via quorum), we must wait for the state machine to apply it before reading to guarantee the read reflects all committed writes.

Source§

fn apply_chunk<'life0, 'async_trait>( &'life0 self, chunk: Vec<Entry>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Applies a batch of committed log entries to the state machine

Source§

fn read_from_state_machine(&self, keys: Vec<Bytes>) -> Option<Vec<ClientResult>>

Reads values from the state machine for given keys Returns None if any key doesn’t exist

Source§

fn apply_snapshot_stream_from_leader<'life0, 'life1, 'async_trait>( &'life0 self, current_term: u64, stream: Box<Streaming<SnapshotChunk>>, ack_tx: Sender<SnapshotAck>, config: &'life1 SnapshotConfig, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Receives and installs a snapshot stream pushed by the leader Used when leader proactively sends snapshot updates to followers

Source§

fn should_snapshot(&self, new_commit_data: NewCommitData) -> bool

Determines if a snapshot should be created based on new commit data

Source§

fn create_snapshot<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(SnapshotMetadata, PathBuf)>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Asynchronously creates a state machine snapshot with the following steps:

  1. Acquires a write lock to ensure exclusive access during snapshot creation
  2. Prepares temporary and final snapshot file paths using:
    • Last applied index/term from state machine
  3. Generates snapshot data to temporary file using state machine implementation
  4. Atomically renames temporary file to final snapshot file to ensure consistency
  5. Cleans up old snapshots based on last_included_index, retaining only the latest snapshot files as specified by cleanup_retain_count.

Returns new Snapshot metadata and final snapshot path to indicate the new snapshot file has been successfully created

Source§

fn cleanup_snapshot<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, before_version: u64, snapshot_dir: &'life1 Path, snapshot_dir_prefix: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Cleans up old snapshots before specified version

Source§

fn validate_purge_request<'life0, 'life1, 'async_trait>( &'life0 self, current_term: u64, leader_id: Option<u32>, req: &'life1 PurgeLogRequest, ) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Validates if a log purge request from leader is authorized

Source§

fn handle_purge_request<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, current_term: u64, leader_id: Option<u32>, last_purged: Option<LogId>, req: &'life1 PurgeLogRequest, raft_log: &'life2 Arc<ROF<T>>, ) -> Pin<Box<dyn Future<Output = Result<PurgeLogResponse>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Processes log purge requests (for non-leader nodes)

Source§

fn get_latest_snapshot_metadata(&self) -> Option<SnapshotMetadata>

Retrieves metadata of the latest valid snapshot

Source§

fn load_snapshot_data<'life0, 'async_trait>( &'life0 self, metadata: SnapshotMetadata, ) -> Pin<Box<dyn Future<Output = Result<BoxStream<'static, Result<SnapshotChunk>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Loads snapshot data as a stream of chunks

Source§

fn load_snapshot_chunk<'life0, 'life1, 'async_trait>( &'life0 self, metadata: &'life1 SnapshotMetadata, seq: u32, ) -> Pin<Box<dyn Future<Output = Result<SnapshotChunk>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Loads a specific chunk of snapshot data by sequence number

Source§

fn last_applied(&self) -> u64

Source§

fn pending_range(&self) -> Option<RangeInclusive<u64>>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Any for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Source§

fn type_name(&self) -> &'static str

Source§

impl<T> AnySync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more