mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-23 17:05:36 +01:00
do not shadow + continue the assertion on injected fault error
This commit is contained in:
@@ -11,6 +11,7 @@ use crate::{
|
||||
Create, Delete, Drop, Insert, Query, Select,
|
||||
},
|
||||
table::SimValue,
|
||||
FAULT_ERROR_MSG,
|
||||
},
|
||||
runner::env::SimulatorEnv,
|
||||
};
|
||||
@@ -489,7 +490,14 @@ impl Property {
|
||||
query_clone.shadow(env);
|
||||
Ok(true)
|
||||
}
|
||||
Err(err) => Err(LimboError::InternalError(format!("{}", err))),
|
||||
Err(err) => {
|
||||
let msg = format!("{}", err);
|
||||
if msg.contains(FAULT_ERROR_MSG) {
|
||||
Ok(true)
|
||||
} else {
|
||||
Err(LimboError::InternalError(msg))
|
||||
}
|
||||
}
|
||||
}
|
||||
}),
|
||||
};
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
pub mod query;
|
||||
pub mod table;
|
||||
|
||||
pub(crate) const FAULT_ERROR_MSG: &str = "Injected fault";
|
||||
|
||||
@@ -7,6 +7,8 @@ use rand::Rng as _;
|
||||
use rand_chacha::ChaCha8Rng;
|
||||
use tracing::{instrument, Level};
|
||||
use turso_core::{CompletionType, File, Result};
|
||||
|
||||
use crate::model::FAULT_ERROR_MSG;
|
||||
pub(crate) struct SimulatorFile {
|
||||
pub(crate) inner: Arc<dyn File>,
|
||||
pub(crate) fault: Cell<bool>,
|
||||
@@ -88,7 +90,7 @@ impl File for SimulatorFile {
|
||||
fn lock_file(&self, exclusive: bool) -> Result<()> {
|
||||
if self.fault.get() {
|
||||
return Err(turso_core::LimboError::InternalError(
|
||||
"Injected fault".into(),
|
||||
FAULT_ERROR_MSG.into(),
|
||||
));
|
||||
}
|
||||
self.inner.lock_file(exclusive)
|
||||
@@ -97,7 +99,7 @@ impl File for SimulatorFile {
|
||||
fn unlock_file(&self) -> Result<()> {
|
||||
if self.fault.get() {
|
||||
return Err(turso_core::LimboError::InternalError(
|
||||
"Injected fault".into(),
|
||||
FAULT_ERROR_MSG.into(),
|
||||
));
|
||||
}
|
||||
self.inner.unlock_file()
|
||||
@@ -113,7 +115,7 @@ impl File for SimulatorFile {
|
||||
tracing::debug!("pread fault");
|
||||
self.nr_pread_faults.set(self.nr_pread_faults.get() + 1);
|
||||
return Err(turso_core::LimboError::InternalError(
|
||||
"Injected fault".into(),
|
||||
FAULT_ERROR_MSG.into(),
|
||||
));
|
||||
}
|
||||
if let Some(latency) = self.generate_latency_duration() {
|
||||
@@ -148,7 +150,7 @@ impl File for SimulatorFile {
|
||||
tracing::debug!("pwrite fault");
|
||||
self.nr_pwrite_faults.set(self.nr_pwrite_faults.get() + 1);
|
||||
return Err(turso_core::LimboError::InternalError(
|
||||
"Injected fault".into(),
|
||||
FAULT_ERROR_MSG.into(),
|
||||
));
|
||||
}
|
||||
if let Some(latency) = self.generate_latency_duration() {
|
||||
@@ -178,7 +180,7 @@ impl File for SimulatorFile {
|
||||
tracing::debug!("sync fault");
|
||||
self.nr_sync_faults.set(self.nr_sync_faults.get() + 1);
|
||||
return Err(turso_core::LimboError::InternalError(
|
||||
"Injected fault".into(),
|
||||
FAULT_ERROR_MSG.into(),
|
||||
));
|
||||
}
|
||||
if let Some(latency) = self.generate_latency_duration() {
|
||||
|
||||
@@ -7,7 +7,7 @@ use rand::{RngCore, SeedableRng};
|
||||
use rand_chacha::ChaCha8Rng;
|
||||
use turso_core::{Clock, Instant, OpenFlags, PlatformIO, Result, IO};
|
||||
|
||||
use crate::runner::file::SimulatorFile;
|
||||
use crate::{model::FAULT_ERROR_MSG, runner::file::SimulatorFile};
|
||||
|
||||
pub(crate) struct SimulatorIO {
|
||||
pub(crate) inner: Box<dyn IO>,
|
||||
@@ -104,7 +104,7 @@ impl IO for SimulatorIO {
|
||||
self.nr_run_once_faults
|
||||
.replace(self.nr_run_once_faults.get() + 1);
|
||||
return Err(turso_core::LimboError::InternalError(
|
||||
"Injected fault".into(),
|
||||
FAULT_ERROR_MSG.into(),
|
||||
));
|
||||
}
|
||||
self.inner.run_once()?;
|
||||
|
||||
Reference in New Issue
Block a user