mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-23 23:06:44 +01:00
Add a test that checks `get_route` and `uncertainty_update` behaviour's handling of missing channel capacities. Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
110 lines
2.8 KiB
C
110 lines
2.8 KiB
C
#ifndef LIGHTNING_PLUGINS_RENEPAY_TEST_COMMON_H
|
|
#define LIGHTNING_PLUGINS_RENEPAY_TEST_COMMON_H
|
|
#include "config.h"
|
|
#include <common/gossip_store.h>
|
|
#include <gossipd/gossip_store_wiregen.h>
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <wire/peer_wiregen.h>
|
|
|
|
static const char *print_routes(const tal_t *ctx,
|
|
struct route **routes)
|
|
{
|
|
tal_t *this_ctx = tal(ctx, tal_t);
|
|
char *buff = tal_fmt(ctx, "%zu routes\n", tal_count(routes));
|
|
for (size_t i = 0; i < tal_count(routes); i++) {
|
|
struct amount_msat fee, delivered;
|
|
|
|
delivered = route_delivers(routes[i]);
|
|
fee = route_fees(routes[i]);
|
|
tal_append_fmt(&buff, " %s", fmt_route_path(this_ctx, routes[i]));
|
|
tal_append_fmt(&buff, " %s delivered with fee %s\n",
|
|
fmt_amount_msat(this_ctx, delivered),
|
|
fmt_amount_msat(this_ctx, fee));
|
|
}
|
|
|
|
tal_free(this_ctx);
|
|
return buff;
|
|
}
|
|
|
|
static void write_to_store(int store_fd, const u8 *msg)
|
|
{
|
|
struct gossip_hdr hdr;
|
|
|
|
hdr.flags = cpu_to_be16(0);
|
|
hdr.len = cpu_to_be16(tal_count(msg));
|
|
/* We don't actually check these! */
|
|
hdr.crc = 0;
|
|
hdr.timestamp = 0;
|
|
assert(write(store_fd, &hdr, sizeof(hdr)) == sizeof(hdr));
|
|
assert(write(store_fd, msg, tal_count(msg)) == tal_count(msg));
|
|
}
|
|
|
|
static void add_connection(int store_fd,
|
|
const struct node_id *from,
|
|
const struct node_id *to,
|
|
struct short_channel_id scid,
|
|
struct amount_msat min,
|
|
struct amount_msat max,
|
|
u32 base_fee, s32 proportional_fee,
|
|
u32 delay,
|
|
struct amount_sat capacity,
|
|
bool add_capacity)
|
|
{
|
|
secp256k1_ecdsa_signature dummy_sig;
|
|
struct secret not_a_secret;
|
|
struct pubkey dummy_key;
|
|
u8 *msg;
|
|
const struct node_id *ids[2];
|
|
|
|
/* So valgrind doesn't complain */
|
|
memset(&dummy_sig, 0, sizeof(dummy_sig));
|
|
memset(¬_a_secret, 1, sizeof(not_a_secret));
|
|
pubkey_from_secret(¬_a_secret, &dummy_key);
|
|
|
|
if (node_id_cmp(from, to) > 0) {
|
|
ids[0] = to;
|
|
ids[1] = from;
|
|
} else {
|
|
ids[0] = from;
|
|
ids[1] = to;
|
|
}
|
|
msg = towire_channel_announcement(tmpctx, &dummy_sig, &dummy_sig,
|
|
&dummy_sig, &dummy_sig,
|
|
/* features */ NULL,
|
|
&chainparams->genesis_blockhash,
|
|
scid,
|
|
ids[0], ids[1],
|
|
&dummy_key, &dummy_key);
|
|
write_to_store(store_fd, msg);
|
|
|
|
if (add_capacity) {
|
|
msg = towire_gossip_store_channel_amount(tmpctx, capacity);
|
|
write_to_store(store_fd, msg);
|
|
}
|
|
|
|
u8 flags = node_id_idx(from, to);
|
|
|
|
msg = towire_channel_update(tmpctx,
|
|
&dummy_sig,
|
|
&chainparams->genesis_blockhash,
|
|
scid, 0,
|
|
ROUTING_OPT_HTLC_MAX_MSAT,
|
|
flags,
|
|
delay,
|
|
min,
|
|
base_fee,
|
|
proportional_fee,
|
|
max);
|
|
write_to_store(store_fd, msg);
|
|
}
|
|
|
|
static void node_id_from_privkey(const struct privkey *p, struct node_id *id)
|
|
{
|
|
struct pubkey k;
|
|
pubkey_from_privkey(p, &k);
|
|
node_id_from_pubkey(id, &k);
|
|
}
|
|
|
|
|
|
#endif /* LIGHTNING_PLUGINS_RENEPAY_TEST_COMMON_H */
|