pijul nest
guest [sign in]

More tests

pmeunier
Jul 30, 2021, 6:05 PM
BYI23QWI44ZINCI32VLVG2JJG3WUZFCYEKNNNLLMXMWQCTKZ6PRAC

Dependencies

  • [2] SYURNHHL Adding the `put_mut` and `set_left_child` methods
  • [3] OTWDDJE7 Trait/type cleanup
  • [4] DASFQGOR Debugging
  • [5] UAQX27N4 Tests
  • [6] YWFYZNLZ Cleanup + inter-process concurrency
  • [7] OFINGD26 implementing prev() on cursors (+ some cleanup)
  • [8] W2MIZD5B Single file databases + CRC for the root pages (checking the other pages makes everything very slow)
  • [*] 6DCQHIFP Minor changes after benchmarking
  • [*] 6DMPXOAT More debugging
  • [*] FZBLNBGN Diagnostic tools (add_refs, check_free) + cleanup
  • [*] X3QVVQIS More debugging (del seems to work now)
  • [*] MSRWB47Y Deletions at immutable leaves weren't really deleting anything
  • [*] Q7DRIBBR Debugging replace (which cannot be del+put)
  • [*] G4JEQLLX Debugging synchronisation
  • [*] E4MD6T3L Proofreading and commenting of this crate (massive bug fixes included)
  • [*] 5LSYTRQ6 More docs, example, and fixing the free page diagnostic function for mutable transactions
  • [*] EYNN7RLS Tests++ (including UUID)
  • [*] KX3WVNZW Testing/debugging "rebalance causes split of the root"
  • [*] T7QB6QEP Adding debug.rs

Change contents

  • edit in sanakirja/src/tests.rs at line 3
    [3.96]
    [3.96]
    use std::path::Path;
  • edit in sanakirja/src/tests.rs at line 39
    [3.2558]
    [3.10880]
    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
    [3.11411][3.11411:11445]()
    let path = "/home/pe/bla/db";
    [3.11411]
    [3.11445]
    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
    [3.11467][3.11467:11513]()
    std::fs::remove_file(path).unwrap_or(());
  • replacement in sanakirja/src/tests.rs at line 89
    [3.12035][3.12035:12182]()
    for i in 0.. {
    let do_debug = i > 5618; // i % 1_000_000 == 0;
    if do_debug {
    env_logger::try_init().unwrap_or(());
    [3.12035]
    [3.12182]
    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
    [3.14694][3.14694:14728]()
    let path = "/home/pe/bla/db";
    [3.14694]
    [3.14728]
    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
    [3.14750][3.14750:14796]()
    std::fs::remove_file(path).unwrap_or(());
  • replacement in sanakirja/src/tests.rs at line 181
    [3.15288][3.15288:15351]()
    for i in 0.. {
    let do_debug = i % 10_000_000 == 0;
    [3.15288]
    [3.15351]
    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
    [3.17103][3.17103:17104]()
    [3.17103]
    [3.17104]
    // 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
    [3.17152][3.17152:17187]()
    let path = "/home/pe/bla/udb";
    [3.17152]
    [3.17187]
    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
    [3.17209][3.17209:17255]()
    std::fs::remove_file(path).unwrap_or(());
  • replacement in sanakirja/src/tests.rs at line 255
    [3.17781][3.17781:17853]()
    for i in 0.. {
    let do_debug = true; // i % 10_000_000 == 0;
    [3.17781]
    [3.17853]
    for i in 0..448696 {
    let do_debug = i >= 448_693;
  • edit in sanakirja/src/tests.rs at line 265
    [3.18166]
    [3.18166]
    debug(&txn, &[&db], "debug0", true);
  • replacement in sanakirja/src/tests.rs at line 267
    [3.18184][3.18184:18255]()
    assert!(del(&mut txn, &mut db, &k, Some(&v)).unwrap())
    [3.18184]
    [3.18255]
    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
    [3.18663][3.18663:18718]()
    for (i, (k, v)) in ve.iter().enumerate() {
    [3.18663]
    [3.18718]
    for (i_, (k, v)) in ve.iter().enumerate() {
  • replacement in sanakirja/src/tests.rs at line 287
    [3.18788][3.18788:18858]()
    panic!("test {:?} {:?} {:?}", i, k.0[0], v.0[0]);
    [3.18788]
    [3.18858]
    debug(&txn, &[&db], "debug1", true);
    panic!("test {:?} {:?} {:?} {:?}", i, i_, k.0[0], v.0[0]);
  • replacement in sanakirja/src/tests.rs at line 349
    [3.2242][3.1151:1199]()
    let _db2 = fork_db(&mut txn, &db).unwrap();
    [3.2242]
    [3.25688]
    let db2 = fork_db(&mut txn, &db).unwrap();
  • edit in sanakirja/src/tests.rs at line 368
    [3.3082]
    [3.4262]
    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
    [3.4786]
    [10.609]
    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
    [10.709]
    [10.709]
    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
    [3.4943]
    [3.4943]
    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
    [11.1860]
    [12.197]
    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
    [2.2004]
    [3.5674]
    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
    [13.9807]
    [14.204]
    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
    [15.11261]
    [15.11261]
    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
    [14.941]
    [13.9941]
    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
    [12.1060]
    [12.1060]
    check_refs(&txn, &refs);
  • edit in sanakirja/src/tests.rs at line 752
    [16.2092]
    [16.2092]
    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
    [17.1511]
    [16.2587]
    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
    [18.523]
    [12.1136]
    check_refs(&txn, &refs);
  • edit in sanakirja/src/tests.rs at line 934
    [10.1327]
    [10.1327]
    std::fs::remove_file("/tmp/sanakirja0/db").unwrap_or(());
  • edit in sanakirja/src/tests.rs at line 1099
    [19.358]
    [19.358]
    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
    [20.5466]
    [19.828]
    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
    [19.839]
    [3.15945]
    #[cfg(feature = "uuid")]
  • edit in sanakirja/src/tests.rs at line 1368
    [12.1485]
    [12.1485]
    check_refs(&txn, &refs);
  • edit in sanakirja/src/debug.rs at line 286
    [12.6912]
    [12.6912]
    }
    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);
    }
    }