Skip to content

Commit 70fca07

Browse files
authored
Merge pull request #641 from jkczyz/2020-06-deterministic-test-logging
Make test output deterministic
2 parents bd2fa43 + 43eed8d commit 70fca07

8 files changed

+15
-68
lines changed

lightning/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,3 @@ features = ["bitcoinconsensus"]
2828

2929
[dev-dependencies]
3030
hex = "0.3"
31-
rand = "0.4"

lightning/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#![allow(ellipsis_inclusive_range_patterns)]
2020

2121
extern crate bitcoin;
22-
#[cfg(test)] extern crate rand;
2322
#[cfg(test)] extern crate hex;
2423

2524
#[macro_use]

lightning/src/ln/channel.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4478,7 +4478,6 @@ mod tests {
44784478
use bitcoin::hashes::Hash;
44794479
use bitcoin::hash_types::{Txid, WPubkeyHash};
44804480
use std::sync::Arc;
4481-
use rand::{thread_rng,Rng};
44824481

44834482
struct TestFeeEstimator {
44844483
fee_est: u32
@@ -4533,9 +4532,7 @@ mod tests {
45334532
let original_fee = 253;
45344533
let mut fee_est = TestFeeEstimator{fee_est: original_fee };
45354534
let secp_ctx = Secp256k1::new();
4536-
let mut seed = [0; 32];
4537-
let mut rng = thread_rng();
4538-
rng.fill_bytes(&mut seed);
4535+
let seed = [42; 32];
45394536
let network = Network::Testnet;
45404537
let keys_provider = test_utils::TestKeysInterface::new(&seed, network);
45414538

@@ -4555,9 +4552,7 @@ mod tests {
45554552
let feeest = TestFeeEstimator{fee_est: 15000};
45564553
let logger = test_utils::TestLogger::new();
45574554
let secp_ctx = Secp256k1::new();
4558-
let mut seed = [0; 32];
4559-
let mut rng = thread_rng();
4560-
rng.fill_bytes(&mut seed);
4555+
let seed = [42; 32];
45614556
let network = Network::Testnet;
45624557
let keys_provider = test_utils::TestKeysInterface::new(&seed, network);
45634558

lightning/src/ln/channelmonitor.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2544,7 +2544,6 @@ mod tests {
25442544
use util::test_utils::TestLogger;
25452545
use bitcoin::secp256k1::key::{SecretKey,PublicKey};
25462546
use bitcoin::secp256k1::Secp256k1;
2547-
use rand::{thread_rng,Rng};
25482547
use std::sync::Arc;
25492548
use chain::keysinterface::InMemoryChannelKeys;
25502549

@@ -2558,10 +2557,8 @@ mod tests {
25582557

25592558
let mut preimages = Vec::new();
25602559
{
2561-
let mut rng = thread_rng();
2562-
for _ in 0..20 {
2563-
let mut preimage = PaymentPreimage([0; 32]);
2564-
rng.fill_bytes(&mut preimage.0[..]);
2560+
for i in 0..20 {
2561+
let preimage = PaymentPreimage([i; 32]);
25652562
let hash = PaymentHash(Sha256::hash(&preimage.0[..]).into_inner());
25662563
preimages.push((preimage, hash));
25672564
}

lightning/src/ln/functional_test_utils.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ use bitcoin::hash_types::BlockHash;
2929

3030
use bitcoin::secp256k1::key::PublicKey;
3131

32-
use rand::{thread_rng,Rng};
33-
3432
use std::cell::RefCell;
3533
use std::rc::Rc;
3634
use std::sync::{Mutex, RwLock};
@@ -1071,11 +1069,9 @@ pub fn create_chanmon_cfgs(node_count: usize) -> Vec<TestChanMonCfg> {
10711069

10721070
pub fn create_node_cfgs<'a>(node_count: usize, chanmon_cfgs: &'a Vec<TestChanMonCfg>) -> Vec<NodeCfg<'a>> {
10731071
let mut nodes = Vec::new();
1074-
let mut rng = thread_rng();
10751072

10761073
for i in 0..node_count {
1077-
let mut seed = [0; 32];
1078-
rng.fill_bytes(&mut seed);
1074+
let seed = [i as u8; 32];
10791075
let keys_manager = test_utils::TestKeysInterface::new(&seed, Network::Testnet);
10801076
let chan_monitor = test_utils::TestChannelMonitor::new(&chanmon_cfgs[i].chain_monitor, &chanmon_cfgs[i].tx_broadcaster, &chanmon_cfgs[i].logger, &chanmon_cfgs[i].fee_estimator);
10811077
nodes.push(NodeCfg { chain_monitor: &chanmon_cfgs[i].chain_monitor, logger: &chanmon_cfgs[i].logger, tx_broadcaster: &chanmon_cfgs[i].tx_broadcaster, fee_estimator: &chanmon_cfgs[i].fee_estimator, chan_monitor, keys_manager, node_seed: seed });

lightning/src/ln/functional_tests.rs

Lines changed: 5 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ use std::sync::{Arc, Mutex};
4848
use std::sync::atomic::Ordering;
4949
use std::{mem, io};
5050

51-
use rand::{thread_rng, Rng};
52-
5351
use ln::functional_test_utils::*;
5452

5553
#[test]
@@ -1613,15 +1611,8 @@ fn test_chan_reserve_violation_inbound_htlc_outbound_channel() {
16131611
let (route, payment_hash, _) = get_route_and_payment_hash!(1000);
16141612
// Need to manually create the update_add_htlc message to go around the channel reserve check in send_htlc()
16151613
let secp_ctx = Secp256k1::new();
1616-
let session_priv = SecretKey::from_slice(&{
1617-
let mut session_key = [0; 32];
1618-
let mut rng = thread_rng();
1619-
rng.fill_bytes(&mut session_key);
1620-
session_key
1621-
}).expect("RNG is bad!");
1622-
1614+
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
16231615
let cur_height = nodes[1].node.latest_block_height.load(Ordering::Acquire) as u32 + 1;
1624-
16251616
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv).unwrap();
16261617
let (onion_payloads, htlc_msat, htlc_cltv) = onion_utils::build_onion_payloads(&route.paths[0], 1000, &None, cur_height).unwrap();
16271618
let onion_packet = onion_utils::construct_onion_packet(onion_payloads, onion_keys, [0; 32], &payment_hash);
@@ -1692,15 +1683,8 @@ fn test_chan_reserve_violation_inbound_htlc_inbound_chan() {
16921683

16931684
// Need to manually create the update_add_htlc message to go around the channel reserve check in send_htlc()
16941685
let secp_ctx = Secp256k1::new();
1695-
let session_priv = SecretKey::from_slice(&{
1696-
let mut session_key = [0; 32];
1697-
let mut rng = thread_rng();
1698-
rng.fill_bytes(&mut session_key);
1699-
session_key
1700-
}).expect("RNG is bad!");
1701-
1686+
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
17021687
let cur_height = nodes[0].node.latest_block_height.load(Ordering::Acquire) as u32 + 1;
1703-
17041688
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route_2.paths[0], &session_priv).unwrap();
17051689
let (onion_payloads, htlc_msat, htlc_cltv) = onion_utils::build_onion_payloads(&route_2.paths[0], recv_value_2, &None, cur_height).unwrap();
17061690
let onion_packet = onion_utils::construct_onion_packet(onion_payloads, onion_keys, [0; 32], &our_payment_hash_1);
@@ -3176,13 +3160,7 @@ fn fail_backward_pending_htlc_upon_channel_failure() {
31763160
let (_, payment_hash) = get_payment_preimage_hash!(nodes[1]);
31773161

31783162
let secp_ctx = Secp256k1::new();
3179-
let session_priv = {
3180-
let mut session_key = [0; 32];
3181-
let mut rng = thread_rng();
3182-
rng.fill_bytes(&mut session_key);
3183-
SecretKey::from_slice(&session_key).expect("RNG is bad!")
3184-
};
3185-
3163+
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
31863164
let current_height = nodes[1].node.latest_block_height.load(Ordering::Acquire) as u32 + 1;
31873165
let net_graph_msg_handler = &nodes[1].net_graph_msg_handler;
31883166
let route = get_route(&nodes[1].node.get_our_node_id(), net_graph_msg_handler, &nodes[0].node.get_our_node_id(), None, &Vec::new(), 50_000, TEST_FINAL_CLTV, &logger).unwrap();
@@ -5480,9 +5458,7 @@ fn test_key_derivation_params() {
54805458
let chanmon_cfgs = create_chanmon_cfgs(3);
54815459

54825460
// We manually create the node configuration to backup the seed.
5483-
let mut rng = thread_rng();
5484-
let mut seed = [0; 32];
5485-
rng.fill_bytes(&mut seed);
5461+
let seed = [42; 32];
54865462
let keys_manager = test_utils::TestKeysInterface::new(&seed, Network::Testnet);
54875463
let chan_monitor = test_utils::TestChannelMonitor::new(&chanmon_cfgs[0].chain_monitor, &chanmon_cfgs[0].tx_broadcaster, &chanmon_cfgs[0].logger, &chanmon_cfgs[0].fee_estimator);
54885464
let node = NodeCfg { chain_monitor: &chanmon_cfgs[0].chain_monitor, logger: &chanmon_cfgs[0].logger, tx_broadcaster: &chanmon_cfgs[0].tx_broadcaster, fee_estimator: &chanmon_cfgs[0].fee_estimator, chan_monitor, keys_manager, node_seed: seed };
@@ -6475,13 +6451,7 @@ fn test_update_add_htlc_bolt2_receiver_check_max_htlc_limit() {
64756451
let logger = test_utils::TestLogger::new();
64766452

64776453
let (_, our_payment_hash) = get_payment_preimage_hash!(nodes[0]);
6478-
6479-
let session_priv = SecretKey::from_slice(&{
6480-
let mut session_key = [0; 32];
6481-
let mut rng = thread_rng();
6482-
rng.fill_bytes(&mut session_key);
6483-
session_key
6484-
}).expect("RNG is bad!");
6454+
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
64856455

64866456
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
64876457
let route = get_route(&nodes[0].node.get_our_node_id(), net_graph_msg_handler, &nodes[1].node.get_our_node_id(), None, &[], 3999999, TEST_FINAL_CLTV, &logger).unwrap();

lightning/src/ln/peer_handler.rs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,8 +1216,6 @@ mod tests {
12161216
use bitcoin::secp256k1::Secp256k1;
12171217
use bitcoin::secp256k1::key::{SecretKey, PublicKey};
12181218

1219-
use rand::{thread_rng, Rng};
1220-
12211219
use std;
12221220
use std::sync::{Arc, Mutex};
12231221
use std::sync::atomic::Ordering;
@@ -1271,18 +1269,11 @@ mod tests {
12711269

12721270
fn create_network<'a>(peer_count: usize, cfgs: &'a Vec<PeerManagerCfg>) -> Vec<PeerManager<FileDescriptor, &'a test_utils::TestChannelMessageHandler, &'a test_utils::TestRoutingMessageHandler, &'a test_utils::TestLogger>> {
12731271
let mut peers = Vec::new();
1274-
let mut rng = thread_rng();
1275-
let mut ephemeral_bytes = [0; 32];
1276-
rng.fill_bytes(&mut ephemeral_bytes);
1277-
12781272
for i in 0..peer_count {
1279-
let node_id = {
1280-
let mut key_slice = [0;32];
1281-
rng.fill_bytes(&mut key_slice);
1282-
SecretKey::from_slice(&key_slice).unwrap()
1283-
};
1273+
let node_secret = SecretKey::from_slice(&[42 + i as u8; 32]).unwrap();
1274+
let ephemeral_bytes = [i as u8; 32];
12841275
let msg_handler = MessageHandler { chan_handler: &cfgs[i].chan_handler, route_handler: &cfgs[i].routing_handler };
1285-
let peer = PeerManager::new(msg_handler, node_id, &ephemeral_bytes, &cfgs[i].logger);
1276+
let peer = PeerManager::new(msg_handler, node_secret, &ephemeral_bytes, &cfgs[i].logger);
12861277
peers.push(peer);
12871278
}
12881279

lightning/src/util/test_utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use bitcoin::hash_types::{Txid, BlockHash};
2222

2323
use bitcoin::secp256k1::{SecretKey, PublicKey, Secp256k1, Signature};
2424

25-
use std::time::{SystemTime, UNIX_EPOCH};
25+
use std::time::Duration;
2626
use std::sync::Mutex;
2727
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
2828
use std::{cmp, mem};
@@ -344,7 +344,7 @@ impl keysinterface::KeysInterface for TestKeysInterface {
344344

345345
impl TestKeysInterface {
346346
pub fn new(seed: &[u8; 32], network: Network) -> Self {
347-
let now = SystemTime::now().duration_since(UNIX_EPOCH).expect("Time went backwards");
347+
let now = Duration::from_secs(genesis_block(network).header.time as u64);
348348
Self {
349349
backing: keysinterface::KeysManager::new(seed, network, now.as_secs(), now.subsec_nanos()),
350350
override_session_priv: Mutex::new(None),

0 commit comments

Comments
 (0)