Add new test that builds a ChannelManager
[ldk-java] / src / test / java / org / ldk / PeerTest.java
1 package org.ldk;
2
3 import org.junit.jupiter.api.Test;
4 import org.ldk.impl.bindings;
5
6 public class PeerTest {
7     @Test
8     void test_message_handler() {
9         long logger = bindings.LDKLogger_new((String arg)-> System.out.println(arg));
10
11         long fee_estimator = bindings.LDKFeeEstimator_new(new bindings.LDKFeeEstimator() {
12             @Override
13             public int get_est_sat_per_1000_weight(bindings.LDKConfirmationTarget confirmation_target) {
14                 return 0;
15             }
16         });
17         long tx_broadcaster = bindings.LDKBroadcasterInterface_new(new bindings.LDKBroadcasterInterface() {
18             @Override
19             public void broadcast_transaction(long tx) {
20                 // We should broadcast
21             }
22         });
23         long chain_monitor = bindings.LDKManyChannelMonitor_new(new bindings.LDKManyChannelMonitor() {
24             @Override
25             public long add_monitor(long funding_txo, long monitor) {
26                 return 0;
27             }
28
29             @Override
30             public long update_monitor(long funding_txo, long monitor) {
31                 return 0;
32             }
33
34             @Override
35             public long get_and_clear_pending_monitor_events() {
36                 return 0;
37             }
38         });
39         byte[] key_seed = new byte[32];
40         for (byte i = 0; i < 32; i++) { key_seed[i] = i; }
41         long keys = bindings.KeysManager_new(key_seed, bindings.LDKNetwork.LDKNetwork_Bitcoin, System.currentTimeMillis() / 1000, (int)(System.currentTimeMillis() * 1000) & 0xffffffff);
42         long keys_interface = bindings.KeysManager_as_KeysInterface(keys);
43         long config = bindings.UserConfig_default();
44         long chan_manager = bindings.ChannelManager_new(bindings.LDKNetwork.LDKNetwork_Bitcoin, fee_estimator, chain_monitor, tx_broadcaster, logger, keys_interface, config, 1);
45
46         long chan_handler = bindings.ChannelManager_as_ChannelMessageHandler(chan_manager);
47         long chain_watch = bindings.LDKChainWatchInterface_new(new bindings.LDKChainWatchInterface() {
48             @Override
49             public void install_watch_tx(byte[] txid, long script_pub_key) {
50
51             }
52
53             @Override
54             public void install_watch_outpoint(long outpoint, long out_script) {
55
56             }
57
58             @Override
59             public void watch_all_txn() {
60
61             }
62
63             @Override
64             public long get_chain_utxo(long genesis_hash, long unspent_tx_output_identifier) {
65                 return 0;
66             }
67
68             @Override
69             public long filter_block(long block) {
70                 return 0;
71             }
72
73             @Override
74             public long reentered() {
75                 return 0;
76             }
77         });
78         long router = bindings.NetGraphMsgHandler_new(chain_watch, logger);
79         long route_handler = bindings.NetGraphMsgHandler_as_RoutingMessageHandler(router);
80         long message_handler = bindings.MessageHandler_new(chan_handler, route_handler);
81         long our_node_secret = bindings.LDKSecretKey_new(); //TODO: Need LDKSecretKey constructor
82         byte[] random_data = new byte[32];
83         for (byte i = 0; i < 32; i++) { random_data[i] = i; }
84
85         long peer_manager = bindings.PeerManager_new(message_handler, our_node_secret, random_data, logger);
86
87         // Note that we can't rely on finalizer order, so don't bother trying to rely on it here
88         bindings.Logger_free(logger);
89         bindings.FeeEstimator_free(fee_estimator);
90         bindings.BroadcasterInterface_free(tx_broadcaster);
91         bindings.ManyChannelMonitor_free(chain_monitor);
92         bindings.KeysManager_free(keys);
93         bindings.KeysInterface_free(keys_interface);
94         bindings.ChannelManager_free(chan_manager);
95         bindings.ChannelMessageHandler_free(chan_handler);
96         bindings.ChainWatchInterface_free(chain_watch);
97         bindings.NetGraphMsgHandler_free(router);
98         bindings.RoutingMessageHandler_free(route_handler);
99         //bindings.MessageHandler_free(message_handler);
100         bindings.PeerManager_free(peer_manager);
101     }
102 }