gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [gnunet] branch master updated (1c9e2fc46 -> b96052f1d)


From: gnunet
Subject: [GNUnet-SVN] [gnunet] branch master updated (1c9e2fc46 -> b96052f1d)
Date: Mon, 25 Jun 2018 16:53:33 +0200

This is an automated email from the git hooks/post-receive script.

xrs pushed a change to branch master
in repository gnunet.

    from 1c9e2fc46 gnunet.texi: translators note
     new d21b52500 fix 0002834: test_gnunet_daemon_topology.c now tests the 
connections of every peer
     new 8405df1e1 add some translations
     new b96052f1d Merge branch 'master' of ssh://gnunet.org/gnunet

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 po/es.po                                   |  29 ++--
 src/topology/test_gnunet_daemon_topology.c | 227 ++++++++++++++++++++++++++---
 2 files changed, 223 insertions(+), 33 deletions(-)

diff --git a/po/es.po b/po/es.po
index 09ed56374..967484138 100644
--- a/po/es.po
+++ b/po/es.po
@@ -2,6 +2,7 @@
 # Copyright (C) 2012 Christian Grothoff <address@hidden>
 # This file is distributed under the same license as the GNUnet package.
 # Miguel Ángel Arruga Vivas <address@hidden>, 2006, 2013.
+# xrs <address@hidden>, 2018
 #
 msgid ""
 msgstr ""
@@ -156,12 +157,12 @@ msgstr "Servicios en ejecución:\n"
 #: src/arm/gnunet-arm.c:614
 #, c-format
 msgid "Now only monitoring, press CTRL-C to stop.\n"
-msgstr ""
+msgstr "Ahora solo monitorizando, pulsa CTRL-C para parar.\n"
 
 #: src/arm/gnunet-arm.c:646
 #, c-format
 msgid "Stopped %s.\n"
-msgstr ""
+msgstr "%s detenido.\n"
 
 #: src/arm/gnunet-arm.c:649
 #, fuzzy, c-format
@@ -171,7 +172,7 @@ msgstr "Iniciando descarga «%s».\n"
 #: src/arm/gnunet-arm.c:652
 #, c-format
 msgid "Stopping %s...\n"
-msgstr ""
+msgstr "Deteniendo %s...\n"
 
 #: src/arm/gnunet-arm.c:666
 #, fuzzy, c-format
@@ -204,7 +205,7 @@ msgstr "borrar el directorio y el fichero de configuración 
al salir"
 
 #: src/arm/gnunet-arm.c:798
 msgid "monitor ARM activities"
-msgstr ""
+msgstr "monitoriza actividades de ARM"
 
 #: src/arm/gnunet-arm.c:803
 msgid "don't print status messages"
@@ -212,7 +213,7 @@ msgstr "no imprime mensajes de estado"
 
 #: src/arm/gnunet-arm.c:809
 msgid "exit with error status if operation does not finish after DELAY"
-msgstr ""
+msgstr "sale con estado de error si la operación no termina despues del DELAY"
 
 #: src/arm/gnunet-arm.c:814
 msgid "list currently running services"
@@ -421,7 +422,7 @@ msgstr "valor a establecer"
 #: src/ats/gnunet-ats-solver-eval.c:3297 src/ats-tests/gnunet-solver-eval.c:943
 #: src/ats-tests/gnunet-solver-eval.c:948
 msgid "experiment to use"
-msgstr ""
+msgstr "experimento para usar"
 
 #: src/ats/gnunet-ats-solver-eval.c:3304
 #, fuzzy
@@ -430,11 +431,11 @@ msgstr "Iniciando descarga «%s».\n"
 
 #: src/ats/gnunet-ats-solver-eval.c:3309
 msgid "save logging to disk"
-msgstr ""
+msgstr "guarda protocolo al fichero en disco"
 
 #: src/ats/gnunet-ats-solver-eval.c:3314
 msgid "disable normalization"
-msgstr ""
+msgstr "deshabilita normalización"
 
 #: src/ats/gnunet-service-ats_plugins.c:302
 #, fuzzy, c-format
@@ -584,11 +585,11 @@ msgstr ""
 
 #: src/ats-tool/gnunet-ats.c:400
 msgid "active "
-msgstr ""
+msgstr "activo "
 
 #: src/ats-tool/gnunet-ats.c:400
 msgid "inactive "
-msgstr ""
+msgstr "inactivo "
 
 #: src/ats-tool/gnunet-ats.c:510
 #, fuzzy, c-format
