mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-26 04:24:21 +01:00
Merge 'chore: move tx isolation fuzz test to 'tests'' from Jussi Saurio
Closes #2383
This commit is contained in:
22
Cargo.lock
generated
22
Cargo.lock
generated
@@ -682,8 +682,10 @@ dependencies = [
|
||||
"rusqlite",
|
||||
"tempfile",
|
||||
"test-log",
|
||||
"tokio",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
"turso",
|
||||
"turso_core",
|
||||
"zerocopy 0.8.26",
|
||||
]
|
||||
@@ -1614,7 +1616,7 @@ dependencies = [
|
||||
"hyper",
|
||||
"libc",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"socket2 0.5.10",
|
||||
"tokio",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
@@ -3642,6 +3644,16 @@ dependencies = [
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sorted-vec"
|
||||
version = "0.8.6"
|
||||
@@ -3989,9 +4001,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.46.1"
|
||||
version = "1.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17"
|
||||
checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"bytes",
|
||||
@@ -4002,9 +4014,9 @@ dependencies = [
|
||||
"pin-project-lite",
|
||||
"signal-hook-registry",
|
||||
"slab",
|
||||
"socket2",
|
||||
"socket2 0.6.0",
|
||||
"tokio-macros",
|
||||
"windows-sys 0.52.0",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -18,6 +18,8 @@ path = "integration/mod.rs"
|
||||
anyhow.workspace = true
|
||||
env_logger = "0.10.1"
|
||||
turso_core = { path = "../core" }
|
||||
turso = { path = "../bindings/rust" }
|
||||
tokio = { version = "1.47", features = ["full"] }
|
||||
rusqlite = { version = "0.34", features = ["bundled"] }
|
||||
tempfile = "3.0.7"
|
||||
log = "0.4.22"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use rand::seq::SliceRandom;
|
||||
use rand::seq::IndexedRandom;
|
||||
use rand::Rng;
|
||||
use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng};
|
||||
use std::collections::HashMap;
|
||||
@@ -550,7 +550,7 @@ fn generate_operation(
|
||||
shadow_db.get_visible_rows(None) // No transaction
|
||||
}
|
||||
};
|
||||
match rng.gen_range(0..100) {
|
||||
match rng.random_range(0..100) {
|
||||
0..=9 => {
|
||||
if !in_transaction {
|
||||
(Operation::Begin, get_visible_rows(false))
|
||||
@@ -576,7 +576,7 @@ fn generate_operation(
|
||||
}
|
||||
}
|
||||
20..=22 => {
|
||||
let mode = match rng.gen_range(0..3) {
|
||||
let mode = match rng.random_range(0..3) {
|
||||
0 => CheckpointMode::Passive,
|
||||
1 => CheckpointMode::Restart,
|
||||
2 => CheckpointMode::Truncate,
|
||||
@@ -593,28 +593,28 @@ fn generate_operation(
|
||||
}
|
||||
|
||||
fn generate_data_operation(rng: &mut ChaCha8Rng, visible_rows: &[DbRow]) -> Operation {
|
||||
match rng.gen_range(0..4) {
|
||||
match rng.random_range(0..4) {
|
||||
0 => {
|
||||
// Insert - generate a new ID that doesn't exist
|
||||
let id = if visible_rows.is_empty() {
|
||||
rng.gen_range(1..1000)
|
||||
rng.random_range(1..1000)
|
||||
} else {
|
||||
let max_id = visible_rows.iter().map(|r| r.id).max().unwrap();
|
||||
rng.gen_range(max_id + 1..max_id + 100)
|
||||
rng.random_range(max_id + 1..max_id + 100)
|
||||
};
|
||||
let text = format!("text_{}", rng.gen_range(1..1000));
|
||||
let text = format!("text_{}", rng.random_range(1..1000));
|
||||
Operation::Insert { id, text }
|
||||
}
|
||||
1 => {
|
||||
// Update - only if there are visible rows
|
||||
if visible_rows.is_empty() {
|
||||
// No rows to update, try insert instead
|
||||
let id = rng.gen_range(1..1000);
|
||||
let text = format!("text_{}", rng.gen_range(1..1000));
|
||||
let id = rng.random_range(1..1000);
|
||||
let text = format!("text_{}", rng.random_range(1..1000));
|
||||
Operation::Insert { id, text }
|
||||
} else {
|
||||
let id = visible_rows.choose(rng).unwrap().id;
|
||||
let text = format!("updated_{}", rng.gen_range(1..1000));
|
||||
let text = format!("updated_{}", rng.random_range(1..1000));
|
||||
Operation::Update { id, text }
|
||||
}
|
||||
}
|
||||
@@ -622,8 +622,8 @@ fn generate_data_operation(rng: &mut ChaCha8Rng, visible_rows: &[DbRow]) -> Oper
|
||||
// Delete - only if there are visible rows
|
||||
if visible_rows.is_empty() {
|
||||
// No rows to delete, try insert instead
|
||||
let id = rng.gen_range(1..1000);
|
||||
let text = format!("text_{}", rng.gen_range(1..1000));
|
||||
let id = rng.random_range(1..1000);
|
||||
let text = format!("text_{}", rng.random_range(1..1000));
|
||||
Operation::Insert { id, text }
|
||||
} else {
|
||||
let id = visible_rows.choose(rng).unwrap().id;
|
||||
@@ -1,5 +1,6 @@
|
||||
mod common;
|
||||
mod functions;
|
||||
mod fuzz;
|
||||
mod fuzz_transaction;
|
||||
mod query_processing;
|
||||
mod wal;
|
||||
|
||||
Reference in New Issue
Block a user