Skip to content

Commit 1e7036e

Browse files
committed
symbolicate simplified leak detection test
1 parent cf53b62 commit 1e7036e

12 files changed

+204
-16
lines changed

ci/Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,13 @@ RUN chmod +x ci/run_tests.sh
3535

3636
COPY bindings/batteries ci/LDKSwift/Sources/LDKSwift/batteries
3737

38+
# RUN ln -s /lib/x86_64-linux-gnu/libtinfo.so.5 /lib/x86_64-linux-gnu/libtinfo.so.6
39+
3840
ENV LDK_C_BINDINGS_BASE="/ldk-c-bindings"
3941
ENV LDK_SWIFT_GENERATOR_INPUT_HEADER_PATH="/ldk-c-bindings/lightning-c-bindings/include/lightning.h"
4042
ENV LDK_SWIFT_GENERATOR_OUTPUT_DIRECTORY_PATH="/ci/LDKSwift/Sources/LDKSwift"
4143
ENV LLVM_CLANG_ASAN_PATH="/clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04/lib/clang/11.0.0/lib/linux/libclang_rt.asan-x86_64.a"
44+
ENV ASAN_SYMBOLIZER_PATH="/clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04/bin/llvm-symbolizer"
45+
ENV PATH="/clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04/bin:${PATH}"
4246
ENV RUST_BACKTRACE=1
4347
ENV SHELL=/bin/bash

ci/LDKSwift/Package.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ let package = Package(
4444
swiftSettings: nil,
4545
linkerSettings: [
4646
.linkedLibrary(String(utf8String: getenv("LDK_C_BINDINGS_BASE")!)! + "/lightning-c-bindings/target/debug/libldk.a"),
47+
// .linkedLibrary(String(utf8String: getenv("LDK_C_BINDINGS_BASE") ?? "~/Developer/ldk-c-bindings")! + "/lightning-c-bindings/target/debug/libldk.a"),
4748
// .linkedLibrary("/usr/lib/llvm-11/lib/clang/11.0.0/lib/linux/libclang_rt.asan-x86_64.a")
4849
.linkedLibrary(String(utf8String: getenv("LLVM_CLANG_ASAN_PATH")!)!)
4950
]),

