Skip to content

Commit 905e2aa

Browse files
committed
Expand unit tests to cover premature struct return value deallocation detection.
1 parent 3cbfc35 commit 905e2aa

File tree

3 files changed

+38
-18
lines changed

3 files changed

+38
-18
lines changed

ci/LDKSwift/Tests/LDKSwiftTests/HumanObjectPeerTestInstance.swift

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class HumanObjectPeerTestInstance {
1919
//
2020
public var useFilter: Bool = false
2121
public var useRouter: Bool = false
22+
public var useWrappedSignerProvider: Bool = false
2223
public var shouldRecipientRejectPayment: Bool = false
2324
public var ephemeralNetworkGraphForScorer: Bool = false
2425
public var reserializedProbabilisticScorer: Bool = false
@@ -31,7 +32,7 @@ public class HumanObjectPeerTestInstance {
3132
// public var use_nio_peer_handler: Bool = false;
3233

3334
private class func listCustomizeableProperties() -> [String] {
34-
return ["useFilter", "useRouter", "shouldRecipientRejectPayment", "ephemeralNetworkGraphForScorer", "reserializedProbabilisticScorer"]
35+
return ["useFilter", "useRouter", "useWrappedSignerProvider", "shouldRecipientRejectPayment", "ephemeralNetworkGraphForScorer", "reserializedProbabilisticScorer"]
3536
}
3637

3738
public class func combinationCount() -> UInt {
@@ -57,6 +58,7 @@ public class HumanObjectPeerTestInstance {
5758
let monitors: [String: ChannelMonitor]
5859
private(set) var filter: Filter?
5960
private(set) var explicitKeysManager: KeysManager!
61+
private(set) var wrappedSignerProvider: SignerProvider?
6062
private(set) var router: GossipSync!
6163
private(set) var channelManager: ChannelManager!
6264
private(set) var peerManager: PeerManager!
@@ -288,10 +290,15 @@ public class HumanObjectPeerTestInstance {
288290
let keysManager = KeysManager(seed: keySeed, startingTimeSecs: timestamp_seconds, startingTimeNanos: timestamp_nanos)
289291
self.explicitKeysManager = keysManager
290292

293+
if master.configuration.useWrappedSignerProvider {
294+
let keysManager = WrappedSignerProviderTests.MyKeysManager(seed: keySeed, startingTimeSecs: timestamp_seconds, startingTimeNanos: timestamp_nanos)
295+
self.wrappedSignerProvider = keysManager.signerProvider;
296+
}
297+
291298
if master.configuration.useRouter {
292299
let networkGraph = NetworkGraph(network: .Regtest, logger: self.logger)
293300
self.router = GossipSync.initWithP2P(a: P2PGossipSync(networkGraph: networkGraph, utxoLookup: nil, logger: self.logger))
294-
}else{
301+
} else {
295302
self.router = GossipSync.none()
296303
}
297304
}
@@ -317,18 +324,20 @@ public class HumanObjectPeerTestInstance {
317324
}
318325
let score = probabalisticScorer.asScore()
319326
let multiThreadedScorer = MultiThreadedLockableScore(score: score)
320-
327+
328+
let signerProvider = master.configuration.useWrappedSignerProvider ? self.wrappedSignerProvider! : self.explicitKeysManager.asSignerProvider()
321329
let constructionParameters = ChannelManagerConstructionParameters(
322330
config: UserConfig.initWithDefault(),
323331
entropySource: self.explicitKeysManager.asEntropySource(),
324332
nodeSigner: self.explicitKeysManager.asNodeSigner(),
325-
signerProvider: self.explicitKeysManager.asSignerProvider(),
333+
signerProvider: signerProvider,
326334
feeEstimator: self.feeEstimator,
327335
chainMonitor: self.chainMonitor!,
328336
txBroadcaster: self.txBroadcaster,
329337
logger: self.logger,
330338
scorer: multiThreadedScorer
331339
)
340+
332341
self.constructor = ChannelManagerConstructor(network: .Bitcoin, currentBlockchainTipHash: [UInt8](repeating: 0, count: 32), currentBlockchainTipHeight: 0, netGraph: graph, params: constructionParameters)
333342

334343
self.constructor?.chainSyncCompleted(persister: TestChannelManagerPersister(master: self))
@@ -345,7 +354,7 @@ public class HumanObjectPeerTestInstance {
345354
do {
346355
// channel manager constructor is mandatory
347356
let graph = NetworkGraph(network: .Bitcoin, logger: self.logger)
348-
357+
349358
let constructionParameters = ChannelManagerConstructionParameters(
350359
config: UserConfig.initWithDefault(),
351360
entropySource: self.explicitKeysManager.asEntropySource(),

ci/LDKSwift/Tests/LDKSwiftTests/LDKSwiftTests.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -475,10 +475,13 @@ class LDKSwiftTests: XCTestCase {
475475
config.useRouter = (i & (1 << 2)) != 0
476476
print("useRouter: \(config.useRouter)")
477477

478-
config.ephemeralNetworkGraphForScorer = (i & (1 << 3)) != 0
478+
config.useWrappedSignerProvider = (i & (1 << 3)) != 0
479+
print("useWrappedSignerProvider: \(config.useWrappedSignerProvider)")
480+
481+
config.ephemeralNetworkGraphForScorer = (i & (1 << 4)) != 0
479482
print("ephemeralNetworkGraphForScorer: \(config.ephemeralNetworkGraphForScorer)")
480483

481-
config.reserializedProbabilisticScorer = (i & (1 << 4)) != 0
484+
config.reserializedProbabilisticScorer = (i & (1 << 5)) != 0
482485
print("reserializedProbabilisticScorer: \(config.reserializedProbabilisticScorer)")
483486

484487
let instance = HumanObjectPeerTestInstance(configuration: config)

ci/LDKSwift/Tests/LDKSwiftTests/WrappedSignerProviderTests.swift

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ class WrappedSignerProviderTests: XCTestCase {
6060
let reversedGenesisHashHex = "6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000"
6161
let reversedGenesisHash = LDKSwiftTests.hexStringToBytes(hexString: reversedGenesisHashHex)!
6262
let latestBlockHash = reversedGenesisHash
63-
let channelManager = ChannelManagerConstructor(network: network, currentBlockchainTipHash: latestBlockHash, currentBlockchainTipHeight: 0, netGraph: netGraph, params: channelManagerConstructionParameters)
63+
let channelManagerConstructor = ChannelManagerConstructor(network: network, currentBlockchainTipHash: latestBlockHash, currentBlockchainTipHeight: 0, netGraph: netGraph, params: channelManagerConstructionParameters)
64+
65+
let channelManager = channelManagerConstructor.channelManager
6466
}
6567

6668
class MyKeysManager {
@@ -83,60 +85,66 @@ class WrappedSignerProviderTests: XCTestCase {
8385
class MyNodeSigner: NodeSigner {
8486
var myKeysManager: MyKeysManager?
8587
override func ecdh(recipient: Bindings.Recipient, otherKey: [UInt8], tweak: [UInt8]?) -> Bindings.Result_SharedSecretNoneZ {
86-
print("Getting ecdh")
88+
print("entering wrapper: ecdh()")
8789
return myKeysManager!.keysManager.asNodeSigner().ecdh(recipient: recipient, otherKey: otherKey, tweak: tweak)
8890
}
8991

9092
override func getNodeId(recipient: Bindings.Recipient) -> Bindings.Result_PublicKeyNoneZ {
91-
print("Getting getNodeId")
92-
let nodeIdOption = myKeysManager!.keysManager.asNodeSigner().getNodeId(recipient: recipient)
93-
let nodeId = nodeIdOption.getValue()!
94-
return .initWithOk(o: nodeId)
93+
print("entering wrapper: getNodeId()")
94+
let nodeId = myKeysManager!.keysManager.asNodeSigner().getNodeId(recipient: recipient)
95+
return nodeId
9596
}
9697

9798
override func getInboundPaymentKeyMaterial() -> [UInt8] {
98-
print("Getting getInboundPaymentKeyMaterial")
99+
print("entering wrapper: getInboundPaymentKeyMaterial()")
99100
return myKeysManager!.keysManager.asNodeSigner().getInboundPaymentKeyMaterial()
100101
}
101102

102103
override func signGossipMessage(msg: Bindings.UnsignedGossipMessage) -> Bindings.Result_SignatureNoneZ {
103-
print("Getting signGossipMessage")
104+
print("entering wrapper: signGossipMessage()")
104105
return myKeysManager!.keysManager.asNodeSigner().signGossipMessage(msg: msg)
105106
}
106107

107108
override func signInvoice(hrpBytes: [UInt8], invoiceData: [UInt8], recipient: Bindings.Recipient) -> Bindings.Result_RecoverableSignatureNoneZ {
108-
print("Getting signInvoice")
109+
print("entering wrapper: signInvoice()")
109110
return myKeysManager!.keysManager.asNodeSigner().signInvoice(hrpBytes: hrpBytes, invoiceData: invoiceData, recipient: recipient)
110111
}
111112
}
112113

113114
class MyEntropySource: EntropySource {
114115
var myKeysManager: MyKeysManager?
115116
override func getSecureRandomBytes() -> [UInt8] {
116-
print("Getting getSecureRandomBytes")
117+
print("entering wrapper: getSecureRandomBytes()")
117118
return myKeysManager!.keysManager.asEntropySource().getSecureRandomBytes()
118119
}
119120
}
120121

121122
class MySignerProvider: SignerProvider {
122123
var myKeysManager: MyKeysManager?
123124
override func deriveChannelSigner(channelValueSatoshis: UInt64, channelKeysId: [UInt8]) -> Bindings.WriteableEcdsaChannelSigner {
125+
print("entering wrapper: deriveChannelSigner()")
124126
return myKeysManager!.keysManager.asSignerProvider().deriveChannelSigner(channelValueSatoshis: channelValueSatoshis, channelKeysId: channelKeysId)
125127
}
126128

127129
override func generateChannelKeysId(inbound: Bool, channelValueSatoshis: UInt64, userChannelId: [UInt8]) -> [UInt8] {
130+
print("entering wrapper: generateChannelKeysId()")
128131
return myKeysManager!.keysManager.asSignerProvider().generateChannelKeysId(inbound: inbound, channelValueSatoshis: channelValueSatoshis, userChannelId: userChannelId)
129132
}
130133

131134
override func readChanSigner(reader: [UInt8]) -> Bindings.Result_WriteableEcdsaChannelSignerDecodeErrorZ {
135+
print("entering wrapper: readChanSigner()")
132136
return myKeysManager!.keysManager.asSignerProvider().readChanSigner(reader: reader)
133137
}
134138

135139
override func getDestinationScript() -> [UInt8] {
140+
print("entering wrapper: getDestinationScript()")
136141
return myKeysManager!.keysManager.asSignerProvider().getDestinationScript()
137142
}
138143

139-
override func getShutdownScriptpubkey() -> Bindings.ShutdownScript {return myKeysManager!.keysManager.asSignerProvider().getShutdownScriptpubkey()
144+
override func getShutdownScriptpubkey() -> Bindings.ShutdownScript {
145+
print("entering wrapper: getShutdownScriptpubkey()")
146+
let scriptPubkey = myKeysManager!.keysManager.asSignerProvider().getShutdownScriptpubkey()
147+
return scriptPubkey
140148
}
141149
}
142150

0 commit comments

Comments
 (0)