From 215439553f4cb5cb92c08e2fc736140c3fa604f9 Mon Sep 17 00:00:00 2001 From: Gav Date: Mon, 27 Aug 2018 10:47:10 +0200 Subject: [PATCH] Integration-style tests for events. --- Cargo.lock | 1 + demo/executor/Cargo.toml | 1 + demo/executor/src/lib.rs | 26 +++++++++++++++--- .../release/demo_runtime.compact.wasm | Bin 277778 -> 279136 bytes .../release/demo_runtime.wasm | Bin 277864 -> 279223 bytes substrate/runtime/system/src/lib.rs | 7 +++-- .../substrate_test_runtime.compact.wasm | Bin 51163 -> 51163 bytes .../release/substrate_test_runtime.wasm | Bin 51295 -> 51295 bytes 8 files changed, 28 insertions(+), 7 deletions(-) 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 bd77b651e98dce426a07ae70396ab28fa45ee234..e9af2103e67a120d294f455399c188a56e74ad26 100644 GIT binary patch delta 29038 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 K#B|+q=Kldk2{t|e 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 1ac07fcc16919ec65a98eec96dd9da192a8c9969..c1406dfbf5ca9a7d398e391f882e75c7222f6a15 100755 GIT binary patch delta 29317 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 delta 28176 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 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 775da20af0a507daae1fd07f2009cd0a284b5c6a..1a8c9e9dce98226f7b5574cb1b88aaa49bfaa85e 100644 GIT binary patch delta 864 zcmYjQUr19?96sl4spGo5{>hA>Hc?vTznTnMraS6ZGt#+2dMM($E^IM3yY~)MC{wpU zdYEtoL84cKUM3gxu~Cq3^vyLZ4VHwEswS^*)^f#SuOwviV-PMcdS(E2JH(q!WFb$?oPF!>jXY@6y zVne&kMtbrjH_e87!yr8MI#`?ETuwZ&@v=u$gnBTOcfzo`c-&iW5@%SiF9*qV`}H3f zc2gWx&eM1LCk){d`{fr;=cb_;^+qucyJ8cRslZP3wc)((>svGNOcniRTzMD+g~#-F ziZu*Okpf{$1Fmj~h^PS}|v?gq;nnFfG_9?!&T# z61SAl!fpg7#=Zxf_6!`HP^ylr?lJ8lqWn4tmSRj)jv<<5?SsyHI|os*#0aAK13DU( z5ZybVV_F2!sU+k$enV2jwpd)V$&V9K6wx$SE4*Wx5{apikWE&UxPs`bBzr&D(*A+F zR#geL!csJOq(xB?UFTv+EFKHVu;2~O%7&$=RODN%F?i9&ue4y+WK~0Or=c&5N=if< zZ!Svn>`QRKwaJajXk<7PSL9YjRufUpm|>S2#BD=Rb>4HFN5-!pAV9VlyrSQ|J)`{t DntCPF delta 847 zcmYjPUr19?7(eISrLODn`X^I*(8;1z{;P%1GTl*U%*bsT_Ea&~1s8M5y?3BOS#1p@ zP~lSq37@B7ZZzw>2hr0k6J z{wuXEr`Cu(N%*q)jm8UEI%VFqem*7Q`H}`^`<`4Q+@h4%GQO8IAC`77`+Nc^D^Ft~ z$44pRlifCg0@A_)%){s5V>!?)3{(U}o8^iXdTH(@id~AG$h?44r3~Zl3#1xy)QRkp zIaN78u?}|6M(8HouIi;*uvm46ZsWVrtgPO#imrd^W-V+dVNPA>q#}NDR+Z5V?73fy z+P|$~_<3W2uE4X_CwU@+Aaipe4?^as+Tf?kWs-{$>YB80;EC;;GjO%|1&p^WcvcJ?0Af0g`tjmueTfRd13`Lsxeeo0;}o zKPdi9zN%QXZ}Uy$h%4~Rr<^+wHrM6MINmDtXww{=>1n20W_QoJBs!J!T4?F9292lu zO$r?T=gc9&TYpPOJ5z{*5aPgS!|21sa2-;GI8X4w|GYy|aEE$~LZ?Vj6Zjw(xI=Mc z$W8E~;B?SspT=vK3-xi`J!U*2Tugy%&1<4+jPNCR5Og(d9;ssSVZyhL;OJ0@@a-cw zW<&_zNx)jLqIzGjCEhVZi^TLuxK`D)5smP}1ndVJucgr%*`{mZCOq3vhZ{AW@Qfe} zVk5DzieI=QP|;v08p`8U@b_J|i_w)WhN>F`XBYSKXh@3~;|+NVujos_N#~%Z|2pFv vu-NB!&8ARR8jTEwM>MrbQ}uY%$eouK2|{v1FEe*7LC=w4&Wq-~{-p5_Z*UgK 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 f4f3e207b132422acb989caa07ef20b962722ec3..743bc4bde76bb007ebe1d57cf27eff4da6076c05 100755 GIT binary patch delta 863 zcmYjPUr3Wt6u1F z9?~NIoAmJ2eY4orcPnjV3rRh9r=JR2TW`Becfi&8R%llTt02=e1RY)LbQgBIo}UNx z?h(^&5{s8ZZ)XFv^*lbw>Y1Kbl)X-Z%RNBXVBY;mB)+@jSbL?v)gT&N=4qPIul1>v z7WI|>I?DDI;nP3}Dc?K}@OmnQX3R5J0(vj*En=aYqD%01SfRyhgjVk)&A=P)9x`?9 z{!fZ+qPBv$nHw*){0WyurPaZ?QsN$T`{e6q`|vYYZozvjK*-lZ5A}85wn6MTK4heo zXB-Q$Q~o;z&xRLRfkAP&y-#5>xlIW1qP3tM#Kmykz}RsP_n+Ve#Ko6KD|k5uv60WP z9jKF!uszA-QsP?3MR26x^gC-aI9aJoomE{4ZIW>DIwbQkClZVjo`siwr|0056^&03 zes~(rgcQPyr(r@16TX1+k}4i3YRDd)*6hKjaV0`Hj_RMknr$SZCeYOOMQ|)?Y@!)U zYr(0em`eDL08P>9=tK|?D8??8k1G-7IQ{{NK!aVpXvwGrRgK`2MqipyVqtBz@fcbI y$LMf-P9!QL;qi&-Sg<)3RO1n?R3R@C%w;Ed%ffTi6C59U1TEwP9s2vxkJ^7_TPbn? delta 859 zcmYjPUr19?7(eH1P1j|5&6&$yW=)!jW-5VG=Z?CSgVas%DIcbew$N$!-q937YBuU+ zOg<%q@F7N7Puj(N%(ujs7`+HeBZ8ubz4%xLeMd!oIQRE`zwh^*bH6|Nj3J*ftp29v zmDDDYW(i->_o-gQvMK$o`O7(hiPCyz`7yUixKXaKGyZE%|4`P&%!^5+%siWdf8~{Q z5h|=ecj29NKqUROZqVxs&rs1U*AR)DIF+r4-=88?e@LB)F6(<2hbZPji!DmGVcFJ4 zb5O9|r91d-(4&{~W^t?kYR1U&Nqz5HHx*c2Yr8<#z}5CjYRvTHBZC27GOQ ze3sNZ222~Gh+^n$tAiHz{o|;<>V8gHAqg%|58Z-U&#(x5^ThG(ba#_M6!?N?Xj-r8 zQYqch)7>?c?a#q_PXr}7uM>RU5|K0HojD{r&+m(eu81lj&}xN7pAnjTV>AsfeY>dC zwc9@_mWjC~%)>m`)ZzzR7B9{B&Kw4ALWf_ze0mQ*HRVR^;{rtdjWnk(`9B-PjU#Qt+t%33C|WPyem1P9_rvA;f`bLF~oD@ElN?IM48bW8Ptq(Lz0<(8&f+ z20ltAS17JUTm&Zx!-3}NG;V=Zq)w}@gf>RFSPIE}q!|y#2w#S^K=Zxr6ICoeL3r-O zor;7A-#Kv;T9oj-a7*rl)QCMcsoBF1>oh|Fat*l=MvYxVbo>)L;S C93F`P