+ let payment_preimage_1 = send_along_route(&node_2, Route { hops }, &vec!(&*node_3, &*node_4, &*node_2)[..], 1000000).0;
+
+ let mut hops = Vec::with_capacity(3);
+ hops.push(RouteHop {
+ pubkey: node_4.get_our_node_id(),
+ short_channel_id: chan_announcement_4.1.contents.short_channel_id,
+ fee_msat: 0,
+ cltv_expiry_delta: chan_announcement_3.2.contents.cltv_expiry_delta as u32
+ });
+ hops.push(RouteHop {
+ pubkey: node_3.get_our_node_id(),
+ short_channel_id: chan_announcement_3.1.contents.short_channel_id,
+ fee_msat: 0,
+ cltv_expiry_delta: chan_announcement_2.2.contents.cltv_expiry_delta as u32
+ });
+ hops.push(RouteHop {
+ pubkey: node_2.get_our_node_id(),
+ short_channel_id: chan_announcement_2.1.contents.short_channel_id,
+ fee_msat: 1000000,
+ cltv_expiry_delta: 142,
+ });
+ hops[1].fee_msat = chan_announcement_2.2.contents.fee_base_msat as u64 + chan_announcement_2.2.contents.fee_proportional_millionths as u64 * hops[2].fee_msat as u64 / 1000000;
+ hops[0].fee_msat = chan_announcement_3.2.contents.fee_base_msat as u64 + chan_announcement_3.2.contents.fee_proportional_millionths as u64 * hops[1].fee_msat as u64 / 1000000;
+ let payment_preimage_2 = send_along_route(&node_2, Route { hops }, &vec!(&*node_4, &*node_3, &*node_2)[..], 1000000).0;
+
+ // Claim the rebalances...
+ claim_payment(&node_2, &vec!(&*node_4, &*node_3, &*node_2)[..], payment_preimage_2);
+ claim_payment(&node_2, &vec!(&*node_3, &*node_4, &*node_2)[..], payment_preimage_1);
+
+ // Add a duplicate new channel from 2 to 4
+ let chan_announcement_5 = create_chan_between_nodes(&node_2, &chain_monitor_2, &node_4, &chain_monitor_4);
+ for router in vec!(&router_1, &router_2, &router_3, &router_4) {
+ assert!(router.handle_channel_announcement(&chan_announcement_5.0).unwrap());
+ router.handle_channel_update(&chan_announcement_5.1).unwrap();
+ router.handle_channel_update(&chan_announcement_5.2).unwrap();
+ }
+
+ // Send some payments across both channels
+ let payment_preimage_3 = route_payment(&node_1, &router_1, &vec!(&*node_2, &*node_4)[..], 3000000).0;
+ let payment_preimage_4 = route_payment(&node_1, &router_1, &vec!(&*node_2, &*node_4)[..], 3000000).0;
+ let payment_preimage_5 = route_payment(&node_1, &router_1, &vec!(&*node_2, &*node_4)[..], 3000000).0;
+
+ route_over_limit(&node_1, &router_1, &vec!(&*node_2, &*node_4)[..], 3000000);
+
+ //TODO: Test that routes work again here as we've been notified that the channel is full
+
+ claim_payment(&node_1, &vec!(&*node_2, &*node_4)[..], payment_preimage_3);
+ claim_payment(&node_1, &vec!(&*node_2, &*node_4)[..], payment_preimage_4);
+ claim_payment(&node_1, &vec!(&*node_2, &*node_4)[..], payment_preimage_5);