X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=ts%2Ftest%2Ftests.mts;h=59a16ecd4858ba6c6f007444f775b18d484b8819;hb=927895dc8dd19aa3797ccfef086601dc23a7fddf;hp=751d7ddf98094c3a5f40fcadf36b79e5f14bc5c2;hpb=d1d0121c000b713c10fd0bedd249eb8dda2e4db7;p=ldk-java diff --git a/ts/test/tests.mts b/ts/test/tests.mts index 751d7ddf..59a16ecd 100644 --- a/ts/test/tests.mts +++ b/ts/test/tests.mts @@ -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); +}