gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r14115 - gnunet/src/core


From: gnunet
Subject: [GNUnet-SVN] r14115 - gnunet/src/core
Date: Wed, 5 Jan 2011 16:37:07 +0100

Author: toelke
Date: 2011-01-05 16:37:07 +0100 (Wed, 05 Jan 2011)
New Revision: 14115

Added:
   gnunet/src/core/test_core_api_send_to_self.c
   gnunet/src/core/test_core_api_send_to_self.conf
Modified:
   gnunet/src/core/Makefile.am
Log:
test-case for cores send-to-self-feature

Modified: gnunet/src/core/Makefile.am
===================================================================
--- gnunet/src/core/Makefile.am 2011-01-05 14:25:18 UTC (rev 14114)
+++ gnunet/src/core/Makefile.am 2011-01-05 15:37:07 UTC (rev 14115)
@@ -25,7 +25,7 @@
 
 
 bin_PROGRAMS = \
- gnunet-service-core
+ gnunet-service-core test_core_api_send_to_self
 
 gnunet_service_core_SOURCES = \
  gnunet-service-core.c 
@@ -43,7 +43,8 @@
  test_core_api_reliability \
  test_core_quota_compliance_symmetric \
  test_core_quota_compliance_asymmetric_send_limited \
- test_core_quota_compliance_asymmetric_recv_limited
+ test_core_quota_compliance_asymmetric_recv_limited \
+ test_core_api_send_to_self
 
 if !DISABLE_TEST_RUN
 TESTS = $(check_PROGRAMS)
@@ -63,6 +64,13 @@
  $(top_builddir)/src/transport/libgnunettransport.la \
  $(top_builddir)/src/util/libgnunetutil.la
 
+test_core_api_send_to_self_SOURCES = \
+ test_core_api_send_to_self.c
+test_core_api_send_to_self_LDADD = \
+ $(top_builddir)/src/core/libgnunetcore.la \
+ $(top_builddir)/src/transport/libgnunettransport.la \
+ $(top_builddir)/src/util/libgnunetutil.la
+
 test_core_api_start_only_SOURCES = \
  test_core_api_start_only.c
 test_core_api_start_only_LDADD = \

Added: gnunet/src/core/test_core_api_send_to_self.c
===================================================================
--- gnunet/src/core/test_core_api_send_to_self.c                                
(rev 0)
+++ gnunet/src/core/test_core_api_send_to_self.c        2011-01-05 15:37:07 UTC 
(rev 14115)
@@ -0,0 +1,167 @@
+/*
+     This file is part of GNUnet.
+     (C) 2010 Christian Grothoff
+
+     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 3, 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 core/test_core_api_send_to_self.c
+ * @brief
+ * @author Philipp Toelke
+ */
+#include <platform.h>
+#include <gnunet_common.h>
+#include <gnunet_program_lib.h>
+#include <gnunet_protocols.h>
+#include <gnunet_core_service.h>
+#include <gnunet_constants.h>
+
+/**
+ * Final status code.
+ */
+static int ret;
+
+/**
+ * The handle to core
+ */
+static struct GNUNET_CORE_Handle *core_handle;
+
+/**
+ * Function scheduled as very last function, cleans up after us
+ */
+static void
+cleanup (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tskctx)
+{
+  GNUNET_assert (0 != (tskctx->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN));
+
+  if (core_handle != NULL)
+    {
+      GNUNET_CORE_disconnect (core_handle);
+      core_handle = NULL;
+    }
+}
+
+static struct GNUNET_PeerIdentity myself;
+
+struct GNUNET_CORE_Handle *core;
+
+static int
+receive(void* cls, const struct GNUNET_PeerIdentity* other, const struct 
GNUNET_MessageHeader* message, const struct GNUNET_TRANSPORT_ATS_Information* 
atsi)
+{
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Received message from peer %s\n", 
GNUNET_i2s(other));
+  return GNUNET_OK;
+}
+
+static size_t
+send_message (void* cls, size_t size, void* buf)
+{
+  if (size == 0 || buf == NULL)
+    {
+      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Could not send; got 0 buffer\n");
+      return 0;
+    }
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Sending!\n");
+  struct GNUNET_MessageHeader *hdr = buf;
+  hdr->size = htons(sizeof(struct GNUNET_MessageHeader));
+  hdr->type = htons(GNUNET_MESSAGE_TYPE_SERVICE_UDP);
+  return ntohs(hdr->size);
+}
+
+static void
+init (void *cls, struct GNUNET_CORE_Handle *core,
+      const struct GNUNET_PeerIdentity *my_identity,
+      const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *pk)
+{
+  if (core == NULL)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Could NOT connect to CORE;\n");
+      return;
+    }
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "Correctly connected to CORE; we are the peer %s.\n",
+             GNUNET_i2s (my_identity));
+  memcpy (&myself, my_identity, sizeof (struct GNUNET_PeerIdentity));
+}
+
+static void
+connect_cb (void *cls, const struct GNUNET_PeerIdentity *peer,
+           const struct GNUNET_TRANSPORT_ATS_Information *atsi)
+{
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Connected to peer %s.\n",
+             GNUNET_i2s (peer));
+  if (0 == memcmp (peer, &myself, sizeof (struct GNUNET_PeerIdentity)))
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                 "Connected to myself; sending message!\n");
+      GNUNET_CORE_notify_transmit_ready (core,
+                                        0, GNUNET_TIME_UNIT_FOREVER_REL,
+                                        peer,
+                                        sizeof (struct GNUNET_MessageHeader),
+                                        send_message, NULL);
+    }
+}
+
+
+/**
+ * Main function that will be run by the scheduler.
+ *
+ * @param cls closure
+ * @param args remaining command-line arguments
+ * @param cfgfile name of the configuration file used (for saving, can be 
NULL!)
+ * @param cfg configuration
+ */
+static void
+run (void *cls,
+     char *const *args,
+     const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg_)
+{
+  const static struct GNUNET_CORE_MessageHandler handlers[] = {
+    {receive, GNUNET_MESSAGE_TYPE_SERVICE_UDP, 0},
+    {NULL, 0, 0}
+  };
+  core = GNUNET_CORE_connect (cfg_,
+                             42,
+                             NULL,
+                             init,
+                             connect_cb,
+                             NULL, NULL, NULL, 0, NULL, 0, handlers);
+  GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_UNIT_FOREVER_REL, &cleanup, cls);
+}
+
+/**
+ * The main function to obtain template from gnunetd.
+ *
+ * @param argc number of arguments from the command line
+ * @param argv command line arguments
+ * @return 0 ok, 1 on error
+ */
+int
+main (int argc, char *const *argv)
+{
+  static const struct GNUNET_GETOPT_CommandLineOption options[] = {
+    GNUNET_GETOPT_OPTION_END
+  };
+
+  return (GNUNET_OK ==
+         GNUNET_PROGRAM_run (argc,
+                             argv,
+                             "test_core_api_send_to_self",
+                             gettext_noop ("help text"),
+                             options, &run, NULL)) ? ret : 1;
+}
+
+/* end of test_core_api_send_to_self.c */

