aboutsummaryrefslogtreecommitdiff
path: root/src/fs
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-11-24 23:09:36 +0000
committerChristian Grothoff <christian@grothoff.org>2012-11-24 23:09:36 +0000
commitffbcecfb3a225e8f592780c4a6eba56e6ae8a8f3 (patch)
tree1a5f0bf706cd5b4b39346853b19b1a89c86f28a5 /src/fs
parenteb402314191286004d4b5450508080b3ef7b4e5b (diff)
downloadgnunet-ffbcecfb3a225e8f592780c4a6eba56e6ae8a8f3.tar.gz
gnunet-ffbcecfb3a225e8f592780c4a6eba56e6ae8a8f3.zip
-add multi-peer testcase for stream-based transfers (expected to fail right now), and option to disable anonymous transfers --- to force stream-based transfers
Diffstat (limited to 'src/fs')
-rw-r--r--src/fs/Makefile.am11
-rw-r--r--src/fs/fs.conf.in4
-rw-r--r--src/fs/fs_test_lib_data.conf2
-rw-r--r--src/fs/gnunet-service-fs.c17
-rw-r--r--src/fs/perf_gnunet_service_fs_p2p.c42
-rw-r--r--src/fs/test_gnunet_service_fs_migration.c35
-rw-r--r--src/fs/test_gnunet_service_fs_p2p.c61
-rw-r--r--src/fs/test_gnunet_service_fs_p2p_stream.conf15
8 files changed, 87 insertions, 100 deletions
diff --git a/src/fs/Makefile.am b/src/fs/Makefile.am
index 2164f9c6c..2ccb55e49 100644
--- a/src/fs/Makefile.am
+++ b/src/fs/Makefile.am
@@ -235,6 +235,7 @@ check_PROGRAMS = \
235 test_fs_uri \ 235 test_fs_uri \
236 test_gnunet_service_fs_migration \ 236 test_gnunet_service_fs_migration \
237 test_gnunet_service_fs_p2p \ 237 test_gnunet_service_fs_p2p \
238 test_gnunet_service_fs_p2p_stream \
238 $(FS_BENCHMARKS) 239 $(FS_BENCHMARKS)
239 240
240test_plugin_block_fs_SOURCES = \ 241test_plugin_block_fs_SOURCES = \
@@ -279,6 +280,7 @@ TESTS = \
279 test_fs_test_lib \ 280 test_fs_test_lib \
280 test_gnunet_service_fs_migration \ 281 test_gnunet_service_fs_migration \
281 test_gnunet_service_fs_p2p \ 282 test_gnunet_service_fs_p2p \
283 test_gnunet_service_fs_p2p_stream \
282 perf_gnunet_service_fs_p2p \ 284 perf_gnunet_service_fs_p2p \
283 perf_gnunet_service_fs_p2p_index \ 285 perf_gnunet_service_fs_p2p_index \
284 perf_gnunet_service_fs_p2p_respect \ 286 perf_gnunet_service_fs_p2p_respect \
@@ -433,6 +435,14 @@ test_gnunet_service_fs_p2p_LDADD = \
433 $(top_builddir)/src/fs/libgnunetfs.la \ 435 $(top_builddir)/src/fs/libgnunetfs.la \
434 $(top_builddir)/src/util/libgnunetutil.la 436 $(top_builddir)/src/util/libgnunetutil.la
435 437
438test_gnunet_service_fs_p2p_stream_SOURCES = \
439 test_gnunet_service_fs_p2p.c
440test_gnunet_service_fs_p2p_stream_LDADD = \
441 $(top_builddir)/src/fs/libgnunetfstest.a \
442 $(top_builddir)/src/testbed/libgnunettestbed.la \
443 $(top_builddir)/src/fs/libgnunetfs.la \
444 $(top_builddir)/src/util/libgnunetutil.la
445
436test_gnunet_service_fs_migration_SOURCES = \ 446test_gnunet_service_fs_migration_SOURCES = \
437 test_gnunet_service_fs_migration.c 447 test_gnunet_service_fs_migration.c
438test_gnunet_service_fs_migration_LDADD = \ 448test_gnunet_service_fs_migration_LDADD = \
@@ -513,6 +523,7 @@ EXTRA_DIST = \
513 test_fs_unindex_data.conf \ 523 test_fs_unindex_data.conf \
514 test_fs_uri_data.conf \ 524 test_fs_uri_data.conf \
515 test_gnunet_service_fs_migration_data.conf \ 525 test_gnunet_service_fs_migration_data.conf \
526 test_gnunet_service_fs_p2p_stream.conf \
516 test_gnunet_fs_idx_data.conf \ 527 test_gnunet_fs_idx_data.conf \
517 test_gnunet_fs_ns_data.conf \ 528 test_gnunet_fs_ns_data.conf \
518 test_gnunet_fs_psd_data.conf \ 529 test_gnunet_fs_psd_data.conf \
diff --git a/src/fs/fs.conf.in b/src/fs/fs.conf.in
index e134659b0..ceb0a9ea2 100644
--- a/src/fs/fs.conf.in
+++ b/src/fs/fs.conf.in
@@ -50,6 +50,10 @@ EXPECTED_NEIGHBOUR_COUNT = 128
50# Enable monkey? 50# Enable monkey?
51# PREFIX = @MONKEYPREFIX@ 51# PREFIX = @MONKEYPREFIX@
52 52
53# Disable anonymous file-sharing (but keep non-anonymous transfers)?
54# This option is mostly for testing.
55DISABLE_ANON_TRANSFER = NO
56
53 57
54[gnunet-auto-share] 58[gnunet-auto-share]
55BINARY = gnunet-auto-share 59BINARY = gnunet-auto-share
diff --git a/src/fs/fs_test_lib_data.conf b/src/fs/fs_test_lib_data.conf
index e6c2abd3a..c846068a7 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
9[datastore] 9[datastore]
10QUOTA = 2 GB 10QUOTA = 2 GB
11 11
12[testbed]
13OVERLAY_TOPOLOGY = CLIQUE
diff --git a/src/fs/gnunet-service-fs.c b/src/fs/gnunet-service-fs.c
index 125a14118..37f020806 100644
--- a/src/fs/gnunet-service-fs.c
+++ b/src/fs/gnunet-service-fs.c
@@ -562,6 +562,9 @@ static int
562main_init (struct GNUNET_SERVER_Handle *server, 562main_init (struct GNUNET_SERVER_Handle *server,
563 const struct GNUNET_CONFIGURATION_Handle *c) 563 const struct GNUNET_CONFIGURATION_Handle *c)
564{ 564{
565 static const struct GNUNET_CORE_MessageHandler no_p2p_handlers[] = {
566 {NULL, 0, 0}
567 };
565 static const struct GNUNET_CORE_MessageHandler p2p_handlers[] = { 568 static const struct GNUNET_CORE_MessageHandler p2p_handlers[] = {
566 {&handle_p2p_get, 569 {&handle_p2p_get,
567 GNUNET_MESSAGE_TYPE_FS_GET, 0}, 570 GNUNET_MESSAGE_TYPE_FS_GET, 0},
@@ -584,11 +587,21 @@ main_init (struct GNUNET_SERVER_Handle *server,
584 0}, 587 0},
585 {NULL, NULL, 0, 0} 588 {NULL, NULL, 0, 0}
586 }; 589 };
587 590 int anon_p2p_off;
591
592 /* this option is really only for testcases that need to disable
593 _anonymous_ file-sharing for some reason */
594 anon_p2p_off = (GNUNET_YES ==
595 GNUNET_CONFIGURATION_get_value_yesno (GSF_cfg,
596 "fs",
597 "DISABLE_ANON_TRANSFER"));
588 GSF_core = 598 GSF_core =
589 GNUNET_CORE_connect (GSF_cfg, NULL, &peer_init_handler, 599 GNUNET_CORE_connect (GSF_cfg, NULL, &peer_init_handler,
590 &peer_connect_handler, &GSF_peer_disconnect_handler_, 600 &peer_connect_handler, &GSF_peer_disconnect_handler_,
591 NULL, GNUNET_NO, NULL, GNUNET_NO, p2p_handlers); 601 NULL, GNUNET_NO, NULL, GNUNET_NO,
602 (GNUNET_YES == anon_p2p_off)
603 ? no_p2p_handlers
604 : p2p_handlers);
592 if (NULL == GSF_core) 605 if (NULL == GSF_core)
593 { 606 {
594 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 607 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 9844006e5..dadeaba6f 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)
294 294
295 295
296static void 296static void
297do_publish (void *cls, 297do_publish (void *cls,
298 struct GNUNET_TESTBED_Operation *op, 298 unsigned int num_peers,
299 const char *emsg) 299 struct GNUNET_TESTBED_Peer **peers)
300{ 300{
301 unsigned int i;
301 int do_index; 302 int do_index;
302 int anonymity; 303 int anonymity;
303 304
304 GNUNET_TESTBED_operation_done (op); 305 GNUNET_assert (NUM_DAEMONS == num_peers);
305 if (NULL != emsg) 306 for (i=0;i<num_peers;i++)
306 { 307 daemons[i] = peers[i];
307 GNUNET_SCHEDULER_shutdown ();
308 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Error trying to connect: %s\n", emsg);
309 ok = 1;
310 return;
311 }
312 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing %llu bytes\n", 308 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing %llu bytes\n",
313 (unsigned long long) FILESIZE); 309 (unsigned long long) FILESIZE);
314 if (NULL != strstr (progname, "index")) 310 if (NULL != strstr (progname, "index"))
@@ -319,32 +315,12 @@ do_publish (void *cls,
319 anonymity = 0; 315 anonymity = 0;
320 else 316 else
321 anonymity = 1; 317 anonymity = 1;
322
323 GNUNET_FS_TEST_publish (daemons[NUM_DAEMONS - 1], TIMEOUT, anonymity, 318 GNUNET_FS_TEST_publish (daemons[NUM_DAEMONS - 1], TIMEOUT, anonymity,
324 do_index, FILESIZE, SEED, VERBOSE, &do_download, 319 do_index, FILESIZE, SEED, VERBOSE, &do_download,
325 NULL); 320 NULL);
326} 321}
327 322
328 323
329static void
330do_connect (void *cls,
331 unsigned int num_peers,
332 struct GNUNET_TESTBED_Peer **peers)
333{
334 unsigned int i;
335
336 GNUNET_assert (NUM_DAEMONS == num_peers);
337 for (i=0;i<num_peers;i++)
338 daemons[i] = peers[i];
339 GNUNET_TESTBED_overlay_connect (NULL,
340 &do_publish,
341 NULL,
342 peers[0],
343 peers[1]);
344 // FIXME: was supposed to connect in line...
345}
346
347
348int 324int
349main (int argc, char *argv[]) 325main (int argc, char *argv[])
350{ 326{
@@ -353,7 +329,7 @@ main (int argc, char *argv[])
353 "perf_gnunet_service_fs_p2p.conf", 329 "perf_gnunet_service_fs_p2p.conf",
354 NUM_DAEMONS, 330 NUM_DAEMONS,
355 0, NULL, NULL, 331 0, NULL, NULL,
356 &do_connect, NULL); 332 &do_publish, NULL);
357 GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-lib/"); 333 GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-lib/");
358 return ok; 334 return ok;
359} 335}
diff --git a/src/fs/test_gnunet_service_fs_migration.c b/src/fs/test_gnunet_service_fs_migration.c
index 550c79c4b..5165934f0 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)
142 142
143static void 143static void
144do_publish (void *cls, 144do_publish (void *cls,
145 struct GNUNET_TESTBED_Operation *oparg,
146 const char *emsg)
147{
148 GNUNET_assert (op == oparg);
149 GNUNET_TESTBED_operation_done (op);
150 op = NULL;
151 if (NULL != emsg)
152 {
153 GNUNET_SCHEDULER_shutdown ();
154 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
155 "Error connecting peers: %s\n",
156 emsg);
157 ok = 1;
158 return;
159 }
160 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing %llu bytes\n",
161 (unsigned long long) FILESIZE);
162 GNUNET_FS_TEST_publish (daemons[1], TIMEOUT, 1, GNUNET_NO, FILESIZE, SEED,
163 VERBOSE, &do_wait, NULL);
164}
165
166
167static void
168do_connect (void *cls,
169 unsigned int num_peers, 145 unsigned int num_peers,
170 struct GNUNET_TESTBED_Peer **peers) 146 struct GNUNET_TESTBED_Peer **peers)
171{ 147{
@@ -174,11 +150,10 @@ do_connect (void *cls,
174 GNUNET_assert (2 == num_peers); 150 GNUNET_assert (2 == num_peers);
175 for (i=0;i<num_peers;i++) 151 for (i=0;i<num_peers;i++)
176 daemons[i] = peers[i]; 152 daemons[i] = peers[i];
177 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 153 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing %llu bytes\n",
178 "Daemons started, will now try to connect them\n"); 154 (unsigned long long) FILESIZE);
179 op = GNUNET_TESTBED_overlay_connect (NULL, 155 GNUNET_FS_TEST_publish (daemons[1], TIMEOUT, 1, GNUNET_NO, FILESIZE, SEED,
180 &do_publish, NULL, 156 VERBOSE, &do_wait, NULL);
181 daemons[0], daemons[1]);
182} 157}
183 158
184 159
@@ -189,7 +164,7 @@ main (int argc, char *argv[])
189 "fs_test_lib_data.conf", 164 "fs_test_lib_data.conf",
190 2, 165 2,
191 0, NULL, NULL, 166 0, NULL, NULL,
192 &do_connect, 167 &do_publish,
193 NULL); 168 NULL);
194 GNUNET_DISK_directory_remove ("/tmp/test-gnunet-service-fs-migration/"); 169 GNUNET_DISK_directory_remove ("/tmp/test-gnunet-service-fs-migration/");
195 return ok; 170 return ok;
diff --git a/src/fs/test_gnunet_service_fs_p2p.c b/src/fs/test_gnunet_service_fs_p2p.c
index 218f16b01..34326fa70 100644
--- a/src/fs/test_gnunet_service_fs_p2p.c
+++ b/src/fs/test_gnunet_service_fs_p2p.c
@@ -42,14 +42,16 @@
42 42
43#define SEED 42 43#define SEED 42
44 44
45static const char *progname;
46
47static unsigned int anonymity_level;
48
45static struct GNUNET_TESTBED_Peer *daemons[NUM_DAEMONS]; 49static struct GNUNET_TESTBED_Peer *daemons[NUM_DAEMONS];
46 50
47static int ok; 51static int ok;
48 52
49static struct GNUNET_TIME_Absolute start_time; 53static struct GNUNET_TIME_Absolute start_time;
50 54
51static struct GNUNET_TESTBED_Operation *op;
52
53 55
54static void 56static void
55do_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 57do_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
@@ -94,62 +96,51 @@ do_download (void *cls, const struct GNUNET_FS_Uri *uri)
94 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Downloading %llu bytes\n", 96 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Downloading %llu bytes\n",
95 (unsigned long long) FILESIZE); 97 (unsigned long long) FILESIZE);
96 start_time = GNUNET_TIME_absolute_get (); 98 start_time = GNUNET_TIME_absolute_get ();
97 GNUNET_FS_TEST_download (daemons[0], TIMEOUT, 1, SEED, uri, VERBOSE, &do_stop, 99 GNUNET_FS_TEST_download (daemons[0], TIMEOUT,
100 anonymity_level, SEED, uri,
101 VERBOSE, &do_stop,
98 NULL); 102 NULL);
99} 103}
100 104
101 105
102static void 106static void
103do_publish (void *cls, 107do_publish (void *cls,
104 struct GNUNET_TESTBED_Operation *opret,
105 const char *emsg)
106{
107 GNUNET_assert (op == opret);
108 GNUNET_TESTBED_operation_done (op);
109 op = NULL;
110
111 if (NULL != emsg)
112 {
113 GNUNET_SCHEDULER_shutdown ();
114 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
115 "Timeout during connect attempt, shutting down with error: %s\n",
116 emsg);
117 ok = 1;
118 return;
119 }
120 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing %llu bytes\n",
121 (unsigned long long) FILESIZE);
122 GNUNET_FS_TEST_publish (daemons[1], TIMEOUT, 1, GNUNET_NO, FILESIZE, SEED,
123 VERBOSE, &do_download, NULL);
124}
125
126
127static void
128do_connect (void *cls,
129 unsigned int num_peers, 108 unsigned int num_peers,
130 struct GNUNET_TESTBED_Peer **peers) 109 struct GNUNET_TESTBED_Peer **peers)
131{ 110{
132 unsigned int i; 111 unsigned int i;
133 112
113 if (NULL != strstr (progname, "stream"))
114 anonymity_level = 0;
115 else
116 anonymity_level = 1;
134 GNUNET_assert (NUM_DAEMONS == num_peers); 117 GNUNET_assert (NUM_DAEMONS == num_peers);
135 for (i=0;i<num_peers;i++) 118 for (i=0;i<num_peers;i++)
136 daemons[i] = peers[i]; 119 daemons[i] = peers[i];
137 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 120 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing %llu bytes\n",
138 "Daemons started, will now try to connect them\n"); 121 (unsigned long long) FILESIZE);
139 op = GNUNET_TESTBED_overlay_connect (NULL, 122 GNUNET_FS_TEST_publish (daemons[1], TIMEOUT,
140 &do_publish, NULL, 123 anonymity_level, GNUNET_NO,
141 daemons[0], daemons[1]); 124 FILESIZE, SEED,
125 VERBOSE, &do_download, NULL);
142} 126}
143 127
144 128
145int 129int
146main (int argc, char *argv[]) 130main (int argc, char *argv[])
147{ 131{
132 const char *config;
133
134 progname = argv[0];
135 if (NULL != strstr (progname, "stream"))
136 config = "test_gnunet_service_fs_p2p_stream.conf";
137 else
138 config = "fs_test_lib_data.conf";
148 GNUNET_TESTBED_test_run ("test-gnunet-service-fs-p2p", 139 GNUNET_TESTBED_test_run ("test-gnunet-service-fs-p2p",
149 "fs_test_lib_data.conf", 140 config,
150 NUM_DAEMONS, 141 NUM_DAEMONS,
151 0, NULL, NULL, 142 0, NULL, NULL,
152 &do_connect, NULL); 143 &do_publish, NULL);
153 GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-lib/"); 144 GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-lib/");
154 return ok; 145 return ok;
155} 146}
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 000000000..607367a86
--- /dev/null
+++ b/src/fs/test_gnunet_service_fs_p2p_stream.conf
@@ -0,0 +1,15 @@
1@INLINE@ test_fs_defaults.conf
2[PATHS]
3SERVICEHOME = /tmp/test-gnunet-test-fs-lib/
4
5
6[ats]
7WAN_QUOTA_IN = 3932160
8WAN_QUOTA_OUT = 3932160
9
10[fs]
11# FIXME: this option needs to be set for the
12# testcase to truly work; however, as the code
13# is not finished, not setting the option should
14# allow the test to at least pass for now...
15# DISABLE_ANON_TRANSFER = YES