aboutsummaryrefslogtreecommitdiff
path: root/src/topology
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2009-11-02 21:28:39 +0000
committerChristian Grothoff <christian@grothoff.org>2009-11-02 21:28:39 +0000
commit658ddbb406b6db7e8b29646f5ba8510d7a029c15 (patch)
treeb66bfa4174d02b9f15402eac83d65d076a783a9b /src/topology
parent27f67fc726c2d0a14fbb657c6bf55caadfbdbc0b (diff)
downloadgnunet-658ddbb406b6db7e8b29646f5ba8510d7a029c15.tar.gz
gnunet-658ddbb406b6db7e8b29646f5ba8510d7a029c15.zip
basic topology test
Diffstat (limited to 'src/topology')
-rw-r--r--src/topology/Makefile.am14
-rw-r--r--src/topology/gnunet-daemon-topology.c2
-rw-r--r--src/topology/test_gnunet_service_topology.c121
-rw-r--r--src/topology/test_gnunet_service_topology_data.conf34
4 files changed, 170 insertions, 1 deletions
diff --git a/src/topology/Makefile.am b/src/topology/Makefile.am
index 0ac513839..6d7f766bc 100644
--- a/src/topology/Makefile.am
+++ b/src/topology/Makefile.am
@@ -18,3 +18,17 @@ gnunet_daemon_topology_LDADD = \
18 $(GN_LIBINTL) 18 $(GN_LIBINTL)
19 19
20 20
21
22check_PROGRAMS = \
23 test_gnunet_service_topology
24
25TESTS = $(check_PROGRAMS)
26
27test_gnunet_service_topology_SOURCES = \
28 test_gnunet_service_topology.c
29test_gnunet_service_topology_LDADD = \
30 $(top_builddir)/src/testing/libgnunettesting.la \
31 $(top_builddir)/src/util/libgnunetutil.la
32
33EXTRA_DIST = \
34 test_gnunet_service_topology_data.conf
diff --git a/src/topology/gnunet-daemon-topology.c b/src/topology/gnunet-daemon-topology.c
index 6dc492a56..01c65679c 100644
--- a/src/topology/gnunet-daemon-topology.c
+++ b/src/topology/gnunet-daemon-topology.c
@@ -20,7 +20,7 @@
20 20
21/** 21/**
22 * @file topology/gnunet-daemon-topology.c 22 * @file topology/gnunet-daemon-topology.c
23 * @brief code for bootstrapping via topology servers 23 * @brief code for maintaining the mesh topology
24 * @author Christian Grothoff 24 * @author Christian Grothoff
25 */ 25 */
26 26
diff --git a/src/topology/test_gnunet_service_topology.c b/src/topology/test_gnunet_service_topology.c
new file mode 100644
index 000000000..cc8792659
--- /dev/null
+++ b/src/topology/test_gnunet_service_topology.c
@@ -0,0 +1,121 @@
1/*
2 This file is part of GNUnet.
3 (C) 2009 Christian Grothoff (and other contributing authors)
4
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 2, or (at your
8 option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
19*/
20/**
21 * @file topology/test_gnunet_service_topology.c
22 * @brief testcase for topology maintenance code
23 */
24#include "platform.h"
25#include "gnunet_testing_lib.h"
26
27#define VERBOSE GNUNET_NO
28
29#define NUM_PEERS 10
30
31/**
32 * How long until we give up on connecting the peers?
33 */
34#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60)
35
36
37static int ok;
38
39static int peers_left;
40
41static struct GNUNET_TESTING_PeerGroup *pg;
42
43static struct GNUNET_SCHEDULER_Handle *sched;
44
45
46static void my_cb(void *cls,
47 const struct GNUNET_PeerIdentity *id,
48 const struct GNUNET_CONFIGURATION_Handle *cfg,
49 struct GNUNET_TESTING_Daemon *d,
50 const char *emsg)
51{
52 GNUNET_assert (id != NULL);
53 peers_left--;
54 if (peers_left == 0)
55 {
56 /* FIXME: connect a few... */
57 GNUNET_TESTING_daemons_stop (pg);
58 ok = 0;
59 }
60}
61
62
63static void
64run (void *cls,
65 struct GNUNET_SCHEDULER_Handle *s,
66 char *const *args,
67 const char *cfgfile,
68 const struct GNUNET_CONFIGURATION_Handle *cfg)
69{
70 sched = s;
71 ok = 1;
72#if VERBOSE
73 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
74 "Starting daemons.\n");
75#endif
76 peers_left = NUM_PEERS;
77 pg = GNUNET_TESTING_daemons_start (sched, cfg,
78 peers_left,
79 &my_cb, NULL, NULL);
80 GNUNET_assert (pg != NULL);
81}
82
83static int
84check ()
85{
86 char *const argv[] = { "test-testing",
87 "-c",
88 "test_gnunet_service_topology_data.conf",
89#if VERBOSE
90 "-L", "DEBUG",
91#endif
92 NULL
93 };
94 struct GNUNET_GETOPT_CommandLineOption options[] = {
95 GNUNET_GETOPT_OPTION_END
96 };
97 GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1,
98 argv, "test-gnunet-service-topology", "nohelp",
99 options, &run, &ok);
100 return ok;
101}
102
103int
104main (int argc, char *argv[])
105{
106 int ret;
107
108 GNUNET_log_setup ("test-gnunet-service-topology",
109#if VERBOSE
110 "DEBUG",
111#else
112 "WARNING",
113#endif
114 NULL);
115 ret = check ();
116 sleep (1);
117 GNUNET_DISK_directory_remove ("/tmp/test-gnunet-topology");
118 return ret;
119}
120
121/* end of test_gnunet_service_topology.c */
diff --git a/src/topology/test_gnunet_service_topology_data.conf b/src/topology/test_gnunet_service_topology_data.conf
new file mode 100644
index 000000000..327a4b513
--- /dev/null
+++ b/src/topology/test_gnunet_service_topology_data.conf
@@ -0,0 +1,34 @@
1[PATHS]
2SERVICEHOME = /tmp/test-gnunet-topology/
3DEFAULTCONFIG = test_gnunet_service_topology_data.conf
4
5[resolver]
6PORT = 2664
7
8[transport]
9PORT = 2665
10PLUGINS = tcp
11#PREFIX = xterm -e xterm -T transport -e gdb -x cmd --args
12#PREFIX = valgrind --tool=memcheck --log-file=logs%p
13
14[arm]
15PORT = 2666
16DEFAULTSERVICES = peerinfo transport core topology
17
18[statistics]
19PORT = 2667
20
21[transport-tcp]
22PORT = 2668
23
24[peerinfo]
25PORT = 2669
26
27[core]
28PORT = 2670
29
30[topology]
31
32
33[testing]
34WEAKRANDOM = YES