Added: gnunet/src/core/test_core_api_send_to_self.conf
===================================================================
--- gnunet/src/core/test_core_api_send_to_self.conf                             
(rev 0)
+++ gnunet/src/core/test_core_api_send_to_self.conf     2011-01-05 15:37:07 UTC 
(rev 14115)
@@ -0,0 +1,64 @@
+[PATHS]
+SERVICEHOME = ~/.gnunet/
+# SERVICEHOME = /var/lib/gnunet/
+# DEFAULTCONFIG = /etc/gnunet.conf
+# If 'DEFAULTCONFIG' is not defined, the current
+# configuration file is assumed to be the default,
+# which is what we want by default...
+
+[gnunetd]
+HOSTKEY = $SERVICEHOME/.hostkey
+
+[TESTING]
+WEAKRANDOM = NO
+
+[client]
+HOME = $SERVICEHOME
+
+[arm]
+PORT = 0
+HOSTNAME = localhost
+HOME = $SERVICEHOME
+CONFIG = $DEFAULTCONFIG
+BINARY = gnunet-service-arm
+ACCEPT_FROM = 127.0.0.1;
+ACCEPT_FROM6 = ::1;
+DEFAULTSERVICES = core test-sts
+UNIXPATH = /tmp/gnunet-service-arm.sock
+
+[test-sts]
+AUTOSTART = YES
+PORT = 0
+HOSTNAME = localhost
+HOME = $SERVICEHOME
+CONFIG = $DEFAULTCONFIG
+BINARY = test_core_api_send_to_self
+ACCEPT_FROM = 127.0.0.1;
+ACCEPT_FROM6 = ::1;
+TOTAL_QUOTA_IN = 65536
+TOTAL_QUOTA_OUT = 65536
+UNIXPATH = /tmp/gnunet-service-sts.sock
+DEBUG = YES
+
+[core]
+AUTOSTART = YES
+PORT = 0
+HOSTNAME = localhost
+HOME = $SERVICEHOME
+CONFIG = $DEFAULTCONFIG
+BINARY = gnunet-service-core
+ACCEPT_FROM = 127.0.0.1;
+ACCEPT_FROM6 = ::1;
+# quotas are in bytes per second now!
+TOTAL_QUOTA_IN = 104857600
+TOTAL_QUOTA_OUT = 104757600
+UNIXPATH = /tmp/gnunet-service-core.sock
+# DEBUG = YES
+# USERNAME = 
+# MAXBUF =
+# TIMEOUT =
+# DISABLEV6 =
+# BINDTO =
+# REJECT_FROM =
+# REJECT_FROM6 =
+# PREFIX =




reply via email to

[Prev in Thread] Current Thread [Next in Thread]