@@ -693,19 +694,19 @@ msgstr "Imprime información acerca del estado del ATS"
 
 #: src/auction/gnunet-auction-create.c:161
 msgid "description of the item to be sold"
-msgstr ""
+msgstr "descripción del elemento que está por vender"
 
 #: src/auction/gnunet-auction-create.c:167
 msgid "mapping of possible prices"
-msgstr ""
+msgstr "figurando posibles precios"
 
 #: src/auction/gnunet-auction-create.c:173
 msgid "max duration per round"
-msgstr ""
+msgstr "maxima duración del turno"
 
 #: src/auction/gnunet-auction-create.c:179
 msgid "duration until auction starts"
-msgstr ""
+msgstr "duración hasta que la caución empieza"
 
 #: src/auction/gnunet-auction-create.c:184
 msgid ""
diff --git a/src/topology/test_gnunet_daemon_topology.c 
b/src/topology/test_gnunet_daemon_topology.c
index 7c75d1137..bf9121eb0 100644
--- a/src/topology/test_gnunet_daemon_topology.c
+++ b/src/topology/test_gnunet_daemon_topology.c
@@ -18,47 +18,202 @@
 /**
  * @file topology/test_gnunet_daemon_topology.c
  * @brief testcase for topology maintenance code
+ * @author Christian Grothoff
+ * @author xrs
  */
 #include "platform.h"
 #include "gnunet_testbed_service.h"
+#include "gnunet_statistics_service.h"
 
 
 #define NUM_PEERS 8
 
+/* 
+ * The threshold defines the number of connection that are needed
+ * for one peer to pass the test. Be aware that setting NUM_PEERS
+ * too high can cause bandwidth problems for the testing peers.
+ * Normal should be 5KB/s per peer. See gnunet-config -s ats.
+ */
+#define THRESHOLD NUM_PEERS/2
+
 /**
  * How long until we give up on connecting the peers?
  */
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 600)
+#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60)
 
+/*
+ * Store manual connections.
+ */
+static unsigned int connect_left;
 
-static int ok;
+/*
+ * Result of the testcase.
+ */
+static int result;
 
-static unsigned int connect_left;
+/*
+ * Peers that reached the threshold of connections.
+ */
+static int checked_peers;
+
+/*
+ * Testbed operations.
+ */
+struct GNUNET_TESTBED_Operation *op[NUM_PEERS];
+
+/*
+ * Timeout for testcase.
+ */
+static struct GNUNET_SCHEDULER_Task *timeout_tid;
+
+/*
+ * Peer context for every testbed peer.
+ */
+struct peerctx 
+{
+  int index;
+  struct GNUNET_STATISTICS_Handle *statistics;
+  int connections;
+  int reported; /* GNUNET_NO | GNUNET_YES */
+};
+
+
+static void
+shutdown_task (void *cls)
+{
+  unsigned int i;
+
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Shutting down testcase\n");
 
+  for (i=0;i<NUM_PEERS;i++) {
+    if (NULL != op[i])
+      GNUNET_TESTBED_operation_done (op[i]);
+  }
+
+  if (NULL != timeout_tid)
+    GNUNET_SCHEDULER_cancel (timeout_tid);
+}
+
+static void
+timeout_task (void *cls)
+{
+  timeout_tid = NULL;
+  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+              "Testcase timeout\n");
+
+  result = GNUNET_SYSERR;
+  GNUNET_SCHEDULER_shutdown();
+}
+
+/*
+ * The function is called every time the topology of connected
+ * peers to a peer changes. 
+ */
+int
+statistics_iterator (void *cls,
+                     const char *subsystem,
+                     const char *name,
+                     uint64_t value,
+                     int is_persistent)
+{
+  struct peerctx *p_ctx = (struct peerctx*) cls;
+
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Peer %d: %s = %d\n",
+              p_ctx->index,
+              name,
+              value);
+
+  if (p_ctx->connections < value)
+    p_ctx->connections = value;
+
+  if (THRESHOLD <= value && GNUNET_NO == p_ctx->reported) {
+    p_ctx->reported = GNUNET_YES;
+    checked_peers++;
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+               "Peer %d successfully connected to at least %d peers once.\n",
+               p_ctx->index,
+               THRESHOLD);
+
+    if (checked_peers == NUM_PEERS) {
+      GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+               "Test OK: All peers have connected to %d peers once.\n",
+               THRESHOLD);
+      result = GNUNET_YES;
+      GNUNET_SCHEDULER_shutdown();
+    }
+  }
+
+  return GNUNET_YES;
+}
+
+static void *
+ca_statistics (void *cls,
+               const struct GNUNET_CONFIGURATION_Handle *cfg)
+{
+  return GNUNET_STATISTICS_create ("topology", cfg); 
+}
+
+
+void
+da_statistics (void *cls,
+               void *op_result)
+{
+  struct peerctx *p_ctx = (struct peerctx *) cls;
+  
+  GNUNET_break (GNUNET_OK == GNUNET_STATISTICS_watch_cancel
+                (p_ctx->statistics, "topology", "# peers connected",
+                 statistics_iterator, p_ctx));
+
+  GNUNET_STATISTICS_destroy (p_ctx->statistics, GNUNET_NO);
+  p_ctx->statistics = NULL;
+
+  GNUNET_free (p_ctx);
+}
+
+    
+static void 
+service_connect_complete (void *cls,
+                         struct GNUNET_TESTBED_Operation *op,
+                          void *ca_result,
+                         const char *emsg)
+{
+  int ret;
+  struct peerctx *p_ctx = (struct peerctx*) cls;
+
+  if (NULL == ca_result) 
+    GNUNET_SCHEDULER_shutdown();
+
+  p_ctx->statistics = ca_result;
+
+  ret = GNUNET_STATISTICS_watch (ca_result,
+                                 "topology",
+                                 "# peers connected",
+                                 statistics_iterator,
+                                 p_ctx);
+
+  if (GNUNET_NO == ret)
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                "call to GNUNET_STATISTICS_watch() failed\n");
+}
 
 static void
 notify_connect_complete (void *cls,
-                        struct GNUNET_TESTBED_Operation *op,
-                        const char *emsg)
+                         struct GNUNET_TESTBED_Operation *op,
+                         const char *emsg)
 {
   GNUNET_TESTBED_operation_done (op);
   if (NULL != emsg)
   {
     FPRINTF (stderr, "Failed to connect two peers: %s\n", emsg);
+    result = GNUNET_SYSERR;
     GNUNET_SCHEDULER_shutdown ();
-    ok = 1;
     return;
   }
   connect_left--;
-  if (0 == connect_left)
-  {
-    /* FIXME: check that topology adds a few more links
-     * in addition to those that were seeded */
-    GNUNET_SCHEDULER_shutdown ();
-  }
 }
 
