Author: grothoff Date: 2008-02-18 18:51:41 -0700 (Mon, 18 Feb 2008) New Revision: 6371
Added: GNUnet/src/applications/hostlist/check.conf GNUnet/src/applications/hostlist/hostlisttest.c GNUnet/src/applications/hostlist/nat-peer.conf GNUnet/src/applications/hostlist/tcp-peer.conf Modified: GNUnet/src/applications/hostlist/Makefile.am GNUnet/src/applications/hostlist/hostlist.c Log: testcase Modified: GNUnet/src/applications/hostlist/Makefile.am =================================================================== --- GNUnet/src/applications/hostlist/Makefile.am 2008-02-19 00:02:14 UTC (rev 6370) +++ GNUnet/src/applications/hostlist/Makefile.am 2008-02-19 01:51:41 UTC (rev 6371) @@ -16,3 +16,21 @@ libgnunetmodule_hostlist_la_LDFLAGS = \ -export-dynamic -avoid-version -module + + +check_PROGRAMS = \ + hostlisttest_tcp + +TESTS = $(check_PROGRAMS) + +hostlisttest_tcp_SOURCES = \ + hostlisttest.c +hostlisttest_tcp_LDADD = \ + $(top_builddir)/src/applications/stats/libgnunetstats_api.la \ + $(top_builddir)/src/applications/testing/libgnunettesting_api.la \ + $(top_builddir)/src/util/libgnunetutil.la + +EXTRA_DIST = \ + check.conf \ + tcp-peer.conf \ + nat-peer.conf \ No newline at end of file Added: GNUnet/src/applications/hostlist/check.conf =================================================================== --- GNUnet/src/applications/hostlist/check.conf (rev 0) +++ GNUnet/src/applications/hostlist/check.conf 2008-02-19 01:51:41 UTC (rev 6371) @@ -0,0 +1,16 @@ +# General settings +[GNUNET] +GNUNET_HOME = "/tmp/gnunet-session-test-driver" +LOGLEVEL = "WARNING" +LOGFILE = "" +PROCESS-PRIORITY = "NORMAL" + +# Network options for the clients +[NETWORK] +HOST = "localhost:2087" + + +[TESTING] +WEAKRANDOM = YES + + Modified: GNUnet/src/applications/hostlist/hostlist.c =================================================================== --- GNUnet/src/applications/hostlist/hostlist.c 2008-02-19 00:02:14 UTC (rev 6370) +++ GNUnet/src/applications/hostlist/hostlist.c 2008-02-19 01:51:41 UTC (rev 6371) @@ -28,6 +28,7 @@ #include <microhttpd.h> #include "gnunet_identity_service.h" #include "gnunet_stats_service.h" +#include "gnunet_protocols.h" #define DEBUG_HOSTLIST GNUNET_NO @@ -98,6 +99,8 @@ static int dummy; struct MHD_Response *response; struct HostSet results; + const char * protos; + int ret; if (0 != strcmp (method, MHD_HTTP_METHOD_GET)) return MHD_NO; @@ -109,22 +112,28 @@ if (*upload_data_size != 0) return MHD_NO; /* do not support upload data */ memset (&results, 0, sizeof (struct HostSet)); - results.protocols = -1; /* for now */ + protos = MHD_lookup_connection_value(connection, + MHD_GET_ARGUMENT_KIND, + "p"); + if ( (protos == NULL) || + (1 != sscanf(protos, "%llu", &results.protocols)) ) + results.protocols = -1; + host_processor(coreAPI->myIdentity, + GNUNET_TRANSPORT_PROTOCOL_NUMBER_ANY, + GNUNET_YES, + &results); identity->forEachHost (GNUNET_get_time (), &host_processor, &results); if (results.size == 0) return MHD_NO; /* no known hosts!? */ response = MHD_create_response_from_data (results.size, results.data, MHD_YES, MHD_NO); - MHD_queue_response (connection, MHD_HTTP_OK, response); + ret = MHD_queue_response (connection, MHD_HTTP_OK, response); MHD_destroy_response (response); - return MHD_NO; + if (stats != NULL) + stats->change(stat_request_count, 1); + return ret; } -/** - * Initialize the hostlist module. This method name must match - * the library name (libgnunet_XXX => initialize_XXX). - * @return GNUNET_SYSERR on errors - */ int initialize_module_hostlist (GNUNET_CoreAPIForPlugins * capi) { Added: GNUnet/src/applications/hostlist/hostlisttest.c =================================================================== --- GNUnet/src/applications/hostlist/hostlisttest.c (rev 0) +++ GNUnet/src/applications/hostlist/hostlisttest.c 2008-02-19 01:51:41 UTC (rev 6371) @@ -0,0 +1,122 @@ +/* + This file is part of GNUnet. + (C) 2005, 2006, 2007, 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 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 applications/hostlist/hostlisttest.c + * @brief testcase for hostlist server + * @author Christian Grothoff + */ + +#include "platform.h" +#include "gnunet_protocols.h" +#include "gnunet_util.h" +#include "gnunet_testing_lib.h" +#include "gnunet_stats_lib.h" + +#define START_PEERS GNUNET_YES + +static int ok; + +static int +waitForConnect (const char *name, unsigned long long value, void *cls) +{ + if ((value > 0) && (0 == strcmp (_("# of connected peers"), name))) + { + ok = 1; + return GNUNET_SYSERR; + } + return GNUNET_OK; +} + +/** + * Testcase to test p2p session key exchange. + * + * @param argc number of arguments from the command line + * @param argv command line arguments + * @return 0: ok, -1: error + */ +int +main (int argc, char **argv) +{ +#if START_PEERS + struct GNUNET_TESTING_DaemonContext *peers; +#endif + int ret; + struct GNUNET_ClientServerConnection *sock1; + struct GNUNET_ClientServerConnection *sock2; + int left; + struct GNUNET_GC_Configuration *cfg; + + cfg = GNUNET_GC_create (); + if (-1 == GNUNET_GC_parse_configuration (cfg, "check.conf")) + { + GNUNET_GC_free (cfg); + return -1; + } +#if START_PEERS + peers = GNUNET_TESTING_start_daemons (strstr (argv[0], "_") + 1, /* tcp, udp or http */ + "advertising stats", + "/tmp/gnunet-session-test", 2087, + 10000, 2); + if (peers == NULL) + { + GNUNET_GC_free (cfg); + return -1; + } +#endif + if (GNUNET_OK == + GNUNET_wait_for_daemon_running (NULL, cfg, 30 * GNUNET_CRON_SECONDS)) + { + sock1 = GNUNET_client_connection_create (NULL, cfg); + GNUNET_GC_set_configuration_value_string (cfg, + NULL, + "NETWORK", + "HOST", "localhost:12087"); + sock2 = GNUNET_client_connection_create (NULL, cfg); + left = 30; /* how many iterations should we wait? */ + while (GNUNET_OK == + GNUNET_STATS_get_statistics (NULL, sock1, &waitForConnect, NULL)) + { + printf ("Waiting for peers to connect (%u iterations left)...\n", + left); + sleep (5); + left--; + if (left == 0) + { + ret = 1; + break; + } + } + GNUNET_client_connection_destroy (sock1); + GNUNET_client_connection_destroy (sock2); + } + else + { + printf ("Could not establish connection with peer.\n"); + ret = 1; + } +#if START_PEERS + GNUNET_TESTING_stop_daemons (peers); +#endif + GNUNET_GC_free (cfg); + return (ok == 0) ? 1 : 0; +} + +/* end of hostlisttest.c */ Property changes on: GNUnet/src/applications/hostlist/hostlisttest.c ___________________________________________________________________ Name: svn:eol-style + native Added: GNUnet/src/applications/hostlist/nat-peer.conf =================================================================== --- GNUnet/src/applications/hostlist/nat-peer.conf (rev 0) +++ GNUnet/src/applications/hostlist/nat-peer.conf 2008-02-19 01:51:41 UTC (rev 6371) @@ -0,0 +1,47 @@ +# This is the configuration for the NATed peer +[PATHS] +GNUNETD_HOME = /tmp/gnunet-hostlist-test-client + +[GNUNETD] +HELLOEXPIRES = 60 +LOGFILE = $GNUNETD_HOME/logs +KEEPLOG = 0 +PIDFILE = $GNUNETD_HOME/gnunetd.pid +HOSTS = $GNUNETD_HOME/data/hosts/ +APPLICATIONS = "advertising stats" +TRANSPORTS = "nat tcp" +HOSTLISTURL = "http://localhost:8080/" + +[LOGGING] +USER-LEVEL = ERROR +ADMIN-LEVEL = ERROR +DEVELOPER = NO + +[MODULES] +sqstore = "sqstore_sqlite" +topology = "topology_default" + +[NETWORK] +PORT = 12087 +HELLOEXCHANGE = YES +TRUSTED = 127.0.0.0/8; + +[LOAD] +BASICLIMITING = YES +MAXNETUPBPSTOTAL = 50000 +MAXNETDOWNBPSTOTAL = 50000 +MAXCPULOAD = 100 + +[TCP] +PORT = 0 +BLACKLIST = +BLACKLISTV6 = + +[NAT] +LIMITED = YES + + +[TESTING] +WEAKRANDOM = YES + + Added: GNUnet/src/applications/hostlist/tcp-peer.conf =================================================================== --- GNUnet/src/applications/hostlist/tcp-peer.conf (rev 0) +++ GNUnet/src/applications/hostlist/tcp-peer.conf 2008-02-19 01:51:41 UTC (rev 6371) @@ -0,0 +1,48 @@ +# This is the configuration for the non-NATed peer +[PATHS] +GNUNETD_HOME = /tmp/gnunet-hostlist-test-server + +[GNUNETD] +HELLOEXPIRES = 60 +LOGFILE = $GNUNETD_HOME/logs +KEEPLOG = 0 +PIDFILE = $GNUNETD_HOME/gnunetd.pid +HOSTS = $GNUNETD_HOME/data/hosts/ +APPLICATIONS = "advertising stats hostlist" +TRANSPORTS = "tcp nat" + +[LOGGING] +USER-LEVEL = ERROR +ADMIN-LEVEL = ERROR +DEVELOPER = NO + +[MODULES] +sqstore = "sqstore_sqlite" +topology = "topology_default" + +[NETWORK] +PORT = 2087 +HELLOEXCHANGE = YES +TRUSTED = 127.0.0.0/8; +IP = 127.0.0.1 + +[LOAD] +BASICLIMITING = YES +MAXNETUPBPSTOTAL = 50000 +MAXNETDOWNBPSTOTAL = 50000 +MAXCPULOAD = 100 + +[TCP] +PORT = 2086 +BLACKLIST = +BLACKLISTV6 = +UPNP = NO + +[NAT] +LIMITED = NO + +[TESTING] +WEAKRANDOM = YES + +[HOSTLIST] +PORT = 8080 _______________________________________________ GNUnet-SVN mailing list GNUnet-SVN@gnu.org http://lists.gnu.org/mailman/listinfo/gnunet-svn