Mercurial > lbo > hg > leveldb-rs
changeset 364:8ef8559c6072
db_impl: Test repeated open-write-close cycle on a DB.
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sat, 07 Oct 2017 21:23:01 +0200 |
parents | 40c6e26ad2c5 |
children | f7df71486099 |
files | src/db_impl.rs |
diffstat | 1 files changed, 38 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/db_impl.rs Sat Oct 07 21:22:38 2017 +0200 +++ b/src/db_impl.rs Sat Oct 07 21:23:01 2017 +0200 @@ -1399,4 +1399,42 @@ assert!(!env.exists(Path::new("db/000001.ldb")).unwrap()); } + + #[test] + fn test_db_impl_open_close_reopen() { + let opt; + { + let mut db = build_db(); + opt = db.opt.clone(); + + db.put(b"xx1", b"111").unwrap(); + db.put(b"xx2", b"112").unwrap(); + db.put(b"xx3", b"113").unwrap(); + db.put(b"xx4", b"114").unwrap(); + db.delete(b"xx2", false).unwrap(); + } + + { + let mut db = DB::open("db", opt.clone()).unwrap(); + + let ss = db.get_snapshot(); + db.put(b"xx4", b"222").unwrap(); + let ss2 = db.get_snapshot(); + + assert_eq!(Some(b"113".to_vec()), db.get_at(&ss, b"xx3").unwrap()); + assert_eq!(None, db.get_at(&ss, b"xx2").unwrap()); + + assert_eq!(Some(b"114".to_vec()), db.get_at(&ss, b"xx4").unwrap()); + assert_eq!(Some(b"222".to_vec()), db.get_at(&ss2, b"xx4").unwrap()); + } + + { + let mut db = DB::open("db", opt).unwrap(); + + let ss = db.get_snapshot(); + assert_eq!(Some(b"113".to_vec()), db.get_at(&ss, b"xx3").unwrap()); + assert_eq!(Some(b"222".to_vec()), db.get_at(&ss, b"xx4").unwrap()); + assert_eq!(None, db.get_at(&ss, b"xx2").unwrap()); + } + } }