From 68d6de4c5293ce532df38ea2a60cbf7025ba2864 Mon Sep 17 00:00:00 2001 From: gilescope Date: Mon, 5 Jul 2021 10:45:47 +0100 Subject: [PATCH 1/3] Less duplication --- .../transaction-pool/graph/src/base_pool.rs | 254 ++++-------------- 1 file changed, 50 insertions(+), 204 deletions(-) diff --git a/client/transaction-pool/graph/src/base_pool.rs b/client/transaction-pool/graph/src/base_pool.rs index 9b644bbdb3b67..96affe2ce48a9 100644 --- a/client/transaction-pool/graph/src/base_pool.rs +++ b/client/transaction-pool/graph/src/base_pool.rs @@ -538,6 +538,19 @@ mod tests { BasePool::default() } + // (DEFAULT_TX can be static as the vec![] are empty and thus don't allocate.) + static DEFAULT_TX : Transaction::> = Transaction { + data: vec![], + bytes: 1, + hash: 1u64, + priority: 5u64, + valid_till: 64u64, + requires: vec![], + provides: vec![], + propagate: true, + source: Source::External, + }; + #[test] fn should_import_transaction_to_ready() { // given @@ -546,14 +559,8 @@ mod tests { // when pool.import(Transaction { data: vec![1u8], - bytes: 1, - hash: 1u64, - priority: 5u64, - valid_till: 64u64, - requires: vec![], provides: vec![vec![1]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); // then @@ -569,25 +576,13 @@ mod tests { // when pool.import(Transaction { data: vec![1u8], - bytes: 1, - hash: 1, - priority: 5u64, - valid_till: 64u64, - requires: vec![], provides: vec![vec![1]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![1u8], - bytes: 1, - hash: 1, - priority: 5u64, - valid_till: 64u64, - requires: vec![], provides: vec![vec![1]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap_err(); // then @@ -595,7 +590,6 @@ mod tests { assert_eq!(pool.ready.len(), 1); } - #[test] fn should_import_transaction_to_future_and_promote_it_later() { // given @@ -604,27 +598,17 @@ mod tests { // when pool.import(Transaction { data: vec![1u8], - bytes: 1, - hash: 1, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![0]], provides: vec![vec![1]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); assert_eq!(pool.ready().count(), 0); assert_eq!(pool.ready.len(), 0); pool.import(Transaction { data: vec![2u8], - bytes: 1, hash: 2, - priority: 5u64, - valid_till: 64u64, - requires: vec![], provides: vec![vec![0]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); // then @@ -640,61 +624,38 @@ mod tests { // when pool.import(Transaction { data: vec![1u8], - bytes: 1, - hash: 1, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![0]], provides: vec![vec![1]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![3u8], - bytes: 1, hash: 3, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![2]], - provides: vec![], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![2u8], - bytes: 1, hash: 2, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![1]], provides: vec![vec![3], vec![2]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![4u8], - bytes: 1, hash: 4, priority: 1_000u64, - valid_till: 64u64, requires: vec![vec![3], vec![4]], - provides: vec![], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); assert_eq!(pool.ready().count(), 0); assert_eq!(pool.ready.len(), 0); let res = pool.import(Transaction { data: vec![5u8], - bytes: 1, hash: 5, - priority: 5u64, - valid_till: 64u64, - requires: vec![], provides: vec![vec![0], vec![4]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); // then @@ -720,25 +681,16 @@ mod tests { let mut pool = pool(); pool.import(Transaction { data: vec![1u8], - bytes: 1, - hash: 1, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![0]], provides: vec![vec![1]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![3u8], - bytes: 1, hash: 3, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![1]], provides: vec![vec![2]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); assert_eq!(pool.ready().count(), 0); assert_eq!(pool.ready.len(), 0); @@ -746,14 +698,10 @@ mod tests { // when pool.import(Transaction { data: vec![2u8], - bytes: 1, hash: 2, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![2]], provides: vec![vec![0]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); // then @@ -767,14 +715,10 @@ mod tests { // let's close the cycle with one additional transaction let res = pool.import(Transaction { data: vec![4u8], - bytes: 1, hash: 4, priority: 50u64, - valid_till: 64u64, - requires: vec![], provides: vec![vec![0]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); let mut it = pool.ready().into_iter().map(|tx| tx.data[0]); assert_eq!(it.next(), Some(4)); @@ -796,25 +740,16 @@ mod tests { let mut pool = pool(); pool.import(Transaction { data: vec![1u8], - bytes: 1, - hash: 1, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![0]], provides: vec![vec![1]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![3u8], - bytes: 1, hash: 3, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![1]], provides: vec![vec![2]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); assert_eq!(pool.ready().count(), 0); assert_eq!(pool.ready.len(), 0); @@ -822,14 +757,10 @@ mod tests { // when pool.import(Transaction { data: vec![2u8], - bytes: 1, hash: 2, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![2]], provides: vec![vec![0]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); // then @@ -843,14 +774,10 @@ mod tests { // let's close the cycle with one additional transaction let err = pool.import(Transaction { data: vec![4u8], - bytes: 1, hash: 4, priority: 1u64, // lower priority than Tx(2) - valid_till: 64u64, - requires: vec![], provides: vec![vec![0]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap_err(); let mut it = pool.ready().into_iter().map(|tx| tx.data[0]); assert_eq!(it.next(), None); @@ -867,25 +794,15 @@ mod tests { let mut pool = pool(); pool.import(Transaction { data: vec![5u8; 1024], - bytes: 1, hash: 5, - priority: 5u64, - valid_till: 64u64, - requires: vec![], provides: vec![vec![0], vec![4]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).expect("import 1 should be ok"); pool.import(Transaction { data: vec![3u8; 1024], - bytes: 1, hash: 7, - priority: 5u64, - valid_till: 64u64, - requires: vec![], provides: vec![vec![2], vec![7]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).expect("import 2 should be ok"); assert!(parity_util_mem::malloc_size(&pool) > 5000); @@ -897,70 +814,43 @@ mod tests { let mut pool = pool(); pool.import(Transaction { data: vec![5u8], - bytes: 1, hash: 5, - priority: 5u64, - valid_till: 64u64, - requires: vec![], provides: vec![vec![0], vec![4]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![1u8], - bytes: 1, - hash: 1, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![0]], provides: vec![vec![1]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![3u8], - bytes: 1, hash: 3, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![2]], - provides: vec![], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![2u8], - bytes: 1, hash: 2, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![1]], provides: vec![vec![3], vec![2]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![4u8], - bytes: 1, hash: 4, priority: 1_000u64, - valid_till: 64u64, requires: vec![vec![3], vec![4]], - provides: vec![], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); // future pool.import(Transaction { data: vec![6u8], - bytes: 1, hash: 6, priority: 1_000u64, - valid_till: 64u64, requires: vec![vec![11]], - provides: vec![], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); assert_eq!(pool.ready().count(), 5); assert_eq!(pool.future.len(), 1); @@ -980,59 +870,38 @@ mod tests { // future (waiting for 0) pool.import(Transaction { data: vec![5u8], - bytes: 1, hash: 5, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![0]], provides: vec![vec![100]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); // ready pool.import(Transaction { data: vec![1u8], - bytes: 1, - hash: 1, - priority: 5u64, - valid_till: 64u64, - requires: vec![], provides: vec![vec![1]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![2u8], - bytes: 1, hash: 2, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![2]], provides: vec![vec![3]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![3u8], - bytes: 1, hash: 3, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![1]], provides: vec![vec![2]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); pool.import(Transaction { data: vec![4u8], - bytes: 1, hash: 4, priority: 1_000u64, - valid_till: 64u64, requires: vec![vec![3], vec![2]], provides: vec![vec![4]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); assert_eq!(pool.ready().count(), 4); @@ -1061,14 +930,11 @@ mod tests { assert_eq!( format!("{:?}", Transaction { data: vec![4u8], - bytes: 1, hash: 4, priority: 1_000u64, - valid_till: 64u64, requires: vec![vec![3], vec![2]], provides: vec![vec![4]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }), "Transaction { \ hash: 4, priority: 1000, valid_till: 64, bytes: 1, propagate: true, \ @@ -1080,26 +946,21 @@ source: TransactionSource::External, requires: [03, 02], provides: [04], data: [ fn transaction_propagation() { assert_eq!(Transaction { data: vec![4u8], - bytes: 1, hash: 4, priority: 1_000u64, - valid_till: 64u64, requires: vec![vec![3], vec![2]], provides: vec![vec![4]], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }.is_propagable(), true); assert_eq!(Transaction { data: vec![4u8], - bytes: 1, hash: 4, priority: 1_000u64, - valid_till: 64u64, requires: vec![vec![3], vec![2]], provides: vec![vec![4]], propagate: false, - source: Source::External, + .. DEFAULT_TX.clone() }.is_propagable(), false); } @@ -1114,14 +975,9 @@ source: TransactionSource::External, requires: [03, 02], provides: [04], data: [ // then let err = pool.import(Transaction { data: vec![5u8], - bytes: 1, hash: 5, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![0]], - provides: vec![], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }); if let Err(error::Error::RejectedFutureTransaction) = err { @@ -1138,14 +994,9 @@ source: TransactionSource::External, requires: [03, 02], provides: [04], data: [ // when pool.import(Transaction { data: vec![5u8], - bytes: 1, hash: 5, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![0]], - provides: vec![], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); // then @@ -1168,14 +1019,9 @@ source: TransactionSource::External, requires: [03, 02], provides: [04], data: [ let flag_value = pool.with_futures_enabled(|pool, flag| { pool.import(Transaction { data: vec![5u8], - bytes: 1, hash: 5, - priority: 5u64, - valid_till: 64u64, requires: vec![vec![0]], - provides: vec![], - propagate: true, - source: Source::External, + .. DEFAULT_TX.clone() }).unwrap(); flag From 8e33dbd0a8834713fa0d56748585f7232cb14f99 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Mon, 5 Jul 2021 10:56:55 +0100 Subject: [PATCH 2/3] Const MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bastian Köcher --- client/transaction-pool/graph/src/base_pool.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/transaction-pool/graph/src/base_pool.rs b/client/transaction-pool/graph/src/base_pool.rs index 96affe2ce48a9..9544797add7e2 100644 --- a/client/transaction-pool/graph/src/base_pool.rs +++ b/client/transaction-pool/graph/src/base_pool.rs @@ -539,7 +539,7 @@ mod tests { } // (DEFAULT_TX can be static as the vec![] are empty and thus don't allocate.) - static DEFAULT_TX : Transaction::> = Transaction { + const DEFAULT_TX: Transaction::> = Transaction { data: vec![], bytes: 1, hash: 1u64, From 3ed164331c0072bd8b4e9f45396cddf0063a4caf Mon Sep 17 00:00:00 2001 From: Squirrel Date: Mon, 5 Jul 2021 10:57:16 +0100 Subject: [PATCH 3/3] less comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bastian Köcher --- client/transaction-pool/graph/src/base_pool.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/client/transaction-pool/graph/src/base_pool.rs b/client/transaction-pool/graph/src/base_pool.rs index 9544797add7e2..39cfe8fa9dce5 100644 --- a/client/transaction-pool/graph/src/base_pool.rs +++ b/client/transaction-pool/graph/src/base_pool.rs @@ -538,7 +538,6 @@ mod tests { BasePool::default() } - // (DEFAULT_TX can be static as the vec![] are empty and thus don't allocate.) const DEFAULT_TX: Transaction::> = Transaction { data: vec![], bytes: 1,