[TS] Update tests to latest upstream API
[ldk-java] / ts / test / tests.mts
index 751d7ddf98094c3a5f40fcadf36b79e5f14bc5c2..59a16ecd4858ba6c6f007444f775b18d484b8819 100644 (file)
@@ -145,8 +145,8 @@ tests.push(async () => {
        const chan_man_a: ldk.ChannelManager = peer_a[0] as ldk.ChannelManager;
        const chan_man_b: ldk.ChannelManager = peer_b[0] as ldk.ChannelManager;
 
-       chan_man_a.as_ChannelMessageHandler().peer_connected(chan_man_b.get_our_node_id(), ldk.Init.constructor_new(ldk.InitFeatures.constructor_known()));
-       chan_man_b.as_ChannelMessageHandler().peer_connected(chan_man_a.get_our_node_id(), ldk.Init.constructor_new(ldk.InitFeatures.constructor_known()));
+       chan_man_a.as_ChannelMessageHandler().peer_connected(chan_man_b.get_our_node_id(), ldk.Init.constructor_new(ldk.InitFeatures.constructor_known(), ldk.Option_NetAddressZ.constructor_none()));
+       chan_man_b.as_ChannelMessageHandler().peer_connected(chan_man_a.get_our_node_id(), ldk.Init.constructor_new(ldk.InitFeatures.constructor_known(), ldk.Option_NetAddressZ.constructor_none()));
 
        const chan_create_err = chan_man_a.create_channel(chan_man_b.get_our_node_id(), BigInt(0), BigInt(400), BigInt(0), ldk.UserConfig.constructor_default());
        if (chan_create_err.is_ok()) return false;
@@ -197,9 +197,7 @@ tests.push(async () => {
        return true;
 });
 
-export async function run_tests(wasm_path: string) {
-       await rawldk.initializeWasm(wasm_path);
-
+async function run_tests(check_leaks: boolean) {
        var test_runs = [];
        for (const test of tests) {
                test_runs.push(test());
@@ -208,7 +206,7 @@ export async function run_tests(wasm_path: string) {
        console.log("test results: " + results);
        const result = results.every((v) => { return v === true });
        console.log("all tests passed: " + result);
-       if (result !== true) { return result; }
+       if (result !== true || !check_leaks) { return result; }
 
        const allocs_finished = new Promise((resolve, reject) => {
                var loop_count = 0;
@@ -216,11 +214,26 @@ export async function run_tests(wasm_path: string) {
                        const alloc_count = rawldk.getRemainingAllocationCount();
                        if (loop_count % 20 == 0)
                                console.log("Remaining LDK allocation count: " + alloc_count);
+
+                       // chromium with --js-flags="--expose-gc" exposes a `window.gc()` which we call if we can
+                       // @ts-ignore window.gc is considered a type error in TS
+                       if (typeof window !== "undefined" && typeof window.gc !== "undefined") window.gc();
+
                        // Note that there are currently 9 leaks in the above tests. At least some are known - look for XXX in bindings.c
-                       if (alloc_count <= 10) { resolve(true); clearInterval(interval_id); }
+                       if (alloc_count <= 10) { clearInterval(interval_id); rawldk.debugPrintRemainingAllocs(); resolve(true); }
                        loop_count += 1;
-                       if (loop_count > 30*2) { resolve(false); clearInterval(interval_id); rawldk.debugPrintRemainingAllocs(); }
+                       if (loop_count > 30*2) { clearInterval(interval_id); rawldk.debugPrintRemainingAllocs(); resolve(false); }
                }, 500);
        });
        return allocs_finished;
 }
+
+export async function run_tests_web(wasm_path: string, check_leaks: boolean = true) {
+       await ldk.initializeWasmWebFetch(wasm_path);
+       return await run_tests(check_leaks);
+}
+
+export async function run_tests_node(wasm_file: Uint8Array, check_leaks: boolean = true) {
+       await ldk.initializeWasmFromBinary(wasm_file);
+       return await run_tests(check_leaks);
+}