@@ -224,6 +224,65 @@ class DirectBindingsAppTests: XCTestCase {
224
224
print ( " restored invoice string: \( regeneratedInvoiceString) " )
225
225
}
226
226
227
+ func testMainnetGraphSync( ) async throws {
228
+ let reversedGenesisHashHex = " 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000 "
229
+ let reversedGenesisHash = Self . hexStringToBytes ( hexString: reversedGenesisHashHex) !
230
+
231
+ let seed : [ UInt8 ] = [ UInt8] ( Data ( base64Encoded: " //////////////////////////////////////////8= " ) !)
232
+ let timestamp_seconds = UInt64 ( NSDate ( ) . timeIntervalSince1970)
233
+ let timestamp_nanos = UInt32 ( truncating: NSNumber ( value: timestamp_seconds * 1000 * 1000 ) )
234
+
235
+ let keysManager = KeysManager ( seed: seed, starting_time_secs: timestamp_seconds, starting_time_nanos: timestamp_nanos)
236
+ let keysInterface = keysManager. as_KeysInterface ( )
237
+
238
+ let config = UserConfig ( )
239
+ let lightningNetwork = LDKNetwork_Bitcoin
240
+ let networkGraph = NetworkGraph ( genesis_hash: reversedGenesisHash)
241
+
242
+ let scoringParams = ProbabilisticScoringParameters ( )
243
+ let probabalisticScorer = ProbabilisticScorer ( params: scoringParams, network_graph: networkGraph)
244
+ let score = probabalisticScorer. as_Score ( )
245
+ let multiThreadedScorer = MultiThreadedLockableScore ( score: score)
246
+
247
+ let feeEstimator = TestFeeEstimator ( )
248
+ let broadcaster = TestBroadcasterInterface ( )
249
+ let logger = TestLogger ( )
250
+ let channelMonitorPersister = TestPersister ( )
251
+ let chainMonitor = ChainMonitor ( chain_source: Option_FilterZ ( value: nil ) , broadcaster: broadcaster, logger: logger, feeest: feeEstimator, persister: channelMonitorPersister)
252
+
253
+ let channelManagerConstructor = ChannelManagerConstructor ( network: lightningNetwork, config: config, current_blockchain_tip_hash: reversedGenesisHash, current_blockchain_tip_height: 0 , keys_interface: keysInterface, fee_estimator: feeEstimator, chain_monitor: chainMonitor, net_graph: networkGraph, tx_broadcaster: broadcaster, logger: logger)
254
+ let channelManager = channelManagerConstructor. channelManager
255
+ let peerManager = channelManagerConstructor. peerManager
256
+ let tcpPeerHandler = channelManagerConstructor. getTCPPeerHandler ( )
257
+ if let netGraph = channelManagerConstructor. net_graph {
258
+ print ( " net graph available! " )
259
+ }
260
+
261
+ // bitrefill
262
+ tcpPeerHandler. connect ( address: " 52.50.244.44 " , port: 9735 , theirNodeId: Self . hexStringToBytes ( hexString: " 030c3f19d742ca294a55c00376b3b355c3c90d61c6b6b39554dbc7ac19b141c14f " ) !)
263
+
264
+ // River
265
+ tcpPeerHandler. connect ( address: " 104.196.249.140 " , port: 9735 , theirNodeId: Self . hexStringToBytes ( hexString: " 03037dc08e9ac63b82581f79b662a4d0ceca8a8ca162b1af3551595b8f2d97b70a " ) !)
266
+
267
+ // Acinq
268
+ tcpPeerHandler. connect ( address: " 3.33.236.230 " , port: 9735 , theirNodeId: Self . hexStringToBytes ( hexString: " 03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f " ) !)
269
+
270
+ // Kraken
271
+ tcpPeerHandler. connect ( address: " 52.13.118.208 " , port: 9735 , theirNodeId: Self . hexStringToBytes ( hexString: " 02f1a8c87607f415c8f22c00593002775941dea48869ce23096af27b0cfdcc0b69 " ) !)
272
+
273
+ // Matt
274
+ tcpPeerHandler. connect ( address: " 69.59.18.80 " , port: 9735 , theirNodeId: Self . hexStringToBytes ( hexString: " 03db10aa09ff04d3568b0621750794063df401e6853c79a21a83e1a3f3b5bfb0c8 " ) !)
275
+
276
+ let channelManagerAndNetworkGraphPersisterAndEventHandler = TestChannelManagerPersister ( channelManager: channelManager)
277
+ channelManagerConstructor. chain_sync_completed ( persister: channelManagerAndNetworkGraphPersisterAndEventHandler, scorer: multiThreadedScorer)
278
+
279
+ // run this for one minute
280
+ for _ in 0 ..< 600 {
281
+ // sleep for 100ms
282
+ try ! await Task . sleep ( nanoseconds: 0_100_000_000 )
283
+ }
284
+ }
285
+
227
286
func testPeerGraphConnectivity( ) async throws {
228
287
let instance = HumanObjectPeerTestInstance ( nice_close: true , use_km_wrapper: false , use_manual_watch: false , reload_peers: false , break_cross_peer_refs: false , use_nio_peer_handler: true , use_filter: false , use_chan_manager_constructor: true )
229
288
await instance. test_multiple_peer_connections ( )
0 commit comments