More tests
Dependencies
- [2]
SYURNHHLAdding the `put_mut` and `set_left_child` methods - [3]
OTWDDJE7Trait/type cleanup - [4]
DASFQGORDebugging - [5]
UAQX27N4Tests - [6]
YWFYZNLZCleanup + inter-process concurrency - [7]
OFINGD26implementing prev() on cursors (+ some cleanup) - [8]
W2MIZD5BSingle file databases + CRC for the root pages (checking the other pages makes everything very slow) - [*]
6DCQHIFPMinor changes after benchmarking - [*]
6DMPXOATMore debugging - [*]
FZBLNBGNDiagnostic tools (add_refs, check_free) + cleanup - [*]
X3QVVQISMore debugging (del seems to work now) - [*]
MSRWB47YDeletions at immutable leaves weren't really deleting anything - [*]
Q7DRIBBRDebugging replace (which cannot be del+put) - [*]
G4JEQLLXDebugging synchronisation - [*]
E4MD6T3LProofreading and commenting of this crate (massive bug fixes included) - [*]
5LSYTRQ6More docs, example, and fixing the free page diagnostic function for mutable transactions - [*]
EYNN7RLSTests++ (including UUID) - [*]
KX3WVNZWTesting/debugging "rebalance causes split of the root" - [*]
T7QB6QEPAdding debug.rs
Change contents
- edit in sanakirja/src/tests.rs at line 3
use std::path::Path; - edit in sanakirja/src/tests.rs at line 39
let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();let db: Db<u64, u64> = txn.root_db(0).unwrap();add_refs(&txn, &db, &mut refs).unwrap();add_free_refs_mut(&txn, &mut refs).unwrap();check_free_mut(&mut txn, &refs);check_refs(&txn, &refs); - replacement in sanakirja/src/tests.rs at line 72
let path = "/home/pe/bla/db";let path = "/tmp/sanakirja1";std::fs::remove_dir_all(path).unwrap_or(());std::fs::create_dir_all(path).unwrap();let path = Path::new(path).join("db"); - edit in sanakirja/src/tests.rs at line 77
std::fs::remove_file(path).unwrap_or(()); - replacement in sanakirja/src/tests.rs at line 89
for i in 0.. {let do_debug = i > 5618; // i % 1_000_000 == 0;if do_debug {env_logger::try_init().unwrap_or(());env_logger::try_init().unwrap_or(());for i in 0..1_000_000 {let do_debug = false;if i % 100_000 == 0 { - replacement in sanakirja/src/tests.rs at line 165
let path = "/home/pe/bla/db";let path = "/tmp/sanakirja2";std::fs::remove_dir_all(path).unwrap_or(());std::fs::create_dir_all(path).unwrap();let path = Path::new(path).join("db"); - edit in sanakirja/src/tests.rs at line 170
std::fs::remove_file(path).unwrap_or(()); - replacement in sanakirja/src/tests.rs at line 181
for i in 0.. {let do_debug = i % 10_000_000 == 0;for i in 0..1_000_000 {let do_debug = false; // i % 10_000_000 == 0; - replacement in sanakirja/src/tests.rs at line 234
// Ici, problèmes:// - On a une suppression dans la feuille, ça ne devrait pas causer un split juste au-dessus.// - Et en plus le split est mal géré. - replacement in sanakirja/src/tests.rs at line 239
let path = "/home/pe/bla/udb";let path = "/tmp/sanakirja3";std::fs::remove_dir_all(path).unwrap_or(());std::fs::create_dir_all(path).unwrap();let path = Path::new(path).join("db"); - edit in sanakirja/src/tests.rs at line 244
std::fs::remove_file(path).unwrap_or(()); - replacement in sanakirja/src/tests.rs at line 255
for i in 0.. {let do_debug = true; // i % 10_000_000 == 0;for i in 0..448696 {let do_debug = i >= 448_693; - edit in sanakirja/src/tests.rs at line 265
debug(&txn, &[&db], "debug0", true); - replacement in sanakirja/src/tests.rs at line 267
assert!(del(&mut txn, &mut db, &k, Some(&v)).unwrap())if !del(&mut txn, &mut db, &k, Some(&v)).unwrap() {panic!("del {}", i);}if do_debug {debug(&txn, &[&db], "debug1", true);} - replacement in sanakirja/src/tests.rs at line 285
for (i, (k, v)) in ve.iter().enumerate() {for (i_, (k, v)) in ve.iter().enumerate() { - replacement in sanakirja/src/tests.rs at line 287
panic!("test {:?} {:?} {:?}", i, k.0[0], v.0[0]);debug(&txn, &[&db], "debug1", true);panic!("test {:?} {:?} {:?} {:?}", i, i_, k.0[0], v.0[0]); - replacement in sanakirja/src/tests.rs at line 349
let _db2 = fork_db(&mut txn, &db).unwrap();let db2 = fork_db(&mut txn, &db).unwrap(); - edit in sanakirja/src/tests.rs at line 368
txn.commit().unwrap();let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();add_free_refs_mut(&txn, &mut refs).unwrap();add_refs(&txn, &db, &mut refs).unwrap();add_refs(&txn, &db2, &mut refs).unwrap();check_free_mut(&mut txn, &refs);check_refs(&txn, &refs); - edit in sanakirja/src/tests.rs at line 391
del(&mut txn, &mut db, &((i * i) % 1_000), None).unwrap();}txn.commit().unwrap();let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();add_free_refs_mut(&txn, &mut refs).unwrap();check_free_mut(&mut txn, &refs);check_refs(&txn, &refs);}#[test]pub fn u64_large_revdel() {env_logger::try_init().unwrap_or(());let env = Env::new_anon(409600000, 1).unwrap();let mut txn = Env::mut_txn_begin(&env).unwrap();let mut db: Db<u64, A> = create_db(&mut txn).unwrap();let n = 40u64;let a = A([0; 100]);for i in 0..n {put(&mut txn, &mut db, &i, &a).unwrap();}debug(&txn, &[&db], "debug0", true);for i in (0..n).rev() { - edit in sanakirja/src/tests.rs at line 418
let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();add_free_refs_mut(&txn, &mut refs).unwrap();add_refs(&txn, &db, &mut refs).unwrap();check_free_mut(&mut txn, &refs);check_refs(&txn, &refs); - edit in sanakirja/src/tests.rs at line 438
let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();add_free_refs_mut(&txn, &mut refs).unwrap();check_free_mut(&mut txn, &refs);check_refs(&txn, &refs); - edit in sanakirja/src/tests.rs at line 474
add_free_refs_mut(&txn, &mut refs).unwrap();check_free_mut(&mut txn, &refs);check_refs(&txn, &refs);txn.commit().unwrap(); - edit in sanakirja/src/tests.rs at line 489
txn.set_root(0, db.db);txn.commit().unwrap();let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();let db: Db<u64, u64> = txn.root_db(0).unwrap();add_refs(&txn, &db, &mut refs).unwrap();add_free_refs_mut(&txn, &mut refs).unwrap();check_refs(&txn, &refs);check_free_mut(&mut txn, &refs); - edit in sanakirja/src/tests.rs at line 516
txn.set_root(0, db.db);txn.commit().unwrap();let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();let db: Db<u64, ()> = txn.root_db(0).unwrap();add_refs(&txn, &db, &mut refs).unwrap();add_free_refs_mut(&txn, &mut refs).unwrap();check_refs(&txn, &refs);check_free_mut(&mut txn, &refs); - edit in sanakirja/src/tests.rs at line 553
txn.set_root(0, db.db);txn.set_root(1, db2.db);txn.commit().unwrap();let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();let db: Db<u64, A> = txn.root_db(0).unwrap();let db2: Db<u64, A> = txn.root_db(1).unwrap();add_refs(&txn, &db, &mut refs).unwrap();add_refs(&txn, &db2, &mut refs).unwrap();add_free_refs_mut(&txn, &mut refs).unwrap();check_refs(&txn, &refs);check_free_mut(&mut txn, &refs); - edit in sanakirja/src/tests.rs at line 602
txn.set_root(0, db.db);txn.set_root(1, db2.db);txn.commit().unwrap();let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();add_refs(&txn, &db, &mut refs).unwrap();add_refs(&txn, &db2, &mut refs).unwrap();add_free_refs_mut(&txn, &mut refs).unwrap();check_refs(&txn, &refs);check_free_mut(&mut txn, &refs); - edit in sanakirja/src/tests.rs at line 706
check_refs(&txn, &refs); - edit in sanakirja/src/tests.rs at line 752
let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();add_free_refs_mut(&txn, &mut refs).unwrap();check_refs(&txn, &refs);check_free_mut(&mut txn, &refs); - edit in sanakirja/src/tests.rs at line 784
std::mem::drop(txn);let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();add_free_refs_mut(&txn, &mut refs).unwrap();check_refs(&txn, &refs);check_free_mut(&mut txn, &refs); - edit in sanakirja/src/tests.rs at line 914
check_refs(&txn, &refs); - edit in sanakirja/src/tests.rs at line 934
std::fs::remove_file("/tmp/sanakirja0/db").unwrap_or(()); - edit in sanakirja/src/tests.rs at line 1099
txn.commit().unwrap();let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();add_refs(&txn, &db, &mut refs).unwrap();add_free_refs_mut(&txn, &mut refs).unwrap();check_refs(&txn, &refs);check_free_mut(&mut txn, &refs); - edit in sanakirja/src/tests.rs at line 1150
txn.commit().unwrap();let mut txn = Env::mut_txn_begin(&env).unwrap();let mut refs = BTreeMap::new();add_free_refs_mut(&txn, &mut refs).unwrap();add_refs(&txn, &db, &mut refs).unwrap();check_refs(&txn, &refs);check_free_mut(&mut txn, &refs); - edit in sanakirja/src/tests.rs at line 1160
#[cfg(feature = "uuid")] - edit in sanakirja/src/tests.rs at line 1368
check_refs(&txn, &refs); - edit in sanakirja/src/debug.rs at line 286
}pub fn check_refs<B: std::borrow::Borrow<crate::Env>, T>(txn: &crate::MutTxn<B, T>, refs: &std::collections::BTreeMap<u64, usize>) {for (p, r) in refs.iter() {if *r >= 2 {assert_eq!(txn.rc(*p).unwrap(), *r as u64);} else {assert_eq!(txn.rc(*p).unwrap(), 0);}}