X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ftopology%2Ftest_gnunet_daemon_topology.c;h=5c54e0ee31f60289b1b1f9001c46d706664dfcde;hb=ff754768e374c38fdfe8c677e610431dcc667218;hp=f16f382ae9c225bb978609467b1189958eedb100;hpb=70592d7ecec48ac0b8c7d2f37f17585c852c8e3b;p=oweals%2Fgnunet.git diff --git a/src/topology/test_gnunet_daemon_topology.c b/src/topology/test_gnunet_daemon_topology.c index f16f382ae..5c54e0ee3 100644 --- a/src/topology/test_gnunet_daemon_topology.c +++ b/src/topology/test_gnunet_daemon_topology.c @@ -4,7 +4,7 @@ GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 2, or (at your + by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but @@ -24,14 +24,14 @@ #include "platform.h" #include "gnunet_testing_lib.h" -#define VERBOSE GNUNET_YES +#define VERBOSE GNUNET_NO #define NUM_PEERS 2 /** * How long until we give up on connecting the peers? */ -#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60) +#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 600) #define CONNECT_ATTEMPTS 3 @@ -48,14 +48,35 @@ static struct GNUNET_TESTING_Daemon *first; static struct GNUNET_TESTING_Daemon *last; -static struct GNUNET_SCHEDULER_Handle *sched; - +/** + * Check whether peers successfully shut down. + */ +void shutdown_callback (void *cls, + const char *emsg) +{ + if (emsg != NULL) + { +#if VERBOSE + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Shutdown of peers failed!\n"); +#endif + if (ok == 0) + ok = 666; + } + else + { +#if VERBOSE + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "All peers successfully shut down!\n"); +#endif + } +} static void clean_up_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - GNUNET_TESTING_daemons_stop (pg, TIMEOUT); + GNUNET_TESTING_daemons_stop (pg, TIMEOUT, &shutdown_callback, NULL); ok = 0; } @@ -64,6 +85,7 @@ static void notify_connect_complete(void *cls, const struct GNUNET_PeerIdentity *first, const struct GNUNET_PeerIdentity *second, + unsigned int distance, const struct GNUNET_CONFIGURATION_Handle *first_cfg, const struct GNUNET_CONFIGURATION_Handle *second_cfg, struct GNUNET_TESTING_Daemon *first_daemon, @@ -75,7 +97,7 @@ notify_connect_complete(void *cls, fprintf (stderr, "Failed to connect two peers: %s\n", emsg); - GNUNET_TESTING_daemons_stop (pg, TIMEOUT); + GNUNET_TESTING_daemons_stop (pg, TIMEOUT, &shutdown_callback, NULL); GNUNET_assert (0); return; } @@ -84,11 +106,8 @@ notify_connect_complete(void *cls, { /* FIXME: check that topology adds a few more links in addition to those that were seeded */ - /* For now, sleep so we can have the daemon do some work */ - GNUNET_SCHEDULER_add_delayed (sched, - GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), - &clean_up_task, - NULL); + GNUNET_SCHEDULER_add_now (&clean_up_task, + NULL); } } @@ -109,12 +128,14 @@ static void my_cb(void *cls, return; } GNUNET_TESTING_daemons_connect (last, d, TIMEOUT, CONNECT_ATTEMPTS, + GNUNET_YES, ¬ify_connect_complete, NULL); if (peers_left == 0) { /* close circle */ GNUNET_TESTING_daemons_connect (d, first, TIMEOUT, CONNECT_ATTEMPTS, + GNUNET_YES, ¬ify_connect_complete, NULL); } @@ -123,19 +144,19 @@ static void my_cb(void *cls, static void run (void *cls, - struct GNUNET_SCHEDULER_Handle *s, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg) { - sched = s; ok = 1; #if VERBOSE GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting daemons.\n"); #endif peers_left = NUM_PEERS; - pg = GNUNET_TESTING_daemons_start (sched, cfg, + pg = GNUNET_TESTING_daemons_start (cfg, + peers_left, + peers_left, peers_left, TIMEOUT, NULL, NULL,