Merge branch 'master' into travis_fixes

This commit is contained in:
debris 2016-02-02 01:13:21 +01:00
commit ba62e757e0
16 changed files with 154 additions and 163 deletions

View File

@ -337,23 +337,16 @@ mod tests {
} }
#[test] #[test]
fn returns_error_for_verified_duplicates() { fn returns_ok_for_drained_duplicates() {
let mut queue = get_test_queue(); let mut queue = get_test_queue();
if let Err(e) = queue.import_block(get_good_dummy_block()) { if let Err(e) = queue.import_block(get_good_dummy_block()) {
panic!("error importing block that is valid by definition({:?})", e); panic!("error importing block that is valid by definition({:?})", e);
} }
queue.drain(10);
queue.flush(); queue.flush();
queue.drain(10);
let duplicate_import = queue.import_block(get_good_dummy_block()); if let Err(e) = queue.import_block(get_good_dummy_block()) {
match duplicate_import { panic!("error importing block that has already been drained ({:?})", e);
Err(e) => {
match e {
ImportError::AlreadyQueued => {},
_ => { panic!("must return AlreadyQueued error"); }
}
}
Ok(_) => { panic!("must produce error"); }
} }
} }
} }

View File

@ -28,3 +28,4 @@ sha3 = { path = "sha3" }
serde = "0.6.7" serde = "0.6.7"
clippy = "0.0.37" clippy = "0.0.37"
json-tests = { path = "json-tests" } json-tests = { path = "json-tests" }
target_info = "0.1.0"

View File

@ -1,3 +1,5 @@
//! Utils common types and macros global reexport.
pub use standard::*; pub use standard::*;
pub use from_json::*; pub use from_json::*;
pub use error::*; pub use error::*;

View File

@ -1,3 +1,5 @@
//! Ethcore crypto.
use hash::*; use hash::*;
use bytes::*; use bytes::*;
use uint::*; use uint::*;

View File

@ -1,3 +1,5 @@
//! Coversion from json.
use standard::*; use standard::*;
#[macro_export] #[macro_export]

View File

@ -1,3 +1,5 @@
//! Calculates heapsize of util types.
use uint::*; use uint::*;
use hash::*; use hash::*;

View File

@ -1,41 +1,41 @@
/// General IO module. //! General IO module.
/// //!
/// Example usage for craeting a network service and adding an IO handler: //! Example usage for creating a network service and adding an IO handler:
/// //!
/// ```rust //! ```rust
/// extern crate ethcore_util; //! extern crate ethcore_util;
/// use ethcore_util::*; //! use ethcore_util::*;
/// //!
/// struct MyHandler; //! struct MyHandler;
/// //!
/// #[derive(Clone)] //! #[derive(Clone)]
/// struct MyMessage { //! struct MyMessage {
/// data: u32 //! data: u32
/// } //! }
/// //!
/// impl IoHandler<MyMessage> for MyHandler { //! impl IoHandler<MyMessage> for MyHandler {
/// fn initialize(&self, io: &IoContext<MyMessage>) { //! fn initialize(&self, io: &IoContext<MyMessage>) {
/// io.register_timer(0, 1000).unwrap(); //! io.register_timer(0, 1000).unwrap();
/// } //! }
/// //!
/// fn timeout(&self, _io: &IoContext<MyMessage>, timer: TimerToken) { //! fn timeout(&self, _io: &IoContext<MyMessage>, timer: TimerToken) {
/// println!("Timeout {}", timer); //! println!("Timeout {}", timer);
/// } //! }
/// //!
/// fn message(&self, _io: &IoContext<MyMessage>, message: &MyMessage) { //! fn message(&self, _io: &IoContext<MyMessage>, message: &MyMessage) {
/// println!("Message {}", message.data); //! println!("Message {}", message.data);
/// } //! }
/// } //! }
/// //!
/// fn main () { //! fn main () {
/// let mut service = IoService::<MyMessage>::start().expect("Error creating network service"); //! let mut service = IoService::<MyMessage>::start().expect("Error creating network service");
/// service.register_handler(Arc::new(MyHandler)).unwrap(); //! service.register_handler(Arc::new(MyHandler)).unwrap();
/// //!
/// // Wait for quit condition //! // Wait for quit condition
/// // ... //! // ...
/// // Drop the service //! // Drop the service
/// } //! }
/// ``` //! ```
mod service; mod service;
mod worker; mod worker;

