diff options
Diffstat (limited to 'src/fs/test_gnunet_service_fs_migration.c')
-rw-r--r-- | src/fs/test_gnunet_service_fs_migration.c | 137 |
1 files changed, 54 insertions, 83 deletions
diff --git a/src/fs/test_gnunet_service_fs_migration.c b/src/fs/test_gnunet_service_fs_migration.c index 00aab4f..2bc5354 100644 --- a/src/fs/test_gnunet_service_fs_migration.c +++ b/src/fs/test_gnunet_service_fs_migration.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - (C) 2010 Christian Grothoff (and other contributing authors) + (C) 2010, 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 @@ -25,7 +25,7 @@ */ #include "platform.h" #include "fs_test_lib.h" -#include "gnunet_testing_lib.h" +#include "gnunet_testbed_service.h" #define VERBOSE GNUNET_NO @@ -46,13 +46,22 @@ #define SEED 42 -static struct GNUNET_FS_TestDaemon *daemons[2]; +static struct GNUNET_TESTBED_Peer *daemons[2]; static int ok; static struct GNUNET_TIME_Absolute start_time; -static struct GNUNET_FS_TEST_ConnectContext *cc; +static struct GNUNET_TESTBED_Operation *op; + + +struct DownloadContext +{ + char *fn; + + struct GNUNET_FS_Uri *uri; +}; + static void do_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) @@ -60,12 +69,7 @@ do_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) struct GNUNET_TIME_Relative del; char *fancy; - if (NULL != cc) - { - GNUNET_FS_TEST_daemons_connect_cancel (cc); - cc = NULL; - } - GNUNET_FS_TEST_daemons_stop (2, daemons); + GNUNET_SCHEDULER_shutdown (); if (0 == (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT)) { del = GNUNET_TIME_absolute_get_duration (start_time); @@ -89,13 +93,23 @@ do_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) static void -do_download (void *cls, const char *emsg) +do_download (void *cls, + const char *emsg) { - struct GNUNET_FS_Uri *uri = cls; + struct DownloadContext *dc = cls; + struct GNUNET_FS_Uri *uri = dc->uri; - if (emsg != NULL) + GNUNET_TESTBED_operation_done (op); + op = NULL; + if (NULL != dc->fn) + { + GNUNET_DISK_directory_remove (dc->fn); + GNUNET_free (dc->fn); + } + GNUNET_free (dc); + if (NULL != emsg) { - GNUNET_FS_TEST_daemons_stop (2, daemons); + GNUNET_SCHEDULER_shutdown (); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Failed to stop source daemon: %s\n", emsg); GNUNET_FS_uri_destroy (uri); @@ -114,46 +128,47 @@ do_download (void *cls, const char *emsg) static void stop_source_peer (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - struct GNUNET_FS_Uri *uri = cls; - struct GNUNET_TESTING_PeerGroup *pg; + struct DownloadContext *dc = cls; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stopping source peer\n"); - pg = GNUNET_FS_TEST_get_group (daemons); - GNUNET_TESTING_daemons_vary (pg, 1, GNUNET_NO, TIMEOUT, &do_download, uri); + op = GNUNET_TESTBED_peer_stop (daemons[1], &do_download, dc); + GNUNET_assert (NULL != op); } static void -do_wait (void *cls, const struct GNUNET_FS_Uri *uri) +do_wait (void *cls, const struct GNUNET_FS_Uri *uri, + const char *fn) { - struct GNUNET_FS_Uri *d; + struct DownloadContext *dc; if (NULL == uri) { - GNUNET_FS_TEST_daemons_stop (2, daemons); + GNUNET_SCHEDULER_shutdown (); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Timeout during upload attempt, shutting down with error\n"); ok = 1; return; } GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Waiting to allow content to migrate\n"); - d = GNUNET_FS_uri_dup (uri); - (void) GNUNET_SCHEDULER_add_delayed (MIGRATION_DELAY, &stop_source_peer, d); + dc = GNUNET_malloc (sizeof (struct DownloadContext)); + dc->uri = GNUNET_FS_uri_dup (uri); + if (NULL != fn) + dc->fn = GNUNET_strdup (fn); + (void) GNUNET_SCHEDULER_add_delayed (MIGRATION_DELAY, &stop_source_peer, dc); } static void -do_publish (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +do_publish (void *cls, + unsigned int num_peers, + struct GNUNET_TESTBED_Peer **peers) { - cc = NULL; - if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT)) - { - GNUNET_FS_TEST_daemons_stop (2, daemons); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Timeout during connect attempt, shutting down with error\n"); - ok = 1; - return; - } + unsigned int i; + + GNUNET_assert (2 == num_peers); + for (i=0;i<num_peers;i++) + daemons[i] = peers[i]; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing %llu bytes\n", (unsigned long long) FILESIZE); GNUNET_FS_TEST_publish (daemons[1], TIMEOUT, 1, GNUNET_NO, FILESIZE, SEED, @@ -161,59 +176,15 @@ do_publish (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) } -static void -do_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) -{ - if (0 == (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE)) - { - FPRINTF (stderr, "%s", "Daemons failed to start!\n"); - GNUNET_break (0); - ok = 1; - return; - } - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Daemons started, will now try to connect them\n"); - cc = GNUNET_FS_TEST_daemons_connect (daemons[0], daemons[1], TIMEOUT, - &do_publish, NULL); -} - - -static void -run (void *cls, char *const *args, const char *cfgfile, - const struct GNUNET_CONFIGURATION_Handle *cfg) -{ - GNUNET_FS_TEST_daemons_start ("test_gnunet_service_fs_migration_data.conf", - TIMEOUT, 2, daemons, &do_connect, NULL); -} - - int main (int argc, char *argv[]) { - char *const argvx[] = { - "test-gnunet-service-fs-migration", - "-c", - "fs_test_lib_data.conf", -#if VERBOSE - "-L", "DEBUG", -#endif - NULL - }; - struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; - - GNUNET_DISK_directory_remove ("/tmp/test-gnunet-service-fs-migration/"); - GNUNET_log_setup ("test_gnunet_service_fs_migration", -#if VERBOSE - "DEBUG", -#else - "WARNING", -#endif - NULL); - GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1, argvx, - "test-gnunet-service-fs-migration", "nohelp", options, - &run, NULL); + (void) GNUNET_TESTBED_test_run ("test-gnunet-service-fs-migration", + "fs_test_lib_data.conf", + 2, + 0, NULL, NULL, + &do_publish, + NULL); GNUNET_DISK_directory_remove ("/tmp/test-gnunet-service-fs-migration/"); return ok; } |