mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 15:41:02 +00:00
remove string constants <-- @rphmeier
This commit is contained in:
@@ -20,10 +20,12 @@ use rstd::prelude::*;
|
||||
use runtime_support::storage::unhashed::StorageVec;
|
||||
use demo_primitives::SessionKey;
|
||||
|
||||
pub const AUTHORITY_AT: &'static[u8] = b":auth:";
|
||||
|
||||
struct AuthorityStorageVec {}
|
||||
impl StorageVec for AuthorityStorageVec {
|
||||
type Item = SessionKey;
|
||||
const PREFIX: &'static[u8] = b":auth:";
|
||||
const PREFIX: &'static[u8] = AUTHORITY_AT;
|
||||
}
|
||||
|
||||
/// Get the current set of authorities. These are the session keys.
|
||||
|
||||
@@ -77,35 +77,35 @@ use runtime::staking::Balance;
|
||||
// after each vote as all but K entries are cleared. newly registering candidates must use cleared
|
||||
// entries before they increase the capacity.
|
||||
|
||||
type VoteIndex = u32;
|
||||
pub type VoteIndex = u32;
|
||||
|
||||
// parameters
|
||||
const CANDIDACY_BOND: &[u8] = b"cou:cbo";
|
||||
const VOTING_BOND: &[u8] = b"cou:vbo";
|
||||
const PRESENT_SLASH_PER_VOTER: &[u8] = b"cou:pss";
|
||||
const CARRY_COUNT: &[u8] = b"cou:cco";
|
||||
const PRESENTATION_DURATION: &[u8] = b"cou:pdu";
|
||||
const INACTIVE_GRACE_PERIOD: &[u8] = b"cou:vgp";
|
||||
const VOTING_PERIOD: &[u8] = b"cou:per";
|
||||
const TERM_DURATION: &[u8] = b"cou:trm";
|
||||
const DESIRED_SEATS: &[u8] = b"cou:sts";
|
||||
pub const CANDIDACY_BOND: &[u8] = b"cou:cbo";
|
||||
pub const VOTING_BOND: &[u8] = b"cou:vbo";
|
||||
pub const PRESENT_SLASH_PER_VOTER: &[u8] = b"cou:pss";
|
||||
pub const CARRY_COUNT: &[u8] = b"cou:cco";
|
||||
pub const PRESENTATION_DURATION: &[u8] = b"cou:pdu";
|
||||
pub const INACTIVE_GRACE_PERIOD: &[u8] = b"cou:vgp";
|
||||
pub const VOTING_PERIOD: &[u8] = b"cou:per";
|
||||
pub const TERM_DURATION: &[u8] = b"cou:trm";
|
||||
pub const DESIRED_SEATS: &[u8] = b"cou:sts";
|
||||
|
||||
// permanent state (always relevant, changes only at the finalisation of voting)
|
||||
const ACTIVE_COUNCIL: &[u8] = b"cou:act";
|
||||
const VOTE_COUNT: &[u8] = b"cou:vco";
|
||||
pub const ACTIVE_COUNCIL: &[u8] = b"cou:act";
|
||||
pub const VOTE_COUNT: &[u8] = b"cou:vco";
|
||||
|
||||
// persistent state (always relevant, changes constantly)
|
||||
const APPROVALS_OF: &[u8] = b"cou:apr:"; // Vec<bool>
|
||||
const REGISTER_INFO_OF: &[u8] = b"cou:reg:"; // Candidate -> (VoteIndex, u32)
|
||||
const LAST_ACTIVE_OF: &[u8] = b"cou:lac:"; // Voter -> VoteIndex
|
||||
const VOTERS: &[u8] = b"cou:vrs"; // Vec<AccountId>
|
||||
const CANDIDATES: &[u8] = b"cou:can"; // Vec<AccountId>, has holes
|
||||
const CANDIDATE_COUNT: &[u8] = b"cou:cnc"; // u32
|
||||
pub const APPROVALS_OF: &[u8] = b"cou:apr:"; // Vec<bool>
|
||||
pub const REGISTER_INFO_OF: &[u8] = b"cou:reg:"; // Candidate -> (VoteIndex, u32)
|
||||
pub const LAST_ACTIVE_OF: &[u8] = b"cou:lac:"; // Voter -> VoteIndex
|
||||
pub const VOTERS: &[u8] = b"cou:vrs"; // Vec<AccountId>
|
||||
pub const CANDIDATES: &[u8] = b"cou:can"; // Vec<AccountId>, has holes
|
||||
pub const CANDIDATE_COUNT: &[u8] = b"cou:cnc"; // u32
|
||||
|
||||
// temporary state (only relevant during finalisation/presentation)
|
||||
const NEXT_FINALISE: &[u8] = b"cou:nxt";
|
||||
const SNAPSHOTED_STAKES: &[u8] = b"cou:sss"; // Vec<Balance>
|
||||
const LEADERBOARD: &[u8] = b"cou:win"; // Vec<(Balance, AccountId)> ORDERED low -> high
|
||||
pub const NEXT_FINALISE: &[u8] = b"cou:nxt";
|
||||
pub const SNAPSHOTED_STAKES: &[u8] = b"cou:sss"; // Vec<Balance>
|
||||
pub const LEADERBOARD: &[u8] = b"cou:win"; // Vec<(Balance, AccountId)> ORDERED low -> high
|
||||
|
||||
/// How much should be locked up in order to submit one's candidacy.
|
||||
pub fn candidacy_bond() -> Balance {
|
||||
@@ -551,6 +551,30 @@ fn finalise_tally() {
|
||||
storage::put(VOTE_COUNT, &(vote_index() + 1));
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub mod testing {
|
||||
use super::*;
|
||||
use runtime_io::{twox_128, TestExternalities};
|
||||
use codec::Joiner;
|
||||
use runtime::democracy;
|
||||
|
||||
pub fn externalities() -> TestExternalities {
|
||||
let extras: TestExternalities = map![
|
||||
twox_128(CANDIDACY_BOND).to_vec() => vec![].and(&9u64),
|
||||
twox_128(VOTING_BOND).to_vec() => vec![].and(&3u64),
|
||||
twox_128(PRESENT_SLASH_PER_VOTER).to_vec() => vec![].and(&1u64),
|
||||
twox_128(CARRY_COUNT).to_vec() => vec![].and(&2u64),
|
||||
twox_128(PRESENTATION_DURATION).to_vec() => vec![].and(&2u64),
|
||||
twox_128(VOTING_PERIOD).to_vec() => vec![].and(&4u64),
|
||||
twox_128(TERM_DURATION).to_vec() => vec![].and(&5u64),
|
||||
twox_128(DESIRED_SEATS).to_vec() => vec![].and(&2u64),
|
||||
twox_128(INACTIVE_GRACE_PERIOD).to_vec() => vec![].and(&1u32)
|
||||
];
|
||||
democracy::testing::externalities()
|
||||
.into_iter().chain(extras.into_iter()).collect()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -562,46 +586,7 @@ mod tests {
|
||||
use runtime::{staking, session, democracy};
|
||||
|
||||
fn new_test_ext() -> TestExternalities {
|
||||
let alice = Keyring::Alice.to_raw_public();
|
||||
let bob = Keyring::Bob.to_raw_public();
|
||||
let charlie = Keyring::Charlie.to_raw_public();
|
||||
let dave = Keyring::Dave.to_raw_public();
|
||||
let eve = Keyring::Eve.to_raw_public();
|
||||
let ferdie = Keyring::Ferdie.to_raw_public();
|
||||
let one = Keyring::One.to_raw_public();
|
||||
|
||||
map![
|
||||
twox_128(b"ses:len").to_vec() => vec![].and(&1u64),
|
||||
twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => alice.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => bob.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => charlie.to_vec(),
|
||||
twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => alice.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => bob.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => charlie.to_vec(),
|
||||
twox_128(&alice.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&10u64),
|
||||
twox_128(&bob.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&20u64),
|
||||
twox_128(&charlie.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&30u64),
|
||||
twox_128(&dave.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&40u64),
|
||||
twox_128(&eve.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&50u64),
|
||||
twox_128(&ferdie.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&60u64),
|
||||
twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&1u64),
|
||||
twox_128(b"sta:tot").to_vec() => vec![].and(&210u64),
|
||||
twox_128(b"sta:spe").to_vec() => vec![].and(&1u64),
|
||||
twox_128(b"sta:vac").to_vec() => vec![].and(&3u64),
|
||||
twox_128(b"sta:era").to_vec() => vec![].and(&1u64),
|
||||
|
||||
twox_128(CANDIDACY_BOND).to_vec() => vec![].and(&9u64),
|
||||
twox_128(VOTING_BOND).to_vec() => vec![].and(&3u64),
|
||||
twox_128(PRESENT_SLASH_PER_VOTER).to_vec() => vec![].and(&1u64),
|
||||
twox_128(CARRY_COUNT).to_vec() => vec![].and(&2u64),
|
||||
twox_128(PRESENTATION_DURATION).to_vec() => vec![].and(&2u64),
|
||||
twox_128(VOTING_PERIOD).to_vec() => vec![].and(&4u64),
|
||||
twox_128(TERM_DURATION).to_vec() => vec![].and(&5u64),
|
||||
twox_128(DESIRED_SEATS).to_vec() => vec![].and(&2u64),
|
||||
twox_128(INACTIVE_GRACE_PERIOD).to_vec() => vec![].and(&1u32)
|
||||
]
|
||||
testing::externalities()
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -70,19 +70,24 @@ impl VoteThreshold {
|
||||
}
|
||||
|
||||
// public proposals
|
||||
const PUBLIC_PROP_COUNT: &[u8] = b"dem:ppc"; // PropIndex
|
||||
const PUBLIC_PROPS: &[u8] = b"dem:pub"; // Vec<(PropIndex, Proposal)>
|
||||
const DEPOSIT_OF: &[u8] = b"dem:dep:"; // PropIndex -> (Balance, Vec<AccountId>)
|
||||
const LAUNCH_PERIOD: &[u8] = b"dem:lau"; // BlockNumber
|
||||
const MINIMUM_DEPOSIT: &[u8] = b"dem:min"; // Balance
|
||||
pub const PUBLIC_PROP_COUNT: &[u8] = b"dem:ppc"; // PropIndex
|
||||
pub const PUBLIC_PROPS: &[u8] = b"dem:pub"; // Vec<(PropIndex, Proposal)>
|
||||
pub const DEPOSIT_OF: &[u8] = b"dem:dep:"; // PropIndex -> (Balance, Vec<AccountId>)
|
||||
pub const LAUNCH_PERIOD: &[u8] = b"dem:lau"; // BlockNumber
|
||||
pub const MINIMUM_DEPOSIT: &[u8] = b"dem:min"; // Balance
|
||||
|
||||
// council proposals
|
||||
pub const COUNCIL_PROPOSAL: &[u8] = b"dem:cou:pro"; // (BlockNumber, Proposal)
|
||||
pub const COUNCIL_VOTE_OF: &[u8] = b"dem:cou:vot:"; // AccountId -> CouncilVote
|
||||
pub const COUNCIL_VOTERS: &[u8] = b"dem:cou:vts"; // Vec<AccountId>
|
||||
|
||||
// referenda
|
||||
const VOTING_PERIOD: &[u8] = b"dem:per"; // BlockNumber
|
||||
const REFERENDUM_COUNT: &[u8] = b"dem:rco"; // ReferendumIndex
|
||||
const NEXT_TALLY: &[u8] = b"dem:nxt"; // ReferendumIndex
|
||||
const REFERENDUM_INFO_OF: &[u8] = b"dem:pro:"; // ReferendumIndex -> (BlockNumber, Proposal, VoteThreshold)
|
||||
const VOTERS_FOR: &[u8] = b"dem:vtr:"; // ReferendumIndex -> Vec<AccountId>
|
||||
const VOTE_OF: &[u8] = b"dem:vot:"; // (ReferendumIndex, AccountId) -> bool
|
||||
pub const VOTING_PERIOD: &[u8] = b"dem:per"; // BlockNumber
|
||||
pub const REFERENDUM_COUNT: &[u8] = b"dem:rco"; // ReferendumIndex
|
||||
pub const NEXT_TALLY: &[u8] = b"dem:nxt"; // ReferendumIndex
|
||||
pub const REFERENDUM_INFO_OF: &[u8] = b"dem:pro:"; // ReferendumIndex -> (BlockNumber, Proposal, VoteThreshold)
|
||||
pub const VOTERS_FOR: &[u8] = b"dem:vtr:"; // ReferendumIndex -> Vec<AccountId>
|
||||
pub const VOTE_OF: &[u8] = b"dem:vot:"; // (ReferendumIndex, AccountId) -> bool
|
||||
|
||||
/// The minimum amount to be used as a deposit for a public referendum proposal.
|
||||
pub fn minimum_deposit() -> Balance {
|
||||
@@ -288,6 +293,52 @@ fn inject_referendum(
|
||||
ref_index
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub mod testing {
|
||||
use super::*;
|
||||
use runtime_io::{twox_128, TestExternalities};
|
||||
use codec::Joiner;
|
||||
use keyring::Keyring;
|
||||
use runtime::{session, staking};
|
||||
|
||||
pub fn externalities() -> TestExternalities {
|
||||
let alice = Keyring::Alice.to_raw_public();
|
||||
let bob = Keyring::Bob.to_raw_public();
|
||||
let charlie = Keyring::Charlie.to_raw_public();
|
||||
let dave = Keyring::Dave.to_raw_public();
|
||||
let eve = Keyring::Eve.to_raw_public();
|
||||
let ferdie = Keyring::Ferdie.to_raw_public();
|
||||
let one = Keyring::One.to_raw_public();
|
||||
|
||||
map![
|
||||
twox_128(session::SESSION_LENGTH).to_vec() => vec![].and(&1u64),
|
||||
twox_128(session::VALIDATOR_COUNT).to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(session::VALIDATOR_AT)).to_vec() => alice.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(session::VALIDATOR_AT)).to_vec() => bob.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(session::VALIDATOR_AT)).to_vec() => charlie.to_vec(),
|
||||
twox_128(staking::INTENTION_COUNT).to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(staking::INTENTION_AT)).to_vec() => alice.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(staking::INTENTION_AT)).to_vec() => bob.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(staking::INTENTION_AT)).to_vec() => charlie.to_vec(),
|
||||
twox_128(&alice.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&10u64),
|
||||
twox_128(&bob.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&20u64),
|
||||
twox_128(&charlie.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&30u64),
|
||||
twox_128(&dave.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&40u64),
|
||||
twox_128(&eve.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&50u64),
|
||||
twox_128(&ferdie.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&60u64),
|
||||
twox_128(&one.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&1u64),
|
||||
twox_128(staking::TOTAL_STAKE).to_vec() => vec![].and(&210u64),
|
||||
twox_128(staking::SESSIONS_PER_ERA).to_vec() => vec![].and(&1u64),
|
||||
twox_128(staking::VALIDATOR_COUNT).to_vec() => vec![].and(&3u64),
|
||||
twox_128(staking::CURRENT_ERA).to_vec() => vec![].and(&1u64),
|
||||
|
||||
twox_128(LAUNCH_PERIOD).to_vec() => vec![].and(&1u64),
|
||||
twox_128(VOTING_PERIOD).to_vec() => vec![].and(&1u64),
|
||||
twox_128(MINIMUM_DEPOSIT).to_vec() => vec![].and(&1u64)
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -299,39 +350,7 @@ mod tests {
|
||||
use runtime::{staking, session, democracy};
|
||||
|
||||
fn new_test_ext() -> TestExternalities {
|
||||
let alice = Keyring::Alice.to_raw_public();
|
||||
let bob = Keyring::Bob.to_raw_public();
|
||||
let charlie = Keyring::Charlie.to_raw_public();
|
||||
let dave = Keyring::Dave.to_raw_public();
|
||||
let eve = Keyring::Eve.to_raw_public();
|
||||
let ferdie = Keyring::Ferdie.to_raw_public();
|
||||
let one = Keyring::One.to_raw_public();
|
||||
|
||||
map![
|
||||
twox_128(b"ses:len").to_vec() => vec![].and(&1u64),
|
||||
twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => alice.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => bob.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => charlie.to_vec(),
|
||||
twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => alice.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => bob.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => charlie.to_vec(),
|
||||
twox_128(&alice.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&10u64),
|
||||
twox_128(&bob.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&20u64),
|
||||
twox_128(&charlie.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&30u64),
|
||||
twox_128(&dave.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&40u64),
|
||||
twox_128(&eve.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&50u64),
|
||||
twox_128(&ferdie.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&60u64),
|
||||
twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&1u64),
|
||||
twox_128(b"sta:tot").to_vec() => vec![].and(&210u64),
|
||||
twox_128(b"sta:spe").to_vec() => vec![].and(&1u64),
|
||||
twox_128(b"sta:vac").to_vec() => vec![].and(&3u64),
|
||||
twox_128(b"sta:era").to_vec() => vec![].and(&1u64),
|
||||
twox_128(LAUNCH_PERIOD).to_vec() => vec![].and(&1u64),
|
||||
twox_128(VOTING_PERIOD).to_vec() => vec![].and(&1u64),
|
||||
twox_128(MINIMUM_DEPOSIT).to_vec() => vec![].and(&1u64)
|
||||
]
|
||||
testing::externalities()
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -32,9 +32,9 @@ use demo_primitives::{Proposal, AccountId, Hash, BlockNumber};
|
||||
use runtime::{staking, system, session};
|
||||
use dispatch::enact_proposal;
|
||||
|
||||
const APPROVALS_REQUIRED: &[u8] = b"gov:apr";
|
||||
const CURRENT_PROPOSAL: &[u8] = b"gov:pro";
|
||||
const APPROVAL_OF: &[u8] = b"gov:app:";
|
||||
pub const APPROVALS_REQUIRED: &[u8] = b"gov:apr";
|
||||
pub const CURRENT_PROPOSAL: &[u8] = b"gov:pro";
|
||||
pub const APPROVAL_OF: &[u8] = b"gov:app:";
|
||||
|
||||
/// The proportion of validators required for a propsal to be approved measured as the number out
|
||||
/// of 1000.
|
||||
@@ -113,6 +113,21 @@ pub mod internal {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub mod testing {
|
||||
use super::*;
|
||||
use runtime_io::{twox_128, TestExternalities};
|
||||
use codec::Joiner;
|
||||
|
||||
pub fn externalities(session_length: u64, sessions_per_era: u64, current_era: u64) -> TestExternalities {
|
||||
let extras: TestExternalities = map![
|
||||
twox_128(APPROVALS_REQUIRED).to_vec() => vec![].and(&667u32)
|
||||
];
|
||||
staking::testing::externalities(session_length, sessions_per_era, current_era)
|
||||
.into_iter().chain(extras.into_iter()).collect()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -124,25 +139,7 @@ mod tests {
|
||||
use runtime::{staking, session};
|
||||
|
||||
fn new_test_ext() -> TestExternalities {
|
||||
let one = Keyring::One.to_raw_public();
|
||||
let two = Keyring::Two.to_raw_public();
|
||||
let three = [3u8; 32];
|
||||
|
||||
map![
|
||||
twox_128(APPROVALS_REQUIRED).to_vec() => vec![].and(&667u32),
|
||||
twox_128(b"ses:len").to_vec() => vec![].and(&1u64),
|
||||
twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => one.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => two.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => three.to_vec(),
|
||||
twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => one.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => two.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => three.to_vec(),
|
||||
twox_128(b"sta:spe").to_vec() => vec![].and(&1u64),
|
||||
twox_128(b"sta:vac").to_vec() => vec![].and(&3u64),
|
||||
twox_128(b"sta:era").to_vec() => vec![].and(&1u64)
|
||||
]
|
||||
testing::externalities(1, 1, 1)
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -23,16 +23,18 @@ use runtime_support::{storage, StorageVec};
|
||||
use demo_primitives::{AccountId, SessionKey, BlockNumber};
|
||||
use runtime::{system, staking, consensus};
|
||||
|
||||
const SESSION_LENGTH: &[u8] = b"ses:len";
|
||||
const CURRENT_INDEX: &[u8] = b"ses:ind";
|
||||
const LAST_LENGTH_CHANGE: &[u8] = b"ses:llc";
|
||||
const NEXT_KEY_FOR: &[u8] = b"ses:nxt:";
|
||||
const NEXT_SESSION_LENGTH: &[u8] = b"ses:nln";
|
||||
pub const SESSION_LENGTH: &[u8] = b"ses:len";
|
||||
pub const CURRENT_INDEX: &[u8] = b"ses:ind";
|
||||
pub const LAST_LENGTH_CHANGE: &[u8] = b"ses:llc";
|
||||
pub const NEXT_KEY_FOR: &[u8] = b"ses:nxt:";
|
||||
pub const NEXT_SESSION_LENGTH: &[u8] = b"ses:nln";
|
||||
pub const VALIDATOR_AT: &[u8] = b"ses:val:";
|
||||
pub const VALIDATOR_COUNT: &[u8] = b"ses:val:len";
|
||||
|
||||
struct ValidatorStorageVec {}
|
||||
impl StorageVec for ValidatorStorageVec {
|
||||
type Item = AccountId;
|
||||
const PREFIX: &'static[u8] = b"ses:val:";
|
||||
const PREFIX: &'static[u8] = VALIDATOR_AT;
|
||||
}
|
||||
|
||||
/// Get the current set of validators.
|
||||
@@ -131,6 +133,30 @@ fn rotate_session() {
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub mod testing {
|
||||
use super::*;
|
||||
use runtime_io::{twox_128, TestExternalities};
|
||||
use codec::{Joiner, KeyedVec};
|
||||
use keyring::Keyring;
|
||||
use runtime::system;
|
||||
|
||||
pub fn externalities(session_length: u64) -> TestExternalities {
|
||||
let one = Keyring::One.to_raw_public();
|
||||
let two = Keyring::Two.to_raw_public();
|
||||
let three = [3u8; 32];
|
||||
|
||||
let extras: TestExternalities = map![
|
||||
twox_128(SESSION_LENGTH).to_vec() => vec![].and(&session_length),
|
||||
twox_128(VALIDATOR_COUNT).to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(VALIDATOR_AT)).to_vec() => one.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(VALIDATOR_AT)).to_vec() => two.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(VALIDATOR_AT)).to_vec() => three.to_vec()
|
||||
];
|
||||
system::testing::externalities().into_iter().chain(extras.into_iter()).collect()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
@@ -31,25 +31,27 @@ pub type Balance = u64;
|
||||
/// The amount of bonding period left in an account. Measured in eras.
|
||||
pub type Bondage = u64;
|
||||
|
||||
struct IntentionStorageVec {}
|
||||
pub const BONDING_DURATION: &[u8] = b"sta:loc";
|
||||
pub const VALIDATOR_COUNT: &[u8] = b"sta:vac";
|
||||
pub const SESSIONS_PER_ERA: &[u8] = b"sta:spe";
|
||||
pub const NEXT_SESSIONS_PER_ERA: &[u8] = b"sta:nse";
|
||||
pub const CURRENT_ERA: &[u8] = b"sta:era";
|
||||
pub const LAST_ERA_LENGTH_CHANGE: &[u8] = b"sta:lec";
|
||||
pub const TOTAL_STAKE: &[u8] = b"sta:tot";
|
||||
pub const INTENTION_AT: &[u8] = b"sta:wil:";
|
||||
pub const INTENTION_COUNT: &[u8] = b"sta:wil:len";
|
||||
|
||||
pub const BALANCE_OF: &[u8] = b"sta:bal:";
|
||||
pub const BONDAGE_OF: &[u8] = b"sta:bon:";
|
||||
pub const CODE_OF: &[u8] = b"sta:cod:";
|
||||
pub const STORAGE_OF: &[u8] = b"sta:sto:";
|
||||
|
||||
pub struct IntentionStorageVec {}
|
||||
impl StorageVec for IntentionStorageVec {
|
||||
type Item = AccountId;
|
||||
const PREFIX: &'static[u8] = b"sta:wil:";
|
||||
const PREFIX: &'static[u8] = INTENTION_AT;
|
||||
}
|
||||
|
||||
const BONDING_DURATION: &[u8] = b"sta:loc";
|
||||
const VALIDATOR_COUNT: &[u8] = b"sta:vac";
|
||||
const SESSIONS_PER_ERA: &[u8] = b"sta:spe";
|
||||
const NEXT_SESSIONS_PER_ERA: &[u8] = b"sta:nse";
|
||||
const CURRENT_ERA: &[u8] = b"sta:era";
|
||||
const LAST_ERA_LENGTH_CHANGE: &[u8] = b"sta:lec";
|
||||
const TOTAL_STAKE: &[u8] = b"sta:tot";
|
||||
|
||||
const BALANCE_OF: &[u8] = b"sta:bal:";
|
||||
const BONDAGE_OF: &[u8] = b"sta:bon:";
|
||||
const CODE_OF: &[u8] = b"sta:cod:";
|
||||
const STORAGE_OF: &[u8] = b"sta:sto:";
|
||||
|
||||
/// The length of the bonding duration in eras.
|
||||
pub fn bonding_duration() -> BlockNumber {
|
||||
storage::get_or_default(BONDING_DURATION)
|
||||
@@ -434,6 +436,33 @@ fn new_era() {
|
||||
);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub mod testing {
|
||||
use super::*;
|
||||
use runtime_io::{twox_128, TestExternalities};
|
||||
use codec::{Joiner, KeyedVec};
|
||||
use keyring::Keyring;
|
||||
use runtime::session;
|
||||
|
||||
pub fn externalities(session_length: u64, sessions_per_era: u64, current_era: u64) -> TestExternalities {
|
||||
let one = Keyring::One.to_raw_public();
|
||||
let two = Keyring::Two.to_raw_public();
|
||||
let three = [3u8; 32];
|
||||
|
||||
let extras: TestExternalities = map![
|
||||
twox_128(INTENTION_COUNT).to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(INTENTION_AT)).to_vec() => one.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(INTENTION_AT)).to_vec() => two.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(INTENTION_AT)).to_vec() => three.to_vec(),
|
||||
twox_128(SESSIONS_PER_ERA).to_vec() => vec![].and(&sessions_per_era),
|
||||
twox_128(VALIDATOR_COUNT).to_vec() => vec![].and(&3u64),
|
||||
twox_128(CURRENT_ERA).to_vec() => vec![].and(¤t_era),
|
||||
twox_128(&one.to_keyed_vec(BALANCE_OF)).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0]
|
||||
];
|
||||
session::testing::externalities(session_length).into_iter().chain(extras.into_iter()).collect()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -456,10 +485,10 @@ mod tests {
|
||||
let four = [4u8; 32];
|
||||
|
||||
let mut t: TestExternalities = map![
|
||||
twox_128(b"ses:len").to_vec() => vec![].and(&1u64),
|
||||
twox_128(b"ses:val:len").to_vec() => vec![].and(&2u32),
|
||||
twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => vec![10; 32],
|
||||
twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => vec![20; 32],
|
||||
twox_128(session::SESSION_LENGTH).to_vec() => vec![].and(&1u64),
|
||||
twox_128(session::VALIDATOR_COUNT).to_vec() => vec![].and(&2u32),
|
||||
twox_128(&0u32.to_keyed_vec(session::VALIDATOR_AT)).to_vec() => vec![10; 32],
|
||||
twox_128(&1u32.to_keyed_vec(session::VALIDATOR_AT)).to_vec() => vec![20; 32],
|
||||
twox_128(SESSIONS_PER_ERA).to_vec() => vec![].and(&2u64),
|
||||
twox_128(VALIDATOR_COUNT).to_vec() => vec![].and(&2u32),
|
||||
twox_128(BONDING_DURATION).to_vec() => vec![].and(&3u64),
|
||||
@@ -526,7 +555,7 @@ mod tests {
|
||||
#[test]
|
||||
fn staking_eras_work() {
|
||||
let mut t: TestExternalities = map![
|
||||
twox_128(b"ses:len").to_vec() => vec![].and(&1u64),
|
||||
twox_128(session::SESSION_LENGTH).to_vec() => vec![].and(&1u64),
|
||||
twox_128(SESSIONS_PER_ERA).to_vec() => vec![].and(&2u64)
|
||||
];
|
||||
with_externalities(&mut t, || {
|
||||
|
||||
@@ -27,9 +27,9 @@ use demo_primitives::{AccountId, Hash, TxOrder, BlockNumber, Block, Header,
|
||||
UncheckedTransaction, Function, Log};
|
||||
use runtime::{staking, session};
|
||||
|
||||
const NONCE_OF: &[u8] = b"sys:non:";
|
||||
const BLOCK_HASH_AT: &[u8] = b"sys:old:";
|
||||
const CODE: &[u8] = b"sys:cod";
|
||||
pub const NONCE_OF: &[u8] = b"sys:non:";
|
||||
pub const BLOCK_HASH_AT: &[u8] = b"sys:old:";
|
||||
pub const CODE: &[u8] = b"sys:cod";
|
||||
|
||||
/// The current block number being processed. Set by `execute_block`.
|
||||
pub fn block_number() -> BlockNumber {
|
||||
@@ -229,6 +229,19 @@ fn info_expect_equal_hash(given: &Hash, expected: &Hash) {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub mod testing {
|
||||
use super::*;
|
||||
use runtime_io::{twox_128, TestExternalities};
|
||||
use codec::Joiner;
|
||||
|
||||
pub fn externalities() -> TestExternalities {
|
||||
map![
|
||||
twox_128(&0u64.to_keyed_vec(BLOCK_HASH_AT)).to_vec() => [69u8; 32].encode()
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -240,7 +253,7 @@ mod tests {
|
||||
use environment::with_env;
|
||||
use primitives::hexdisplay::HexDisplay;
|
||||
use demo_primitives::{Header, Digest, UncheckedTransaction, Transaction, Function};
|
||||
use runtime::staking;
|
||||
use runtime::{governance, staking};
|
||||
|
||||
#[test]
|
||||
fn staking_balance_transfer_dispatch_works() {
|
||||
@@ -248,7 +261,7 @@ mod tests {
|
||||
let two = Keyring::Two.to_raw_public();
|
||||
|
||||
let mut t: TestExternalities = map![
|
||||
twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0]
|
||||
twox_128(&one.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0]
|
||||
];
|
||||
|
||||
let tx = UncheckedTransaction {
|
||||
@@ -268,27 +281,7 @@ mod tests {
|
||||
}
|
||||
|
||||
fn new_test_ext() -> TestExternalities {
|
||||
let one = Keyring::One.to_raw_public();
|
||||
let two = Keyring::Two.to_raw_public();
|
||||
let three = [3u8; 32];
|
||||
|
||||
map![
|
||||
twox_128(&0u64.to_keyed_vec(b"sys:old:")).to_vec() => [69u8; 32].encode(),
|
||||
twox_128(b"gov:apr").to_vec() => vec![].and(&667u32),
|
||||
twox_128(b"ses:len").to_vec() => vec![].and(&2u64),
|
||||
twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => one.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => two.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => three.to_vec(),
|
||||
twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32),
|
||||
twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => one.to_vec(),
|
||||
twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => two.to_vec(),
|
||||
twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => three.to_vec(),
|
||||
twox_128(b"sta:spe").to_vec() => vec![].and(&2u64),
|
||||
twox_128(b"sta:vac").to_vec() => vec![].and(&3u64),
|
||||
twox_128(b"sta:era").to_vec() => vec![].and(&0u64),
|
||||
twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0]
|
||||
]
|
||||
governance::testing::externalities(2, 2, 0)
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -20,7 +20,7 @@ use runtime_support::storage;
|
||||
|
||||
pub type Timestamp = u64;
|
||||
|
||||
const CURRENT_TIMESTAMP: &[u8] = b"tim:val";
|
||||
pub const CURRENT_TIMESTAMP: &[u8] = b"tim:val";
|
||||
|
||||
/// Get the current time.
|
||||
pub fn get() -> Timestamp {
|
||||
|
||||
Reference in New Issue
Block a user