View File

@ -8,32 +8,58 @@
//! Ethcore-util library //! Ethcore-util library
//! //!
//! ### Rust version: //! ### Rust version:
//! - beta
//! - nightly //! - nightly
//! //!
//! ### Supported platforms: //! ### Supported platforms:
//! - OSX //! - OSX
//! - Linux //! - Linux
//! //!
//! ### Dependencies: //! ### Building:
//! - RocksDB 3.13
//! //!
//! ### Dependencies Installation: //! - Ubuntu 14.04 and later:
//!
//! ```bash
//! # install rocksdb
//! add-apt-repository "deb http://ppa.launchpad.net/giskou/librocksdb/ubuntu trusty main"
//! apt-get update
//! apt-get install -y --force-yes librocksdb
//!
//! # install multirust
//! curl -sf https://raw.githubusercontent.com/brson/multirust/master/blastoff.sh | sh -s -- --yes
//!
//! # install nightly and make it default
//! multirust update nightly && multirust default nightly
//!
//! # export rust LIBRARY_PATH
//! export LIBRARY_PATH=/usr/local/lib
//!
//! # download and build parity
//! git clone https://github.com/ethcore/parity
//! cd parity
//! cargo build --release
//! ```
//! //!
//! - OSX: //! - OSX:
//! //!
//! ```bash //! ```bash
//! # install rocksdb && multirust
//! brew update
//! brew install rocksdb //! brew install rocksdb
//! ``` //! brew install multirust
//! //!
//! - From source: //! # install nightly and make it default
//! multirust update nightly && multirust default nightly
//! //!
//! ```bash //! # export rust LIBRARY_PATH
//! wget https://github.com/facebook/rocksdb/archive/rocksdb-3.13.tar.gz //! export LIBRARY_PATH=/usr/local/lib
//! tar xvf rocksdb-3.13.tar.gz && cd rocksdb-rocksdb-3.13 && make shared_lib //!
//! sudo make install //! # download and build parity
//! git clone https://github.com/ethcore/parity
//! cd parity
//! cargo build --release
//! ``` //! ```
extern crate target_info;
extern crate slab; extern crate slab;
extern crate rustc_serialize; extern crate rustc_serialize;
extern crate mio; extern crate mio;
@ -57,46 +83,34 @@ extern crate serde;
#[macro_use] #[macro_use]
extern crate log as rlog; extern crate log as rlog;
/// TODO [Gav Wood] Please document me
pub mod standard; pub mod standard;
#[macro_use] #[macro_use]
/// TODO [Gav Wood] Please document me
pub mod from_json; pub mod from_json;
#[macro_use] #[macro_use]
/// TODO [Gav Wood] Please document me
pub mod common; pub mod common;
pub mod error; pub mod error;
pub mod hash; pub mod hash;
pub mod uint; pub mod uint;
pub mod bytes; pub mod bytes;
pub mod rlp; pub mod rlp;
/// TODO [Gav Wood] Please document me
pub mod misc; pub mod misc;
/// TODO [Gav Wood] Please document me mod json_aid;
pub mod json_aid;
pub mod vector; pub mod vector;
pub mod sha3; pub mod sha3;
pub mod hashdb; pub mod hashdb;
pub mod memorydb; pub mod memorydb;
pub mod overlaydb; pub mod overlaydb;
pub mod journaldb; pub mod journaldb;
/// TODO [Gav Wood] Please document me mod math;
pub mod math;
pub mod chainfilter; pub mod chainfilter;
/// TODO [Gav Wood] Please document me
pub mod crypto; pub mod crypto;
pub mod triehash; pub mod triehash;
/// TODO [Gav Wood] Please document me
pub mod trie; pub mod trie;
pub mod nibbleslice; pub mod nibbleslice;
/// TODO [Gav Wood] Please document me mod heapsizeof;
pub mod heapsizeof;
pub mod squeeze; pub mod squeeze;
/// TODO [Gav Wood] Please document me
pub mod semantic_version; pub mod semantic_version;
/// TODO [Gav Wood] Please document me
pub mod io; pub mod io;
/// TODO [Gav Wood] Please document me
pub mod network; pub mod network;
pub mod log; pub mod log;
@ -114,7 +128,6 @@ pub use crypto::*;
pub use triehash::*; pub use triehash::*;
pub use trie::*; pub use trie::*;
pub use nibbleslice::*; pub use nibbleslice::*;
pub use heapsizeof::*;
pub use squeeze::*; pub use squeeze::*;
pub use semantic_version::*; pub use semantic_version::*;
pub use network::*; pub use network::*;

