From 4b3fd192b37405f857a8a5f8ab814ea4b9f1f94e Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 9 Sep 2012 13:39:10 +0000 Subject: migrating topology test to new testbed API --- src/topology/Makefile.am | 2 +- src/topology/test_gnunet_daemon_topology.c | 167 ++++++----------------------- 2 files changed, 31 insertions(+), 138 deletions(-) (limited to 'src/topology') diff --git a/src/topology/Makefile.am b/src/topology/Makefile.am index 4234625d60..91c21da120 100644 --- a/src/topology/Makefile.am +++ b/src/topology/Makefile.am @@ -36,7 +36,7 @@ endif test_gnunet_daemon_topology_SOURCES = \ test_gnunet_daemon_topology.c test_gnunet_daemon_topology_LDADD = \ - $(top_builddir)/src/testing_old/libgnunettesting_old.la \ + $(top_builddir)/src/testbed/libgnunettestbed.la \ $(top_builddir)/src/util/libgnunetutil.la EXTRA_DIST = \ diff --git a/src/topology/test_gnunet_daemon_topology.c b/src/topology/test_gnunet_daemon_topology.c index 35225e4da1..e94123fe87 100644 --- a/src/topology/test_gnunet_daemon_topology.c +++ b/src/topology/test_gnunet_daemon_topology.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - (C) 2009 Christian Grothoff (and other contributing authors) + (C) 2009, 2012 Christian Grothoff (and other contributing authors) GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -22,183 +22,76 @@ * @brief testcase for topology maintenance code */ #include "platform.h" -#include "gnunet_testing_lib.h" +#include "gnunet_testbed_service.h" -#define NUM_PEERS 2 +#define NUM_PEERS 8 /** * How long until we give up on connecting the peers? */ #define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 600) -#define CONNECT_ATTEMPTS 3 - static int ok; -static int peers_left; - -static int connect_left; - -static struct GNUNET_TESTING_PeerGroup *pg; - -static struct GNUNET_TESTING_Daemon *first; - -static struct GNUNET_TESTING_Daemon *last; - -/** - * Active connection attempt. - */ -struct GNUNET_TESTING_ConnectContext *cc[NUM_PEERS]; +static unsigned int connect_left; -/** - * Check whether peers successfully shut down. - */ -static void -shutdown_callback (void *cls, const char *emsg) -{ - if (emsg != NULL) - { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Shutdown of peers failed!\n"); - if (ok == 0) - ok = 666; - } - else - { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "All peers successfully shut down!\n"); - } -} +static struct GNUNET_TESTBED_Peer *daemons[NUM_PEERS]; static void -clean_up_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +notify_connect_complete (void *cls, + struct GNUNET_TESTBED_Operation *op, + const char *emsg) { unsigned int i; - for (i = 0; i < NUM_PEERS; i++) - { - if (NULL != cc[i]) - { - GNUNET_TESTING_daemons_connect_cancel (cc[i]); - cc[i] = NULL; - } - } - GNUNET_TESTING_daemons_stop (pg, TIMEOUT, &shutdown_callback, NULL); - ok = 0; -} - - -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, - struct GNUNET_TESTING_Daemon *second_daemon, - const char *emsg) -{ - struct GNUNET_TESTING_ConnectContext **cc = cls; - unsigned int i; - - *cc = NULL; if (NULL != emsg) { FPRINTF (stderr, "Failed to connect two peers: %s\n", emsg); - for (i = 0; i < NUM_PEERS; i++) - if (NULL != cc[i]) - { - GNUNET_TESTING_daemons_connect_cancel (cc[i]); - cc[i] = NULL; - } - GNUNET_TESTING_daemons_stop (pg, TIMEOUT, &shutdown_callback, NULL); - GNUNET_assert (0); + GNUNET_SCHEDULER_shutdown (); + ok = 1; return; } connect_left--; - if (connect_left == 0) + if (0 == connect_left) { /* FIXME: check that topology adds a few more links * in addition to those that were seeded */ - GNUNET_SCHEDULER_add_now (&clean_up_task, NULL); + GNUNET_SCHEDULER_shutdown (); } } static void -my_cb (void *cls, const struct GNUNET_PeerIdentity *id, - const struct GNUNET_CONFIGURATION_Handle *cfg, - struct GNUNET_TESTING_Daemon *d, const char *emsg) +do_connect (void *cls, + unsigned int num_peers, + struct GNUNET_TESTBED_Peer **peers) { - GNUNET_assert (id != NULL); - peers_left--; - if (first == NULL) - { - connect_left = NUM_PEERS; - first = d; - last = d; - return; - } - cc[peers_left] = - GNUNET_TESTING_daemons_connect (last, d, TIMEOUT, CONNECT_ATTEMPTS, - GNUNET_YES, ¬ify_connect_complete, - &cc[peers_left]); - if (peers_left == 0) - { - /* close circle */ - cc[NUM_PEERS - 1] = - GNUNET_TESTING_daemons_connect (d, first, TIMEOUT, CONNECT_ATTEMPTS, - GNUNET_YES, ¬ify_connect_complete, - &cc[NUM_PEERS - 1]); - } -} - - -static void -run (void *cls, char *const *args, const char *cfgfile, - const struct GNUNET_CONFIGURATION_Handle *cfg) -{ - ok = 1; - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting daemons.\n"); - peers_left = NUM_PEERS; - pg = GNUNET_TESTING_daemons_start (cfg, peers_left, peers_left, peers_left, - TIMEOUT, NULL, NULL, &my_cb, NULL, NULL, - NULL, NULL); - GNUNET_assert (pg != NULL); -} - + unsigned int i; -static int -check () -{ - char *const argv[] = { - "test-gnunet-daemon-topology", - "-c", - "test_gnunet_daemon_topology_data.conf", - NULL - }; - struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; - GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, argv, - "test-gnunet-daemon-topology", "nohelp", options, &run, - &ok); - return ok; + GNUNET_assert (NUM_PEERS == num_peers); + for (i=0;i