@@ -118,7 +118,7 @@ class LDKSwiftTests: XCTestCase {
118
118
assert(sendRes.isOk())
119
119
}
120
120
*/
121
-
121
+
122
122
channel_manager_constructor. chain_sync_completed ( persister: cmPersister, scorer: nil )
123
123
channel_manager_constructor. interrupt ( )
124
124
}
@@ -146,7 +146,7 @@ class LDKSwiftTests: XCTestCase {
146
146
147
147
let keysManager = KeysManager ( seed: seed, starting_time_secs: timestamp_seconds, starting_time_nanos: timestamp_nanos)
148
148
let keysInterface = keysManager. as_KeysInterface ( )
149
-
149
+
150
150
let logger = TestLogger ( )
151
151
152
152
let config = UserConfig ( )
@@ -160,7 +160,7 @@ class LDKSwiftTests: XCTestCase {
160
160
161
161
let feeEstimator = TestFeeEstimator ( )
162
162
let broadcaster = TestBroadcasterInterface ( )
163
-
163
+
164
164
let channelMonitorPersister = TestPersister ( )
165
165
let chainMonitor = ChainMonitor ( chain_source: Option_FilterZ ( value: nil ) , broadcaster: broadcaster, logger: logger, feeest: feeEstimator, persister: channelMonitorPersister)
166
166
@@ -184,7 +184,7 @@ class LDKSwiftTests: XCTestCase {
184
184
let timestamp_nanos = UInt32 ( truncating: NSNumber ( value: timestamp_seconds * 1000 * 1000 ) )
185
185
let keysManager = KeysManager ( seed: seed, starting_time_secs: timestamp_seconds, starting_time_nanos: timestamp_nanos)
186
186
let keysInterface = keysManager. as_KeysInterface ( )
187
-
187
+
188
188
let logger = MuteLogger ( )
189
189
190
190
let config = UserConfig ( )
@@ -198,7 +198,7 @@ class LDKSwiftTests: XCTestCase {
198
198
199
199
let feeEstimator = TestFeeEstimator ( )
200
200
let broadcaster = TestBroadcasterInterface ( )
201
-
201
+
202
202
let channelMonitorPersister = TestPersister ( )
203
203
let chainMonitor = ChainMonitor ( chain_source: Option_FilterZ ( value: nil ) , broadcaster: broadcaster, logger: logger, feeest: feeEstimator, persister: channelMonitorPersister)
204
204
@@ -276,6 +276,67 @@ class LDKSwiftTests: XCTestCase {
276
276
let route = Route ( paths_arg: [ path] , payment_params_arg: paymentParams)
277
277
}
278
278
279
+ public func testRapidGossipSync( ) async throws {
280
+ // first, download the gossip data
281
+ print ( " Sending rapid gossip sync request… " ) ;
282
+ var request = URLRequest ( url: URL ( string: " https://rapidsync.lightningdevkit.org/snapshot/0 " ) !)
283
+ request. httpMethod = " GET "
284
+
285
+ let startA = DispatchTime . now ( )
286
+ let ( data, _) = try await URLSession . shared. data ( for: request)
287
+ let finishA = DispatchTime . now ( )
288
+ let elapsedA = Double ( finishA. uptimeNanoseconds- startA. uptimeNanoseconds) / 1_000_000_000
289
+ print ( " Received rapid gossip sync response: \( data. count) bytes! Time: \( elapsedA) s " ) ;
290
+
291
+ let reversedGenesisHashHex = " 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000 "
292
+ let reversedGenesisHash = PolarIntegrationSample . hexStringToBytes ( hexString: reversedGenesisHashHex) !
293
+
294
+ let logger = LDKTraitImplementations . PolarLogger ( )
295
+ let networkGraph = NetworkGraph ( genesis_hash: reversedGenesisHash, logger: logger)
296
+ let rapidSync = RapidGossipSync ( network_graph: networkGraph)
297
+
298
+ let gossipDataRaw = [ UInt8] ( data)
299
+ print ( " Applying rapid sync data… " )
300
+ let startB = DispatchTime . now ( )
301
+ let timestamp = rapidSync. update_network_graph ( update_data: gossipDataRaw)
302
+ if let error = timestamp. getError ( ) {
303
+ print ( " error! type: \( error. getValueType ( ) ) " )
304
+ let specificError = error. getValueAsLightningError ( )
305
+ print ( " details: \( specificError? . get_err ( ) ) " )
306
+ }
307
+ let finishB = DispatchTime . now ( )
308
+ let elapsedB = Double ( finishB. uptimeNanoseconds- startB. uptimeNanoseconds) / 1_000_000_000
309
+ print ( " Applied rapid sync data: \( timestamp. getValue ( ) ) ! Time: \( elapsedB) s " )
310
+
311
+ print ( " Measuring graph size… " )
312
+ let startC = DispatchTime . now ( )
313
+ let graphBytes = networkGraph. write ( )
314
+ let finishC = DispatchTime . now ( )
315
+ let elapsedC = Double ( finishC. uptimeNanoseconds- startC. uptimeNanoseconds) / 1_000_000_000
316
+ print ( " Network graph size: \( graphBytes. count) ! Time: \( elapsedC) s " )
317
+
318
+ let defaultRouter = DefaultRouter ( network_graph: networkGraph, logger: logger, random_seed_bytes: [ UInt8] ( repeating: 0 , count: 32 ) )
319
+ let router = defaultRouter. as_Router ( )
320
+ let scoringParams = ProbabilisticScoringParameters ( )
321
+ let scorer = ProbabilisticScorer ( params: scoringParams, network_graph: networkGraph, logger: logger)
322
+ let score = scorer. as_Score ( )
323
+ // let multiThreadedScorer = MultiThreadedLockableScore(score: score)
324
+
325
+
326
+ let payerPubkey = hexStringToBytes ( hexString: " 0242a4ae0c5bef18048fbecf995094b74bfb0f7391418d71ed394784373f41e4f3 " ) !
327
+ let recipientPubkey = hexStringToBytes ( hexString: " 03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f " ) !
328
+
329
+ let paymentParameters = PaymentParameters ( payee_pubkey: recipientPubkey)
330
+ let routeParameters = RouteParameters ( payment_params_arg: paymentParameters, final_value_msat_arg: 500 , final_cltv_expiry_delta_arg: 3 )
331
+
332
+ print ( " STEP A " )
333
+
334
+ let firstHops : [ ChannelDetails ] ? = nil
335
+ print ( " STEP B " )
336
+ let foundRoute = router. find_route ( payer: payerPubkey, route_params: routeParameters, payment_hash: nil , first_hops: firstHops, scorer: score)
337
+ print ( " found route: \( foundRoute) " )
338
+ }
339
+
279
340
func testExtendedActivity( ) async throws {
280
341
// for i in 0...(1 << 7) {
281
342
for i in 0 ..< 1 { // only do one test run initially
0 commit comments