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());
+        }
+    }
 }