Skip to content

Commit 61a9c10

Browse files
committed
test rapid gossip sync route construction
1 parent 4e362fb commit 61a9c10

File tree

1 file changed

+66
-5
lines changed

1 file changed

+66
-5
lines changed

ci/LDKSwift/Tests/LDKSwiftTests/LDKSwiftTests.swift

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ class LDKSwiftTests: XCTestCase {
118118
assert(sendRes.isOk())
119119
}
120120
*/
121-
121+
122122
channel_manager_constructor.chain_sync_completed(persister: cmPersister, scorer: nil)
123123
channel_manager_constructor.interrupt()
124124
}
@@ -146,7 +146,7 @@ class LDKSwiftTests: XCTestCase {
146146

147147
let keysManager = KeysManager(seed: seed, starting_time_secs: timestamp_seconds, starting_time_nanos: timestamp_nanos)
148148
let keysInterface = keysManager.as_KeysInterface()
149-
149+
150150
let logger = TestLogger()
151151

152152
let config = UserConfig()
@@ -160,7 +160,7 @@ class LDKSwiftTests: XCTestCase {
160160

161161
let feeEstimator = TestFeeEstimator()
162162
let broadcaster = TestBroadcasterInterface()
163-
163+
164164
let channelMonitorPersister = TestPersister()
165165
let chainMonitor = ChainMonitor(chain_source: Option_FilterZ(value: nil), broadcaster: broadcaster, logger: logger, feeest: feeEstimator, persister: channelMonitorPersister)
166166

@@ -184,7 +184,7 @@ class LDKSwiftTests: XCTestCase {
184184
let timestamp_nanos = UInt32(truncating: NSNumber(value: timestamp_seconds * 1000 * 1000))
185185
let keysManager = KeysManager(seed: seed, starting_time_secs: timestamp_seconds, starting_time_nanos: timestamp_nanos)
186186
let keysInterface = keysManager.as_KeysInterface()
187-
187+
188188
let logger = MuteLogger()
189189

190190
let config = UserConfig()
@@ -198,7 +198,7 @@ class LDKSwiftTests: XCTestCase {
198198

199199
let feeEstimator = TestFeeEstimator()
200200
let broadcaster = TestBroadcasterInterface()
201-
201+
202202
let channelMonitorPersister = TestPersister()
203203
let chainMonitor = ChainMonitor(chain_source: Option_FilterZ(value: nil), broadcaster: broadcaster, logger: logger, feeest: feeEstimator, persister: channelMonitorPersister)
204204

@@ -276,6 +276,67 @@ class LDKSwiftTests: XCTestCase {
276276
let route = Route(paths_arg: [path], payment_params_arg: paymentParams)
277277
}
278278

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+
279340
func testExtendedActivity() async throws {
280341
// for i in 0...(1 << 7) {
281342
for i in 0..<1 { // only do one test run initially

0 commit comments

Comments
 (0)