From b1055e6385d821fa7d328f2b4d63209a41e6167d Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 14 Jun 2012 17:34:48 +0000 Subject: [PATCH] -cleaning up fs-download testcases --- src/fs/Makefile.am | 3 + src/fs/test_fs_download.c | 146 +++------- src/fs/test_fs_download_indexed.c | 114 ++------ src/fs/test_fs_download_persistence.c | 115 ++------ src/fs/test_fs_download_recursive.c | 375 -------------------------- 5 files changed, 86 insertions(+), 667 deletions(-) delete mode 100644 src/fs/test_fs_download_recursive.c diff --git a/src/fs/Makefile.am b/src/fs/Makefile.am index c88427d83..2c5c545c2 100644 --- a/src/fs/Makefile.am +++ b/src/fs/Makefile.am @@ -274,18 +274,21 @@ test_fs_directory_LDADD = \ test_fs_download_SOURCES = \ test_fs_download.c test_fs_download_LDADD = \ + $(top_builddir)/src/testing/libgnunettesting.la \ $(top_builddir)/src/fs/libgnunetfs.la \ $(top_builddir)/src/util/libgnunetutil.la test_fs_download_indexed_SOURCES = \ test_fs_download_indexed.c test_fs_download_indexed_LDADD = \ + $(top_builddir)/src/testing/libgnunettesting.la \ $(top_builddir)/src/fs/libgnunetfs.la \ $(top_builddir)/src/util/libgnunetutil.la test_fs_download_persistence_SOURCES = \ test_fs_download_persistence.c test_fs_download_persistence_LDADD = \ + $(top_builddir)/src/testing/libgnunettesting.la \ $(top_builddir)/src/fs/libgnunetfs.la \ $(top_builddir)/src/util/libgnunetutil.la diff --git a/src/fs/test_fs_download.c b/src/fs/test_fs_download.c index 278197478..31be61903 100644 --- a/src/fs/test_fs_download.c +++ b/src/fs/test_fs_download.c @@ -28,12 +28,9 @@ #include "gnunet_util_lib.h" #include "gnunet_arm_service.h" #include "gnunet_fs_service.h" +#include "gnunet_testing_lib-new.h" #include -#define VERBOSE GNUNET_NO - -#define START_ARM GNUNET_YES - /** * File-size we use for testing. */ @@ -49,15 +46,6 @@ */ #define LIFETIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 15) -struct PeerContext -{ - struct GNUNET_CONFIGURATION_Handle *cfg; -#if START_ARM - struct GNUNET_OS_Process *arm_proc; -#endif -}; - -static struct PeerContext p1; static struct GNUNET_TIME_Absolute start; @@ -73,15 +61,16 @@ static char *fn; static int err; + static void timeout_kill_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - if (download != NULL) + if (NULL != download) { GNUNET_FS_download_stop (download, GNUNET_YES); download = NULL; } - else if (publish != NULL) + else if (NULL != publish) { GNUNET_FS_publish_stop (publish); publish = NULL; @@ -91,16 +80,18 @@ timeout_kill_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) err = 1; } + static void abort_publish_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - if (publish != NULL) + if (NULL != publish) { GNUNET_FS_publish_stop (publish); publish = NULL; } } + static void stop_fs_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { @@ -108,12 +99,13 @@ stop_fs_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) fs = NULL; } + static void abort_download_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { uint64_t size; - if (download != NULL) + if (NULL != download) { GNUNET_FS_download_stop (download, GNUNET_YES); download = NULL; @@ -135,21 +127,21 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) switch (event->status) { case GNUNET_FS_STATUS_PUBLISH_PROGRESS: -#if VERBOSE - printf ("Publish is progressing (%llu/%llu at level %u off %llu)...\n", - (unsigned long long) event->value.publish.completed, - (unsigned long long) event->value.publish.size, - event->value.publish.specifics.progress.depth, - (unsigned long long) event->value.publish.specifics. - progress.offset); -#endif + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Publish is progressing (%llu/%llu at level %u off %llu)...\n", + (unsigned long long) event->value.publish.completed, + (unsigned long long) event->value.publish.size, + event->value.publish.specifics.progress.depth, + (unsigned long long) event->value.publish.specifics. + progress.offset); break; case GNUNET_FS_STATUS_PUBLISH_COMPLETED: - printf ("Publishing complete, %llu kb/s.\n", - (unsigned long long) (FILESIZE * 1000LL / - (1 + - GNUNET_TIME_absolute_get_duration - (start).rel_value) / 1024LL)); + fprintf (stdout, + "Publishing complete, %llu kb/s.\n", + (unsigned long long) (FILESIZE * 1000LL / + (1 + + GNUNET_TIME_absolute_get_duration + (start).rel_value) / 1024LL)); GAUGER ("FS", "Publishing speed (insertion)", (unsigned long long) (FILESIZE * 1000LL / (1 + @@ -166,11 +158,12 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) GNUNET_assert (download != NULL); break; case GNUNET_FS_STATUS_DOWNLOAD_COMPLETED: - printf ("Download complete, %llu kb/s.\n", - (unsigned long long) (FILESIZE * 1000LL / - (1 + - GNUNET_TIME_absolute_get_duration - (start).rel_value) / 1024LL)); + fprintf (stdout, + "Download complete, %llu kb/s.\n", + (unsigned long long) (FILESIZE * 1000LL / + (1 + + GNUNET_TIME_absolute_get_duration + (start).rel_value) / 1024LL)); GAUGER ("FS", "Local download speed (inserted)", (unsigned long long) (FILESIZE * 1000LL / (1 + @@ -180,14 +173,13 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) break; case GNUNET_FS_STATUS_DOWNLOAD_PROGRESS: GNUNET_assert (download == event->value.download.dc); -#if VERBOSE - printf ("Download is progressing (%llu/%llu at level %u off %llu)...\n", - (unsigned long long) event->value.download.completed, - (unsigned long long) event->value.download.size, - event->value.download.specifics.progress.depth, - (unsigned long long) event->value.download.specifics. - progress.offset); -#endif + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Download is progressing (%llu/%llu at level %u off %llu)...\n", + (unsigned long long) event->value.download.completed, + (unsigned long long) event->value.download.size, + event->value.download.specifics.progress.depth, + (unsigned long long) event->value.download.specifics. + progress.offset); break; case GNUNET_FS_STATUS_PUBLISH_ERROR: FPRINTF (stderr, "Error publishing file: %s\n", @@ -240,44 +232,7 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) static void -setup_peer (struct PeerContext *p, const char *cfgname) -{ - p->cfg = GNUNET_CONFIGURATION_create (); -#if START_ARM - p->arm_proc = - GNUNET_OS_start_process (GNUNET_YES, 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)); -} - - -static void -stop_arm (struct PeerContext *p) -{ -#if START_ARM - if (NULL != p->arm_proc) - { - if (0 != GNUNET_OS_process_kill (p->arm_proc, SIGTERM)) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); - if (GNUNET_OS_process_wait (p->arm_proc) != GNUNET_OK) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "waitpid"); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ARM process %u stopped\n", - GNUNET_OS_process_get_pid (p->arm_proc)); - GNUNET_OS_process_destroy (p->arm_proc); - p->arm_proc = NULL; - } -#endif - GNUNET_CONFIGURATION_destroy (p->cfg); -} - - -static void -run (void *cls, char *const *args, const char *cfgfile, +run (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg) { const char *keywords[] = { @@ -291,7 +246,6 @@ run (void *cls, char *const *args, const char *cfgfile, size_t i; struct GNUNET_FS_BlockOptions bo; - setup_peer (&p1, "test_fs_download_data.conf"); fs = GNUNET_FS_start (cfg, "test-fs-download", &progress_cb, NULL, GNUNET_FS_FLAGS_NONE, GNUNET_FS_OPTIONS_END); GNUNET_assert (NULL != fs); @@ -323,30 +277,10 @@ run (void *cls, char *const *args, const char *cfgfile, int main (int argc, char *argv[]) { - char *const argvx[] = { - "test-fs-download", - "-c", - "test_fs_download_data.conf", -#if VERBOSE - "-L", "DEBUG", -#endif - NULL - }; - struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; - - GNUNET_log_setup ("test_fs_download", -#if VERBOSE - "DEBUG", -#else - "WARNING", -#endif - NULL); - GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1, argvx, - "test-fs-download", "nohelp", options, &run, NULL); - stop_arm (&p1); - GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-download/"); + if (0 != GNUNET_TESTING_peer_run ("test-fs-download", + "test_fs_download_data.conf", + &run, NULL)) + return 1; return err; } diff --git a/src/fs/test_fs_download_indexed.c b/src/fs/test_fs_download_indexed.c index d16aa97f1..eac683ab9 100644 --- a/src/fs/test_fs_download_indexed.c +++ b/src/fs/test_fs_download_indexed.c @@ -23,16 +23,13 @@ * @brief simple testcase for downloading of indexed file * @author Christian Grothoff */ - #include "platform.h" #include "gnunet_util_lib.h" #include "gnunet_arm_service.h" #include "gnunet_fs_service.h" +#include "gnunet_testing_lib-new.h" #include -#define VERBOSE GNUNET_NO - -#define START_ARM GNUNET_YES /** * File-size we use for testing. @@ -49,15 +46,6 @@ */ #define LIFETIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 15) -struct PeerContext -{ - struct GNUNET_CONFIGURATION_Handle *cfg; -#if START_ARM - struct GNUNET_OS_Process *arm_proc; -#endif -}; - -static struct PeerContext p1; static struct GNUNET_TIME_Absolute start; @@ -94,6 +82,7 @@ timeout_kill_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) err = 1; } + static void abort_publish_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { @@ -140,14 +129,13 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) switch (event->status) { case GNUNET_FS_STATUS_PUBLISH_PROGRESS: -#if VERBOSE - printf ("Publish is progressing (%llu/%llu at level %u off %llu)...\n", - (unsigned long long) event->value.publish.completed, - (unsigned long long) event->value.publish.size, - event->value.publish.specifics.progress.depth, - (unsigned long long) event->value.publish.specifics. - progress.offset); -#endif + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Publish is progressing (%llu/%llu at level %u off %llu)...\n", + (unsigned long long) event->value.publish.completed, + (unsigned long long) event->value.publish.size, + event->value.publish.specifics.progress.depth, + (unsigned long long) event->value.publish.specifics. + progress.offset); break; case GNUNET_FS_STATUS_PUBLISH_COMPLETED: printf ("Publishing complete, %llu kbps.\n", @@ -185,14 +173,13 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) break; case GNUNET_FS_STATUS_DOWNLOAD_PROGRESS: GNUNET_assert (download == event->value.download.dc); -#if VERBOSE - printf ("Download is progressing (%llu/%llu at level %u off %llu)...\n", - (unsigned long long) event->value.download.completed, - (unsigned long long) event->value.download.size, - event->value.download.specifics.progress.depth, - (unsigned long long) event->value.download.specifics. - progress.offset); -#endif + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Download is progressing (%llu/%llu at level %u off %llu)...\n", + (unsigned long long) event->value.download.completed, + (unsigned long long) event->value.download.size, + event->value.download.specifics.progress.depth, + (unsigned long long) event->value.download.specifics. + progress.offset); break; case GNUNET_FS_STATUS_PUBLISH_ERROR: FPRINTF (stderr, "Error publishing file: %s\n", @@ -245,41 +232,7 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) static void -setup_peer (struct PeerContext *p, const char *cfgname) -{ - p->cfg = GNUNET_CONFIGURATION_create (); -#if START_ARM - p->arm_proc = - GNUNET_OS_start_process (GNUNET_YES, NULL, NULL, "gnunet-service-arm", - "gnunet-service-arm", - "-c", cfgname, NULL); -#endif - GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_load (p->cfg, cfgname)); -} - - -static void -stop_arm (struct PeerContext *p) -{ -#if START_ARM - if (NULL != p->arm_proc) - { - if (0 != GNUNET_OS_process_kill (p->arm_proc, SIGTERM)) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); - if (GNUNET_OS_process_wait (p->arm_proc) != GNUNET_OK) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "waitpid"); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ARM process %u stopped\n", - GNUNET_OS_process_get_pid (p->arm_proc)); - GNUNET_OS_process_destroy (p->arm_proc); - p->arm_proc = NULL; - } -#endif - GNUNET_CONFIGURATION_destroy (p->cfg); -} - - -static void -run (void *cls, char *const *args, const char *cfgfile, +run (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg) { const char *keywords[] = { @@ -293,7 +246,6 @@ run (void *cls, char *const *args, const char *cfgfile, struct GNUNET_FS_BlockOptions bo; size_t i; - setup_peer (&p1, "test_fs_download_data.conf"); fs = GNUNET_FS_start (cfg, "test-fs-download-indexed", &progress_cb, NULL, GNUNET_FS_FLAGS_NONE, GNUNET_FS_OPTIONS_END); GNUNET_assert (NULL != fs); @@ -332,34 +284,10 @@ run (void *cls, char *const *args, const char *cfgfile, int main (int argc, char *argv[]) { - char *const argvx[] = { - "test-fs-download-indexed", - "-c", - "test_fs_download_data.conf", - NULL - }; - struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; - - GNUNET_log_setup ("test_fs_download_indexed", - "WARNING", - NULL); - GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1, argvx, - "test-fs-download-indexed", "nohelp", options, &run, - NULL); - stop_arm (&p1); - if (fn1 != NULL) - { - GNUNET_DISK_directory_remove (fn1); - GNUNET_free (fn1); - } - if (fn != NULL) - { - GNUNET_DISK_directory_remove (fn); - GNUNET_free (fn); - } - GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-download/"); + if (0 != GNUNET_TESTING_peer_run ("test-fs-download-indexed", + "test_fs_download_data.conf", + &run, NULL)) + return 1; return err; } diff --git a/src/fs/test_fs_download_persistence.c b/src/fs/test_fs_download_persistence.c index ba776dd03..bb3bc84c9 100644 --- a/src/fs/test_fs_download_persistence.c +++ b/src/fs/test_fs_download_persistence.c @@ -27,12 +27,9 @@ #include "platform.h" #include "gnunet_util_lib.h" #include "gnunet_arm_service.h" +#include "gnunet_testing_lib-new.h" #include "gnunet_fs_service.h" -#define VERBOSE GNUNET_NO - -#define START_ARM GNUNET_YES - /** * File-size we use for testing. */ @@ -48,15 +45,6 @@ */ #define LIFETIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 15) -struct PeerContext -{ - struct GNUNET_CONFIGURATION_Handle *cfg; -#if START_ARM - struct GNUNET_OS_Process *arm_proc; -#endif -}; - -static struct PeerContext p1; static struct GNUNET_TIME_Absolute start; @@ -74,6 +62,7 @@ static char *fn; static int err; + static void timeout_kill_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { @@ -92,6 +81,7 @@ timeout_kill_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) err = 1; } + static void abort_publish_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { @@ -166,14 +156,13 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) switch (event->status) { case GNUNET_FS_STATUS_PUBLISH_PROGRESS: -#if VERBOSE - printf ("Publish is progressing (%llu/%llu at level %u off %llu)...\n", - (unsigned long long) event->value.publish.completed, - (unsigned long long) event->value.publish.size, - event->value.publish.specifics.progress.depth, - (unsigned long long) event->value.publish.specifics. - progress.offset); -#endif + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Publish is progressing (%llu/%llu at level %u off %llu)...\n", + (unsigned long long) event->value.publish.completed, + (unsigned long long) event->value.publish.size, + event->value.publish.specifics.progress.depth, + (unsigned long long) event->value.publish.specifics. + progress.offset); break; case GNUNET_FS_STATUS_PUBLISH_COMPLETED: printf ("Publishing complete, %llu kbps.\n", @@ -201,14 +190,13 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) case GNUNET_FS_STATUS_DOWNLOAD_PROGRESS: consider_restart (event->status); GNUNET_assert (download == event->value.download.dc); -#if VERBOSE - printf ("Download is progressing (%llu/%llu at level %u off %llu)...\n", - (unsigned long long) event->value.download.completed, - (unsigned long long) event->value.download.size, - event->value.download.specifics.progress.depth, - (unsigned long long) event->value.download.specifics. - progress.offset); -#endif + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Download is progressing (%llu/%llu at level %u off %llu)...\n", + (unsigned long long) event->value.download.completed, + (unsigned long long) event->value.download.size, + event->value.download.specifics.progress.depth, + (unsigned long long) event->value.download.specifics. + progress.offset); break; case GNUNET_FS_STATUS_PUBLISH_ERROR: FPRINTF (stderr, "Error publishing file: %s\n", @@ -290,44 +278,7 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) static void -setup_peer (struct PeerContext *p, const char *cfgname) -{ - p->cfg = GNUNET_CONFIGURATION_create (); -#if START_ARM - p->arm_proc = - GNUNET_OS_start_process (GNUNET_YES, 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)); -} - - -static void -stop_arm (struct PeerContext *p) -{ -#if START_ARM - if (NULL != p->arm_proc) - { - if (0 != GNUNET_OS_process_kill (p->arm_proc, SIGTERM)) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); - if (GNUNET_OS_process_wait (p->arm_proc) != GNUNET_OK) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "waitpid"); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ARM process %u stopped\n", - GNUNET_OS_process_get_pid (p->arm_proc)); - GNUNET_OS_process_destroy (p->arm_proc); - p->arm_proc = NULL; - } -#endif - GNUNET_CONFIGURATION_destroy (p->cfg); -} - - -static void -run (void *cls, char *const *args, const char *cfgfile, +run (void *cls, const struct GNUNET_CONFIGURATION_Handle *c) { const char *keywords[] = { @@ -342,7 +293,6 @@ run (void *cls, char *const *args, const char *cfgfile, struct GNUNET_FS_BlockOptions bo; cfg = c; - setup_peer (&p1, "test_fs_download_data.conf"); fs = GNUNET_FS_start (cfg, "test-fs-download-persistence", &progress_cb, NULL, GNUNET_FS_FLAGS_PERSISTENCE, GNUNET_FS_OPTIONS_END); GNUNET_assert (NULL != fs); @@ -374,31 +324,10 @@ run (void *cls, char *const *args, const char *cfgfile, int main (int argc, char *argv[]) { - char *const argvx[] = { - "test-fs-download-persistence", - "-c", - "test_fs_download_data.conf", -#if VERBOSE - "-L", "DEBUG", -#endif - NULL - }; - struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; - GNUNET_log_setup ("test_fs_download_persistence", -#if VERBOSE - "DEBUG", -#else - "WARNING", -#endif - NULL); - GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-download/"); - GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1, argvx, - "test-fs-download-persistence", "nohelp", options, &run, - NULL); - stop_arm (&p1); - GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-download/"); + if (0 != GNUNET_TESTING_peer_run ("test-fs-download-persistence", + "test_fs_download_data.conf", + &run, NULL)) + return 1; return err; } diff --git a/src/fs/test_fs_download_recursive.c b/src/fs/test_fs_download_recursive.c deleted file mode 100644 index bcbfe2b2a..000000000 --- a/src/fs/test_fs_download_recursive.c +++ /dev/null @@ -1,375 +0,0 @@ -/* - This file is part of GNUnet. - (C) 2004, 2005, 2006, 2008 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 - 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 - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -/** - * @file applications/fs/fsui/recursive_download_test.c - * @brief testcase for fsui recursive upload-download - * @author Christian Grothoff - * @author Heikki Lindholm - */ - -#include "platform.h" -#include "gnunet_util.h" -#include "gnunet_fsui_lib.h" - -#define DEBUG_VERBOSE GNUNET_NO - -#define CHECK(a) if (!(a)) { ok = GNUNET_NO; GNUNET_GE_BREAK(ectx, 0); goto FAILURE; } - -#define FILESIZE (1024 * 1024 * 2) -/* depth-first directory tree d=dir f=file .=end of level*/ -#define DIRECTORY_TREE_SPEC "dddf.f.d" - -static struct GNUNET_GE_Context *ectx; - -static int download_done; - -static char * -makeName (unsigned int i) -{ - char *fn; - - fn = GNUNET_malloc (strlen - ("/tmp/gnunet-fsui-recursive_download_test/FSUITEST") + - 15); - GNUNET_snprintf (fn, - strlen ("/tmp/gnunet-fsui-recursive_download_test/FSUITEST") - + 15, "/tmp/gnunet-fsui-recursive_download_test/FSUITEST%u/", - i); - return fn; -} - -static int -makeHierarchyHelper (const char *current, const char *tree, int index, - int check) -{ - unsigned int fi, i; - int done; - char *s, *buf; - - fi = 0; - done = 0; - while (!done && tree[index] != '\0') - { - s = GNUNET_malloc (strlen (current) + strlen (DIR_SEPARATOR_STR) + 14); - GNUNET_snprintf (s, strlen (current) + strlen (DIR_SEPARATOR_STR) + 14, - "%s%s%u", current, DIR_SEPARATOR_STR, fi); - switch (tree[index++]) - { - case 'd': - if (check) - { - if (GNUNET_disk_directory_test (NULL, s) == GNUNET_NO) - { - index = -1; - done = 1; - } - } - else - { - GNUNET_disk_directory_create (NULL, s); - } - if (!done) - index = makeHierarchyHelper (s, tree, index, check); - break; - case 'f': - if (check) - { - /* TODO: compare file contents */ - if (GNUNET_disk_directory_test (NULL, s) != GNUNET_NO) - { - index = -1; - done = 1; - } - } - else - { - buf = GNUNET_malloc (FILESIZE); - for (i = 0; i < FILESIZE; i++) - buf[i] = GNUNET_random_u32 (GNUNET_RANDOM_QUALITY_WEAK, 256); - GNUNET_disk_file_write (ectx, s, buf, FILESIZE, "600"); - GNUNET_free (buf); - } - break; - case '.': - done = 1; - break; - default: - break; - } - GNUNET_free (s); - fi++; - } - return index; -} - -static char * -makeHierarchy (unsigned int i, const char *tree) -{ - char *fn; - - fn = makeName (i); - makeHierarchyHelper (fn, tree, 0, 0); - return fn; -} - -static int -checkHierarchy (unsigned int i, const char *tree) -{ - char *fn; - int res; - - fn = makeName (i); - if (GNUNET_disk_directory_test (NULL, fn) != GNUNET_YES) - { - GNUNET_free (fn); - return GNUNET_SYSERR; - } - res = - ((makeHierarchyHelper (fn, tree, 0, 1) == - -1) ? GNUNET_SYSERR : GNUNET_OK); - GNUNET_free (fn); - return res; -} - - -static enum GNUNET_FSUI_EventType lastEvent; -static enum GNUNET_FSUI_EventType waitForEvent; -static struct GNUNET_FSUI_Context *ctx; -static struct GNUNET_ECRS_URI *upURI; -static struct GNUNET_FSUI_DownloadList *download; - -static void * -eventCallback (void *cls, const GNUNET_FSUI_Event * event) -{ - switch (event->type) - { - case GNUNET_FSUI_download_suspended: - download = NULL; - break; - case GNUNET_FSUI_download_resumed: - download = event->data.DownloadResumed.dc.pos; - break; - break; - case GNUNET_FSUI_upload_progress: -#if DEBUG_VERBOSE > 1 - printf ("Upload is progressing (%llu/%llu)...\n", - event->data.UploadProgress.completed, - event->data.UploadProgress.total); -#endif - break; - case GNUNET_FSUI_upload_completed: - upURI = GNUNET_ECRS_uri_duplicate (event->data.UploadCompleted.uri); -#if DEBUG_VERBOSE - printf ("Upload of `%s' complete.\n", event->data.UploadCompleted.filename); -#endif - break; - case GNUNET_FSUI_download_completed: -#if DEBUG_VERBOSE - printf ("Download of `%s' complete.\n", - event->data.DownloadCompleted.filename); -#endif - if (checkHierarchy (43, DIRECTORY_TREE_SPEC) == GNUNET_OK) - download_done = 1; -#if DEBUG_VERBOSE - else - printf ("Hierarchy check not successful yet...\n"); -#endif - break; - case GNUNET_FSUI_download_progress: -#if DEBUG_VERBOSE > 1 - printf ("Download is progressing (%llu/%llu)...\n", - event->data.DownloadProgress.completed, - event->data.DownloadProgress.total); -#endif - break; - case GNUNET_FSUI_unindex_progress: -#if DEBUG_VERBOSE > 1 - printf ("Unindex is progressing (%llu/%llu)...\n", - event->data.UnindexProgress.completed, - event->data.UnindexProgress.total); -#endif - break; - case GNUNET_FSUI_unindex_completed: -#if DEBUG_VERBOSE - printf ("Unindex complete.\n"); -#endif - break; - case GNUNET_FSUI_unindex_error: - FPRINTF (stderr, "Error unindexing: %s\n", - event->data.UnindexError.message); - break; - case GNUNET_FSUI_upload_error: - FPRINTF (stderr, "Error uploading: %s\n", event->data.UploadError.message); - break; - case GNUNET_FSUI_download_error: - FPRINTF (stderr, "Error downloading: %s\n", - event->data.DownloadError.message); - break; - case GNUNET_FSUI_download_aborted: -#if DEBUG_VERBOSE - printf ("Received download aborted event.\n"); -#endif - break; - case GNUNET_FSUI_unindex_suspended: - case GNUNET_FSUI_upload_suspended: - case GNUNET_FSUI_upload_started: - case GNUNET_FSUI_upload_stopped: - case GNUNET_FSUI_download_started: - case GNUNET_FSUI_download_stopped: - case GNUNET_FSUI_unindex_started: - case GNUNET_FSUI_unindex_stopped: - break; - default: - printf ("Unexpected event: %d\n", event->type); - break; - } - if (lastEvent == waitForEvent) - return NULL; /* ignore all other events */ - lastEvent = event->type; - return NULL; -} - - -#define START_DAEMON 1 - -int -main (int argc, char *argv[]) -{ -#if START_DAEMON - struct GNUNET_OS_Process *daemon; -#endif - int ok; - char *fn = NULL; - char *fn43 = NULL; - - char *keywords[] = { - "down_foo", - "down_bar", - }; - int prog; - struct GNUNET_MetaData *meta = NULL; - struct GNUNET_ECRS_URI *kuri = NULL; - struct GNUNET_GC_Configuration *cfg; - struct GNUNET_FSUI_UploadList *upload = NULL; - - ok = GNUNET_YES; - cfg = GNUNET_GC_create (); - if (-1 == GNUNET_GC_parse_configuration (cfg, "check.conf")) - { - GNUNET_GC_free (cfg); - return -1; - } - FPRINTF (stderr, "%s", "Setup...\n"); -#if START_DAEMON - GNUNET_disk_directory_remove (NULL, - "/tmp/gnunet-fsui-recursive_download_test/"); - daemon = GNUNET_daemon_start (NULL, cfg, "peer.conf", GNUNET_NO); - GNUNET_GE_ASSERT (NULL, daemon != NULL); - CHECK (GNUNET_OK == - GNUNET_wait_for_daemon_running (NULL, cfg, 30 * GNUNET_CRON_SECONDS)); - GNUNET_thread_sleep (5 * GNUNET_CRON_SECONDS); /* give apps time to start */ - /* ACTUAL TEST CODE */ -#endif - ctx = - GNUNET_FSUI_start (NULL, cfg, "fsuirecursive_download_test", 32, - GNUNET_YES, &eventCallback, NULL); - CHECK (ctx != NULL); - fn = makeHierarchy (42, DIRECTORY_TREE_SPEC); - meta = GNUNET_meta_data_create (); - kuri = - GNUNET_ECRS_keyword_command_line_to_uri (ectx, 2, - (const char **) keywords); - FPRINTF (stderr, "%s", "Uploading...\n"); - waitForEvent = GNUNET_FSUI_upload_completed; - upload = - GNUNET_FSUI_upload_start (ctx, fn, - (GNUNET_FSUI_DirectoryScanCallback) & - GNUNET_disk_directory_scan, NULL, 0, 0, - GNUNET_YES, GNUNET_NO, GNUNET_NO, - GNUNET_get_time () + 5 * GNUNET_CRON_HOURS, - meta, kuri, kuri); - CHECK (upload != NULL); - GNUNET_ECRS_uri_destroy (kuri); - kuri = NULL; - prog = 0; - while (lastEvent != GNUNET_FSUI_upload_completed) - { - prog++; - CHECK (prog < 5000); - GNUNET_thread_sleep (50 * GNUNET_CRON_MILLISECONDS); - if (GNUNET_shutdown_test () == GNUNET_YES) - break; - } - GNUNET_FSUI_upload_stop (upload); - upload = NULL; - CHECK (upURI != NULL); - - FPRINTF (stderr, "%s", "Downloading...\n"); - waitForEvent = GNUNET_FSUI_download_completed; - fn43 = makeName (43); - download = - GNUNET_FSUI_download_start (ctx, 0, GNUNET_YES, upURI, meta, fn43, NULL, - NULL); - CHECK (download != NULL); - GNUNET_free (fn43); - fn43 = NULL; - prog = 0; - while (!download_done) - { - prog++; - CHECK (prog < 5000); - GNUNET_thread_sleep (50 * GNUNET_CRON_MILLISECONDS); - if (GNUNET_shutdown_test () == GNUNET_YES) - break; - } -FAILURE: - FPRINTF (stderr, "%s", "Cleanup...\n"); - if (meta != NULL) - GNUNET_meta_data_destroy (meta); - if (ctx != NULL) - { - if (download != NULL) - GNUNET_FSUI_download_stop (download); - GNUNET_FSUI_stop (ctx); - } - if (fn != NULL) - { - GNUNET_disk_directory_remove (NULL, fn); - GNUNET_free (fn); - } - if (kuri != NULL) - GNUNET_ECRS_uri_destroy (kuri); - fn43 = makeName (43); - GNUNET_disk_directory_remove (NULL, fn43); - GNUNET_free (fn43); - if (upURI != NULL) - GNUNET_ECRS_uri_destroy (upURI); - -#if START_DAEMON - GNUNET_GE_BREAK (NULL, GNUNET_OK == GNUNET_daemon_stop (NULL, daemon)); - GNUNET_OS_process_destroy (daemon); - daemon = NULL; -#endif - GNUNET_GC_free (cfg); - return (ok == GNUNET_YES) ? 0 : 1; -} - -/* end of recursive_download_test.c */ -- 2.25.1