Skip to content

Commit f30ed1c

Browse files
committed
[Java] Update tests to 0.0.113 API
1 parent dab305b commit f30ed1c

File tree

2 files changed

+62
-23
lines changed

2 files changed

+62
-23
lines changed

src/test/java/org/ldk/HumanObjectPeerTest.java

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.ldk.enums.*;
99
import org.ldk.enums.Currency;
1010
import org.ldk.structs.*;
11+
import org.ldk.util.UInt128;
1112
import org.ldk.util.UInt5;
1213

1314
import java.io.IOException;
@@ -52,9 +53,12 @@ KeysInterface manual_keysif(KeysInterface underlying_if) {
5253
@Override public byte[] get_destination_script() { return underlying_if.get_destination_script(); }
5354
@Override public ShutdownScript get_shutdown_scriptpubkey() { return underlying_if.get_shutdown_scriptpubkey(); }
5455

56+
@Override public byte[] generate_channel_keys_id(boolean inbound, long channel_value_satoshis, UInt128 user_channel_id) {
57+
return underlying_if.generate_channel_keys_id(inbound, channel_value_satoshis, user_channel_id);
58+
}
5559
@Override
56-
public Sign get_channel_signer(boolean inbound, long channel_value_satoshis) {
57-
Sign underlying_ck = underlying_if.get_channel_signer(inbound, channel_value_satoshis);
60+
public Sign derive_channel_signer(long channel_value_satoshis, byte[] channel_keys_id) {
61+
Sign underlying_ck = underlying_if.derive_channel_signer(channel_value_satoshis, channel_keys_id);
5862
BaseSign underlying_base = underlying_ck.get_base_sign();
5963
BaseSign.BaseSignInterface bsi = new BaseSign.BaseSignInterface() {
6064
@Override public byte[] get_per_commitment_point(long idx) {
@@ -67,7 +71,7 @@ public Sign get_channel_signer(boolean inbound, long channel_value_satoshis) {
6771
return underlying_base.validate_holder_commitment(holder_tx, preimages);
6872
}
6973
@Override public byte[] channel_keys_id() {
70-
return new byte[32];
74+
return channel_keys_id;
7175
}
7276
@Override public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(CommitmentTransaction commitment_tx, byte[][] preimages) {
7377
return underlying_base.sign_counterparty_commitment(commitment_tx, preimages);
@@ -96,8 +100,9 @@ public Sign get_channel_signer(boolean inbound, long channel_value_satoshis) {
96100
@Override public Result_C2Tuple_SignatureSignatureZNoneZ sign_channel_announcement(UnsignedChannelAnnouncement msg) {
97101
return underlying_base.sign_channel_announcement(msg);
98102
}
99-
@Override public void ready_channel(ChannelTransactionParameters params) {
100-
underlying_base.ready_channel(params);
103+
104+
@Override public void provide_channel_parameters(ChannelTransactionParameters channel_parameters) {
105+
underlying_base.provide_channel_parameters(channel_parameters);
101106
}
102107
};
103108
Sign.SignInterface si = new Sign.SignInterface() {
@@ -415,7 +420,12 @@ private void setup_route_handler() {
415420
@Override public void notify_payment_probe_failed(RouteHop[] path, long short_channel_id) {}
416421

417422
@Override
418-
public Result_RouteLightningErrorZ find_route(byte[] payer, RouteParameters params, byte[] payment_hash, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs) {
423+
public Result_RouteLightningErrorZ find_route_with_id(byte[] payer, RouteParameters route_params, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs, byte[] _payment_hash, byte[] _payment_id) {
424+
return find_route(payer, route_params, first_hops, inflight_htlcs);
425+
}
426+
427+
@Override
428+
public Result_RouteLightningErrorZ find_route(byte[] payer, RouteParameters params, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs) {
419429
while (true) {
420430
try (ReadOnlyNetworkGraph graph = router.read_only()) {
421431
assert graph.channel(424242) == null;
@@ -560,7 +570,12 @@ public Result_RouteLightningErrorZ find_route(byte[] payer, RouteParameters para
560570
@Override public void notify_payment_probe_failed(RouteHop[] path, long short_channel_id) {}
561571

562572
@Override
563-
public Result_RouteLightningErrorZ find_route(byte[] payer, RouteParameters route_params, byte[] payment_hash, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs) {
573+
public Result_RouteLightningErrorZ find_route_with_id(byte[] payer, RouteParameters route_params, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs, byte[] _payment_hash, byte[] _payment_id) {
574+
return find_route(payer, route_params, first_hops, inflight_htlcs);
575+
}
576+
577+
@Override
578+
public Result_RouteLightningErrorZ find_route(byte[] payer, RouteParameters route_params, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs) {
564579
return UtilMethods.find_route(payer, route_params, router, first_hops, logger, Score.new_impl(new Score.ScoreInterface() {
565580
@Override public long channel_penalty_msat(long short_channel_id, NodeId source, NodeId target, ChannelUsage usage) { return 0; }
566581
@Override public void payment_path_failed(RouteHop[] path, long scid) {}
@@ -813,7 +828,9 @@ TestState do_test_message_handler() throws InterruptedException {
813828

814829
connect_peers(peer1, peer2);
815830

816-
Result__u832APIErrorZ cc_res = peer1.chan_manager.create_channel(peer2.node_id, 100000, 1000, 42, null);
831+
UInt128 user_id = new UInt128(new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16});
832+
833+
Result__u832APIErrorZ cc_res = peer1.chan_manager.create_channel(peer2.node_id, 100000, 1000, user_id, null);
817834
assert cc_res instanceof Result__u832APIErrorZ.Result__u832APIErrorZ_OK;
818835

819836
// Previously, this was a SEGFAULT instead of get_funding_txo() returning null.
@@ -823,7 +840,7 @@ TestState do_test_message_handler() throws InterruptedException {
823840
Event[] events = peer1.get_manager_events(1, peer1, peer2);
824841
assert events[0] instanceof Event.FundingGenerationReady;
825842
assert ((Event.FundingGenerationReady) events[0]).channel_value_satoshis == 100000;
826-
assert ((Event.FundingGenerationReady) events[0]).user_channel_id == 42;
843+
assert ((Event.FundingGenerationReady) events[0]).user_channel_id.equals(user_id);
827844
byte[] funding_spk = ((Event.FundingGenerationReady) events[0]).output_script;
828845
assert funding_spk.length == 34 && funding_spk[0] == 0 && funding_spk[1] == 32; // P2WSH
829846
byte[] chan_id = ((Event.FundingGenerationReady) events[0]).temporary_channel_id;
@@ -862,9 +879,14 @@ TestState do_test_message_handler() throws InterruptedException {
862879
}
863880

864881
maybe_exchange_peer_messages(peer1, peer2);
865-
while (peer1.chan_manager.list_usable_channels().length != 1 || peer2.chan_manager.list_usable_channels().length != 1)
882+
while (peer1.chan_manager.list_usable_channels().length != 1 || peer2.chan_manager.list_usable_channels().length != 1) ;
883+
884+
events = peer1.get_manager_events(1, peer1, peer2);
885+
assert events[0] instanceof Event.ChannelReady;
886+
887+
events = peer2.get_manager_events(1, peer1, peer2);
888+
assert events[0] instanceof Event.ChannelReady;
866889

867-
peer1.chan_manager.list_channels();
868890
ChannelDetails[] peer1_chans = peer1.chan_manager.list_usable_channels();
869891
ChannelDetails[] peer2_chans = peer2.chan_manager.list_usable_channels();
870892
assert peer1_chans.length == 1;
@@ -910,8 +932,9 @@ TestState do_test_message_handler() throws InterruptedException {
910932
assert route.get_paths()[0].length == 1;
911933
assert route.get_paths()[0][0].get_fee_msat() == 10000000;
912934

913-
Result_PaymentIdPaymentSendFailureZ payment_res = peer1.chan_manager.send_payment(route, payment_hash, payment_secret);
914-
assert payment_res instanceof Result_PaymentIdPaymentSendFailureZ.Result_PaymentIdPaymentSendFailureZ_OK;
935+
byte[] payment_id = new byte[] { 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 };
936+
Result_NonePaymentSendFailureZ payment_res = peer1.chan_manager.send_payment(route, payment_hash, payment_secret, payment_id);
937+
assert payment_res instanceof Result_NonePaymentSendFailureZ.Result_NonePaymentSendFailureZ_OK;
915938

916939
RouteHop[][] hops = new RouteHop[1][1];
917940
byte[] hop_pubkey = new byte[33];
@@ -921,8 +944,8 @@ TestState do_test_message_handler() throws InterruptedException {
921944
ChannelFeatures channel_features = ChannelFeatures.empty();
922945
hops[0][0] = RouteHop.of(hop_pubkey, node_features, 42, channel_features, 100, 0);
923946
Route r2 = Route.of(hops, payee);
924-
payment_res = peer1.chan_manager.send_payment(r2, payment_hash, payment_secret);
925-
assert payment_res instanceof Result_PaymentIdPaymentSendFailureZ.Result_PaymentIdPaymentSendFailureZ_Err;
947+
payment_res = peer1.chan_manager.send_payment(r2, payment_hash, payment_secret, payment_id);
948+
assert payment_res instanceof Result_NonePaymentSendFailureZ.Result_NonePaymentSendFailureZ_Err;
926949
} else {
927950
Result_PaymentIdPaymentErrorZ send_res = peer1.payer.pay_invoice(((Result_InvoiceParseOrSemanticErrorZ.Result_InvoiceParseOrSemanticErrorZ_OK) parsed_invoice).res);
928951
assert send_res instanceof Result_PaymentIdPaymentErrorZ.Result_PaymentIdPaymentErrorZ_OK;
@@ -975,9 +998,9 @@ void do_test_message_handler_b(TestState state) throws InterruptedException {
975998
state.peer2.chan_manager.process_pending_htlc_forwards();
976999

9771000
events = state.peer2.get_manager_events(1, state.peer1, state.peer2);
978-
assert events[0] instanceof Event.PaymentReceived;
979-
assert ((Event.PaymentReceived)events[0]).purpose instanceof PaymentPurpose.InvoicePayment;
980-
byte[] payment_preimage = ((PaymentPurpose.InvoicePayment)((Event.PaymentReceived)events[0]).purpose).payment_preimage;
1001+
assert events[0] instanceof Event.PaymentClaimable;
1002+
assert ((Event.PaymentClaimable)events[0]).purpose instanceof PaymentPurpose.InvoicePayment;
1003+
byte[] payment_preimage = ((PaymentPurpose.InvoicePayment)((Event.PaymentClaimable)events[0]).purpose).payment_preimage;
9811004
assert !Arrays.equals(payment_preimage, new byte[32]);
9821005
state.peer2.chan_manager.claim_funds(payment_preimage);
9831006

src/test/java/org/ldk/PeerTest.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.ldk.enums.Network;
88
import org.ldk.enums.Recipient;
99
import org.ldk.impl.bindings;
10+
import org.ldk.util.UInt128;
1011

1112
import java.lang.ref.Reference;
1213
import java.util.ArrayList;
@@ -262,7 +263,9 @@ public long send_data(byte[] data, boolean resume_read) {
262263

263264
deliver_peer_messages(list, peer1.peer_manager, peer2.peer_manager);
264265

265-
long cc_res = bindings.ChannelManager_create_channel(peer1.chan_manager, peer2.node_id, 10000, 1000, 42, 0);
266+
byte[] user_id = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
267+
268+
long cc_res = bindings.ChannelManager_create_channel(peer1.chan_manager, peer2.node_id, 10000, 1000, user_id, 0);
266269
assert bindings.CResult_NoneAPIErrorZ_is_ok(cc_res);
267270
bindings.CResult_NoneAPIErrorZ_free(cc_res);
268271

@@ -277,7 +280,7 @@ public long send_data(byte[] data, boolean resume_read) {
277280
bindings.LDKEvent event = bindings.LDKEvent_ref_from_ptr(events.get(0));
278281
assert event instanceof bindings.LDKEvent.FundingGenerationReady;
279282
assert ((bindings.LDKEvent.FundingGenerationReady)event).channel_value_satoshis == 10000;
280-
assert ((bindings.LDKEvent.FundingGenerationReady)event).user_channel_id == 42;
283+
assert Arrays.equals(((bindings.LDKEvent.FundingGenerationReady)event).user_channel_id, user_id);
281284
byte[] funding_spk = ((bindings.LDKEvent.FundingGenerationReady)event).output_script;
282285
assert funding_spk.length == 34 && funding_spk[0] == 0 && funding_spk[1] == 32; // P2WSH
283286
byte[] chan_id = ((bindings.LDKEvent.FundingGenerationReady)event).temporary_channel_id;
@@ -314,6 +317,18 @@ public long send_data(byte[] data, boolean resume_read) {
314317
assert Arrays.equals(bindings.ChannelDetails_get_channel_id(peer2_chans[0]), funding.getTxId().getReversedBytes());
315318
for (long chan : peer2_chans) bindings.ChannelDetails_free(chan);
316319

320+
bindings.EventsProvider_process_pending_events(peer1.chan_manager_events, handler);
321+
assert events.size() == 1;
322+
bindings.LDKEvent ready1 = bindings.LDKEvent_ref_from_ptr(events.get(0));
323+
assert ready1 instanceof bindings.LDKEvent.ChannelReady;
324+
bindings.Event_free(events.remove(0));
325+
326+
bindings.EventsProvider_process_pending_events(peer2.chan_manager_events, handler);
327+
assert events.size() == 1;
328+
bindings.LDKEvent ready2 = bindings.LDKEvent_ref_from_ptr(events.get(0));
329+
assert ready2 instanceof bindings.LDKEvent.ChannelReady;
330+
bindings.Event_free(events.remove(0));
331+
317332
long no_min_val = bindings.COption_u64Z_none();
318333
long inbound_payment = bindings.ChannelManager_create_inbound_payment(peer2.chan_manager, no_min_val, 7200);
319334
assert bindings.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(inbound_payment);
@@ -341,7 +356,8 @@ public long send_data(byte[] data, boolean resume_read) {
341356
for (long chan : peer1_chans) bindings.ChannelDetails_free(chan);
342357
assert bindings.CResult_RouteLightningErrorZ_is_ok(route);
343358
long payment_res = bindings.ChannelManager_send_payment(peer1.chan_manager, bindings.CResult_RouteLightningErrorZ_get_ok(route),
344-
bindings.C2Tuple_PaymentHashPaymentSecretZ_get_a(payment_tuple), bindings.C2Tuple_PaymentHashPaymentSecretZ_get_b(payment_tuple));
359+
bindings.C2Tuple_PaymentHashPaymentSecretZ_get_a(payment_tuple),
360+
bindings.C2Tuple_PaymentHashPaymentSecretZ_get_b(payment_tuple), new byte[32]);
345361
bindings.CResult_RouteLightningErrorZ_free(route);
346362
bindings.CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(inbound_payment);
347363
assert bindings.CResult_NonePaymentSendFailureZ_is_ok(payment_res);
@@ -359,8 +375,8 @@ public long send_data(byte[] data, boolean resume_read) {
359375
bindings.EventsProvider_process_pending_events(peer2.chan_manager_events, handler);
360376
assert events.size() == 1;
361377
bindings.LDKEvent payment_recvd = bindings.LDKEvent_ref_from_ptr(events.get(0));
362-
assert payment_recvd instanceof bindings.LDKEvent.PaymentReceived;
363-
bindings.LDKPaymentPurpose purpose = bindings.LDKPaymentPurpose_ref_from_ptr(((bindings.LDKEvent.PaymentReceived) payment_recvd).purpose);
378+
assert payment_recvd instanceof bindings.LDKEvent.PaymentClaimable;
379+
bindings.LDKPaymentPurpose purpose = bindings.LDKPaymentPurpose_ref_from_ptr(((bindings.LDKEvent.PaymentClaimable) payment_recvd).purpose);
364380
assert purpose instanceof bindings.LDKPaymentPurpose.InvoicePayment;
365381
bindings.ChannelManager_claim_funds(peer2.chan_manager, ((bindings.LDKPaymentPurpose.InvoicePayment) purpose).payment_preimage);
366382
bindings.Event_free(events.remove(0));

0 commit comments

Comments
 (0)