mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 18:07:58 +00:00
Kill the light client, CHTs and change tries. (#10080)
* Remove light client, change tries and CHTs * Update tests * fmt * Restore changes_root * Fixed benches * Cargo fmt * fmt * fmt
This commit is contained in:
@@ -23,21 +23,15 @@ use std::{
|
||||
};
|
||||
|
||||
use crate::{
|
||||
backend::Backend,
|
||||
changes_trie::{
|
||||
BlockNumber as ChangesTrieBlockNumber, Configuration as ChangesTrieConfiguration,
|
||||
InMemoryStorage as ChangesTrieInMemoryStorage, State as ChangesTrieState,
|
||||
},
|
||||
ext::Ext,
|
||||
InMemoryBackend, OverlayedChanges, StorageKey, StorageTransactionCache, StorageValue,
|
||||
backend::Backend, ext::Ext, InMemoryBackend, OverlayedChanges, StorageKey,
|
||||
StorageTransactionCache, StorageValue,
|
||||
};
|
||||
|
||||
use codec::Decode;
|
||||
use hash_db::Hasher;
|
||||
use sp_core::{
|
||||
offchain::testing::TestPersistentOffchainDB,
|
||||
storage::{
|
||||
well_known_keys::{is_child_storage_key, CHANGES_TRIE_CONFIG, CODE},
|
||||
well_known_keys::{is_child_storage_key, CODE},
|
||||
Storage,
|
||||
},
|
||||
testing::TaskExecutor,
|
||||
@@ -46,7 +40,7 @@ use sp_core::{
|
||||
use sp_externalities::{Extension, ExtensionStore, Extensions};
|
||||
|
||||
/// Simple HashMap-based Externalities impl.
|
||||
pub struct TestExternalities<H: Hasher, N: ChangesTrieBlockNumber = u64>
|
||||
pub struct TestExternalities<H: Hasher>
|
||||
where
|
||||
H::Out: codec::Codec + Ord,
|
||||
{
|
||||
@@ -54,33 +48,23 @@ where
|
||||
overlay: OverlayedChanges,
|
||||
offchain_db: TestPersistentOffchainDB,
|
||||
storage_transaction_cache:
|
||||
StorageTransactionCache<<InMemoryBackend<H> as Backend<H>>::Transaction, H, N>,
|
||||
StorageTransactionCache<<InMemoryBackend<H> as Backend<H>>::Transaction, H>,
|
||||
/// Storage backend.
|
||||
pub backend: InMemoryBackend<H>,
|
||||
changes_trie_config: Option<ChangesTrieConfiguration>,
|
||||
changes_trie_storage: ChangesTrieInMemoryStorage<H, N>,
|
||||
/// Extensions.
|
||||
pub extensions: Extensions,
|
||||
}
|
||||
|
||||
impl<H: Hasher, N: ChangesTrieBlockNumber> TestExternalities<H, N>
|
||||
impl<H: Hasher> TestExternalities<H>
|
||||
where
|
||||
H::Out: Ord + 'static + codec::Codec,
|
||||
{
|
||||
/// Get externalities implementation.
|
||||
pub fn ext(&mut self) -> Ext<H, N, InMemoryBackend<H>> {
|
||||
pub fn ext(&mut self) -> Ext<H, InMemoryBackend<H>> {
|
||||
Ext::new(
|
||||
&mut self.overlay,
|
||||
&mut self.storage_transaction_cache,
|
||||
&self.backend,
|
||||
match self.changes_trie_config.clone() {
|
||||
Some(config) => Some(ChangesTrieState {
|
||||
config,
|
||||
zero: 0.into(),
|
||||
storage: &self.changes_trie_storage,
|
||||
}),
|
||||
None => None,
|
||||
},
|
||||
Some(&mut self.extensions),
|
||||
)
|
||||
}
|
||||
@@ -97,12 +81,7 @@ where
|
||||
|
||||
/// Create a new instance of `TestExternalities` with code and storage.
|
||||
pub fn new_with_code(code: &[u8], mut storage: Storage) -> Self {
|
||||
let mut overlay = OverlayedChanges::default();
|
||||
let changes_trie_config = storage
|
||||
.top
|
||||
.get(CHANGES_TRIE_CONFIG)
|
||||
.and_then(|v| Decode::decode(&mut &v[..]).ok());
|
||||
overlay.set_collect_extrinsics(changes_trie_config.is_some());
|
||||
let overlay = OverlayedChanges::default();
|
||||
|
||||
assert!(storage.top.keys().all(|key| !is_child_storage_key(key)));
|
||||
assert!(storage.children_default.keys().all(|key| is_child_storage_key(key)));
|
||||
@@ -117,9 +96,7 @@ where
|
||||
TestExternalities {
|
||||
overlay,
|
||||
offchain_db,
|
||||
changes_trie_config,
|
||||
extensions,
|
||||
changes_trie_storage: ChangesTrieInMemoryStorage::new(),
|
||||
backend: storage.into(),
|
||||
storage_transaction_cache: Default::default(),
|
||||
}
|
||||
@@ -150,11 +127,6 @@ where
|
||||
self.extensions.register(ext);
|
||||
}
|
||||
|
||||
/// Get mutable reference to changes trie storage.
|
||||
pub fn changes_trie_storage(&mut self) -> &mut ChangesTrieInMemoryStorage<H, N> {
|
||||
&mut self.changes_trie_storage
|
||||
}
|
||||
|
||||
/// Return a new backend with all pending changes.
|
||||
///
|
||||
/// In contrast to [`commit_all`](Self::commit_all) this will not panic if there are open
|
||||
@@ -180,9 +152,8 @@ where
|
||||
///
|
||||
/// This will panic if there are still open transactions.
|
||||
pub fn commit_all(&mut self) -> Result<(), String> {
|
||||
let changes = self.overlay.drain_storage_changes::<_, _, N>(
|
||||
let changes = self.overlay.drain_storage_changes::<_, _>(
|
||||
&self.backend,
|
||||
None,
|
||||
Default::default(),
|
||||
&mut Default::default(),
|
||||
)?;
|
||||
@@ -216,7 +187,7 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<H: Hasher, N: ChangesTrieBlockNumber> std::fmt::Debug for TestExternalities<H, N>
|
||||
impl<H: Hasher> std::fmt::Debug for TestExternalities<H>
|
||||
where
|
||||
H::Out: Ord + codec::Codec,
|
||||
{
|
||||
@@ -225,18 +196,18 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<H: Hasher, N: ChangesTrieBlockNumber> PartialEq for TestExternalities<H, N>
|
||||
impl<H: Hasher> PartialEq for TestExternalities<H>
|
||||
where
|
||||
H::Out: Ord + 'static + codec::Codec,
|
||||
{
|
||||
/// This doesn't test if they are in the same state, only if they contains the
|
||||
/// same data at this state
|
||||
fn eq(&self, other: &TestExternalities<H, N>) -> bool {
|
||||
fn eq(&self, other: &TestExternalities<H>) -> bool {
|
||||
self.as_backend().eq(&other.as_backend())
|
||||
}
|
||||
}
|
||||
|
||||
impl<H: Hasher, N: ChangesTrieBlockNumber> Default for TestExternalities<H, N>
|
||||
impl<H: Hasher> Default for TestExternalities<H>
|
||||
where
|
||||
H::Out: Ord + 'static + codec::Codec,
|
||||
{
|
||||
@@ -245,7 +216,7 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<H: Hasher, N: ChangesTrieBlockNumber> From<Storage> for TestExternalities<H, N>
|
||||
impl<H: Hasher> From<Storage> for TestExternalities<H>
|
||||
where
|
||||
H::Out: Ord + 'static + codec::Codec,
|
||||
{
|
||||
@@ -254,11 +225,10 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<H, N> sp_externalities::ExtensionStore for TestExternalities<H, N>
|
||||
impl<H> sp_externalities::ExtensionStore for TestExternalities<H>
|
||||
where
|
||||
H: Hasher,
|
||||
H::Out: Ord + codec::Codec,
|
||||
N: ChangesTrieBlockNumber,
|
||||
{
|
||||
fn extension_by_type_id(&mut self, type_id: TypeId) -> Option<&mut dyn Any> {
|
||||
self.extensions.get_mut(type_id)
|
||||
@@ -284,11 +254,10 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<H, N> sp_externalities::ExternalitiesExt for TestExternalities<H, N>
|
||||
impl<H> sp_externalities::ExternalitiesExt for TestExternalities<H>
|
||||
where
|
||||
H: Hasher,
|
||||
H::Out: Ord + codec::Codec,
|
||||
N: ChangesTrieBlockNumber,
|
||||
{
|
||||
fn extension<T: Any + Extension>(&mut self) -> Option<&mut T> {
|
||||
self.extension_by_type_id(TypeId::of::<T>()).and_then(<dyn Any>::downcast_mut)
|
||||
@@ -312,7 +281,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn commit_should_work() {
|
||||
let mut ext = TestExternalities::<BlakeTwo256, u64>::default();
|
||||
let mut ext = TestExternalities::<BlakeTwo256>::default();
|
||||
let mut ext = ext.ext();
|
||||
ext.set_storage(b"doe".to_vec(), b"reindeer".to_vec());
|
||||
ext.set_storage(b"dog".to_vec(), b"puppy".to_vec());
|
||||
@@ -324,7 +293,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn set_and_retrieve_code() {
|
||||
let mut ext = TestExternalities::<BlakeTwo256, u64>::default();
|
||||
let mut ext = TestExternalities::<BlakeTwo256>::default();
|
||||
let mut ext = ext.ext();
|
||||
|
||||
let code = vec![1, 2, 3];
|
||||
@@ -336,12 +305,12 @@ mod tests {
|
||||
#[test]
|
||||
fn check_send() {
|
||||
fn assert_send<T: Send>() {}
|
||||
assert_send::<TestExternalities<BlakeTwo256, u64>>();
|
||||
assert_send::<TestExternalities<BlakeTwo256>>();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn commit_all_and_kill_child_storage() {
|
||||
let mut ext = TestExternalities::<BlakeTwo256, u64>::default();
|
||||
let mut ext = TestExternalities::<BlakeTwo256>::default();
|
||||
let child_info = ChildInfo::new_default(&b"test_child"[..]);
|
||||
|
||||
{
|
||||
@@ -366,7 +335,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn as_backend_generates_same_backend_as_commit_all() {
|
||||
let mut ext = TestExternalities::<BlakeTwo256, u64>::default();
|
||||
let mut ext = TestExternalities::<BlakeTwo256>::default();
|
||||
{
|
||||
let mut ext = ext.ext();
|
||||
ext.set_storage(b"doe".to_vec(), b"reindeer".to_vec());
|
||||
|
||||
Reference in New Issue
Block a user