Skip to content

Commit 23d9f47

Browse files
committed
Add tests for db persistence
Signed-off-by: Victor Porof <[email protected]>
1 parent ddcb5ab commit 23d9f47

File tree

2 files changed

+128
-0
lines changed

2 files changed

+128
-0
lines changed

src/store/integer.rs

+60
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,36 @@ mod tests {
216216
assert_eq!(s.get(&reader, 3).expect("read"), None);
217217
}
218218
}
219+
220+
#[test]
221+
fn test_persist() {
222+
let root = Builder::new().prefix("test_integer_persist").tempdir().expect("tempdir");
223+
fs::create_dir_all(root.path()).expect("dir created");
224+
225+
{
226+
let k = Rkv::new::<backend::Lmdb>(root.path()).expect("new succeeded");
227+
let s = k.open_integer("s", StoreOptions::create()).expect("open");
228+
229+
let mut writer = k.write().expect("writer");
230+
s.put(&mut writer, 1, &Value::Str("hello!")).expect("write");
231+
s.put(&mut writer, 2, &Value::Str("hello!")).expect("write");
232+
s.put(&mut writer, 3, &Value::Str("hello!")).expect("write");
233+
assert_eq!(s.get(&writer, 1).expect("read"), Some(Value::Str("hello!")));
234+
assert_eq!(s.get(&writer, 2).expect("read"), Some(Value::Str("hello!")));
235+
assert_eq!(s.get(&writer, 3).expect("read"), Some(Value::Str("hello!")));
236+
writer.commit().expect("committed");
237+
}
238+
239+
{
240+
let k = Rkv::new::<backend::Lmdb>(root.path()).expect("new succeeded");
241+
let s = k.open_integer("s", StoreOptions::create()).expect("open");
242+
243+
let reader = k.read().expect("reader");
244+
assert_eq!(s.get(&reader, 1).expect("read"), Some(Value::Str("hello!")));
245+
assert_eq!(s.get(&reader, 2).expect("read"), Some(Value::Str("hello!")));
246+
assert_eq!(s.get(&reader, 3).expect("read"), Some(Value::Str("hello!")));
247+
}
248+
}
219249
}
220250

221251
#[cfg(test)]
@@ -359,4 +389,34 @@ mod tests_safe {
359389
assert_eq!(s.get(&reader, 3).expect("read"), None);
360390
}
361391
}
392+
393+
#[test]
394+
fn test_persist() {
395+
let root = Builder::new().prefix("test_integer_persist").tempdir().expect("tempdir");
396+
fs::create_dir_all(root.path()).expect("dir created");
397+
398+
{
399+
let k = Rkv::new::<backend::SafeMode>(root.path()).expect("new succeeded");
400+
let s = k.open_integer("s", StoreOptions::create()).expect("open");
401+
402+
let mut writer = k.write().expect("writer");
403+
s.put(&mut writer, 1, &Value::Str("hello!")).expect("write");
404+
s.put(&mut writer, 2, &Value::Str("hello!")).expect("write");
405+
s.put(&mut writer, 3, &Value::Str("hello!")).expect("write");
406+
assert_eq!(s.get(&writer, 1).expect("read"), Some(Value::Str("hello!")));
407+
assert_eq!(s.get(&writer, 2).expect("read"), Some(Value::Str("hello!")));
408+
assert_eq!(s.get(&writer, 3).expect("read"), Some(Value::Str("hello!")));
409+
writer.commit().expect("committed");
410+
}
411+
412+
{
413+
let k = Rkv::new::<backend::SafeMode>(root.path()).expect("new succeeded");
414+
let s = k.open_integer("s", StoreOptions::create()).expect("open");
415+
416+
let reader = k.read().expect("reader");
417+
assert_eq!(s.get(&reader, 1).expect("read"), Some(Value::Str("hello!")));
418+
assert_eq!(s.get(&reader, 2).expect("read"), Some(Value::Str("hello!")));
419+
assert_eq!(s.get(&reader, 3).expect("read"), Some(Value::Str("hello!")));
420+
}
421+
}
362422
}