-
 static void
 do_connect (void *cls,
             struct GNUNET_TESTBED_RunHandle *h,
@@ -68,28 +223,62 @@ do_connect (void *cls,
             unsigned int links_failed)
 {
   unsigned int i;
+  struct peerctx *p_ctx;
+
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Threshold is set to %d.\n",
+              THRESHOLD);
 
   GNUNET_assert (NUM_PEERS == num_peers);
-  for (i=0;i<num_peers-1;i++)
+
+  for (i=0;i<NUM_PEERS;i++)
     {
-      connect_left++;
-      GNUNET_TESTBED_overlay_connect (NULL,
-                                     &notify_connect_complete, NULL,
-                                     peers[i], peers[i+1]);
+      p_ctx = GNUNET_new (struct peerctx);
+      p_ctx->index = i;
+      p_ctx->connections = 0;
+      p_ctx->reported = GNUNET_NO;
+
+      if (i<NUM_PEERS-1) {
+        connect_left++;
+        GNUNET_TESTBED_overlay_connect (NULL,
+                                        &notify_connect_complete, NULL,
+                                        peers[i], peers[i+1]);
+      }
+
+      op[i] = 
+        GNUNET_TESTBED_service_connect (cls, 
+                                        peers[i],
+                                        "statistics",
+                                        service_connect_complete, 
+                                        p_ctx, /* cls of completion cb */
+                                        ca_statistics, /* connect adapter */
+                                        da_statistics, /* disconnect adapter */
+                                        p_ctx);
+                                      
     }
+
+  GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL);
+  timeout_tid = 
+    GNUNET_SCHEDULER_add_delayed (TIMEOUT,
+                                  &timeout_task,
+                                  NULL);
 }
 
 
 int
 main (int argc, char *argv[])
 {
+  result = GNUNET_SYSERR;
+  checked_peers = 0;
+
   (void) GNUNET_TESTBED_test_run ("test-gnunet-daemon-topology",
                                   "test_gnunet_daemon_topology_data.conf",
                                   NUM_PEERS,
                                   0, NULL, NULL,
                                   &do_connect, NULL);
   GNUNET_DISK_directory_remove ("/tmp/test-gnunet-topology");
-  return ok;
+
+  return (GNUNET_OK != result) ? 1 : 0;
 }
 
 /* end of test_gnunet_daemon_topology.c */

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

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