Skip to content

Commit 33d3a44

Browse files
committed
Assert we migrated all exactly all keys
Previously, we'd only check that the number of migrated keys and that the migrated data is correct. Here, we also check that all the Previously-written keys are migrated as expected.
1 parent dcc531e commit 33d3a44

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

lightning-persister/src/test_utils.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use lightning::util::persist::{
1010
use lightning::util::test_utils;
1111
use lightning::{check_added_monitors, check_closed_broadcast, check_closed_event};
1212

13+
use std::collections::HashSet;
1314
use std::panic::RefUnwindSafe;
1415

1516
pub(crate) fn do_read_write_remove_list_persist<K: KVStore + RefUnwindSafe>(kv_store: &K) {
@@ -70,6 +71,7 @@ pub(crate) fn do_test_data_migration<S: MigratableKVStore, T: MigratableKVStore>
7071
let num_primary_namespaces = 2;
7172
let num_secondary_namespaces = 2;
7273
let num_keys = 3;
74+
let mut stored_keys = HashSet::new();
7375
for i in 0..num_primary_namespaces {
7476
let primary_namespace =
7577
format!("testspace{}", KVSTORE_NAMESPACE_KEY_ALPHABET.chars().nth(i).unwrap());
@@ -79,6 +81,11 @@ pub(crate) fn do_test_data_migration<S: MigratableKVStore, T: MigratableKVStore>
7981
for k in 0..num_keys {
8082
let key =
8183
format!("testkey{}", KVSTORE_NAMESPACE_KEY_ALPHABET.chars().nth(k).unwrap());
84+
stored_keys.insert((
85+
primary_namespace.clone(),
86+
secondary_namespace.clone(),
87+
key.clone(),
88+
));
8289
source_store
8390
.write(&primary_namespace, &secondary_namespace, &key, &dummy_data)
8491
.unwrap();
@@ -92,9 +99,11 @@ pub(crate) fn do_test_data_migration<S: MigratableKVStore, T: MigratableKVStore>
9299
migrate_kv_store_data(source_store, target_store).unwrap();
93100

94101
assert_eq!(target_store.list_all_keys().unwrap().len(), total_num_entries);
95-
for (p, s, k) in &all_keys {
96-
assert_eq!(target_store.read(p, s, k).unwrap(), dummy_data);
102+
for (p, s, k) in all_keys {
103+
assert_eq!(target_store.read(&p, &s, &k).unwrap(), dummy_data);
104+
assert!(stored_keys.remove(&(p, s, k)));
97105
}
106+
assert!(stored_keys.is_empty());
98107
}
99108

100109
// Integration-test the given KVStore implementation. Test relaying a few payments and check that

0 commit comments

Comments
 (0)