From 52f63b2af089b9a23dec04fae01ac1bdeaf57fc0 Mon Sep 17 00:00:00 2001 From: PThorpe92 Date: Thu, 17 Jul 2025 23:25:11 -0400 Subject: [PATCH] Impl truncate for simulator --- simulator/runner/file.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/simulator/runner/file.rs b/simulator/runner/file.rs index 1be2cb48b..f78ae3287 100644 --- a/simulator/runner/file.rs +++ b/simulator/runner/file.rs @@ -225,6 +225,38 @@ impl File for SimulatorFile { fn size(&self) -> Result { self.inner.size() } + + fn truncate( + &self, + len: usize, + mut c: turso_core::Completion, + ) -> Result> { + if self.fault.get() { + return Err(turso_core::LimboError::InternalError( + FAULT_ERROR_MSG.into(), + )); + } + if let Some(latency) = self.generate_latency_duration() { + let CompletionType::Truncate(truncate_completion) = &mut c.completion_type else { + unreachable!(); + }; + let before = self.rng.borrow_mut().gen_bool(0.5); + let dummy_complete = Box::new(|_| {}); + let prev_complete = + std::mem::replace(&mut truncate_completion.complete, dummy_complete); + let new_complete = move |res| { + if before { + std::thread::sleep(latency); + } + (prev_complete)(res); + if !before { + std::thread::sleep(latency); + } + }; + truncate_completion.complete = Box::new(new_complete); + }; + self.inner.truncate(len, c) + } } impl Drop for SimulatorFile {