From 90ddf5bbf052b14d37a218e901ab4d69754f71d9 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 19 Feb 2010 10:42:33 +0000 Subject: test --- src/fs/Makefile.am | 17 +++- src/fs/test_fs_lib_data.conf | 49 ++++++++++++ src/fs/test_gnunet_service_fs_p2p.c | 149 ++++++++++++++++++++++++++++++++++++ 3 files changed, 213 insertions(+), 2 deletions(-) create mode 100644 src/fs/test_fs_lib_data.conf create mode 100644 src/fs/test_gnunet_service_fs_p2p.c (limited to 'src') diff --git a/src/fs/Makefile.am b/src/fs/Makefile.am index 2e994b95a..743d93e14 100644 --- a/src/fs/Makefile.am +++ b/src/fs/Makefile.am @@ -125,7 +125,8 @@ check_PROGRAMS = \ test_fs_search \ test_fs_start_stop \ test_fs_unindex \ - test_fs_uri + test_fs_uri \ + test_gnunet_service_fs_p2p TESTS = \ test_fs_directory \ @@ -136,9 +137,11 @@ TESTS = \ test_fs_search \ test_fs_start_stop \ test_fs_unindex \ - test_fs_uri + test_fs_uri \ + test_gnunet_service_fs_p2p # $(check_PROGRAMS) + test_fs_collection_SOURCES = \ test_fs_collection.c test_fs_collection_LDADD = \ @@ -217,11 +220,21 @@ test_fs_uri_LDADD = \ $(top_builddir)/src/fs/libgnunetfs.la \ $(top_builddir)/src/util/libgnunetutil.la +test_gnunet_service_fs_p2p_SOURCES = \ + test_gnunet_service_fs_p2p.c +test_gnunet_service_fs_p2p_LDADD = \ + $(top_builddir)/src/fs/libgnunetfstest.a \ + $(top_builddir)/src/testing/libgnunettesting.la \ + $(top_builddir)/src/fs/libgnunetfs.la \ + $(top_builddir)/src/util/libgnunetutil.la + + EXTRA_DIST = \ test_fs_data.conf \ test_fs_collection_data.conf \ test_fs_download_data.conf \ test_fs_file_information_data.conf \ + test_fs_lib_data.conf \ test_fs_list_indexed_data.conf \ test_fs_namespace_data.conf \ test_fs_publish_data.conf \ diff --git a/src/fs/test_fs_lib_data.conf b/src/fs/test_fs_lib_data.conf new file mode 100644 index 000000000..b9d11c371 --- /dev/null +++ b/src/fs/test_fs_lib_data.conf @@ -0,0 +1,49 @@ +[PATHS] +SERVICEHOME = /tmp/gnunet-test-fs-lib/ +DEFAULTCONFIG = test_fs_lib_data.conf + +[gnunetd] +HOSTKEY = $SERVICEHOME/.hostkey + +[resolver] +PORT = 43464 +HOSTNAME = localhost + +[transport] +PORT = 43465 +PLUGINS = tcp + +[arm] +PORT = 43466 +HOSTNAME = localhost +DEFAULTSERVICES = resolver datastore transport core fs + +[datastore] +#DEBUG = YES + +[statistics] +PORT = 43467 +HOSTNAME = localhost + +[transport-tcp] +ALLOW_SHUTDOWN = NO +TIMEOUT = 300000 +PORT = 43468 + +[peerinfo] +PORT = 43469 +HOSTNAME = localhost + +[core] +PORT = 43470 +HOSTNAME = localhost + +[fs] +PORT = 43471 +HOSTNAME = localhost +#DEBUG = YES +#PREFIX = valgrind --tool=memcheck --leak-check=yes +#BINARY = /home/grothoff/bin/gnunet-service-fs + +[testing] +WEAKRANDOM = YES diff --git a/src/fs/test_gnunet_service_fs_p2p.c b/src/fs/test_gnunet_service_fs_p2p.c new file mode 100644 index 000000000..d36088d2b --- /dev/null +++ b/src/fs/test_gnunet_service_fs_p2p.c @@ -0,0 +1,149 @@ +/* + This file is part of GNUnet. + (C) 2010 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 2, 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 fs/test_gnunet_service_fs_p2p.c + * @brief test P2P routing using simple publish + download operation + * @author Christian Grothoff + */ +#include "platform.h" +#include "test_fs_lib.h" + +#define VERBOSE GNUNET_NO + +/** + * File-size we use for testing. + */ +#define FILESIZE (1024 * 1024 * 2) + +/** + * How long until we give up on transmitting the message? + */ +#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60) + +#define NUM_DAEMONS 2 + +#define SEED 42 + +static struct GNUNET_FS_TestDaemon *daemons[NUM_DAEMONS]; + +static struct GNUNET_SCHEDULER_Handle *sched; + + +static void +do_stop (void *cls, + const struct GNUNET_SCHEDULER_TaskContext *tc) +{ + GNUNET_assert (0 != (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE)); + GNUNET_FS_TEST_daemons_stop (sched, + NUM_DAEMONS, + daemons); +} + + +static void +do_download (void *cls, + const struct GNUNET_FS_Uri *uri) +{ + GNUNET_assert (NULL != uri); + GNUNET_FS_TEST_download (sched, + daemons[1], + TIMEOUT, + 1, SEED, uri, + VERBOSE, + &do_stop, NULL); +} + + +static void +do_publish (void *cls, + const struct GNUNET_SCHEDULER_TaskContext *tc) +{ + GNUNET_assert (0 != (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE)); + GNUNET_FS_TEST_publish (sched, + daemons[1], + TIMEOUT, + 1, GNUNET_NO, FILESIZE, SEED, + VERBOSE, + &do_download, NULL); +} + + +static void +do_connect (void *cls, + const struct GNUNET_SCHEDULER_TaskContext *tc) +{ + GNUNET_assert (0 != (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE)); + GNUNET_FS_TEST_daemons_connect (sched, + daemons[1], + daemons[2], + TIMEOUT, + &do_publish, + NULL); +} + + +static void +run (void *cls, + struct GNUNET_SCHEDULER_Handle *s, + char *const *args, + const char *cfgfile, + const struct GNUNET_CONFIGURATION_Handle *cfg) +{ + sched = s; + GNUNET_FS_TEST_daemons_start (sched, + TIMEOUT, + NUM_DAEMONS, + daemons, + &do_connect, + NULL); +} + + +int +main (int argc, char *argv[]) +{ + char *const argvx[] = { + "test-gnunet-service-fs-p2p", + "-c", + "test_fs_lib_data.conf", +#if VERBOSE + "-L", "DEBUG", +#endif + NULL + }; + struct GNUNET_GETOPT_CommandLineOption options[] = { + GNUNET_GETOPT_OPTION_END + }; + + GNUNET_log_setup ("test_gnunet_service_fs_p2p", +#if VERBOSE + "DEBUG", +#else + "WARNING", +#endif + NULL); + GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1, + argvx, "test-gnunet-service-fs-p2p", + "nohelp", options, &run, NULL); + return 0; +} + +/* end of test_gnunet_service_fs_p2p.c */ -- cgit v1.2.3