From c44c5f0b093f48b87021649a75e8f7dfc0cf1b4a Mon Sep 17 00:00:00 2001 From: Rob Walker Date: Wed, 5 Sep 2018 05:07:58 +0900 Subject: [PATCH] take into account size of an Entry (#1116) --- src/ledger.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/ledger.rs b/src/ledger.rs index a8afdb426b..c6ee6276bc 100644 --- a/src/ledger.rs +++ b/src/ledger.rs @@ -666,13 +666,18 @@ mod tests { ); let tx_large = Transaction::new(&keypair, keypair.pubkey(), 1, next_id); - let tx_small_size = serialized_size(&tx_small).unwrap(); - let tx_large_size = serialized_size(&tx_large).unwrap(); + let tx_small_size = serialized_size(&tx_small).unwrap() as usize; + let tx_large_size = serialized_size(&tx_large).unwrap() as usize; + let entry_size = serialized_size(&Entry { + num_hashes: 0, + id: Hash::default(), + transactions: vec![], + has_more: false, + }).unwrap() as usize; assert!(tx_small_size < tx_large_size); - assert!(tx_large_size < PACKET_DATA_SIZE as u64); + assert!(tx_large_size < PACKET_DATA_SIZE); - // NOTE: if Entry grows to larger than a transaction, the code below falls over - let threshold = (BLOB_DATA_SIZE / PACKET_DATA_SIZE) - 1; + let threshold = (BLOB_DATA_SIZE - entry_size) / tx_small_size; // verify no split let transactions = vec![tx_small.clone(); threshold]; @@ -690,8 +695,8 @@ mod tests { // verify the split with small transactions followed by large // transactions - let mut transactions = vec![tx_small.clone(); BLOB_DATA_SIZE / (tx_small_size as usize)]; - let large_transactions = vec![tx_large.clone(); BLOB_DATA_SIZE / (tx_large_size as usize)]; + let mut transactions = vec![tx_small.clone(); BLOB_DATA_SIZE / tx_small_size]; + let large_transactions = vec![tx_large.clone(); BLOB_DATA_SIZE / tx_large_size]; transactions.extend(large_transactions);