Skip to content

Commit 4438a62

Browse files
committed
Use NetGraphMsgHandlerConstructor in unit tests
1 parent d19e2e7 commit 4438a62

File tree

6 files changed

+109
-45
lines changed

6 files changed

+109
-45
lines changed

bindings/batteries/NetGraphMsgHandlerConstructor.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import Foundation
99

10-
class NetGraphMsgHandlerConstructor {
10+
public class NetGraphMsgHandlerConstructor {
1111
public static func initNetGraphMsgHandler(networkGraph: NetworkGraph, chainAccess: Access?, logger: Logger) -> NetGraphMsgHandler {
1212
return NetGraphMsgHandler(network_graph: networkGraph.dangle(), chain_access: Option_AccessZ(value: chainAccess), logger: logger)
1313
}

ci/LDKSwift/Tests/LDKSwiftTests/HumanObjectPeerTestInstance.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ public class HumanObjectPeerTestInstance {
173173
self.explicitKeysManager = keysManager
174174
}
175175

176-
self.router = NetGraphMsgHandler(network_graph: NetworkGraph(genesis_hash: [UInt8](repeating: 0, count: 32)), chain_access: Option_AccessZ(value: nil), logger: self.logger)
176+
self.router = NetGraphMsgHandlerConstructor.initNetGraphMsgHandler(networkGraph: NetworkGraph(genesis_hash: [UInt8](repeating: 0, count: 32)), chainAccess: nil, logger: self.logger)
177177
}
178178

179179
fileprivate convenience init(master: HumanObjectPeerTestInstance, seed: UInt8) {

xcode/DirectBindingsApp/DirectBindingsAppTests/DirectBindingsAppTests.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ class DirectBindingsAppTests: XCTestCase {
4141
let feeEstimator = TestFeeEstimator()
4242
let persister = TestPersister()
4343

44-
let chainMonitor = ChainMonitor(chain_source: filter, broadcaster: broadcaster, logger: logger, feeest: feeEstimator, persister: persister)
44+
let filterOption = Option_FilterZ(value: filter)
45+
let chainMonitor = ChainMonitor(chain_source: filterOption, broadcaster: broadcaster, logger: logger, feeest: feeEstimator, persister: persister)
4546

4647
let seed: [UInt8] = [UInt8](Data(base64Encoded: "//////////////////////////////////////////8=")!)
4748
let timestamp_seconds = UInt64(NSDate().timeIntervalSince1970)

xcode/DirectBindingsApp/DirectBindingsAppTests/HumanObjectPeerTestInstance.swift

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class HumanObjectPeerTestInstance {
4040
let seed: UInt8
4141
var filterAdditions: Set<String>
4242
let monitors: [String: ChannelMonitor]
43-
private(set) var filter: Filter!
43+
private(set) var filter: Option_FilterZ!
4444
private(set) var keysInterface: KeysInterface!
4545
private(set) var explicitKeysManager: KeysManager?
4646
private(set) var router: NetGraphMsgHandler!
@@ -60,8 +60,9 @@ public class HumanObjectPeerTestInstance {
6060

6161
fileprivate class TestBroadcaster: BroadcasterInterface {
6262
weak var master: Peer!
63-
fileprivate init(master: Peer){
64-
self.master = master
63+
64+
fileprivate init(master: Peer) {
65+
self.master = master
6566
super.init()
6667
}
6768
}
@@ -74,10 +75,14 @@ public class HumanObjectPeerTestInstance {
7475
self.master = master
7576
super.init()
7677
}
78+
7779
override func register_output(output: WatchedOutput) -> Option_C2Tuple_usizeTransactionZZ {
78-
self.master.filterAdditions.insert("\(output.get_outpoint()!.get_txid()):\(output.get_outpoint()!.get_index())")
80+
if let outpoint = output.get_outpoint() {
81+
self.master.filterAdditions.insert("\(outpoint.get_txid()):\(outpoint.get_index())")
82+
}
7983
return Option_C2Tuple_usizeTransactionZZ(value: nil)
8084
}
85+
8186
override func register_tx(txid: [UInt8]?, script_pubkey: [UInt8]) {
8287
self.master.filterAdditions.insert("\(txid)")
8388
}
@@ -88,7 +93,7 @@ public class HumanObjectPeerTestInstance {
8893
weak var master: Peer!
8994
let interface: KeysInterface
9095

91-
fileprivate init(master: Peer, underlyingInterface: KeysInterface){
96+
fileprivate init(master: Peer, underlyingInterface: KeysInterface) {
9297
self.master = master
9398
self.interface = underlyingInterface
9499
super.init()
@@ -113,17 +118,14 @@ public class HumanObjectPeerTestInstance {
113118
func handle_event(event: Event) {
114119
master.pendingManagerEvents.append(event)
115120
}
116-
117-
// override func persist_manager(channel_manager: ChannelManager) -> Result_NoneErrorZ {
118-
// return Result_NoneErrorZ.ok()
119-
// }
120121

121122
}
122123

123124
fileprivate class TestPersister: Persist {
124125
override func persist_new_channel(id: OutPoint, data: ChannelMonitor) -> Result_NoneChannelMonitorUpdateErrZ {
125126
return Result_NoneChannelMonitorUpdateErrZ.ok()
126127
}
128+
127129
override func update_persisted_channel(id: OutPoint, update: ChannelMonitorUpdate, data: ChannelMonitor) -> Result_NoneChannelMonitorUpdateErrZ {
128130
return Result_NoneChannelMonitorUpdateErrZ.ok()
129131
}
@@ -142,12 +144,14 @@ public class HumanObjectPeerTestInstance {
142144
self.txBroadcaster = TestBroadcaster(master: self)
143145

144146
if master.use_filter {
145-
self.filter = TestFilter(master: self)
147+
self.filter = Option_FilterZ(value: TestFilter(master: self))
148+
} else {
149+
self.filter = Option_FilterZ(value: nil)
146150
}
147151

148152
if master.use_manual_watch || false { // don't support manual watch yet
149153
// self.chainMonitor
150-
}else{
154+
} else {
151155
self.chainMonitor = ChainMonitor(chain_source: self.filter, broadcaster: self.txBroadcaster, logger: self.logger, feeest: self.feeEstimator, persister: persister)
152156
self.chainWatch = self.chainMonitor!.as_Watch()
153157
}
@@ -163,16 +167,15 @@ public class HumanObjectPeerTestInstance {
163167

164168
if master.use_km_wrapper {
165169
// self.keysInterface = manual_
166-
}else {
170+
} else {
167171
self.keysInterface = keysManager.as_KeysInterface()
168172
self.explicitKeysManager = keysManager
169173
}
170174

171-
self.router = NetGraphMsgHandler(chain_access: nil, logger: self.logger, network_graph: NetworkGraph(genesis_hash: [UInt8](repeating: 0, count: 32)))
172-
175+
self.router = NetGraphMsgHandlerConstructor.initNetGraphMsgHandler(networkGraph: NetworkGraph(genesis_hash: [UInt8](repeating: 0, count: 32)), chainAccess: nil, logger: self.logger)
173176
}
174177

175-
fileprivate convenience init (master: HumanObjectPeerTestInstance, seed: UInt8) {
178+
fileprivate convenience init(master: HumanObjectPeerTestInstance, seed: UInt8) {
176179
self.init(master: master, _dummy: (), seed: seed)
177180

178181
if master.use_chan_manager_constructor {
@@ -185,13 +188,13 @@ public class HumanObjectPeerTestInstance {
185188
self.channelManager = ChannelManager(fee_est: self.feeEstimator, chain_monitor: self.chainWatch!, tx_broadcaster: self.txBroadcaster, logger: self.logger, keys_manager: self.keysInterface, config: UserConfig(), params: chainParameters)
186189
let randomData = self.keysInterface.get_secure_random_bytes()
187190
let messageHandler = MessageHandler(chan_handler_arg: self.channelManager.as_ChannelMessageHandler(), route_handler_arg: self.router.as_RoutingMessageHandler())
188-
self.peerManager = PeerManager(message_handler: messageHandler, our_node_secret: self.keysInterface.get_node_secret(), ephemeral_random_data: randomData, logger: self.logger)
191+
self.peerManager = PeerManager(message_handler: messageHandler, our_node_secret: self.keysInterface.get_node_secret(), ephemeral_random_data: randomData, logger: self.logger, custom_message_handler: IgnoringMessageHandler().as_CustomMessageHandler())
189192
}
190193
self.nodeId = self.channelManager.get_our_node_id()
191194
self.bindSocketHandler()
192195
}
193196

194-
fileprivate convenience init (original: Peer) {
197+
fileprivate convenience init(original: Peer) {
195198
self.init(master: original.master, _dummy: (), seed: original.seed)
196199

197200
if master.use_chan_manager_constructor {
@@ -231,7 +234,7 @@ public class HumanObjectPeerTestInstance {
231234
fileprivate func getManualWatch() {
232235

233236
}
234-
237+
235238
deinit {
236239
print("deiniting Peer")
237240
}
@@ -248,12 +251,13 @@ public class HumanObjectPeerTestInstance {
248251
if self.use_nio_peer_handler {
249252
let connectionResult = peerA.tcpSocketHandler?.connect(address: "127.0.0.1", port: peerB.tcpPort!, theirNodeId: peerB.nodeId!)
250253
print("connection result: \(connectionResult)")
251-
}else{
254+
} else {
252255
// not currently relevant; we need the TCP connection simulation
253256
}
254257
}
255258

256259
func do_test_message_handler() {
260+
257261
let peer1 = Peer(master: self, seed: 1)
258262
let peer2 = Peer(master: self, seed: 2)
259263

@@ -270,30 +274,29 @@ public class HumanObjectPeerTestInstance {
270274
print("waiting five seconds")
271275
sleep(5)
272276
semaphore.signal()
277+
print("finished waiting five seconds")
273278
}
274279

275280
semaphore.wait()
276-
print("finished waiting five seconds")
277281

278282
let connectedPeersA = peer1.peerManager.get_peer_node_ids()
279283
let connectedPeersB = peer2.peerManager.get_peer_node_ids()
280284
XCTAssertEqual(connectedPeersA.count, 1)
281285
XCTAssertEqual(connectedPeersB.count, 1)
282-
286+
283287
let config = UserConfig()
284288
let theirNodeId = peer2.channelManager.get_our_node_id()
285289
let channelOpenResult = peer1.channelManager.create_channel(their_network_key: theirNodeId, channel_value_satoshis: 4000000, push_msat: 2000000, user_id: 42, override_config: config)
286-
290+
287291
XCTAssertTrue(channelOpenResult.isOk())
288292
let channels = peer1.channelManager.list_channels()
289293
let firstChannel = channels[0]
290294
let fundingTxo = firstChannel.get_funding_txo()
291295
XCTAssertNil(fundingTxo)
292296

293-
peer1.constructor?.interrupt()
294-
peer2.constructor?.interrupt()
295-
297+
peer1.constructor?.interrupt(tcpPeerHandler: peer1.tcpSocketHandler)
298+
peer2.constructor?.interrupt(tcpPeerHandler: peer2.tcpSocketHandler)
299+
296300
}
297301

298302
}
299-

xcode/build_framework.sh

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,52 @@
1+
# export RUSTFLAGS="-Z sanitizer=address"
2+
# cargo build -Z build-std=panic_abort,std --target x86_64-apple-ios-macabi --release
3+
4+
15
pushd ../bindings/bin
26
BIN_OUTPUT_DIRECTORY=`pwd`
37
rm -r LDKFramework*
48
popd
59

10+
11+
612
pushd ./LDKFramework
7-
xcodebuild archive -scheme LDKFramework -destination "generic/platform=iOS" -archivePath ${BIN_OUTPUT_DIRECTORY}/LDKFramework-iOS SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
8-
xcodebuild archive -scheme LDKFramework -destination "generic/platform=iOS Simulator" -archivePath ${BIN_OUTPUT_DIRECTORY}/LDKFramework-Sim SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
913

10-
#xcodebuild archive -scheme LDKFramework -destination "generic/platform=OS X" -archivePath ${BIN_OUTPUT_DIRECTORY}/LDKFramework-macOS SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
14+
# xcodebuild -list
15+
16+
xcodebuild archive -scheme LDKFramework -destination "generic/platform=iOS" -archivePath ${BIN_OUTPUT_DIRECTORY}/LDKFramework-iOS CLANG_ADDRESS_SANITIZER=NO CLANG_ADDRESS_SANITIZER_ALLOW_ERROR_RECOVERY=NO CLANG_ADDRESS_SANITIZER_USE_AFTER_SCOPE=NO SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
17+
xcodebuild archive -scheme LDKFramework -destination "generic/platform=iOS Simulator" -archivePath ${BIN_OUTPUT_DIRECTORY}/LDKFramework-Sim CLANG_ADDRESS_SANITIZER=NO CLANG_ADDRESS_SANITIZER_ALLOW_ERROR_RECOVERY=NO CLANG_ADDRESS_SANITIZER_USE_AFTER_SCOPE=NO SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
18+
19+
# xcodebuild archive -scheme LDKFramework-Mac -destination "generic/platform=OS X" -archivePath ${BIN_OUTPUT_DIRECTORY}/LDKFramework-macOS SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
20+
21+
popd
22+
23+
24+
pushd ./LDKFramework_Mac
25+
# xcodebuild archive -scheme LDKFramework -destination "platform=macOS,arch=x86_64,variant=Mac Catalyst" -archivePath ${BIN_OUTPUT_DIRECTORY}/LDKFramework-macOS CLANG_ADDRESS_SANITIZER=YES ONLY_ACTIVE_ARCH=YES SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
26+
xcodebuild archive -scheme LDKFramework -destination "platform=macOS,arch=x86_64,variant=Mac Catalyst" -archivePath ${BIN_OUTPUT_DIRECTORY}/LDKFramework-macOS ONLY_ACTIVE_ARCH=YES SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
27+
popd
28+
29+
30+
1131

1232
# disable mac and simulator compilation for the time being
13-
#xcodebuild -create-xcframework \
14-
#-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-iOS.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
15-
#-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-Sim.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
16-
#-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-macOS.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
17-
#-output ${BIN_OUTPUT_DIRECTORY}/LDKFramework.xcframework
1833

1934
xcodebuild -create-xcframework \
2035
-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-iOS.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
2136
-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-Sim.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
37+
-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-macOS.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
2238
-output ${BIN_OUTPUT_DIRECTORY}/LDKFramework.xcframework
39+
40+
xcodebuild -create-xcframework \
41+
-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-iOS.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
42+
-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-Sim.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
43+
-output ${BIN_OUTPUT_DIRECTORY}/LDKFramework-no-macOS.xcframework
44+
45+
xcodebuild -create-xcframework \
46+
-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-macOS.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
47+
-output ${BIN_OUTPUT_DIRECTORY}/LDKFramework-only-macOS.xcframework
48+
49+
xcodebuild -create-xcframework \
50+
-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-iOS.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
51+
-framework ${BIN_OUTPUT_DIRECTORY}/LDKFramework-macOS.xcarchive/Products/Library/Frameworks/LDKFramework.framework \
52+
-output ${BIN_OUTPUT_DIRECTORY}/LDKFramework-no-simulator.xcframework

xcode/compile_dependency_binaries.sh

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,49 @@
11
set -e # stop execution upon the first error
22

3-
C_BINDINGS_DIRECTORY=$1 # directory to compile the C bindings in
4-
LDK_FRAMEWORK_DIRECTORY="`pwd`/LDKFramework" # directory to copy the shared library and headers into
3+
LDK_DIRECTORY=$1 # directory to compile the C bindings in
4+
C_BINDINGS_SOURCE_DIRECTORY="${LDK_DIRECTORY}/lightning-c-bindings"
5+
6+
DIRECT_BINDINGS_PROJECT_DIRECTORY="`pwd`/DirectBindingsApp" # directory to copy the shared library and headers into
7+
FRAMEWORK_PROJECT_DIRECTORY_IOS="`pwd`/LDKFramework" # directory to copy the shared library and headers into
8+
FRAMEWORK_PROJECT_DIRECTORY_MAC="`pwd`/LDKFramework_Mac" # directory to copy the shared library and headers into
59

610
usage() {
711
echo "USAGE: path/to/ldk-c-bindings"
812
exit 1
913
}
10-
[ "${C_BINDINGS_DIRECTORY}" = "" ] && usage
11-
# [ "$3" != "true" -a "$3" != "false" ] && usage
12-
# [ "$4" != "true" -a "$4" != "false" ] && usage
1314

14-
C_BINDINGS_SOURCE_DIRECTORY="${C_BINDINGS_DIRECTORY}/lightning-c-bindings"
15+
[ "${LDK_DIRECTORY}" = "" ] && echo "Usage: ./docker_shell.sh /path/to/ldk-c-bindings" && exit 1;
16+
[ ! -d "${LDK_DIRECTORY}" ] && echo "Provided directory does not exist" && exit 1;
17+
18+
19+
20+
cp "${C_BINDINGS_SOURCE_DIRECTORY}/include/"*.h $FRAMEWORK_PROJECT_DIRECTORY_IOS
21+
cp "${C_BINDINGS_SOURCE_DIRECTORY}/include/"*.h $FRAMEWORK_PROJECT_DIRECTORY_MAC
22+
cp "${C_BINDINGS_SOURCE_DIRECTORY}/include/"*.h $DIRECT_BINDINGS_PROJECT_DIRECTORY
23+
24+
cp "${LDK_DIRECTORY}/ldk-net/ldk_net."{c,h} $FRAMEWORK_PROJECT_DIRECTORY_IOS
25+
cp "${LDK_DIRECTORY}/ldk-net/ldk_net."{c,h} $FRAMEWORK_PROJECT_DIRECTORY_MAC
26+
cp "${LDK_DIRECTORY}/ldk-net/ldk_net."{c,h} $DIRECT_BINDINGS_PROJECT_DIRECTORY
27+
28+
29+
# build for Catalyst
1530
pushd $C_BINDINGS_SOURCE_DIRECTORY
31+
export RUSTFLAGS=""
1632

17-
cp include/*.h $LDK_FRAMEWORK_DIRECTORY
33+
rustup override set nightly
34+
cargo clean
35+
cargo build -Z build-std=panic_abort,std --target x86_64-apple-ios-macabi --release
36+
cp "${C_BINDINGS_SOURCE_DIRECTORY}/target/x86_64-apple-ios-macabi/release/libldk.a" $FRAMEWORK_PROJECT_DIRECTORY_MAC
37+
38+
rustup override unset
39+
cargo clean
1840
cargo lipo --release
19-
cp target/universal/release/*.a $LDK_FRAMEWORK_DIRECTORY
41+
cp "${C_BINDINGS_SOURCE_DIRECTORY}/target/universal/release/libldk.a" $FRAMEWORK_PROJECT_DIRECTORY_IOS
42+
cargo lipo
43+
cp "${C_BINDINGS_SOURCE_DIRECTORY}/target/universal/debug/libldk.a" $DIRECT_BINDINGS_PROJECT_DIRECTORY
44+
45+
46+
47+
48+
49+

0 commit comments

Comments
 (0)