Skip to content

Commit f41f8af

Browse files
committed
Cleaning up the shutdown tests so that they share setup code
1 parent 59da432 commit f41f8af

File tree

1 file changed

+18
-67
lines changed

1 file changed

+18
-67
lines changed

simln-lib/src/lib.rs

Lines changed: 18 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1694,8 +1694,12 @@ mod tests {
16941694
assert!(result.is_ok());
16951695
}
16961696

1697-
#[tokio::test]
1698-
async fn test_shutdown_timeout() {
1697+
#[allow(clippy::type_complexity)]
1698+
/// Helper to create and configure mock nodes for testing
1699+
fn setup_test_nodes() -> (
1700+
(crate::NodeInfo, crate::NodeInfo),
1701+
HashMap<PublicKey, Arc<Mutex<dyn LightningNode>>>,
1702+
) {
16991703
// Create test nodes
17001704
let nodes = test_utils::create_nodes(2, 100_000);
17011705
let mut node_1 = nodes.first().unwrap().0.clone();
@@ -1756,6 +1760,14 @@ mod tests {
17561760
clients.insert(node_1.pubkey, Arc::new(Mutex::new(mock_node_1)));
17571761
clients.insert(node_2.pubkey, Arc::new(Mutex::new(mock_node_2)));
17581762

1763+
((node_1, node_2), clients)
1764+
}
1765+
1766+
#[tokio::test]
1767+
async fn test_shutdown_timeout() {
1768+
// Set up test nodes
1769+
let ((node_1, node_2), clients) = setup_test_nodes();
1770+
17591771
// Define payment activity: 2000 msats every 1 second
17601772
let activity_definition = crate::ActivityDefinition {
17611773
source: node_1,
@@ -1799,11 +1811,9 @@ mod tests {
17991811
elapsed
18001812
);
18011813

1802-
// Check the payment stats
1803-
let total_payments = simulation.get_total_payments().await;
1804-
18051814
// We expect at least 2 payments to be attempted (about one per second)
18061815
// The exact number may vary due to timing, but should be at least 2
1816+
let total_payments = simulation.get_total_payments().await;
18071817
assert!(
18081818
total_payments >= 2,
18091819
"Expected at least 2 payments to be attempted, got {}",
@@ -1813,65 +1823,8 @@ mod tests {
18131823

18141824
#[tokio::test]
18151825
async fn test_shutdown_completion() {
1816-
// Create test nodes
1817-
let nodes = test_utils::create_nodes(2, 100_000);
1818-
let mut node_1 = nodes.first().unwrap().0.clone();
1819-
let mut node_2 = nodes.get(1).unwrap().0.clone();
1820-
node_1.features.set_keysend_optional();
1821-
node_2.features.set_keysend_optional();
1822-
let node_1_for_get_info = node_1.clone();
1823-
let node_2_for_get_info = node_2.clone();
1824-
1825-
// Create mock nodes with all necessary expectations
1826-
let mut mock_node_1 = MockLightningNode::new();
1827-
let mut mock_node_2 = MockLightningNode::new();
1828-
1829-
// Set up node 1 expectations
1830-
mock_node_1.expect_get_info().return_const(node_1.clone());
1831-
mock_node_1
1832-
.expect_get_network()
1833-
.returning(|| Ok(Network::Regtest));
1834-
mock_node_1
1835-
.expect_list_channels()
1836-
.returning(|| Ok(vec![100_000]));
1837-
mock_node_1
1838-
.expect_get_node_info()
1839-
.returning(move |_| Ok(node_1_for_get_info.clone()));
1840-
mock_node_1
1841-
.expect_send_payment()
1842-
.returning(|_, _| Ok(lightning::ln::PaymentHash([0; 32])));
1843-
mock_node_1.expect_track_payment().returning(|_, _| {
1844-
Ok(crate::PaymentResult {
1845-
htlc_count: 1,
1846-
payment_outcome: crate::PaymentOutcome::Success,
1847-
})
1848-
});
1849-
1850-
// Set up node 2 expectations
1851-
mock_node_2.expect_get_info().return_const(node_2.clone());
1852-
mock_node_2
1853-
.expect_get_network()
1854-
.returning(|| Ok(Network::Regtest));
1855-
mock_node_2
1856-
.expect_list_channels()
1857-
.returning(|| Ok(vec![100_000]));
1858-
mock_node_2
1859-
.expect_get_node_info()
1860-
.returning(move |_| Ok(node_2_for_get_info.clone()));
1861-
mock_node_2
1862-
.expect_send_payment()
1863-
.returning(|_, _| Ok(lightning::ln::PaymentHash([0; 32])));
1864-
mock_node_2.expect_track_payment().returning(|_, _| {
1865-
Ok(crate::PaymentResult {
1866-
htlc_count: 1,
1867-
payment_outcome: crate::PaymentOutcome::Success,
1868-
})
1869-
});
1870-
1871-
// Create a hashmap of nodes
1872-
let mut clients: HashMap<PublicKey, Arc<Mutex<dyn LightningNode>>> = HashMap::new();
1873-
clients.insert(node_1.pubkey, Arc::new(Mutex::new(mock_node_1)));
1874-
clients.insert(node_2.pubkey, Arc::new(Mutex::new(mock_node_2)));
1826+
// Set up test nodes
1827+
let ((node_1, node_2), clients) = setup_test_nodes();
18751828

18761829
// Define an activity that will make 3 payments of 2000 msats each
18771830
let activity_definition = crate::ActivityDefinition {
@@ -1903,10 +1856,8 @@ mod tests {
19031856
// Verify the simulation shut down correctly
19041857
assert!(result.is_ok(), "Simulation should end without error");
19051858

1906-
// Check the payment stats
1907-
let total_payments = simulation.get_total_payments().await;
1908-
19091859
// We expect exactly 3 payments to be attempted
1860+
let total_payments = simulation.get_total_payments().await;
19101861
assert_eq!(
19111862
total_payments, 3,
19121863
"Expected exactly 3 payments to be attempted, got {}",

0 commit comments

Comments
 (0)