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