From b0248cad0b039b2baccd58757029770fe203475e Mon Sep 17 00:00:00 2001 From: keorn Date: Wed, 8 Feb 2017 02:55:56 -0500 Subject: [PATCH] sort corpus when hitting genesis (#4470) --- ethcore/src/client/traits.rs | 1 + ethcore/src/tests/client.rs | 7 +++++++ util/src/stats.rs | 1 + 3 files changed, 9 insertions(+) diff --git a/ethcore/src/client/traits.rs b/ethcore/src/client/traits.rs index dfb251296..dce708b3a 100644 --- a/ethcore/src/client/traits.rs +++ b/ethcore/src/client/traits.rs @@ -220,6 +220,7 @@ pub trait BlockChainClient : Sync + Send { let block = self.block(BlockId::Hash(h)).expect("h is either the best_block_hash or an ancestor; qed"); let header = block.header_view(); if header.number() == 0 { + corpus.sort(); return corpus; } block.transaction_views().iter().foreach(|t| corpus.push(t.gas_price())); diff --git a/ethcore/src/tests/client.rs b/ethcore/src/tests/client.rs index abaf1cc3b..6c2c02c2d 100644 --- a/ethcore/src/tests/client.rs +++ b/ethcore/src/tests/client.rs @@ -233,6 +233,13 @@ fn empty_gas_price_histogram() { assert!(client.gas_price_histogram(20, 5).is_none()); } +#[test] +fn corpus_is_sorted() { + let client_result = generate_dummy_client_with_data(2, 1, slice_into![U256::from_str("11426908979").unwrap(), U256::from_str("50426908979").unwrap()]); + let client = client_result.reference(); + let corpus = client.gas_price_corpus(20); + assert!(corpus[0] < corpus[1]); +} #[test] fn can_handle_long_fork() { diff --git a/util/src/stats.rs b/util/src/stats.rs index e82447552..c4c08ddc8 100644 --- a/util/src/stats.rs +++ b/util/src/stats.rs @@ -33,6 +33,7 @@ impl Histogram { if corpus.len() < 1 { return None; } let corpus_end = corpus.last().expect("there is at least 1 element; qed").clone(); let corpus_start = corpus.first().expect("there is at least 1 element; qed").clone(); + trace!(target: "stats", "Computing histogram from {} to {} with {} buckets.", corpus_start, corpus_end, bucket_number); // Bucket needs to be at least 1 wide. let bucket_size = { // Round up to get the entire corpus included.