src/store/integermulti.rs

+68
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,40 @@ mod tests {
283283
assert!(iter.next().is_none());
284284
}
285285
}
286+
287+
#[test]
288+
fn test_persist() {
289+
let root = Builder::new().prefix("test_multi_integer_persist").tempdir().expect("tempdir");
290+
fs::create_dir_all(root.path()).expect("dir created");
291+
292+
{
293+
let k = Rkv::new::<backend::Lmdb>(root.path()).expect("new succeeded");
294+
let s = k.open_multi_integer("s", StoreOptions::create()).expect("open");
295+
296+
let mut writer = k.write().expect("writer");
297+
s.put(&mut writer, 1, &Value::Str("hello!")).expect("write");
298+
s.put(&mut writer, 1, &Value::Str("hello1!")).expect("write");
299+
s.put(&mut writer, 2, &Value::Str("hello!")).expect("write");
300+
{
301+
let mut iter = s.get(&writer, 1).expect("read");
302+
assert_eq!(iter.next().expect("first").expect("ok").1, Some(Value::Str("hello!")));
303+
assert_eq!(iter.next().expect("second").expect("ok").1, Some(Value::Str("hello1!")));
304+
assert!(iter.next().is_none());
305+
}
306+
writer.commit().expect("committed");
307+
}
308+
309+
{
310+
let k = Rkv::new::<backend::Lmdb>(root.path()).expect("new succeeded");
311+
let s = k.open_multi_integer("s", StoreOptions::create()).expect("open");
312+
313+
let reader = k.read().expect("reader");
314+
let mut iter = s.get(&reader, 1).expect("read");
315+
assert_eq!(iter.next().expect("first").expect("ok").1, Some(Value::Str("hello!")));
316+
assert_eq!(iter.next().expect("second").expect("ok").1, Some(Value::Str("hello1!")));
317+
assert!(iter.next().is_none());
318+
}
319+
}
286320
}
287321

288322
#[cfg(test)]
@@ -465,4 +499,38 @@ mod tests_safe {
465499
assert!(iter.next().is_none());
466500
}
467501
}
502+
503+
#[test]
504+
fn test_persist() {
505+
let root = Builder::new().prefix("test_multi_integer_persist").tempdir().expect("tempdir");
506+
fs::create_dir_all(root.path()).expect("dir created");
507+
508+
{
509+
let k = Rkv::new::<backend::SafeMode>(root.path()).expect("new succeeded");
510+
let s = k.open_multi_integer("s", StoreOptions::create()).expect("open");
511+
512+
let mut writer = k.write().expect("writer");
513+
s.put(&mut writer, 1, &Value::Str("hello!")).expect("write");
514+
s.put(&mut writer, 1, &Value::Str("hello1!")).expect("write");
515+
s.put(&mut writer, 2, &Value::Str("hello!")).expect("write");
516+
{
517+
let mut iter = s.get(&writer, 1).expect("read");
518+
assert_eq!(iter.next().expect("first").expect("ok").1, Some(Value::Str("hello!")));
519+
assert_eq!(iter.next().expect("second").expect("ok").1, Some(Value::Str("hello1!")));
520+
assert!(iter.next().is_none());
521+
}
522+
writer.commit().expect("committed");
523+
}
524+
525+
{
526+
let k = Rkv::new::<backend::SafeMode>(root.path()).expect("new succeeded");
527+
let s = k.open_multi_integer("s", StoreOptions::create()).expect("open");
528+
529+
let reader = k.read().expect("reader");
530+
let mut iter = s.get(&reader, 1).expect("read");
531+
assert_eq!(iter.next().expect("first").expect("ok").1, Some(Value::Str("hello!")));
532+
assert_eq!(iter.next().expect("second").expect("ok").1, Some(Value::Str("hello1!")));
533+
assert!(iter.next().is_none());
534+
}
535+
}
468536
}

0 commit comments

Comments
 (0)