View File

@ -1,4 +1,6 @@
/// log2 //! Common math functions.
/// Returns log2.
pub fn log2(x: usize) -> u32 { pub fn log2(x: usize) -> u32 {
if x <= 1 { if x <= 1 {
return 0; return 0;

View File

@ -1,3 +1,5 @@
//! Diff misc.
use common::*; use common::*;
#[derive(Debug,Clone,PartialEq,Eq)] #[derive(Debug,Clone,PartialEq,Eq)]

View File

@ -7,6 +7,7 @@ use std::ops::*;
use mio::*; use mio::*;
use mio::tcp::*; use mio::tcp::*;
use mio::udp::*; use mio::udp::*;
use target_info::Target;
use hash::*; use hash::*;
use crypto::*; use crypto::*;
use sha3::Hashable; use sha3::Hashable;
@ -280,7 +281,7 @@ impl<Message> Host<Message> where Message: Send + Sync + Clone {
config: config, config: config,
nonce: H256::random(), nonce: H256::random(),
protocol_version: 4, protocol_version: 4,
client_version: "parity".to_owned(), client_version: format!("Parity/{}/{}-{}-{}", env!("CARGO_PKG_VERSION"), Target::arch(), Target::env(), Target::os()),
listen_port: 0, listen_port: 0,
capabilities: Vec::new(), capabilities: Vec::new(),
}), }),

View File

@ -1,52 +1,53 @@
/// Network and general IO module. //! Network and general IO module.
/// Example usage for craeting a network service and adding an IO handler: //!
/// //! Example usage for craeting a network service and adding an IO handler:
/// ```rust //!
/// extern crate ethcore_util as util; //! ```rust
/// use util::*; //! extern crate ethcore_util as util;
/// //! use util::*;
/// struct MyHandler; //!
/// //! struct MyHandler;
/// #[derive(Clone)] //!
/// struct MyMessage { //! #[derive(Clone)]
/// data: u32 //! struct MyMessage {
/// } //! data: u32
/// //! }
/// impl NetworkProtocolHandler<MyMessage> for MyHandler { //!
/// fn initialize(&self, io: &NetworkContext<MyMessage>) { //! impl NetworkProtocolHandler<MyMessage> for MyHandler {
/// io.register_timer(0, 1000); //! fn initialize(&self, io: &NetworkContext<MyMessage>) {
/// } //! io.register_timer(0, 1000);
/// //! }
/// fn read(&self, io: &NetworkContext<MyMessage>, peer: &PeerId, packet_id: u8, data: &[u8]) { //!
/// println!("Received {} ({} bytes) from {}", packet_id, data.len(), peer); //! fn read(&self, io: &NetworkContext<MyMessage>, peer: &PeerId, packet_id: u8, data: &[u8]) {
/// } //! println!("Received {} ({} bytes) from {}", packet_id, data.len(), peer);
/// //! }
/// fn connected(&self, io: &NetworkContext<MyMessage>, peer: &PeerId) { //!
/// println!("Connected {}", peer); //! fn connected(&self, io: &NetworkContext<MyMessage>, peer: &PeerId) {
/// } //! println!("Connected {}", peer);
/// //! }
/// fn disconnected(&self, io: &NetworkContext<MyMessage>, peer: &PeerId) { //!
/// println!("Disconnected {}", peer); //! fn disconnected(&self, io: &NetworkContext<MyMessage>, peer: &PeerId) {
/// } //! println!("Disconnected {}", peer);
/// //! }
/// fn timeout(&self, io: &NetworkContext<MyMessage>, timer: TimerToken) { //!
/// println!("Timeout {}", timer); //! fn timeout(&self, io: &NetworkContext<MyMessage>, timer: TimerToken) {
/// } //! println!("Timeout {}", timer);
/// //! }
/// fn message(&self, io: &NetworkContext<MyMessage>, message: &MyMessage) { //!
/// println!("Message {}", message.data); //! fn message(&self, io: &NetworkContext<MyMessage>, message: &MyMessage) {
/// } //! println!("Message {}", message.data);
/// } //! }
/// //! }
/// fn main () { //!
/// let mut service = NetworkService::<MyMessage>::start(NetworkConfiguration::new()).expect("Error creating network service"); //! fn main () {
/// service.register_protocol(Arc::new(MyHandler), "myproto", &[1u8]); //! let mut service = NetworkService::<MyMessage>::start(NetworkConfiguration::new()).expect("Error creating network service");
/// //! service.register_protocol(Arc::new(MyHandler), "myproto", &[1u8]);
/// // Wait for quit condition //!
/// // ... //! // Wait for quit condition
/// // Drop the service //! // ...
/// } //! // Drop the service
/// ``` //! }
//! ```
mod host; mod host;
mod connection; mod connection;
mod handshake; mod handshake;

View File

@ -1,3 +1,5 @@
//! Semantic version formatting and comparing.
/// A version value with strict meaning. Use `to_u32` to convert to a simple integer. /// A version value with strict meaning. Use `to_u32` to convert to a simple integer.
/// ///
/// # Example /// # Example

View File

@ -1,3 +1,5 @@
//! Std lib global reexports.
pub use std::io; pub use std::io;
pub use std::fs; pub use std::fs;
pub use std::str; pub use std::str;

View File

@ -1,3 +1,5 @@
//! Trie interface and implementation.
/// TODO [Gav Wood] Please document me /// TODO [Gav Wood] Please document me
pub mod trietraits; pub mod trietraits;
pub mod standardmap; pub mod standardmap;

View File

@ -1,40 +1,4 @@
//! vector util functions //! Vector extensions.
use std::ptr;
/// TODO [debris] Please document me
pub trait InsertSlice<T> {
/// TODO [debris] Please document me
fn insert_slice(&mut self, index: usize, elements: &[T]);
}
/// based on `insert` function implementation from standard library
impl<T> InsertSlice<T> for Vec<T> {
fn insert_slice(&mut self, index: usize, elements: &[T]) {
let e_len = elements.len();
if e_len == 0 {
return;
}
let len = self.len();
assert!(index <= len);
// space for the new element
self.reserve(e_len);
unsafe {
{
let p = self.as_mut_ptr().offset(index as isize);
let ep = elements.as_ptr().offset(0);
// shift everything by e_len, to make space
ptr::copy(p, p.offset(e_len as isize), len - index);
// write new element
ptr::copy(ep, p, e_len);
}
self.set_len(len + e_len);
}
}
}
/// Returns len of prefix shared with elem /// Returns len of prefix shared with elem
/// ///