| 177 | } |
| 178 | |
| 179 | int main(int argc, char *argv[]) |
| 180 | { |
| 181 | common_setup(argv[0]); |
| 182 | |
| 183 | struct node_id a, b, c, d; |
| 184 | struct gossmap_node *a_node, *b_node, *c_node, *d_node; |
| 185 | struct privkey tmp; |
| 186 | const struct dijkstra *dij; |
| 187 | struct route_hop *route; |
| 188 | int store_fd; |
| 189 | struct gossmap *gossmap; |
| 190 | const double riskfactor = 1.0; |
| 191 | char gossip_version = 10; |
| 192 | char *gossipfilename; |
| 193 | |
| 194 | chainparams = chainparams_for_network("regtest"); |
| 195 | |
| 196 | store_fd = tmpdir_mkstemp(tmpctx, "run-route-gossipstore.XXXXXX", &gossipfilename); |
| 197 | assert(write(store_fd, &gossip_version, sizeof(gossip_version)) |
| 198 | == sizeof(gossip_version)); |
| 199 | gossmap = gossmap_load(tmpctx, gossipfilename, NULL, NULL); |
| 200 | |
| 201 | memset(&tmp, 'a', sizeof(tmp)); |
| 202 | node_id_from_privkey(&tmp, &a); |
| 203 | memset(&tmp, 'b', sizeof(tmp)); |
| 204 | node_id_from_privkey(&tmp, &b); |
| 205 | |
| 206 | assert(!gossmap_refresh(gossmap)); |
| 207 | |
| 208 | /* A<->B */ |
| 209 | add_connection(store_fd, &a, &b, 1, 1, 1); |
| 210 | assert(gossmap_refresh(gossmap)); |
| 211 | |
| 212 | a_node = gossmap_find_node(gossmap, &a); |
| 213 | b_node = gossmap_find_node(gossmap, &b); |
| 214 | dij = dijkstra(tmpctx, gossmap, b_node, AMOUNT_MSAT(1000), riskfactor, |
| 215 | route_can_carry_unless_disabled, |
| 216 | route_score_cheaper, NULL); |
| 217 | |
| 218 | route = route_from_dijkstra(tmpctx, gossmap, dij, a_node, AMOUNT_MSAT(1000), 10); |
| 219 | assert(route); |
| 220 | assert(tal_count(route) == 1); |
| 221 | assert(amount_msat_eq(route[0].amount, AMOUNT_MSAT(1000))); |
| 222 | assert(route[0].delay == 10); |
| 223 | |
| 224 | /* A<->B<->C */ |
| 225 | memset(&tmp, 'c', sizeof(tmp)); |
| 226 | node_id_from_privkey(&tmp, &c); |
| 227 | add_connection(store_fd, &b, &c, 1, 1, 1); |
| 228 | assert(gossmap_refresh(gossmap)); |
| 229 | |
| 230 | /* These can theoretically change after refresh! */ |
| 231 | a_node = gossmap_find_node(gossmap, &a); |
| 232 | b_node = gossmap_find_node(gossmap, &b); |
| 233 | c_node = gossmap_find_node(gossmap, &c); |
| 234 | dij = dijkstra(tmpctx, gossmap, c_node, AMOUNT_MSAT(1000), riskfactor, |
| 235 | route_can_carry_unless_disabled, |
| 236 | route_score_cheaper, NULL); |
nothing calls this directly
no test coverage detected