Migrate state-db, state-machine, telemetry, test-client and test-runtime to the 2018 edition (#1623)

This commit is contained in:
Stanislav Tkach
2019-01-30 16:51:59 +02:00
committed by Bastian Köcher
parent 2037c52fbe
commit f98f9ac58a
33 changed files with 158 additions and 200 deletions
+4 -3
View File
@@ -20,10 +20,11 @@ use std::{error, fmt};
use std::cmp::Ord;
use std::collections::HashMap;
use std::marker::PhantomData;
use log::warn;
use hash_db::Hasher;
use trie_backend::TrieBackend;
use trie_backend_essence::TrieBackendStorage;
use substrate_trie::{TrieDBMut, TrieMut, MemoryDB, trie_root, child_trie_root, default_child_trie_root};
use crate::trie_backend::TrieBackend;
use crate::trie_backend_essence::TrieBackendStorage;
use trie::{TrieDBMut, TrieMut, MemoryDB, trie_root, child_trie_root, default_child_trie_root};
use heapsize::HeapSizeOf;
/// A state backend is used to read state data and can have changes committed
@@ -17,15 +17,15 @@
//! Structures and functions required to build changes trie for given block.
use std::collections::{BTreeMap, BTreeSet};
use codec::Decode;
use parity_codec::Decode;
use hash_db::Hasher;
use heapsize::HeapSizeOf;
use backend::Backend;
use overlayed_changes::OverlayedChanges;
use trie_backend_essence::{TrieBackendStorage, TrieBackendEssence};
use changes_trie::build_iterator::digest_build_iterator;
use changes_trie::input::{InputKey, InputPair, DigestIndex, ExtrinsicIndex};
use changes_trie::{AnchorBlockId, Configuration, Storage};
use crate::backend::Backend;
use crate::overlayed_changes::OverlayedChanges;
use crate::trie_backend_essence::{TrieBackendStorage, TrieBackendEssence};
use crate::changes_trie::build_iterator::digest_build_iterator;
use crate::changes_trie::input::{InputKey, InputPair, DigestIndex, ExtrinsicIndex};
use crate::changes_trie::{AnchorBlockId, Configuration, Storage};
/// Prepare input pairs for building a changes trie of given block.
///
@@ -142,12 +142,12 @@ fn prepare_digest_input<'a, S, H>(
#[cfg(test)]
mod test {
use codec::Encode;
use parity_codec::Encode;
use primitives::Blake2Hasher;
use primitives::storage::well_known_keys::EXTRINSIC_INDEX;
use backend::InMemory;
use changes_trie::storage::InMemoryStorage;
use overlayed_changes::OverlayedValue;
use crate::backend::InMemory;
use crate::changes_trie::storage::InMemoryStorage;
use crate::overlayed_changes::OverlayedValue;
use super::*;
fn prepare_for_build() -> (InMemory<Blake2Hasher>, InMemoryStorage<Blake2Hasher>, OverlayedChanges) {
@@ -17,7 +17,7 @@
//! Structures and functions to return blocks whose changes are to be included
//! in given block' changes trie.
use changes_trie::Configuration;
use crate::changes_trie::Configuration;
/// Returns iterator of OTHER blocks that are required for inclusion into
/// changes trie of given block.
@@ -19,15 +19,15 @@
use std::cell::RefCell;
use std::collections::VecDeque;
use codec::{Decode, Encode};
use parity_codec::{Decode, Encode};
use hash_db::{HashDB, Hasher};
use heapsize::HeapSizeOf;
use substrate_trie::{Recorder, MemoryDB};
use changes_trie::{AnchorBlockId, Configuration, RootsStorage, Storage};
use changes_trie::input::{DigestIndex, ExtrinsicIndex, DigestIndexValue, ExtrinsicIndexValue};
use changes_trie::storage::{TrieBackendAdapter, InMemoryStorage};
use proving_backend::ProvingBackendEssence;
use trie_backend_essence::{TrieBackendEssence};
use trie::{Recorder, MemoryDB};
use crate::changes_trie::{AnchorBlockId, Configuration, RootsStorage, Storage};
use crate::changes_trie::input::{DigestIndex, ExtrinsicIndex, DigestIndexValue, ExtrinsicIndexValue};
use crate::changes_trie::storage::{TrieBackendAdapter, InMemoryStorage};
use crate::proving_backend::ProvingBackendEssence;
use crate::trie_backend_essence::{TrieBackendEssence};
/// Return changes of given key at given blocks range.
/// `max` is the number of best known block.
@@ -383,8 +383,8 @@ fn lower_bound_max_digest(
mod tests {
use std::iter::FromIterator;
use primitives::Blake2Hasher;
use changes_trie::input::InputPair;
use changes_trie::storage::InMemoryStorage;
use crate::changes_trie::input::InputPair;
use crate::changes_trie::storage::InMemoryStorage;
use super::*;
fn prepare_for_drilldown() -> (Configuration, InMemoryStorage<Blake2Hasher>) {
@@ -16,7 +16,7 @@
//! Different types of changes trie input pairs.
use codec::{Decode, Encode, Input, Output};
use parity_codec::{Decode, Encode, Input, Output};
/// Key of { changed key => set of extrinsic indices } mapping.
#[derive(Clone, Debug, PartialEq, Eq)]
@@ -48,11 +48,11 @@ pub use self::prune::{prune, oldest_non_pruned_trie};
use hash_db::Hasher;
use heapsize::HeapSizeOf;
use backend::Backend;
use crate::backend::Backend;
use primitives;
use changes_trie::build::prepare_input;
use overlayed_changes::OverlayedChanges;
use trie_backend_essence::TrieBackendStorage;
use crate::changes_trie::build::prepare_input;
use crate::overlayed_changes::OverlayedChanges;
use crate::trie_backend_essence::TrieBackendStorage;
use trie::{DBValue, trie_root};
/// Changes that are made outside of extrinsics are marked with this index;
@@ -18,11 +18,12 @@
use hash_db::Hasher;
use heapsize::HeapSizeOf;
use substrate_trie::Recorder;
use proving_backend::ProvingBackendEssence;
use trie_backend_essence::TrieBackendEssence;
use changes_trie::{AnchorBlockId, Configuration, Storage};
use changes_trie::storage::TrieBackendAdapter;
use trie::Recorder;
use log::warn;
use crate::proving_backend::ProvingBackendEssence;
use crate::trie_backend_essence::TrieBackendEssence;
use crate::changes_trie::{AnchorBlockId, Configuration, Storage};
use crate::changes_trie::storage::TrieBackendAdapter;
/// Get number of oldest block for which changes trie is not pruned
/// given changes trie configuration, pruning parameter and number of
@@ -152,8 +153,8 @@ mod tests {
use std::collections::HashSet;
use trie::MemoryDB;
use primitives::Blake2Hasher;
use backend::insert_into_memory_db;
use changes_trie::storage::InMemoryStorage;
use crate::backend::insert_into_memory_db;
use crate::changes_trie::storage::InMemoryStorage;
use super::*;
fn config(interval: u64, levels: u32) -> Configuration {
@@ -22,15 +22,15 @@ use trie::DBValue;
use heapsize::HeapSizeOf;
use trie::MemoryDB;
use parking_lot::RwLock;
use changes_trie::{AnchorBlockId, RootsStorage, Storage};
use trie_backend_essence::TrieBackendStorage;
use crate::changes_trie::{AnchorBlockId, RootsStorage, Storage};
use crate::trie_backend_essence::TrieBackendStorage;
#[cfg(test)]
use std::collections::HashSet;
#[cfg(test)]
use backend::insert_into_memory_db;
use crate::backend::insert_into_memory_db;
#[cfg(test)]
use changes_trie::input::InputPair;
use crate::changes_trie::input::InputPair;
/// In-memory implementation of changes trie storage.
pub struct InMemoryStorage<H: Hasher> where H::Out: HeapSizeOf {
+10 -8
View File
@@ -17,12 +17,13 @@
//! Conrete externalities implementation.
use std::{error, fmt, cmp::Ord};
use backend::{Backend, Consolidate};
use changes_trie::{AnchorBlockId, Storage as ChangesTrieStorage, compute_changes_trie_root};
use {Externalities, OverlayedChanges};
use log::warn;
use crate::backend::{Backend, Consolidate};
use crate::changes_trie::{AnchorBlockId, Storage as ChangesTrieStorage, compute_changes_trie_root};
use crate::{Externalities, OverlayedChanges};
use hash_db::Hasher;
use primitives::storage::well_known_keys::is_child_storage_key;
use substrate_trie::{MemoryDB, TrieDBMut, TrieMut, default_child_trie_root, is_child_trie_key_valid};
use trie::{MemoryDB, TrieDBMut, TrieMut, default_child_trie_root, is_child_trie_key_valid};
use heapsize::HeapSizeOf;
const EXT_NOT_ALLOWED_TO_FAIL: &'static str = "Externalities not allowed to fail within runtime";
@@ -320,13 +321,14 @@ where
#[cfg(test)]
mod tests {
use codec::Encode;
use hex_literal::{hex, hex_impl};
use parity_codec::Encode;
use primitives::{Blake2Hasher};
use primitives::storage::well_known_keys::EXTRINSIC_INDEX;
use backend::InMemory;
use changes_trie::{Configuration as ChangesTrieConfiguration,
use crate::backend::InMemory;
use crate::changes_trie::{Configuration as ChangesTrieConfiguration,
InMemoryStorage as InMemoryChangesTrieStorage};
use overlayed_changes::OverlayedValue;
use crate::overlayed_changes::OverlayedValue;
use super::*;
type TestBackend = InMemory<Blake2Hasher>;
+5 -21
View File
@@ -18,27 +18,11 @@
#![warn(missing_docs)]
#[cfg(test)]
#[macro_use]
extern crate hex_literal;
#[macro_use]
extern crate log;
extern crate hash_db;
extern crate substrate_trie;
extern crate parking_lot;
extern crate heapsize;
#[cfg_attr(test, macro_use)]
extern crate substrate_primitives as primitives;
extern crate parity_codec as codec;
extern crate substrate_trie as trie;
use std::{fmt, panic::UnwindSafe};
use log::warn;
use hash_db::Hasher;
use heapsize::HeapSizeOf;
use codec::{Decode, Encode};
use parity_codec::{Decode, Encode};
use primitives::{storage::well_known_keys, NativeOrEncoded, NeverNativeValue};
pub mod backend;
@@ -343,7 +327,7 @@ where
init_overlay(overlay, false)?;
let result = {
let mut orig_prospective = overlay.prospective.clone();
let orig_prospective = overlay.prospective.clone();
let (result, was_native, storage_delta, changes_delta) = {
let ((result, was_native), (storage_delta, changes_delta)) = {
@@ -616,7 +600,7 @@ where
#[cfg(test)]
mod tests {
use std::collections::HashMap;
use codec::Encode;
use parity_codec::Encode;
use overlayed_changes::OverlayedValue;
use super::*;
use super::backend::InMemory;
@@ -625,7 +609,7 @@ mod tests {
InMemoryStorage as InMemoryChangesTrieStorage,
Configuration as ChangesTrieConfig,
};
use primitives::Blake2Hasher;
use primitives::{Blake2Hasher, map};
struct DummyCodeExecutor {
change_changes_trie_config: bool,
@@ -18,8 +18,8 @@
#[cfg(test)] use std::iter::FromIterator;
use std::collections::{HashMap, HashSet};
use codec::Decode;
use changes_trie::{NO_EXTRINSIC_INDEX, Configuration as ChangesTrieConfig};
use parity_codec::Decode;
use crate::changes_trie::{NO_EXTRINSIC_INDEX, Configuration as ChangesTrieConfig};
use primitives::storage::well_known_keys::EXTRINSIC_INDEX;
/// The overlayed changes to state to be queried on top of the backend.
@@ -276,7 +276,7 @@ impl OverlayedChanges {
/// Inserts storage entry responsible for current extrinsic index.
#[cfg(test)]
pub(crate) fn set_extrinsic_index(&mut self, extrinsic_index: u32) {
use codec::Encode;
use parity_codec::Encode;
self.prospective.top.insert(EXTRINSIC_INDEX.to_vec(), OverlayedValue {
value: Some(extrinsic_index.encode()),
extrinsics: None,
@@ -309,12 +309,13 @@ impl From<Option<Vec<u8>>> for OverlayedValue {
#[cfg(test)]
mod tests {
use hex_literal::{hex, hex_impl};
use primitives::{Blake2Hasher, H256};
use primitives::storage::well_known_keys::EXTRINSIC_INDEX;
use backend::InMemory;
use changes_trie::InMemoryStorage as InMemoryChangesTrieStorage;
use ext::Ext;
use {Externalities};
use crate::backend::InMemory;
use crate::changes_trie::InMemoryStorage as InMemoryChangesTrieStorage;
use crate::ext::Ext;
use crate::Externalities;
use super::*;
fn strip_extrinsic_index(map: &HashMap<Vec<u8>, OverlayedValue>) -> HashMap<Vec<u8>, OverlayedValue> {
@@ -17,13 +17,14 @@
//! Proving state machine backend.
use std::cell::RefCell;
use log::debug;
use hash_db::Hasher;
use heapsize::HeapSizeOf;
use hash_db::HashDB;
use trie::{Recorder, MemoryDB, TrieError, default_child_trie_root, read_trie_value_with, read_child_trie_value_with, record_all_keys};
use trie_backend::TrieBackend;
use trie_backend_essence::{Ephemeral, TrieBackendEssence, TrieBackendStorage};
use {Error, ExecutionError, Backend};
use crate::trie_backend::TrieBackend;
use crate::trie_backend_essence::{Ephemeral, TrieBackendEssence, TrieBackendStorage};
use crate::{Error, ExecutionError, Backend};
/// Patricia trie-based backend essence which also tracks all touched storage trie values.
/// These can be sent to remote node and used as a proof of execution.
@@ -204,8 +205,8 @@ where
#[cfg(test)]
mod tests {
use backend::{InMemory};
use trie_backend::tests::test_trie;
use crate::backend::{InMemory};
use crate::trie_backend::tests::test_trie;
use super::*;
use primitives::{Blake2Hasher};
+4 -3
View File
@@ -21,10 +21,10 @@ use std::iter::FromIterator;
use hash_db::Hasher;
use heapsize::HeapSizeOf;
use trie::trie_root;
use backend::InMemory;
use changes_trie::{compute_changes_trie_root, InMemoryStorage as ChangesTrieInMemoryStorage, AnchorBlockId};
use crate::backend::InMemory;
use crate::changes_trie::{compute_changes_trie_root, InMemoryStorage as ChangesTrieInMemoryStorage, AnchorBlockId};
use primitives::storage::well_known_keys::{CHANGES_TRIE_CONFIG, CODE, HEAP_PAGES};
use codec::Encode;
use parity_codec::Encode;
use super::{Externalities, OverlayedChanges};
/// Simple HashMap-based Externalities impl.
@@ -163,6 +163,7 @@ impl<H: Hasher> Externalities<H> for TestExternalities<H> where H::Out: Ord + He
mod tests {
use super::*;
use primitives::{Blake2Hasher, H256};
use hex_literal::{hex, hex_impl};
#[test]
fn commit_should_work() {
@@ -16,11 +16,12 @@
//! Trie-based state machine backend.
use log::{warn, debug};
use hash_db::Hasher;
use heapsize::HeapSizeOf;
use trie::{TrieDB, TrieError, Trie, MemoryDB, delta_trie_root, default_child_trie_root, child_delta_trie_root};
use trie_backend_essence::{TrieBackendEssence, TrieBackendStorage, Ephemeral};
use {Backend};
use crate::trie_backend_essence::{TrieBackendEssence, TrieBackendStorage, Ephemeral};
use crate::Backend;
/// Patricia trie-based backend. Transaction type is an overlay of changes to commit.
pub struct TrieBackend<S: TrieBackendStorage<H>, H: Hasher> {
@@ -20,10 +20,11 @@
use std::collections::HashMap;
use std::ops::Deref;
use std::sync::Arc;
use log::{debug, warn};
use hash_db::{self, Hasher};
use heapsize::HeapSizeOf;
use trie::{TrieDB, Trie, MemoryDB, DBValue, TrieError, default_child_trie_root, read_trie_value, read_child_trie_value, for_keys_in_child_trie};
use changes_trie::Storage as ChangesTrieStorage;
use crate::changes_trie::Storage as ChangesTrieStorage;
/// Patricia trie-based storage trait.
pub trait Storage<H: Hasher>: Send + Sync {