MCPcopy Create free account
hub / github.com/ElementsProject/lightning / main

Function main

common/test/run-route.c:179–317  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

177}
178
179int 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);

Callers

nothing calls this directly

Calls 13

common_setupFunction · 0.85
chainparams_for_networkFunction · 0.85
tmpdir_mkstempFunction · 0.85
gossmap_refreshFunction · 0.85
gossmap_find_nodeFunction · 0.85
route_from_dijkstraFunction · 0.85
common_shutdownFunction · 0.85
node_id_from_privkeyFunction · 0.70
add_connectionFunction · 0.70
dijkstraClass · 0.70
amount_msat_eqFunction · 0.70
channel_is_betweenFunction · 0.70

Tested by

no test coverage detected