diff options
-rw-r--r-- | src/fs/Makefile.am | 11 | ||||
-rw-r--r-- | src/fs/fs.conf.in | 4 | ||||
-rw-r--r-- | src/fs/fs_test_lib_data.conf | 2 | ||||
-rw-r--r-- | src/fs/gnunet-service-fs.c | 17 | ||||
-rw-r--r-- | src/fs/perf_gnunet_service_fs_p2p.c | 42 | ||||
-rw-r--r-- | src/fs/test_gnunet_service_fs_migration.c | 35 | ||||
-rw-r--r-- | src/fs/test_gnunet_service_fs_p2p.c | 61 | ||||
-rw-r--r-- | src/fs/test_gnunet_service_fs_p2p_stream.conf | 15 |
8 files changed, 87 insertions, 100 deletions
diff --git a/src/fs/Makefile.am b/src/fs/Makefile.am index 2164f9c6cf..2ccb55e499 100644 --- a/src/fs/Makefile.am +++ b/src/fs/Makefile.am @@ -235,6 +235,7 @@ check_PROGRAMS = \ test_fs_uri \ test_gnunet_service_fs_migration \ test_gnunet_service_fs_p2p \ + test_gnunet_service_fs_p2p_stream \ $(FS_BENCHMARKS) test_plugin_block_fs_SOURCES = \ @@ -279,6 +280,7 @@ TESTS = \ test_fs_test_lib \ test_gnunet_service_fs_migration \ test_gnunet_service_fs_p2p \ + test_gnunet_service_fs_p2p_stream \ perf_gnunet_service_fs_p2p \ perf_gnunet_service_fs_p2p_index \ perf_gnunet_service_fs_p2p_respect \ @@ -433,6 +435,14 @@ test_gnunet_service_fs_p2p_LDADD = \ $(top_builddir)/src/fs/libgnunetfs.la \ $(top_builddir)/src/util/libgnunetutil.la +test_gnunet_service_fs_p2p_stream_SOURCES = \ + test_gnunet_service_fs_p2p.c +test_gnunet_service_fs_p2p_stream_LDADD = \ + $(top_builddir)/src/fs/libgnunetfstest.a \ + $(top_builddir)/src/testbed/libgnunettestbed.la \ + $(top_builddir)/src/fs/libgnunetfs.la \ + $(top_builddir)/src/util/libgnunetutil.la + test_gnunet_service_fs_migration_SOURCES = \ test_gnunet_service_fs_migration.c test_gnunet_service_fs_migration_LDADD = \ @@ -513,6 +523,7 @@ EXTRA_DIST = \ test_fs_unindex_data.conf \ test_fs_uri_data.conf \ test_gnunet_service_fs_migration_data.conf \ + test_gnunet_service_fs_p2p_stream.conf \ test_gnunet_fs_idx_data.conf \ test_gnunet_fs_ns_data.conf \ test_gnunet_fs_psd_data.conf \ diff --git a/src/fs/fs.conf.in b/src/fs/fs.conf.in index e134659b09..ceb0a9ea20 100644 --- a/src/fs/fs.conf.in +++ b/src/fs/fs.conf.in @@ -50,6 +50,10 @@ EXPECTED_NEIGHBOUR_COUNT = 128 # Enable monkey? # PREFIX = @MONKEYPREFIX@ +# Disable anonymous file-sharing (but keep non-anonymous transfers)? +# This option is mostly for testing. +DISABLE_ANON_TRANSFER = NO + [gnunet-auto-share] BINARY = gnunet-auto-share diff --git a/src/fs/fs_test_lib_data.conf b/src/fs/fs_test_lib_data.conf index e6c2abd3a7..c846068a78 100644 --- a/src/fs/fs_test_lib_data.conf +++ b/src/fs/fs_test_lib_data.conf @@ -9,3 +9,5 @@ WAN_QUOTA_OUT = 3932160 [datastore] QUOTA = 2 GB +[testbed] +OVERLAY_TOPOLOGY = CLIQUE diff --git a/src/fs/gnunet-service-fs.c b/src/fs/gnunet-service-fs.c index 125a14118d..37f020806e 100644 --- a/src/fs/gnunet-service-fs.c +++ b/src/fs/gnunet-service-fs.c @@ -562,6 +562,9 @@ static int main_init (struct GNUNET_SERVER_Handle *server, const struct GNUNET_CONFIGURATION_Handle *c) { + static const struct GNUNET_CORE_MessageHandler no_p2p_handlers[] = { + {NULL, 0, 0} + }; static const struct GNUNET_CORE_MessageHandler p2p_handlers[] = { {&handle_p2p_get, GNUNET_MESSAGE_TYPE_FS_GET, 0}, @@ -584,11 +587,21 @@ main_init (struct GNUNET_SERVER_Handle *server, 0}, {NULL, NULL, 0, 0} }; - + int anon_p2p_off; + + /* this option is really only for testcases that need to disable + _anonymous_ file-sharing for some reason */ + anon_p2p_off = (GNUNET_YES == + GNUNET_CONFIGURATION_get_value_yesno (GSF_cfg, + "fs", + "DISABLE_ANON_TRANSFER")); GSF_core = GNUNET_CORE_connect (GSF_cfg, NULL, &peer_init_handler, &peer_connect_handler, &GSF_peer_disconnect_handler_, - NULL, GNUNET_NO, NULL, GNUNET_NO, p2p_handlers); + NULL, GNUNET_NO, NULL, GNUNET_NO, + (GNUNET_YES == anon_p2p_off) + ? no_p2p_handlers + : p2p_handlers); if (NULL == GSF_core) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, diff --git a/src/fs/perf_gnunet_service_fs_p2p.c b/src/fs/perf_gnunet_service_fs_p2p.c index 9844006e50..dadeaba6ff 100644 --- a/src/fs/perf_gnunet_service_fs_p2p.c +++ b/src/fs/perf_gnunet_service_fs_p2p.c @@ -294,21 +294,17 @@ do_download (void *cls, const struct GNUNET_FS_Uri *uri) static void -do_publish (void *cls, - struct GNUNET_TESTBED_Operation *op, - const char *emsg) +do_publish (void *cls, + unsigned int num_peers, + struct GNUNET_TESTBED_Peer **peers) { + unsigned int i; int do_index; int anonymity; - - GNUNET_TESTBED_operation_done (op); - if (NULL != emsg) - { - GNUNET_SCHEDULER_shutdown (); - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Error trying to connect: %s\n", emsg); - ok = 1; - return; - } + + GNUNET_assert (NUM_DAEMONS == 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); if (NULL != strstr (progname, "index")) @@ -319,32 +315,12 @@ do_publish (void *cls, anonymity = 0; else anonymity = 1; - GNUNET_FS_TEST_publish (daemons[NUM_DAEMONS - 1], TIMEOUT, anonymity, do_index, FILESIZE, SEED, VERBOSE, &do_download, NULL); } -static void -do_connect (void *cls, - unsigned int num_peers, - struct GNUNET_TESTBED_Peer **peers) -{ - unsigned int i; - - GNUNET_assert (NUM_DAEMONS == num_peers); - for (i=0;i<num_peers;i++) - daemons[i] = peers[i]; - GNUNET_TESTBED_overlay_connect (NULL, - &do_publish, - NULL, - peers[0], - peers[1]); - // FIXME: was supposed to connect in line... -} - - int main (int argc, char *argv[]) { @@ -353,7 +329,7 @@ main (int argc, char *argv[]) "perf_gnunet_service_fs_p2p.conf", NUM_DAEMONS, 0, NULL, NULL, - &do_connect, NULL); + &do_publish, NULL); GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-lib/"); return ok; } diff --git a/src/fs/test_gnunet_service_fs_migration.c b/src/fs/test_gnunet_service_fs_migration.c index 550c79c4bc..5165934f07 100644 --- a/src/fs/test_gnunet_service_fs_migration.c +++ b/src/fs/test_gnunet_service_fs_migration.c @@ -142,30 +142,6 @@ do_wait (void *cls, const struct GNUNET_FS_Uri *uri) static void do_publish (void *cls, - struct GNUNET_TESTBED_Operation *oparg, - const char *emsg) -{ - GNUNET_assert (op == oparg); - GNUNET_TESTBED_operation_done (op); - op = NULL; - if (NULL != emsg) - { - GNUNET_SCHEDULER_shutdown (); - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Error connecting peers: %s\n", - emsg); - ok = 1; - return; - } - 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, - VERBOSE, &do_wait, NULL); -} - - -static void -do_connect (void *cls, unsigned int num_peers, struct GNUNET_TESTBED_Peer **peers) { @@ -174,11 +150,10 @@ do_connect (void *cls, GNUNET_assert (2 == num_peers); for (i=0;i<num_peers;i++) daemons[i] = peers[i]; - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Daemons started, will now try to connect them\n"); - op = GNUNET_TESTBED_overlay_connect (NULL, - &do_publish, NULL, - daemons[0], daemons[1]); + 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, + VERBOSE, &do_wait, NULL); } @@ -189,7 +164,7 @@ main (int argc, char *argv[]) "fs_test_lib_data.conf", 2, 0, NULL, NULL, - &do_connect, + &do_publish, NULL); GNUNET_DISK_directory_remove ("/tmp/test-gnunet-service-fs-migration/"); return ok; diff --git a/src/fs/test_gnunet_service_fs_p2p.c b/src/fs/test_gnunet_service_fs_p2p.c index 218f16b014..34326fa708 100644 --- a/src/fs/test_gnunet_service_fs_p2p.c +++ b/src/fs/test_gnunet_service_fs_p2p.c @@ -42,14 +42,16 @@ #define SEED 42 +static const char *progname; + +static unsigned int anonymity_level; + static struct GNUNET_TESTBED_Peer *daemons[NUM_DAEMONS]; static int ok; static struct GNUNET_TIME_Absolute start_time; -static struct GNUNET_TESTBED_Operation *op; - static void do_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) @@ -94,62 +96,51 @@ do_download (void *cls, const struct GNUNET_FS_Uri *uri) GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Downloading %llu bytes\n", (unsigned long long) FILESIZE); start_time = GNUNET_TIME_absolute_get (); - GNUNET_FS_TEST_download (daemons[0], TIMEOUT, 1, SEED, uri, VERBOSE, &do_stop, + GNUNET_FS_TEST_download (daemons[0], TIMEOUT, + anonymity_level, SEED, uri, + VERBOSE, &do_stop, NULL); } static void do_publish (void *cls, - struct GNUNET_TESTBED_Operation *opret, - const char *emsg) -{ - GNUNET_assert (op == opret); - GNUNET_TESTBED_operation_done (op); - op = NULL; - - if (NULL != emsg) - { - GNUNET_SCHEDULER_shutdown (); - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Timeout during connect attempt, shutting down with error: %s\n", - emsg); - ok = 1; - return; - } - 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, - VERBOSE, &do_download, NULL); -} - - -static void -do_connect (void *cls, unsigned int num_peers, struct GNUNET_TESTBED_Peer **peers) { unsigned int i; + if (NULL != strstr (progname, "stream")) + anonymity_level = 0; + else + anonymity_level = 1; GNUNET_assert (NUM_DAEMONS == num_peers); for (i=0;i<num_peers;i++) daemons[i] = peers[i]; - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Daemons started, will now try to connect them\n"); - op = GNUNET_TESTBED_overlay_connect (NULL, - &do_publish, NULL, - daemons[0], daemons[1]); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing %llu bytes\n", + (unsigned long long) FILESIZE); + GNUNET_FS_TEST_publish (daemons[1], TIMEOUT, + anonymity_level, GNUNET_NO, + FILESIZE, SEED, + VERBOSE, &do_download, NULL); } int main (int argc, char *argv[]) { + const char *config; + + progname = argv[0]; + if (NULL != strstr (progname, "stream")) + config = "test_gnunet_service_fs_p2p_stream.conf"; + else + config = "fs_test_lib_data.conf"; GNUNET_TESTBED_test_run ("test-gnunet-service-fs-p2p", - "fs_test_lib_data.conf", + config, NUM_DAEMONS, 0, NULL, NULL, - &do_connect, NULL); + &do_publish, NULL); GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-lib/"); return ok; } diff --git a/src/fs/test_gnunet_service_fs_p2p_stream.conf b/src/fs/test_gnunet_service_fs_p2p_stream.conf new file mode 100644 index 0000000000..607367a866 --- /dev/null +++ b/src/fs/test_gnunet_service_fs_p2p_stream.conf @@ -0,0 +1,15 @@ +@INLINE@ test_fs_defaults.conf +[PATHS] +SERVICEHOME = /tmp/test-gnunet-test-fs-lib/ + + +[ats] +WAN_QUOTA_IN = 3932160 +WAN_QUOTA_OUT = 3932160 + +[fs] +# FIXME: this option needs to be set for the +# testcase to truly work; however, as the code +# is not finished, not setting the option should +# allow the test to at least pass for now... +# DISABLE_ANON_TRANSFER = YES |