@@ -12,6 +12,7 @@ public class PolarIntegrationTest: XCTestCase {
1212
1313 // EDIT ME
1414 static let POLAR_LND_PEER_PUBKEY_HEX = " 02e62868ab834e7c062a929ca2f22ee8707827a5821e3a8eec343f106cbee24e7c "
15+ static let POLAR_LND_PEER_INVOICE = " lnbcrt200u1p39ea7ppp52w26dtzvj48272l5g974zdg85uqpyrp07clzdge09wzdvn2erxrqdqqcqzpgxqyz5vqsp5kgurpluuqr5ydzn2fsyqa364u5yzcm2d8qegkk0x0tj0mu9e37gs9qyyssqj9vj7ca9jj6qtu4s93qyd8tanlhv5jlws64qxagrjlpys4nk3m99hmcr73p052z6jyxym49adg5v72wegn6hpce22rrr24eha9rh5aqp5gyhkw "
1516
1617 func testPolarFlow( ) async throws {
1718 let rpcInterface = try RegtestBlockchainManager ( rpcProtocol: . http, rpcDomain: " localhost " , rpcPort: 18443 , rpcUsername: " polaruser " , rpcPassword: " polarpass " )
@@ -40,6 +41,11 @@ public class PolarIntegrationTest: XCTestCase {
4041 let chaintipHeight = try await rpcInterface. getChaintipHeight ( )
4142 let networkGraph = NetworkGraph ( genesis_hash: reversedGenesisHash)
4243
44+ let scoringParams = ProbabilisticScoringParameters ( )
45+ let probabalisticScorer = ProbabilisticScorer ( params: scoringParams, network_graph: networkGraph)
46+ let score = probabalisticScorer. as_Score ( )
47+ let multiThreadedScorer = MultiThreadedLockableScore ( score: score)
48+
4349 print ( " Genesis hash: \( PolarIntegrationTest . bytesToHexString ( bytes: genesisHash) ) " )
4450 print ( " Genesis hash reversed: \( PolarIntegrationTest . bytesToHexString ( bytes: reversedGenesisHash) ) " )
4551 print ( " Block 1 hash: \( try await rpcInterface. getBlockHashHex ( height: 1 ) ) " )
@@ -83,7 +89,7 @@ public class PolarIntegrationTest: XCTestCase {
8389 let listener = Listener ( channelManager: channelManager, chainMonitor: chainMonitor)
8490 rpcInterface. registerListener ( listener) ;
8591 async let monitor = try rpcInterface. monitorBlockchain ( )
86- channelManagerConstructor. chain_sync_completed ( persister: channelManagerAndNetworkGraphPersisterAndEventHandler, scorer: nil )
92+ channelManagerConstructor. chain_sync_completed ( persister: channelManagerAndNetworkGraphPersisterAndEventHandler, scorer: multiThreadedScorer )
8793
8894 let lndPubkey = PolarIntegrationTest . hexStringToBytes ( hexString: PolarIntegrationTest . POLAR_LND_PEER_PUBKEY_HEX) !
8995 let connectionSuccess = tcpPeerHandler. connect ( address: " 127.0.0.1 " , port: 9735 , theirNodeId: lndPubkey)
@@ -144,6 +150,27 @@ public class PolarIntegrationTest: XCTestCase {
144150 try ! await Task . sleep ( nanoseconds: 0_100_000_000 )
145151 }
146152 XCTAssertGreaterThanOrEqual ( usableChannels. count, 1 )
153+
154+ let invoicePayer = channelManagerConstructor. payer!
155+ let invoiceResult = Invoice . from_str ( s: PolarIntegrationTest . POLAR_LND_PEER_INVOICE)
156+ XCTAssertTrue ( invoiceResult. isOk ( ) )
157+
158+ let invoice = invoiceResult. getValue ( ) !
159+ let invoicePaymentResult = invoicePayer. pay_invoice ( invoice: invoice)
160+ XCTAssertTrue ( invoicePaymentResult. isOk ( ) )
161+
162+ do {
163+ // process payment
164+ let events = await channelManagerAndNetworkGraphPersisterAndEventHandler. getManagerEvents ( expectedCount: 2 )
165+ let paymentSentEvent = events [ 0 ]
166+ let paymentPathSuccessfulEvent = events [ 1 ]
167+ XCTAssertEqual ( paymentSentEvent. getValueType ( ) , . PaymentSent)
168+ XCTAssertEqual ( paymentPathSuccessfulEvent. getValueType ( ) , . PaymentPathSuccessful)
169+ let paymentSent = paymentSentEvent. getValueAsPaymentSent ( ) !
170+ let paymentPathSuccessful = paymentPathSuccessfulEvent. getValueAsPaymentPathSuccessful ( ) !
171+ print ( " sent payment \( paymentSent. getPayment_id ( ) ) with fee \( paymentSent. getFee_paid_msat ( ) . getValue ( ) ) via \( paymentPathSuccessful. getPath ( ) . map { h in h. get_short_channel_id ( ) } ) " )
172+ }
173+
147174 }
148175
149176 private func ascertainSpareMoney( rpcInterface: RegtestBlockchainManager ) async throws {
0 commit comments