@@ -12,6 +12,7 @@ public class PolarIntegrationTest: XCTestCase {
12
12
13
13
// EDIT ME
14
14
static let POLAR_LND_PEER_PUBKEY_HEX = " 02e62868ab834e7c062a929ca2f22ee8707827a5821e3a8eec343f106cbee24e7c "
15
+ static let POLAR_LND_PEER_INVOICE = " lnbcrt200u1p39ea7ppp52w26dtzvj48272l5g974zdg85uqpyrp07clzdge09wzdvn2erxrqdqqcqzpgxqyz5vqsp5kgurpluuqr5ydzn2fsyqa364u5yzcm2d8qegkk0x0tj0mu9e37gs9qyyssqj9vj7ca9jj6qtu4s93qyd8tanlhv5jlws64qxagrjlpys4nk3m99hmcr73p052z6jyxym49adg5v72wegn6hpce22rrr24eha9rh5aqp5gyhkw "
15
16
16
17
func testPolarFlow( ) async throws {
17
18
let rpcInterface = try RegtestBlockchainManager ( rpcProtocol: . http, rpcDomain: " localhost " , rpcPort: 18443 , rpcUsername: " polaruser " , rpcPassword: " polarpass " )
@@ -40,6 +41,11 @@ public class PolarIntegrationTest: XCTestCase {
40
41
let chaintipHeight = try await rpcInterface. getChaintipHeight ( )
41
42
let networkGraph = NetworkGraph ( genesis_hash: reversedGenesisHash)
42
43
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
+
43
49
print ( " Genesis hash: \( PolarIntegrationTest . bytesToHexString ( bytes: genesisHash) ) " )
44
50
print ( " Genesis hash reversed: \( PolarIntegrationTest . bytesToHexString ( bytes: reversedGenesisHash) ) " )
45
51
print ( " Block 1 hash: \( try await rpcInterface. getBlockHashHex ( height: 1 ) ) " )
@@ -83,7 +89,7 @@ public class PolarIntegrationTest: XCTestCase {
83
89
let listener = Listener ( channelManager: channelManager, chainMonitor: chainMonitor)
84
90
rpcInterface. registerListener ( listener) ;
85
91
async let monitor = try rpcInterface. monitorBlockchain ( )
86
- channelManagerConstructor. chain_sync_completed ( persister: channelManagerAndNetworkGraphPersisterAndEventHandler, scorer: nil )
92
+ channelManagerConstructor. chain_sync_completed ( persister: channelManagerAndNetworkGraphPersisterAndEventHandler, scorer: multiThreadedScorer )
87
93
88
94
let lndPubkey = PolarIntegrationTest . hexStringToBytes ( hexString: PolarIntegrationTest . POLAR_LND_PEER_PUBKEY_HEX) !
89
95
let connectionSuccess = tcpPeerHandler. connect ( address: " 127.0.0.1 " , port: 9735 , theirNodeId: lndPubkey)
@@ -144,6 +150,27 @@ public class PolarIntegrationTest: XCTestCase {
144
150
try ! await Task . sleep ( nanoseconds: 0_100_000_000 )
145
151
}
146
152
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
+
147
174
}
148
175
149
176
private func ascertainSpareMoney( rpcInterface: RegtestBlockchainManager ) async throws {
0 commit comments