fixed aux modifications on light client (#1621)

This commit is contained in:
Svyatoslav Nikolsky
2019-01-30 16:44:29 +03:00
committed by Gav Wood
parent aa5e0658f8
commit a4756710c5
2 changed files with 37 additions and 4 deletions
@@ -130,6 +130,16 @@ impl<S, F, Block, H> ClientBackend<Block, H> for Backend<S, F> where
operation.leaf_state,
operation.aux_ops,
)?;
} else {
for (key, maybe_val) in operation.aux_ops {
match maybe_val {
Some(val) => self.blockchain.storage().insert_aux(
&[(&key[..], &val[..])],
::std::iter::empty(),
)?,
None => self.blockchain.storage().insert_aux(::std::iter::empty(), &[&key[..]])?,
}
}
}
Ok(())
@@ -311,3 +321,21 @@ where
None
}
}
#[cfg(test)]
mod tests {
use primitives::Blake2Hasher;
use test_client::runtime::Block;
use crate::light::blockchain::tests::{DummyBlockchain, DummyStorage};
use super::*;
#[test]
fn light_aux_store_is_updated_via_non_importing_op() {
let backend = Backend::new(Arc::new(DummyBlockchain::new(DummyStorage::new())));
let mut op = ClientBackend::<Block, Blake2Hasher>::begin_operation(&backend).unwrap();
BlockImportOperation::<Block, Blake2Hasher>::insert_aux(&mut op, vec![(vec![1], Some(vec![2]))]).unwrap();
ClientBackend::<Block, Blake2Hasher>::commit_operation(&backend, op).unwrap();
assert_eq!(AuxStore::get_aux(&backend, &[1]).unwrap(), Some(vec![2]));
}
}