Skip to content

Commit f85e96d

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 f85e96d

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

lightning-persister/src/test_utils.rs

Lines changed: 12 additions & 3 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,8 @@ 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 total_num_entries = num_primary_namespaces * num_secondary_namespaces * num_keys;
75+
let mut stored_keys = HashSet::with_capacity(total_num_entries);
7376
for i in 0..num_primary_namespaces {
7477
let primary_namespace =
7578
format!("testspace{}", KVSTORE_NAMESPACE_KEY_ALPHABET.chars().nth(i).unwrap());
@@ -79,22 +82,28 @@ pub(crate) fn do_test_data_migration<S: MigratableKVStore, T: MigratableKVStore>
7982
for k in 0..num_keys {
8083
let key =
8184
format!("testkey{}", KVSTORE_NAMESPACE_KEY_ALPHABET.chars().nth(k).unwrap());
85+
stored_keys.insert((
86+
primary_namespace.clone(),
87+
secondary_namespace.clone(),
88+
key.clone(),
89+
));
8290
source_store
8391
.write(&primary_namespace, &secondary_namespace, &key, &dummy_data)
8492
.unwrap();
8593
}
8694
}
8795
}
88-
let total_num_entries = num_primary_namespaces * num_secondary_namespaces * num_keys;
8996
let all_keys = source_store.list_all_keys().unwrap();
9097
assert_eq!(all_keys.len(), total_num_entries);
9198

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)