ci/LDKSwift/Tests/LDKSwiftTests/HumanObjectPeerTestInstance.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ public class HumanObjectPeerTestInstance {
129129
fileprivate init(master: HumanObjectPeerTestInstance, _dummy: Any, seed: UInt8) {
130130

131131
self.master = master
132-
self.logger = MyLogger()
133-
self.feeEstimator = MyFeeEstimator()
132+
self.logger = TestLogger()
133+
self.feeEstimator = TestFeeEstimator()
134134
self.monitors = [String: ChannelMonitor]()
135135
self.seed = seed
136136
let persister = TestPersister()

ci/LDKSwift/Tests/LDKSwiftTests/LDKExperimentTest.swift renamed to ci/LDKSwift/Tests/LDKSwiftTests/LDKSwiftTest.swift

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import XCTest
99
import LDKSwift
1010
import LDKHeaders
1111

12-
class LDKExperimentTest: XCTestCase {
12+
class LDKSwiftTest: XCTestCase {
1313

1414
override func setUpWithError() throws {
1515
// Put setup code here. This method is called before the invocation of each test method in the class.
@@ -30,15 +30,53 @@ class LDKExperimentTest: XCTestCase {
3030
check_platform()
3131
}
3232

33-
func testExtendedActivity() {
33+
func testIncrementalMemoryLeaks() throws {
34+
let feeEstimator = TestFeeEstimator()
35+
let logger = TestLogger()
36+
let broadcaster = TestBroadcasterInterface()
37+
let persister = TestPersister()
38+
let filter = TestFilter()
39+
40+
let chainMonitor = ChainMonitor(chain_source: filter, broadcaster: broadcaster, logger: logger, feeest: feeEstimator, persister: persister)
41+
/*
42+
let seed: [UInt8] = [UInt8](Data(base64Encoded: "//////////////////////////////////////////8=")!)
43+
let timestamp_seconds = UInt64(NSDate().timeIntervalSince1970)
44+
let timestamp_nanos = UInt32(truncating: NSNumber(value: timestamp_seconds * 1000 * 1000))
45+
46+
let keysManager = KeysManager(seed: seed, starting_time_secs: timestamp_seconds, starting_time_nanos: timestamp_nanos)
47+
let keysInterface = keysManager.as_KeysInterface()
48+
49+
let serialized_channel_manager = LDKTestFixtures.serializedChannelManager
50+
51+
let serializedChannelMonitors: [[UInt8]] = LDKTestFixtures.serializedChannelMonitors
52+
53+
let channel_manager_constructor = try ChannelManagerConstructor(
54+
channel_manager_serialized: serialized_channel_manager,
55+
channel_monitors_serialized: serializedChannelMonitors,
56+
keys_interface: keysInterface,
57+
fee_estimator: feeEstimator,
58+
chain_monitor: chainMonitor,
59+
filter: filter,
60+
router: nil,
61+
tx_broadcaster: broadcaster,
62+
logger: logger
63+
)
64+
65+
let channel_manager = channel_manager_constructor.channelManager;
66+
let cmPersister = MyChannelManagerPersister(channelManager: channel_manager)
67+
channel_manager_constructor.chain_sync_completed(persister: cmPersister)
68+
*/
69+
}
70+
71+
func xtestExtendedActivity() {
3472
// for i in 0...(1 << 7) {
3573
for i in 0..<1 { // only do one test run initially
36-
let nice_close = (i & (1 << 0)) != 0;
37-
let use_km_wrapper = (i & (1 << 1)) != 0;
38-
let use_manual_watch = (i & (1 << 2)) != 0;
39-
let reload_peers = (i & (1 << 3)) != 0;
40-
let break_cross_refs = (i & (1 << 4)) != 0;
41-
let nio_peer_handler = true // (i & (1 << 5)) != 0;
74+
let nice_close = (i & (1 << 0)) != 0;
75+
let use_km_wrapper = (i & (1 << 1)) != 0;
76+
let use_manual_watch = (i & (1 << 2)) != 0;
77+
let reload_peers = (i & (1 << 3)) != 0;
78+
let break_cross_refs = (i & (1 << 4)) != 0;
79+
let nio_peer_handler = true // (i & (1 << 5)) != 0;
4280
let use_chan_manager_constructor = true // (i & (1 << 6)) != 0;
4381

4482
if (break_cross_refs && !reload_peers) {
@@ -84,7 +122,6 @@ class LDKExperimentTest: XCTestCase {
84122
}
85123

86124

87-
88125
func testPerformanceExample() throws {
89126
// This is an example of a performance test case.
90127
measure {
@@ -93,5 +130,4 @@ class LDKExperimentTest: XCTestCase {
93130
}
94131

95132

96-
97133
}

ci/LDKSwift/Tests/LDKSwiftTests/LDKTestFixtures.swift

Lines changed: 27 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//
2+
// MyBroadcasterInterface.swift
3+
// LDKSwiftARC
4+
//
5+
// Created by Arik Sosman on 5/17/21.
6+
//
7+
8+
import LDKSwift
9+
import LDKHeaders
10+
11+
class TestBroadcasterInterface: BroadcasterInterface {
12+
13+
override func broadcast_transaction(tx: [UInt8]) {
14+
// insert code to broadcast transaction
15+
}
16+
17+
func testthis(km: KeysManager){
18+
var result = km.spend_spendable_outputs(descriptors: [], outputs: [], change_destination_script: [], feerate_sat_per_1000_weight: 0)
19+
// result.
20+
result.cOpaqueStruct
21+
22+
}
23+
24+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//
2+
// MyChannelManagerPersister.swift
3+
// LDKSwiftARC
4+
//
5+
// Created by Arik Sosman on 5/27/21.
6+
//
7+
8+
import LDKSwift
9+
import LDKHeaders
10+
11+
class TestChannelManagerPersister : ChannelManagerPersister, ExtendedChannelManagerPersister {
12+
13+
private let channelManager: ChannelManager?
14+
private let keysManager: KeysManager? = nil
15+
16+
init(channelManager: ChannelManager?) {
17+
self.channelManager = channelManager
18+
super.init()
19+
}
20+
21+
func handle_event(event: Event) {
22+
// privateHandleEvent(event: event)
23+
}
24+
25+
override func persist_manager(channel_manager: ChannelManager) -> Result_NoneErrorZ {
26+
return Result_NoneErrorZ()
27+
}
28+
}

ci/LDKSwift/Tests/LDKSwiftTests/MyFeeEstimator.swift renamed to ci/LDKSwift/Tests/LDKSwiftTests/TestFeeEstimator.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@
55
// Created by Arik Sosman on 5/17/21.
66
//
77

8-
import XCTest
98
import LDKSwift
109
import LDKHeaders
1110

12-
class MyFeeEstimator: FeeEstimator {
11+
class TestFeeEstimator: FeeEstimator {
1312

1413
override func get_est_sat_per_1000_weight(confirmation_target: LDKConfirmationTarget) -> UInt32 {
1514
return 253
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//
2+
// MyFilter.swift
3+
// LDKSwiftARC
4+
//
5+
// Created by Arik Sosman on 5/17/21.
6+
//
7+
8+
import LDKSwift
9+
import LDKHeaders
10+
11+
class TestFilter: Filter {
12+
13+
override func register_tx(txid: [UInt8]?, script_pubkey: [UInt8]) {
14+
// watch this transaction on-chain
15+
}
16+
17+
override func register_output(output: WatchedOutput) -> Option_C2Tuple_usizeTransactionZZ {
18+
let scriptPubkeyBytes = output.get_script_pubkey()
19+
let outpoint = output.get_outpoint()
20+
let txid = outpoint.get_txid()
21+
let outputIndex = outpoint.get_index()
22+
23+
// watch for any transactions that spend this output on-chain
24+
25+
let blockHashBytes = output.get_block_hash()
26+
// if block hash bytes are not null, return any transaction spending the output that is found in the corresponding block along with its index
27+
28+
return Option_C2Tuple_usizeTransactionZZ(value: nil)
29+
}
30+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// MyKeysInterface.swift
3+
// LDKSwiftARC
4+
//
5+
// Created by Arik Sosman on 5/18/21.
6+
//
7+
8+
import LDKSwift
9+
import LDKHeaders
10+
11+
class TestKeysInterface: KeysInterface {
12+
override func get_node_secret() -> [UInt8] {
13+
return [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]
14+
}
15+
}

0 commit comments

Comments
 (0)