@@ -864,7 +864,7 @@ mod tests {
864864 use lightning:: ln:: peer_handler:: { PeerManager , MessageHandler , SocketDescriptor , IgnoringMessageHandler } ;
865865 use lightning:: routing:: gossip:: { NetworkGraph , NodeId , P2PGossipSync } ;
866866 use lightning:: routing:: router:: { DefaultRouter , Path , RouteHop } ;
867- use lightning:: routing:: scoring:: { ChannelUsage , ScoreUpdate , ScoreLookUp } ;
867+ use lightning:: routing:: scoring:: { ChannelUsage , ScoreUpdate , ScoreLookUp , LockableScore } ;
868868 use lightning:: util:: config:: UserConfig ;
869869 use lightning:: util:: ser:: Writeable ;
870870 use lightning:: util:: test_utils;
@@ -894,6 +894,11 @@ mod tests {
894894 fn disconnect_socket ( & mut self ) { }
895895 }
896896
897+ #[ cfg( c_bindings) ]
898+ type LockingWrapper < T > = lightning:: routing:: scoring:: MultiThreadedLockableScore < T > ;
899+ #[ cfg( not( c_bindings) ) ]
900+ type LockingWrapper < T > = Mutex < T > ;
901+
897902 type ChannelManager =
898903 channelmanager:: ChannelManager <
899904 Arc < ChainMonitor > ,
@@ -905,7 +910,7 @@ mod tests {
905910 Arc < DefaultRouter <
906911 Arc < NetworkGraph < Arc < test_utils:: TestLogger > > > ,
907912 Arc < test_utils:: TestLogger > ,
908- Arc < Mutex < TestScorer > > ,
913+ Arc < LockingWrapper < TestScorer > > ,
909914 ( ) ,
910915 TestScorer >
911916 > ,
@@ -927,7 +932,7 @@ mod tests {
927932 network_graph : Arc < NetworkGraph < Arc < test_utils:: TestLogger > > > ,
928933 logger : Arc < test_utils:: TestLogger > ,
929934 best_block : BestBlock ,
930- scorer : Arc < Mutex < TestScorer > > ,
935+ scorer : Arc < LockingWrapper < TestScorer > > ,
931936 }
932937
933938 impl Node {
@@ -1148,6 +1153,9 @@ mod tests {
11481153 }
11491154 }
11501155
1156+ #[ cfg( c_bindings) ]
1157+ impl lightning:: routing:: scoring:: Score for TestScorer { }
1158+
11511159 impl Drop for TestScorer {
11521160 fn drop ( & mut self ) {
11531161 if std:: thread:: panicking ( ) {
@@ -1179,7 +1187,7 @@ mod tests {
11791187 let logger = Arc :: new ( test_utils:: TestLogger :: with_id ( format ! ( "node {}" , i) ) ) ;
11801188 let genesis_block = genesis_block ( network) ;
11811189 let network_graph = Arc :: new ( NetworkGraph :: new ( network, logger. clone ( ) ) ) ;
1182- let scorer = Arc :: new ( Mutex :: new ( TestScorer :: new ( ) ) ) ;
1190+ let scorer = Arc :: new ( LockingWrapper :: new ( TestScorer :: new ( ) ) ) ;
11831191 let seed = [ i as u8 ; 32 ] ;
11841192 let router = Arc :: new ( DefaultRouter :: new ( network_graph. clone ( ) , logger. clone ( ) , seed, scorer. clone ( ) , Default :: default ( ) ) ) ;
11851193 let chain_source = Arc :: new ( test_utils:: TestChainSource :: new ( Network :: Bitcoin ) ) ;
@@ -1689,7 +1697,7 @@ mod tests {
16891697 maybe_announced_channel: true ,
16901698 } ] , blinded_tail: None } ;
16911699
1692- $nodes[ 0 ] . scorer. lock ( ) . unwrap ( ) . expect( TestResult :: PaymentFailure { path: path. clone( ) , short_channel_id: scored_scid } ) ;
1700+ $nodes[ 0 ] . scorer. write_lock ( ) . expect( TestResult :: PaymentFailure { path: path. clone( ) , short_channel_id: scored_scid } ) ;
16931701 $nodes[ 0 ] . node. push_pending_event( Event :: PaymentPathFailed {
16941702 payment_id: None ,
16951703 payment_hash: PaymentHash ( [ 42 ; 32 ] ) ,
@@ -1706,7 +1714,7 @@ mod tests {
17061714
17071715 // Ensure we'll score payments that were explicitly failed back by the destination as
17081716 // ProbeSuccess.
1709- $nodes[ 0 ] . scorer. lock ( ) . unwrap ( ) . expect( TestResult :: ProbeSuccess { path: path. clone( ) } ) ;
1717+ $nodes[ 0 ] . scorer. write_lock ( ) . expect( TestResult :: ProbeSuccess { path: path. clone( ) } ) ;
17101718 $nodes[ 0 ] . node. push_pending_event( Event :: PaymentPathFailed {
17111719 payment_id: None ,
17121720 payment_hash: PaymentHash ( [ 42 ; 32 ] ) ,
@@ -1721,7 +1729,7 @@ mod tests {
17211729 _ => panic!( "Unexpected event" ) ,
17221730 }
17231731
1724- $nodes[ 0 ] . scorer. lock ( ) . unwrap ( ) . expect( TestResult :: PaymentSuccess { path: path. clone( ) } ) ;
1732+ $nodes[ 0 ] . scorer. write_lock ( ) . expect( TestResult :: PaymentSuccess { path: path. clone( ) } ) ;
17251733 $nodes[ 0 ] . node. push_pending_event( Event :: PaymentPathSuccessful {
17261734 payment_id: PaymentId ( [ 42 ; 32 ] ) ,
17271735 payment_hash: None ,
@@ -1733,7 +1741,7 @@ mod tests {
17331741 _ => panic!( "Unexpected event" ) ,
17341742 }
17351743
1736- $nodes[ 0 ] . scorer. lock ( ) . unwrap ( ) . expect( TestResult :: ProbeSuccess { path: path. clone( ) } ) ;
1744+ $nodes[ 0 ] . scorer. write_lock ( ) . expect( TestResult :: ProbeSuccess { path: path. clone( ) } ) ;
17371745 $nodes[ 0 ] . node. push_pending_event( Event :: ProbeSuccessful {
17381746 payment_id: PaymentId ( [ 42 ; 32 ] ) ,
17391747 payment_hash: PaymentHash ( [ 42 ; 32 ] ) ,
@@ -1745,7 +1753,7 @@ mod tests {
17451753 _ => panic!( "Unexpected event" ) ,
17461754 }
17471755
1748- $nodes[ 0 ] . scorer. lock ( ) . unwrap ( ) . expect( TestResult :: ProbeFailure { path: path. clone( ) } ) ;
1756+ $nodes[ 0 ] . scorer. write_lock ( ) . expect( TestResult :: ProbeFailure { path: path. clone( ) } ) ;
17491757 $nodes[ 0 ] . node. push_pending_event( Event :: ProbeFailed {
17501758 payment_id: PaymentId ( [ 42 ; 32 ] ) ,
17511759 payment_hash: PaymentHash ( [ 42 ; 32 ] ) ,
0 commit comments