From 07b4a99662666ee11fc1a3684faa3bb55cf8b66f Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Tue, 20 Apr 2010 11:39:22 +0000 Subject: [PATCH] creating a correct testcase --- .../test_gnunet_daemon_hostlist_learning.c | 152 +++++++----------- src/hostlist/test_learning_adv_peer.conf | 46 ++++++ src/hostlist/test_learning_learn_peer.conf | 46 ++++++ 3 files changed, 154 insertions(+), 90 deletions(-) create mode 100644 src/hostlist/test_learning_adv_peer.conf create mode 100644 src/hostlist/test_learning_learn_peer.conf diff --git a/src/hostlist/test_gnunet_daemon_hostlist_learning.c b/src/hostlist/test_gnunet_daemon_hostlist_learning.c index e903574b2..244329ebe 100644 --- a/src/hostlist/test_gnunet_daemon_hostlist_learning.c +++ b/src/hostlist/test_gnunet_daemon_hostlist_learning.c @@ -18,24 +18,26 @@ Boston, MA 02111-1307, USA. */ /** - * @file hostlist/test_gnunet_daemon_hostlist_learning.c + * @file hostlist/test_gnunet_daemon_hostlist.c * @brief test for gnunet_daemon_hostslist.c - * @author Christian Grothoff, Matthias Wachs + * @author Christian Grothoff */ #include "platform.h" #include "gnunet_util_lib.h" #include "gnunet_arm_service.h" #include "gnunet_transport_service.h" +#define VERBOSE GNUNET_YES #define START_ARM GNUNET_YES + /** * How long until we give up on transmitting the message? */ -#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 150) +#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10) -static int ok; +static int failure; static struct GNUNET_SCHEDULER_Handle *sched; @@ -52,23 +54,22 @@ struct PeerContext #endif }; -static struct PeerContext p1; - -static struct PeerContext p2; +static struct PeerContext adv_peer; +static struct PeerContext learn_peer; static void clean_up (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - if (p1.th != NULL) + if (adv_peer.th != NULL) { - GNUNET_TRANSPORT_disconnect (p1.th); - p1.th = NULL; + GNUNET_TRANSPORT_disconnect (adv_peer.th); + adv_peer.th = NULL; } - if (p2.th != NULL) + if (learn_peer.th != NULL) { - GNUNET_TRANSPORT_disconnect (p2.th); - p2.th = NULL; + GNUNET_TRANSPORT_disconnect (learn_peer.th); + learn_peer.th = NULL; } GNUNET_SCHEDULER_shutdown (sched); } @@ -81,59 +82,33 @@ timeout_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { timeout_task = GNUNET_SCHEDULER_NO_TASK; GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Timeout trying to connect peers, test failed.\n"); + "Timeout while executing testcase, test failed.\n"); + failure = GNUNET_YES; clean_up (NULL, tc); } - -/** - * Function called to notify transport users that another - * peer connected to us. - * - * @param cls closure - * @param peer the peer that connected - * @param latency current latency of the connection - * @param distance in overlay hops, as given by transport plugin - */ static void -notify_connect (void *cls, - const struct GNUNET_PeerIdentity * peer, - struct GNUNET_TIME_Relative latency, - unsigned int distance) +setup_learn_peer (struct PeerContext *p, const char *cfgname) { - if (peer == NULL) - return; - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Peers connected, shutting down.\n"); - /* - ok = 0; - if (timeout_task != GNUNET_SCHEDULER_NO_TASK) - { - GNUNET_SCHEDULER_cancel (sched, - timeout_task); - timeout_task = GNUNET_SCHEDULER_NO_TASK; - } - GNUNET_SCHEDULER_add_now (sched, - &clean_up, NULL); - */ -} - - -static void -process_hello (void *cls, - const struct GNUNET_MessageHeader *message) -{ - struct PeerContext *p = cls; - - GNUNET_TRANSPORT_get_hello_cancel (p->th, &process_hello, p); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Received HELLO, starting hostlist service.\n"); - GNUNET_ARM_start_services (p->cfg, sched, "hostlist", NULL); + p->cfg = GNUNET_CONFIGURATION_create (); +#if START_ARM + p->arm_pid = GNUNET_OS_start_process (NULL, NULL, "gnunet-service-arm", + "gnunet-service-arm", +#if VERBOSE + "-L", "DEBUG", +#endif + "-c", cfgname, NULL); +#endif + GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_load (p->cfg, cfgname)); + GNUNET_ARM_start_services (p->cfg, sched, "core", NULL); + p->th = GNUNET_TRANSPORT_connect (sched, p->cfg, p, NULL, + NULL, NULL); + GNUNET_assert (p->th != NULL); } static void -setup_peer (struct PeerContext *p, const char *cfgname) +setup_adv_peer (struct PeerContext *p, const char *cfgname) { p->cfg = GNUNET_CONFIGURATION_create (); #if START_ARM @@ -147,21 +122,21 @@ setup_peer (struct PeerContext *p, const char *cfgname) GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_load (p->cfg, cfgname)); GNUNET_ARM_start_services (p->cfg, sched, "core", NULL); p->th = GNUNET_TRANSPORT_connect (sched, p->cfg, p, NULL, - ¬ify_connect, NULL); + NULL, NULL); GNUNET_assert (p->th != NULL); - GNUNET_TRANSPORT_get_hello (p->th, &process_hello, p); } + static void waitpid_task (void *cls, - const struct GNUNET_SCHEDULER_TaskContext *tc) + const struct GNUNET_SCHEDULER_TaskContext *tc) { struct PeerContext *p = cls; #if START_ARM GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Killing ARM process.\n"); + "Killing ARM process.\n"); if (0 != PLIBC_KILL (p->arm_pid, SIGTERM)) GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); if (GNUNET_OS_process_wait(p->arm_pid) != GNUNET_OK) @@ -175,20 +150,20 @@ waitpid_task (void *cls, static void stop_cb (void *cls, - int success) + int success) { struct PeerContext *p = cls; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - success - ? "ARM stopped core service\n" - : "ARM failed to stop core service\n"); + success + ? "ARM stopped core service\n" + : "ARM failed to stop core service\n"); GNUNET_ARM_disconnect (p->arm); p->arm = NULL; /* make sure this runs after all other tasks are done */ GNUNET_SCHEDULER_add_delayed (sched, - GNUNET_TIME_UNIT_SECONDS, - &waitpid_task, p); + GNUNET_TIME_UNIT_SECONDS, + &waitpid_task, p); } @@ -196,10 +171,10 @@ static void stop_arm (struct PeerContext *p) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Asking ARM to stop core service\n"); + "Asking ARM to stop core service\n"); p->arm = GNUNET_ARM_connect (p->cfg, sched, NULL); GNUNET_ARM_stop_service (p->arm, "core", GNUNET_TIME_UNIT_SECONDS, - &stop_cb, p); + &stop_cb, p); } @@ -209,8 +184,8 @@ stop_arm (struct PeerContext *p) static void shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - stop_arm (&p1); - stop_arm (&p2); + stop_arm (&adv_peer); + stop_arm (&learn_peer); } @@ -221,27 +196,25 @@ run (void *cls, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg) { - GNUNET_assert (ok == 1); - ok++; + failure = GNUNET_NO; sched = s; - timeout_task = GNUNET_SCHEDULER_add_delayed (sched, - TIMEOUT, - &timeout_error, - NULL); + TIMEOUT, + &timeout_error, + NULL); GNUNET_SCHEDULER_add_delayed (sched, - GNUNET_TIME_UNIT_FOREVER_REL, - &shutdown_task, - NULL); - setup_peer (&p1, "learning_peer1.conf"); - setup_peer (&p2, "learning_peer2.conf"); + GNUNET_TIME_UNIT_FOREVER_REL, + &shutdown_task, + NULL); + setup_adv_peer (&adv_peer, "test_learning_adv_peer.conf"); + setup_learn_peer (&learn_peer, "test_learning_learn_peer.conf"); } static int check () { - char *const argv[] = { "test_gnunet_daemon_hostlist_learning", + char *const argv[] = { "test-gnunet-daemon-hostlist", "-c", "learning_data.conf", #if VERBOSE "-L", "DEBUG", @@ -251,23 +224,22 @@ check () struct GNUNET_GETOPT_CommandLineOption options[] = { GNUNET_GETOPT_OPTION_END }; - ok = 1; + failure = GNUNET_NO; GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, - argv, "test_gnunet_daemon_hostlist_learning", - "nohelp", options, &run, &ok); - - return ok; + argv, "test-gnunet-daemon-hostlist", + "nohelp", options, &run, NULL); + return failure; } - int main (int argc, char *argv[]) { int ret; + GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-hostlist-peer-1"); GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-hostlist-peer-2"); - GNUNET_log_setup ("test-gnunet-daemon-hostlist_learning", + GNUNET_log_setup ("test-gnunet-daemon-hostlist", #if VERBOSE "DEBUG", #else diff --git a/src/hostlist/test_learning_adv_peer.conf b/src/hostlist/test_learning_adv_peer.conf new file mode 100644 index 000000000..d77c43ced --- /dev/null +++ b/src/hostlist/test_learning_adv_peer.conf @@ -0,0 +1,46 @@ +[PATHS] +SERVICEHOME = /tmp/test-gnunetd-hostlist-peer-2/ +DEFAULTCONFIG = test_learning_adv_peer.conf + +[resolver] +PORT = 22964 + +[transport] +PORT = 22965 +PLUGINS = tcp +#DEBUG = YES + +[arm] +PORT = 22966 +DEFAULTSERVICES = resolver transport core statistics topology hostlist +#GLOBAL_PREFIX = xterm -e gdb -x cmd --args +#DEBUG=NO + +[statistics] +PORT = 22967 + +[transport-tcp] +PORT = 22968 + +[peerinfo] +PORT = 22969 + +[core] +PORT = 22970 +#DEBUG = YES +#PREFIX = valgrind --tool=memcheck + +[testing] +WEAKRANDOM = YES + +[hostlist] +HTTPPORT = 12981s +SERVERS = http://localhost:12980/ +OPTIONS = -b -p -a +DEBUG = YES +HOSTLISTFILE = hostlists_adv_peer.file +#BINARY = /home/grothoff/bin/gnunet-daemon-hostlist + +[topology] +#DEBUG = YES +#PREFIX = valgrind --tool=memcheck diff --git a/src/hostlist/test_learning_learn_peer.conf b/src/hostlist/test_learning_learn_peer.conf new file mode 100644 index 000000000..09fbc37a4 --- /dev/null +++ b/src/hostlist/test_learning_learn_peer.conf @@ -0,0 +1,46 @@ +[PATHS] +SERVICEHOME = /tmp/test-gnunetd-hostlist-peer-1/ +DEFAULTCONFIG = test_learning_learn_peer.conf +[resolver] +PORT = 12964 + +[transport] +PORT = 12965 +PLUGINS = tcp +#DEBUG = YES + +[arm] +PORT = 12966 +DEFAULTSERVICES = resolver transport core statistics topology hostlist +#GLOBAL_PREFIX = xterm -e gdb -x cmd --args +#DEBUG=NO + +[statistics] +PORT = 12967 + +[transport-tcp] +PORT = 12968 + +[peerinfo] +PORT = 12969 + +[core] +PORT = 12970 +#DEBUG = YES +#PREFIX = valgrind --tool=memcheck + +[testing] +WEAKRANDOM = YES + +[hostlist] +HTTPPORT = 12980 +SERVERS = http://localhost:12981/ +OPTIONS = -b -p -e +DEBUG = YES +HOSTLISTFILE = hostlists_learn_peer.file +#BINARY = /home/grothoff/bin/gnunet-daemon-hostlist + + +[topology] +#DEBUG = YES +#PREFIX = valgrind --tool=memcheck -- 2.25.1