diff --git a/Cargo.lock b/Cargo.lock index 4fa3118607581..c8cf667a72019 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -454,6 +454,7 @@ dependencies = [ "substrate-runtime-consensus 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", + "substrate-runtime-session 0.1.0", "substrate-runtime-staking 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", diff --git a/demo/executor/Cargo.toml b/demo/executor/Cargo.toml index c154a7c16501d..96b547af13f9b 100644 --- a/demo/executor/Cargo.toml +++ b/demo/executor/Cargo.toml @@ -20,6 +20,7 @@ demo-runtime = { path = "../runtime" } [dev-dependencies] substrate-keyring = { path = "../../substrate/keyring" } substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } +substrate-runtime-session = { path = "../../substrate/runtime/session" } substrate-runtime-staking = { path = "../../substrate/runtime/staking" } substrate-runtime-system = { path = "../../substrate/runtime/system" } substrate-runtime-consensus = { path = "../../substrate/runtime/consensus" } diff --git a/demo/executor/src/lib.rs b/demo/executor/src/lib.rs index 699c3b1377f5a..cef697589e702 100644 --- a/demo/executor/src/lib.rs +++ b/demo/executor/src/lib.rs @@ -30,6 +30,7 @@ extern crate triehash; #[cfg(test)] extern crate substrate_keyring as keyring; #[cfg(test)] extern crate substrate_runtime_primitives as runtime_primitives; #[cfg(test)] extern crate substrate_runtime_support as runtime_support; +#[cfg(test)] extern crate substrate_runtime_session as session; #[cfg(test)] extern crate substrate_runtime_staking as staking; #[cfg(test)] extern crate substrate_runtime_system as system; #[cfg(test)] extern crate substrate_runtime_consensus as consensus; @@ -51,9 +52,10 @@ mod tests { use demo_primitives::{Hash, BlockNumber, AccountId}; use runtime_primitives::traits::Header as HeaderT; use runtime_primitives::{ApplyOutcome, ApplyError, ApplyResult, MaybeUnsigned}; - use {staking, system, consensus}; + use {staking, session, system, consensus}; + use system::{EventRecord, Phase}; use demo_runtime::{Header, Block, UncheckedExtrinsic, Extrinsic, Call, Concrete, Staking, - BuildStorage, GenesisConfig, SessionConfig, StakingConfig, BareExtrinsic}; + BuildStorage, GenesisConfig, SessionConfig, StakingConfig, BareExtrinsic, System, Event}; use ed25519::{Public, Pair}; const BLOATY_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm"); @@ -255,7 +257,7 @@ mod tests { // Blake // hex!("3437bf4b182ab17bb322af5c67e55f6be487a77084ad2b4e27ddac7242e4ad21").into(), // Keccak - hex!("4956f00670e45ecb3c29be839fe6f981cb908ff0786536062096c628d577a142").into(), + hex!("56c9a542e48ccf4e0821de301ea4384e87425604278b12a9db31c6d4e89ca51e").into(), vec![BareExtrinsic { signed: alice(), index: 0, @@ -271,7 +273,7 @@ mod tests { // Blake // hex!("741fcb660e6fa9f625fbcd993b49f6c1cc4040f5e0cc8727afdedf11fd3c464b").into(), // Keccak - hex!("61a6c7096a51b8ac79d6a6949c786cec7364be43dc4ec40cd9d4f6d631363a54").into(), + hex!("166a2593d35f2d1bc87eca8cf2e320ed06759000a02aa88e51fa85b12c6f1267").into(), vec![ BareExtrinsic { signed: bob(), @@ -312,6 +314,12 @@ mod tests { runtime_io::with_externalities(&mut t, || { assert_eq!(Staking::voting_balance(&alice()), 41); assert_eq!(Staking::voting_balance(&bob()), 69); + assert_eq!(System::events(), vec![ + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: Event::staking(staking::RawEvent::NewAccount(bob(), 1, staking::NewAccountOutcome::NoHint)) + } + ]); }); executor().call(&mut t, COMPACT_CODE, "execute_block", &block2().0, true).0.unwrap(); @@ -319,6 +327,16 @@ mod tests { runtime_io::with_externalities(&mut t, || { assert_eq!(Staking::voting_balance(&alice()), 30); assert_eq!(Staking::voting_balance(&bob()), 78); + assert_eq!(System::events(), vec![ + EventRecord { + phase: Phase::Finalization, + event: Event::session(session::RawEvent::NewSession(1)) + }, + EventRecord { + phase: Phase::Finalization, + event: Event::staking(staking::RawEvent::Reward(0)) + } + ]); }); } diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index bd77b651e98dc..e9af2103e67a1 100644 Binary files a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm and b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm differ diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index 1ac07fcc16919..c1406dfbf5ca9 100755 Binary files a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm and b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm differ diff --git a/substrate/runtime/system/src/lib.rs b/substrate/runtime/system/src/lib.rs index f31a8d2d49655..8316dd07a9e87 100644 --- a/substrate/runtime/system/src/lib.rs +++ b/substrate/runtime/system/src/lib.rs @@ -86,7 +86,7 @@ decl_module! { /// A phase of a block's execution. #[derive(Encode, Decode)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Serialize, PartialEq, Eq, Clone, Debug))] pub enum Phase { /// Applying an extrinsic. ApplyExtrinsic(u32), @@ -96,11 +96,12 @@ pub enum Phase { /// Record of an event happening. #[derive(Encode, Decode)] +#[cfg_attr(feature = "std", derive(Serialize, PartialEq, Eq, Clone, Debug))] pub struct EventRecord { /// The phase of the block it happened in. - phase: Phase, + pub phase: Phase, /// The event itself. - event: E, + pub event: E, } decl_storage! { diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 775da20af0a50..1a8c9e9dce982 100644 Binary files a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm and b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm differ diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index f4f3e207b1324..743bc4bde76bb 100755 Binary files a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm and b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm differ