init cache on restart (#3486)

This commit is contained in:
Svyatoslav Nikolsky
2019-08-26 21:30:09 +03:00
committed by Bastian Köcher
parent b80e611218
commit 8f29199076
2 changed files with 28 additions and 17 deletions
+26 -15
View File
@@ -1030,26 +1030,37 @@ pub(crate) mod tests {
#[test]
fn cache_can_be_initialized_after_genesis_inserted() {
let db = LightStorage::<Block>::new_test();
let (genesis_hash, storage) = {
let db = LightStorage::<Block>::new_test();
// before cache is initialized => None
assert_eq!(db.cache().get_at(b"test", &BlockId::Number(0)), None);
// before cache is initialized => None
assert_eq!(db.cache().get_at(b"test", &BlockId::Number(0)), None);
// insert genesis block (no value for cache is provided)
let mut genesis_hash = None;
insert_block(&db, HashMap::new(), || {
let header = default_header(&Default::default(), 0);
genesis_hash = Some(header.hash());
header
});
// insert genesis block (no value for cache is provided)
let mut genesis_hash = None;
insert_block(&db, HashMap::new(), || {
let header = default_header(&Default::default(), 0);
genesis_hash = Some(header.hash());
header
});
// after genesis is inserted => None
assert_eq!(db.cache().get_at(b"test", &BlockId::Number(0)), None);
// after genesis is inserted => None
assert_eq!(db.cache().get_at(b"test", &BlockId::Number(0)), None);
// initialize cache
db.cache().initialize(b"test", vec![42]).unwrap();
// initialize cache
db.cache().initialize(b"test", vec![42]).unwrap();
// after genesis is inserted + cache is initialized => Some
// after genesis is inserted + cache is initialized => Some
assert_eq!(
db.cache().get_at(b"test", &BlockId::Number(0)),
Some(((0, genesis_hash.unwrap()), None, vec![42])),
);
(genesis_hash, db.db)
};
// restart && check that after restart value is read from the cache
let db = LightStorage::<Block>::from_kvdb(storage as Arc<_>).expect("failed to create test-db");
assert_eq!(
db.cache().get_at(b"test", &BlockId::Number(0)),
Some(((0, genesis_hash.unwrap()), None, vec![42])),