fix tests compilation
This commit is contained in:
parent
d085146254
commit
d59e9e816e
@ -19,6 +19,7 @@
|
|||||||
use super::{Height, Round, BlockHash};
|
use super::{Height, Round, BlockHash};
|
||||||
use rlp::{View, DecoderError, Decodable, Decoder, Encodable, RlpStream, Stream};
|
use rlp::{View, DecoderError, Decodable, Decoder, Encodable, RlpStream, Stream};
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
pub enum ConsensusMessage {
|
pub enum ConsensusMessage {
|
||||||
Prevote(Height, Round, BlockHash),
|
Prevote(Height, Round, BlockHash),
|
||||||
Precommit(Height, Round, BlockHash),
|
Precommit(Height, Round, BlockHash),
|
||||||
|
@ -73,7 +73,7 @@ impl Tendermint {
|
|||||||
let engine = Arc::new(
|
let engine = Arc::new(
|
||||||
Tendermint {
|
Tendermint {
|
||||||
params: params,
|
params: params,
|
||||||
timeout: AtomicUsize::new(our_params.timeouts.propose()),
|
timeout: AtomicUsize::new(our_params.timeouts.propose),
|
||||||
our_params: our_params,
|
our_params: our_params,
|
||||||
builtins: builtins,
|
builtins: builtins,
|
||||||
timeout_service: IoService::<NextStep>::start().expect("Error creating engine timeout service"),
|
timeout_service: IoService::<NextStep>::start().expect("Error creating engine timeout service"),
|
||||||
@ -244,6 +244,8 @@ impl Engine for Tendermint {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn handle_message(&self, sender: Address, signature: H520, message: UntrustedRlp) -> Result<Bytes, Error> {
|
fn handle_message(&self, sender: Address, signature: H520, message: UntrustedRlp) -> Result<Bytes, Error> {
|
||||||
|
let c: ConsensusMessage = try!(message.as_val());
|
||||||
|
println!("{:?}", c);
|
||||||
// Check if correct round.
|
// Check if correct round.
|
||||||
if self.r.load(AtomicOrdering::Relaxed) != try!(message.val_at(0)) {
|
if self.r.load(AtomicOrdering::Relaxed) != try!(message.val_at(0)) {
|
||||||
try!(Err(EngineError::WrongRound))
|
try!(Err(EngineError::WrongRound))
|
||||||
@ -325,11 +327,8 @@ mod tests {
|
|||||||
use account_provider::AccountProvider;
|
use account_provider::AccountProvider;
|
||||||
use spec::Spec;
|
use spec::Spec;
|
||||||
use engines::{Engine, EngineError};
|
use engines::{Engine, EngineError};
|
||||||
use super::{Tendermint, TendermintParams};
|
use super::Tendermint;
|
||||||
|
use super::params::TendermintParams;
|
||||||
/// Create a new test chain spec with `Tendermint` consensus engine.
|
|
||||||
/// Account "0".sha3() and "1".sha3() are a validators.
|
|
||||||
fn new_test_tendermint() -> Spec { Spec::load(include_bytes!("../../res/tendermint.json")) }
|
|
||||||
|
|
||||||
fn propose_default(engine: &Arc<Engine>, round: u8, proposer: Address) -> Result<Bytes, Error> {
|
fn propose_default(engine: &Arc<Engine>, round: u8, proposer: Address) -> Result<Bytes, Error> {
|
||||||
let mut s = RlpStream::new_list(3);
|
let mut s = RlpStream::new_list(3);
|
||||||
@ -372,14 +371,14 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn has_valid_metadata() {
|
fn has_valid_metadata() {
|
||||||
let engine = new_test_tendermint().engine;
|
let engine = Spec::new_test_tendermint().engine;
|
||||||
assert!(!engine.name().is_empty());
|
assert!(!engine.name().is_empty());
|
||||||
assert!(engine.version().major >= 1);
|
assert!(engine.version().major >= 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_return_schedule() {
|
fn can_return_schedule() {
|
||||||
let engine = new_test_tendermint().engine;
|
let engine = Spec::new_test_tendermint().engine;
|
||||||
let schedule = engine.schedule(&EnvInfo {
|
let schedule = engine.schedule(&EnvInfo {
|
||||||
number: 10000000,
|
number: 10000000,
|
||||||
author: 0.into(),
|
author: 0.into(),
|
||||||
@ -395,7 +394,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn verification_fails_on_short_seal() {
|
fn verification_fails_on_short_seal() {
|
||||||
let engine = new_test_tendermint().engine;
|
let engine = Spec::new_test_tendermint().engine;
|
||||||
let header: Header = Header::default();
|
let header: Header = Header::default();
|
||||||
|
|
||||||
let verify_result = engine.verify_block_basic(&header, None);
|
let verify_result = engine.verify_block_basic(&header, None);
|
||||||
@ -409,7 +408,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn verification_fails_on_wrong_signatures() {
|
fn verification_fails_on_wrong_signatures() {
|
||||||
let engine = new_test_tendermint().engine;
|
let engine = Spec::new_test_tendermint().engine;
|
||||||
let mut header = Header::default();
|
let mut header = Header::default();
|
||||||
let tap = AccountProvider::transient_provider();
|
let tap = AccountProvider::transient_provider();
|
||||||
|
|
||||||
@ -445,7 +444,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn seal_with_enough_signatures_is_ok() {
|
fn seal_with_enough_signatures_is_ok() {
|
||||||
let engine = new_test_tendermint().engine;
|
let engine = Spec::new_test_tendermint().engine;
|
||||||
let mut header = Header::default();
|
let mut header = Header::default();
|
||||||
|
|
||||||
let seal = good_seal(&header);
|
let seal = good_seal(&header);
|
||||||
@ -460,7 +459,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_generate_seal() {
|
fn can_generate_seal() {
|
||||||
let spec = new_test_tendermint();
|
let spec = Spec::new_test_tendermint();
|
||||||
let ref engine = *spec.engine;
|
let ref engine = *spec.engine;
|
||||||
let tender = Tendermint::new(engine.params().clone(), TendermintParams::default(), BTreeMap::new());
|
let tender = Tendermint::new(engine.params().clone(), TendermintParams::default(), BTreeMap::new());
|
||||||
|
|
||||||
@ -480,7 +479,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn propose_step() {
|
fn propose_step() {
|
||||||
let engine = new_test_tendermint().engine;
|
let engine = Spec::new_test_tendermint().engine;
|
||||||
let tap = AccountProvider::transient_provider();
|
let tap = AccountProvider::transient_provider();
|
||||||
let r = 0;
|
let r = 0;
|
||||||
|
|
||||||
@ -499,7 +498,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn proposer_switching() {
|
fn proposer_switching() {
|
||||||
let engine = new_test_tendermint().engine;
|
let engine = Spec::new_test_tendermint().engine;
|
||||||
let tap = AccountProvider::transient_provider();
|
let tap = AccountProvider::transient_provider();
|
||||||
|
|
||||||
// Currently not a proposer.
|
// Currently not a proposer.
|
||||||
@ -514,7 +513,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn prevote_step() {
|
fn prevote_step() {
|
||||||
let engine = new_test_tendermint().engine;
|
let engine = Spec::new_test_tendermint().engine;
|
||||||
let tap = AccountProvider::transient_provider();
|
let tap = AccountProvider::transient_provider();
|
||||||
let r = 0;
|
let r = 0;
|
||||||
|
|
||||||
@ -533,7 +532,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn precommit_step() {
|
fn precommit_step() {
|
||||||
let engine = new_test_tendermint().engine;
|
let engine = Spec::new_test_tendermint().engine;
|
||||||
let tap = AccountProvider::transient_provider();
|
let tap = AccountProvider::transient_provider();
|
||||||
let r = 0;
|
let r = 0;
|
||||||
|
|
||||||
@ -553,7 +552,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn timeout_switching() {
|
fn timeout_switching() {
|
||||||
let tender = {
|
let tender = {
|
||||||
let engine = new_test_tendermint().engine;
|
let engine = Spec::new_test_tendermint().engine;
|
||||||
Tendermint::new(engine.params().clone(), TendermintParams::default(), BTreeMap::new())
|
Tendermint::new(engine.params().clone(), TendermintParams::default(), BTreeMap::new())
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -563,7 +562,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn increments_round() {
|
fn increments_round() {
|
||||||
let spec = new_test_tendermint();
|
let spec = Spec::new_test_tendermint();
|
||||||
let ref engine = *spec.engine;
|
let ref engine = *spec.engine;
|
||||||
let def_params = TendermintParams::default();
|
let def_params = TendermintParams::default();
|
||||||
let tender = Tendermint::new(engine.params().clone(), def_params.clone(), BTreeMap::new());
|
let tender = Tendermint::new(engine.params().clone(), def_params.clone(), BTreeMap::new());
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
//! Tendermint BFT consensus engine with round robin proof-of-authority.
|
//! Tendermint specific parameters.
|
||||||
|
|
||||||
use common::{Address, U256};
|
use common::{Address, U256};
|
||||||
use ethjson;
|
use ethjson;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
//! Tendermint BFT consensus engine with round robin proof-of-authority.
|
//! Tendermint timeout handling.
|
||||||
|
|
||||||
use std::sync::atomic::{Ordering as AtomicOrdering};
|
use std::sync::atomic::{Ordering as AtomicOrdering};
|
||||||
use std::sync::Weak;
|
use std::sync::Weak;
|
||||||
@ -35,14 +35,10 @@ impl TimerHandler {
|
|||||||
/// Base timeout of each step in ms.
|
/// Base timeout of each step in ms.
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct DefaultTimeouts {
|
pub struct DefaultTimeouts {
|
||||||
propose: Ms,
|
pub propose: Ms,
|
||||||
prevote: Ms,
|
pub prevote: Ms,
|
||||||
precommit: Ms,
|
pub precommit: Ms,
|
||||||
commit: Ms
|
pub commit: Ms
|
||||||
}
|
|
||||||
|
|
||||||
impl DefaultTimeouts {
|
|
||||||
pub fn propose(&self) -> usize { self.propose }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for DefaultTimeouts {
|
impl Default for DefaultTimeouts {
|
||||||
@ -56,7 +52,7 @@ impl Default for DefaultTimeouts {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ms = usize;
|
pub type Ms = usize;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct NextStep;
|
pub struct NextStep;
|
||||||
|
@ -266,6 +266,12 @@ impl Spec {
|
|||||||
pub fn new_test_instant() -> Self {
|
pub fn new_test_instant() -> Self {
|
||||||
Spec::load(include_bytes!("../../res/instant_seal.json") as &[u8]).expect("instant_seal.json is invalid")
|
Spec::load(include_bytes!("../../res/instant_seal.json") as &[u8]).expect("instant_seal.json is invalid")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Create a new Spec with Tendermint consensus which does internal sealing (not requiring work).
|
||||||
|
/// Account "0".sha3() and "1".sha3() are a validators.
|
||||||
|
pub fn new_test_tendermint() -> Self {
|
||||||
|
Spec::load(include_bytes!("../../res/tendermint.json") as &[u8]).expect("tendermint.json is invalid")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
Loading…
Reference in New Issue
Block a user