pub struct LlmSimConfig {
pub response: ResponseConfig,
pub tool_calls: Option<ToolCallConfig>,
pub simulate_latency: bool,
pub model_name: String,
pub response_delay: Option<Duration>,
pub response_id: Option<String>,
pub effort_capture: Option<Arc<Mutex<Vec<Option<String>>>>>,
pub message_capture: Option<Arc<Mutex<Vec<Vec<LlmMessage>>>>>,
}Expand description
Configuration for the LlmSim driver
Fields§
§response: ResponseConfigResponse generation configuration
tool_calls: Option<ToolCallConfig>Optional tool calls to include in responses
simulate_latency: boolEnable latency simulation (default: false for fast tests)
model_name: StringModel name to report in metadata
response_delay: Option<Duration>Optional delay before responding (TTFT - time to first token). This is useful for testing cancellation scenarios where we need a predictable time window to cancel an active turn before completion.
response_id: Option<String>Optional response ID to include in completion metadata.
Enables testing previous_response_id chaining.
effort_capture: Option<Arc<Mutex<Vec<Option<String>>>>>Optional capture sink for the per-call reasoning_effort (EVE-595).
When set, every chat_completion_stream call appends the effort it saw
in LlmCallConfig, in call order. Tests use this to assert that a
mid-turn effort change is observed by subsequent LLM steps.
message_capture: Option<Arc<Mutex<Vec<Vec<LlmMessage>>>>>Optional capture sink for the provider-visible messages of each call.
When set, every chat_completion_stream call appends the exact
LlmMessage slice it received, in call order. Tests use this to assert
which messages actually reach the provider after context assembly and
message filtering (e.g. Infinity Context history trimming).
Implementations§
Source§impl LlmSimConfig
impl LlmSimConfig
Sourcepub fn sequence(responses: Vec<String>) -> Self
pub fn sequence(responses: Vec<String>) -> Self
Create a new config with a sequence of responses
Sourcepub fn scripted(turns: Vec<SimTurn>) -> Self
pub fn scripted(turns: Vec<SimTurn>) -> Self
Create a new config that replays scripted turns in order.
Sourcepub fn with_on_exhausted(self, mode: OnExhausted) -> Self
pub fn with_on_exhausted(self, mode: OnExhausted) -> Self
Set the behavior when a scripted response config exhausts its turns.
Sourcepub fn with_tool_calls(self, tool_calls: Vec<ToolCall>) -> Self
pub fn with_tool_calls(self, tool_calls: Vec<ToolCall>) -> Self
Add tool calls to the response
Sourcepub fn with_tool_call_sequence(self, sequences: Vec<Vec<ToolCall>>) -> Self
pub fn with_tool_call_sequence(self, sequences: Vec<Vec<ToolCall>>) -> Self
Add a sequence of tool calls (different per call)
Sourcepub fn with_latency(self) -> Self
pub fn with_latency(self) -> Self
Enable latency simulation
Sourcepub fn with_model(self, model: impl Into<String>) -> Self
pub fn with_model(self, model: impl Into<String>) -> Self
Set model name for metadata
Sourcepub fn with_response_delay(self, delay: Duration) -> Self
pub fn with_response_delay(self, delay: Duration) -> Self
Set a delay before responding (TTFT - time to first token). This creates a predictable time window for testing cancellation scenarios.
Sourcepub fn with_response_id(self, id: impl Into<String>) -> Self
pub fn with_response_id(self, id: impl Into<String>) -> Self
Set a response ID to include in completion metadata (for testing chaining)
Sourcepub fn with_effort_capture(
self,
capture: Arc<Mutex<Vec<Option<String>>>>,
) -> Self
pub fn with_effort_capture( self, capture: Arc<Mutex<Vec<Option<String>>>>, ) -> Self
Set a shared capture sink for the per-call reasoning_effort (EVE-595).
Every chat_completion_stream call appends the effort it observed in
LlmCallConfig, in call order.
Sourcepub fn with_message_capture(
self,
capture: Arc<Mutex<Vec<Vec<LlmMessage>>>>,
) -> Self
pub fn with_message_capture( self, capture: Arc<Mutex<Vec<Vec<LlmMessage>>>>, ) -> Self
Set a shared capture sink for the provider-visible messages of each call.
Every chat_completion_stream call appends the exact LlmMessage slice
it received, in call order.
Sourcepub fn error(message: impl Into<String>) -> Self
pub fn error(message: impl Into<String>) -> Self
Create a new config that returns an error (for testing error handling)
Sourcepub fn model_not_available() -> Self
pub fn model_not_available() -> Self
Create a new config that returns a model-not-available error
Trait Implementations§
Source§impl Clone for LlmSimConfig
impl Clone for LlmSimConfig
Source§fn clone(&self) -> LlmSimConfig
fn clone(&self) -> LlmSimConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for LlmSimConfig
impl Debug for LlmSimConfig
Auto Trait Implementations§
impl Freeze for LlmSimConfig
impl RefUnwindSafe for LlmSimConfig
impl Send for LlmSimConfig
impl Sync for LlmSimConfig
impl Unpin for LlmSimConfig
impl UnsafeUnpin for LlmSimConfig
impl UnwindSafe for LlmSimConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request