[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r4955 - GNUnet/src/applications/session
From: |
gnunet |
Subject: |
[GNUnet-SVN] r4955 - GNUnet/src/applications/session |
Date: |
Fri, 8 Jun 2007 14:05:50 -0600 (MDT) |
Author: grothoff
Date: 2007-06-08 14:05:49 -0600 (Fri, 08 Jun 2007)
New Revision: 4955
Added:
GNUnet/src/applications/session/nat-peer.conf
GNUnet/src/applications/session/sessiontest2.c
GNUnet/src/applications/session/tcp-peer.conf
Modified:
GNUnet/src/applications/session/Makefile.am
Log:
testcase for NAT
Modified: GNUnet/src/applications/session/Makefile.am
===================================================================
--- GNUnet/src/applications/session/Makefile.am 2007-06-08 19:11:37 UTC (rev
4954)
+++ GNUnet/src/applications/session/Makefile.am 2007-06-08 20:05:49 UTC (rev
4955)
@@ -16,7 +16,8 @@
check_PROGRAMS = \
- sessiontest
+ sessiontest \
+ sessiontest2
TESTS = $(check_PROGRAMS)
@@ -29,5 +30,16 @@
$(top_builddir)/src/util/network_client/libgnunetutil_network_client.la \
$(top_builddir)/src/util/libgnunetutil.la
+sessiontest2_SOURCES = \
+ sessiontest2.c
+sessiontest2_LDADD = \
+ $(top_builddir)/src/applications/stats/libgnunetstats_api.la \
+ $(top_builddir)/src/applications/identity/libgnunetidentity_api.la \
+ $(top_builddir)/src/util/config_impl/libgnunetutil_config.la \
+ $(top_builddir)/src/util/network_client/libgnunetutil_network_client.la \
+ $(top_builddir)/src/util/libgnunetutil.la
+
EXTRA_DIST = \
- check.conf
+ check.conf \
+ tcp-peer.conf \
+ nat-peer.conf
Added: GNUnet/src/applications/session/nat-peer.conf
===================================================================
--- GNUnet/src/applications/session/nat-peer.conf
(rev 0)
+++ GNUnet/src/applications/session/nat-peer.conf 2007-06-08 20:05:49 UTC
(rev 4955)
@@ -0,0 +1,54 @@
+# This is the configuration for the NATed peer
+[PATHS]
+GNUNETD_HOME = /tmp/gnunet-session-test-nat
+
+[GNUNETD]
+HELLOEXPIRES = 60
+LOGFILE = $GNUNETD_HOME/logs
+KEEPLOG = 0
+PIDFILE = $GNUNETD_HOME/gnunetd.pid
+HOSTS = $GNUNETD_HOME/data/hosts/
+APPLICATIONS = "advertising"
+TRANSPORTS = "tcp nat"
+
+[LOGGING]
+USER-LEVEL = ERROR
+ADMIN-LEVEL = ERROR
+
+[MODULES]
+sqstore = "sqstore_sqlite"
+topology = "topology_default"
+
+[NETWORK]
+PORT = 12087
+INTERFACE = eth0
+HELLOEXCHANGE = YES
+TRUSTED = 127.0.0.0/8;
+
+[LOAD]
+INTERFACES = eth0
+BASICLIMITING = YES
+MAXNETUPBPSTOTAL = 50000
+MAXNETDOWNBPSTOTAL = 50000
+MAXCPULOAD = 100
+
+[TCP]
+PORT = 0
+
+[NAT]
+LIMITED = YES
+
+[FS]
+QUOTA = 1024
+ACTIVEMIGRATION = NO
+DIR = $GNUNETD_HOME/fs-dir
+INDEX-DIRECTORY = $GNUNETD_HOME/data/shared/
+INDEX-QUOTA = 8192
+
+[GAP]
+TABLESIZE = 65536
+
+[DHT]
+BUCKETCOUNT = 160
+MASTER-TABLE-SIZE = 65536
+
Added: GNUnet/src/applications/session/sessiontest2.c
===================================================================
--- GNUnet/src/applications/session/sessiontest2.c
(rev 0)
+++ GNUnet/src/applications/session/sessiontest2.c 2007-06-08 20:05:49 UTC
(rev 4955)
@@ -0,0 +1,197 @@
+/*
+ This file is part of GNUnet.
+ (C) 2005, 2006, 2007 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/session/sessiontest2.c
+ * @brief Session establishment testcase for NAT
+ * @author Christian Grothoff
+ */
+
+#include "platform.h"
+#include "gnunet_protocols.h"
+#include "gnunet_util.h"
+#include "gnunet_util_config_impl.h"
+#include "gnunet_util_network_client.h"
+#include "gnunet_identity_lib.h"
+#include "gnunet_stats_lib.h"
+
+#define START_PEERS 1
+
+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 SYSERR;
+ }
+ return OK;
+}
+
+
+/**
+ * Notify NATed peer about other peer.
+ *
+ * @param port1 client port of the first daemon
+ * @param port2 client port of the second daemon
+ * @return OK on success, SYSERR on failure
+ */
+static int connect_daemons(unsigned short port1,
+ unsigned short port2) {
+ char host[128];
+ GC_Configuration * cfg1 = GC_create_C_impl();
+ GC_Configuration * cfg2 = GC_create_C_impl();
+ struct ClientServerConnection * sock1;
+ struct ClientServerConnection * sock2;
+ int ret;
+ P2P_hello_MESSAGE * h1;
+
+ ret = SYSERR;
+ SNPRINTF(host,
+ 128,
+ "localhost:%u",
+ port1);
+ GC_set_configuration_value_string(cfg1,
+ NULL,
+ "NETWORK",
+ "HOST",
+ host);
+ SNPRINTF(host,
+ 128,
+ "localhost:%u",
+ port2);
+ GC_set_configuration_value_string(cfg2,
+ NULL,
+ "NETWORK",
+ "HOST",
+ host);
+ if ( (OK == connection_wait_for_running(NULL,
+ cfg1,
+ 300 * cronSECONDS) ) &&
+ (OK == connection_wait_for_running(NULL,
+ cfg2,
+ 300 * cronSECONDS) ) ) {
+ sock1 = client_connection_create(NULL,
+ cfg1);
+ sock2 = client_connection_create(NULL,
+ cfg2);
+ h1 = NULL;
+ fprintf(stderr, "Notifying NATed peer about other peer");
+ if ( (OK == gnunet_identity_get_self(sock1,
+ &h1)) &&
+ (OK == gnunet_identity_peer_add(sock2,
+ h1)) ) {
+ fprintf(stderr, "!\n");
+ ret = OK;
+ } else
+ fprintf(stderr, "?\n");
+ FREENONNULL(h1);
+ connection_destroy(sock1);
+ connection_destroy(sock2);
+ } else {
+ fprintf(stderr,
+ "Failed to establish connection with peers.\n");
+ }
+ GC_free(cfg1);
+ GC_free(cfg2);
+ return ret;
+}
+
+
+/**
+ * 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
+ pid_t peer1;
+ pid_t peer2;
+#endif
+ int ret;
+ struct ClientServerConnection * sock;
+ int left;
+ struct GC_Configuration * cfg;
+
+ cfg = GC_create_C_impl();
+ if (-1 == GC_parse_configuration(cfg,
+ "check.conf")) {
+ GC_free(cfg);
+ return -1;
+ }
+#if START_PEERS
+ peer1 = os_daemon_start(NULL,
+ cfg,
+ "tcp-peer.conf",
+ NO);
+ if (peer1 == -1) {
+ GC_free(cfg);
+ return -1;
+ }
+ peer2 = os_daemon_start(NULL,
+ cfg,
+ "nat-peer.conf",
+ NO);
+ if (peer2 == -1) {
+ os_daemon_stop(NULL, peer1);
+ GC_free(cfg);
+ return -1;
+ }
+#endif
+ connect_daemons(2087,
+ 12087);
+ if (OK == connection_wait_for_running(NULL,
+ cfg,
+ 30 * cronSECONDS)) {
+ sock = client_connection_create(NULL,
+ cfg);
+ left = 30; /* how many iterations should we wait? */
+ while (OK == STATS_getStatistics(NULL,
+ sock,
+ &waitForConnect,
+ NULL)) {
+ printf("Waiting for peers to connect (%u iterations left)...\n",
+ left);
+ sleep(5);
+ left--;
+ if (left == 0) {
+ ret = 1;
+ break;
+ }
+ }
+ connection_destroy(sock);
+ } else {
+ printf("Could not establish connection with peer.\n");
+ ret = 1;
+ }
+#if START_PEERS
+ os_daemon_stop(NULL, peer1);
+ os_daemon_stop(NULL, peer2);
+#endif
+ GC_free(cfg);
+ return (ok == 0) ? 1 : 0;
+}
+
+/* end of sessiontest.c */
Property changes on: GNUnet/src/applications/session/sessiontest2.c
___________________________________________________________________
Name: svn:eol-style
+ native
Added: GNUnet/src/applications/session/tcp-peer.conf
===================================================================
--- GNUnet/src/applications/session/tcp-peer.conf
(rev 0)
+++ GNUnet/src/applications/session/tcp-peer.conf 2007-06-08 20:05:49 UTC
(rev 4955)
@@ -0,0 +1,51 @@
+# This is the configuration for the non-NATed peer
+[PATHS]
+GNUNETD_HOME = /tmp/gnunet-session-test-tcp
+
+[GNUNETD]
+HELLOEXPIRES = 60
+LOGFILE = $GNUNETD_HOME/logs
+KEEPLOG = 0
+PIDFILE = $GNUNETD_HOME/gnunetd.pid
+HOSTS = $GNUNETD_HOME/data/hosts/
+APPLICATIONS = "advertising"
+TRANSPORTS = "tcp nat"
+
+[LOGGING]
+USER-LEVEL = ERROR
+ADMIN-LEVEL = ERROR
+
+[MODULES]
+sqstore = "sqstore_sqlite"
+topology = "topology_default"
+
+[NETWORK]
+PORT = 12087
+INTERFACE = eth0
+HELLOEXCHANGE = YES
+TRUSTED = 127.0.0.0/8;
+
+[LOAD]
+INTERFACES = eth0
+BASICLIMITING = YES
+MAXNETUPBPSTOTAL = 50000
+MAXNETDOWNBPSTOTAL = 50000
+MAXCPULOAD = 100
+
+[TCP]
+PORT = 2086
+
+[FS]
+QUOTA = 1024
+ACTIVEMIGRATION = NO
+DIR = $GNUNETD_HOME/fs-dir
+INDEX-DIRECTORY = $GNUNETD_HOME/data/shared/
+INDEX-QUOTA = 8192
+
+[GAP]
+TABLESIZE = 65536
+
+[DHT]
+BUCKETCOUNT = 160
+MASTER-TABLE-SIZE = 65536
+
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r4955 - GNUnet/src/applications/session,
gnunet <=