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

Function main

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

Source from the content-addressed store, hash-verified

165}
166
167int 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);

Callers

nothing calls this directly

Calls 14

common_setupFunction · 0.85
chainparams_for_networkFunction · 0.85
tmpdir_mkstempFunction · 0.85
gossmap_loadFunction · 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

Tested by

no test coverage detected