gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r14406 - in gnunet/src: core dht dv fs include testing topo


From: gnunet
Subject: [GNUnet-SVN] r14406 - in gnunet/src: core dht dv fs include testing topology transport
Date: Tue, 15 Feb 2011 13:06:37 +0100

Author: nevans
Date: 2011-02-15 13:06:37 +0100 (Tue, 15 Feb 2011)
New Revision: 14406

Modified:
   gnunet/src/core/core_api.c
   gnunet/src/core/gnunet-service-core.c
   gnunet/src/dht/test_dht_multipeer.c
   gnunet/src/dht/test_dht_twopeer.c
   gnunet/src/dht/test_dht_twopeer_path_tracking.c
   gnunet/src/dht/test_dht_twopeer_put_get.c
   gnunet/src/dv/test_transport_api_dv.c
   gnunet/src/fs/fs_test_lib.c
   gnunet/src/include/gnunet_testing_lib.h
   gnunet/src/testing/test_testing_group.c
   gnunet/src/testing/test_testing_group_remote.c
   gnunet/src/testing/test_testing_large_topology.c
   gnunet/src/testing/test_testing_topology.c
   gnunet/src/testing/test_testing_topology_blacklist.c
   gnunet/src/testing/test_testing_topology_churn.c
   gnunet/src/topology/test_gnunet_daemon_topology.c
   gnunet/src/transport/plugin_transport_unix.c
Log:
Testing api change and related test case fixes, remember retry task and clean 
up on exit for unix domain socket transport.

Modified: gnunet/src/core/core_api.c
===================================================================
--- gnunet/src/core/core_api.c  2011-02-15 11:56:03 UTC (rev 14405)
+++ gnunet/src/core/core_api.c  2011-02-15 12:06:37 UTC (rev 14406)
@@ -1728,6 +1728,10 @@
   struct GNUNET_CORE_PeerRequestHandle *ret;
   struct ControlMessage *cm;
   struct ConnectMessage *msg;
+
+  if (NULL != GNUNET_CONTAINER_multihashmap_get (h->peers,
+                                          &peer->hashPubKey))
+    GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING, "core_api", "Received CONNECT 
requests for already connected peer!\n");
   
   cm = GNUNET_malloc (sizeof (struct ControlMessage) + 
                      sizeof (struct ConnectMessage));

Modified: gnunet/src/core/gnunet-service-core.c
===================================================================
--- gnunet/src/core/gnunet-service-core.c       2011-02-15 11:56:03 UTC (rev 
14405)
+++ gnunet/src/core/gnunet-service-core.c       2011-02-15 12:06:37 UTC (rev 
14406)
@@ -3336,9 +3336,9 @@
 
   if (err_msg != NULL)
   {
-         GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                     _("Error in communication with PEERINFO service\n"));
-       /* return; */
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                _("Error in communication with PEERINFO service\n"));
+    /* return; */
   }
 
   if (peer == NULL)

Modified: gnunet/src/dht/test_dht_multipeer.c
===================================================================
--- gnunet/src/dht/test_dht_multipeer.c 2011-02-15 11:56:03 UTC (rev 14405)
+++ gnunet/src/dht/test_dht_multipeer.c 2011-02-15 12:06:37 UTC (rev 14406)
@@ -876,8 +876,9 @@
                                            &end_badly, "didn't generate all 
hostkeys within a reasonable amount of time!!!");
 
   pg = GNUNET_TESTING_daemons_start (cfg,
-                                     peers_left,
-                                     peers_left,
+                                     peers_left, /* Total number of peers */
+                                     peers_left, /* Number of outstanding 
connections */
+                                     peers_left, /* Number of parallel ssh 
connections, or peers being started at once */
                                      
GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, SECONDS_PER_PEER_START 
* num_peers),
                                      &hostkey_callback,
                                      NULL,

Modified: gnunet/src/dht/test_dht_twopeer.c
===================================================================
--- gnunet/src/dht/test_dht_twopeer.c   2011-02-15 11:56:03 UTC (rev 14405)
+++ gnunet/src/dht/test_dht_twopeer.c   2011-02-15 12:06:37 UTC (rev 14406)
@@ -415,6 +415,7 @@
   pg = GNUNET_TESTING_daemons_start (cfg,
                                      num_peers,
                                      10,
+                                     num_peers,
                                      TIMEOUT,
                                      NULL, NULL,
                                      &peers_started_callback,

Modified: gnunet/src/dht/test_dht_twopeer_path_tracking.c
===================================================================
--- gnunet/src/dht/test_dht_twopeer_path_tracking.c     2011-02-15 11:56:03 UTC 
(rev 14405)
+++ gnunet/src/dht/test_dht_twopeer_path_tracking.c     2011-02-15 12:06:37 UTC 
(rev 14406)
@@ -461,8 +461,9 @@
   /* Start num_peers peers, call peers_started_callback on peer start, 
topology_callback on peer connect */
   /* Read the API documentation for other parameters! */
   pg = GNUNET_TESTING_daemons_start (cfg,
-                                     num_peers,
-                                     num_peers,
+                                     peers_left, /* Total number of peers */
+                                     peers_left, /* Number of outstanding 
connections */
+                                     peers_left, /* Number of parallel ssh 
connections, or peers being started at once */
                                      TIMEOUT,
                                      NULL,
                                      NULL,

Modified: gnunet/src/dht/test_dht_twopeer_put_get.c
===================================================================
--- gnunet/src/dht/test_dht_twopeer_put_get.c   2011-02-15 11:56:03 UTC (rev 
14405)
+++ gnunet/src/dht/test_dht_twopeer_put_get.c   2011-02-15 12:06:37 UTC (rev 
14406)
@@ -540,6 +540,7 @@
   pg = GNUNET_TESTING_daemons_start (cfg,
                                      num_peers,
                                      2,
+                                     2,
                                      TIMEOUT,
                                      NULL,
                                      NULL,

Modified: gnunet/src/dv/test_transport_api_dv.c
===================================================================
--- gnunet/src/dv/test_transport_api_dv.c       2011-02-15 11:56:03 UTC (rev 
14405)
+++ gnunet/src/dv/test_transport_api_dv.c       2011-02-15 12:06:37 UTC (rev 
14406)
@@ -1138,8 +1138,9 @@
 
   peer_daemon_hash = GNUNET_CONTAINER_multihashmap_create(peers_left);
   pg = GNUNET_TESTING_daemons_start (cfg,
-                                     peers_left,
-                                     peers_left,
+                                     peers_left, /* Total number of peers */
+                                     peers_left, /* Number of outstanding 
connections */
+                                     peers_left, /* Number of parallel ssh 
connections, or peers being started at once */
                                      TIMEOUT,
                                      &hostkey_callback,
                                      NULL,

Modified: gnunet/src/fs/fs_test_lib.c
===================================================================
--- gnunet/src/fs/fs_test_lib.c 2011-02-15 11:56:03 UTC (rev 14405)
+++ gnunet/src/fs/fs_test_lib.c 2011-02-15 12:06:37 UTC (rev 14406)
@@ -395,6 +395,7 @@
   sctx->group = GNUNET_TESTING_daemons_start (sctx->cfg,
                                              total,
                                              total, /* Outstanding connections 
*/
+                                             total, /* Outstanding ssh 
connections */
                                              timeout,
                                              NULL,
                                              NULL,

Modified: gnunet/src/include/gnunet_testing_lib.h
===================================================================
--- gnunet/src/include/gnunet_testing_lib.h     2011-02-15 11:56:03 UTC (rev 
14405)
+++ gnunet/src/include/gnunet_testing_lib.h     2011-02-15 12:06:37 UTC (rev 
14406)
@@ -567,7 +567,9 @@
  * @param cfg configuration template to use
  * @param total number of daemons to start
  * @param max_concurrent_connections for testing, how many peers can
- *                                   we connect to simultaneously
+*                                   we connect to simultaneously
+ * @param max_concurrent_ssh when starting with ssh, how many ssh
+ *        connections will we allow at once (based on remote hosts allowed!)
  * @param timeout total time allowed for peers to start
  * @param hostkey_callback function to call on each peers hostkey generation
  *        if NULL, peers will be started by this call, if non-null,
@@ -587,6 +589,7 @@
 GNUNET_TESTING_daemons_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
                               unsigned int total,
                               unsigned int max_concurrent_connections,
+                              unsigned int max_concurrent_ssh,
                               struct GNUNET_TIME_Relative timeout,
                               GNUNET_TESTING_NotifyHostkeyCreated
                               hostkey_callback, void *hostkey_cls,

Modified: gnunet/src/testing/test_testing_group.c
===================================================================
--- gnunet/src/testing/test_testing_group.c     2011-02-15 11:56:03 UTC (rev 
14405)
+++ gnunet/src/testing/test_testing_group.c     2011-02-15 12:06:37 UTC (rev 
14406)
@@ -116,8 +116,9 @@
 #endif
   peers_left = NUM_PEERS;
   pg = GNUNET_TESTING_daemons_start (cfg,
-                                     peers_left,
-                                     NUM_PEERS,
+                                     peers_left, /* Total number of peers */
+                                     peers_left, /* Number of outstanding 
connections */
+                                     peers_left, /* Number of parallel ssh 
connections, or peers being started at once */
                                      TIMEOUT,
                                      NULL, NULL,
                                      &my_cb, NULL, NULL, NULL, NULL);

Modified: gnunet/src/testing/test_testing_group_remote.c
===================================================================
--- gnunet/src/testing/test_testing_group_remote.c      2011-02-15 11:56:03 UTC 
(rev 14405)
+++ gnunet/src/testing/test_testing_group_remote.c      2011-02-15 12:06:37 UTC 
(rev 14406)
@@ -202,8 +202,9 @@
 
   peers_left = num_peers;
   pg = GNUNET_TESTING_daemons_start (cfg,
-                                     peers_left,
-                                     peers_left,
+                                     peers_left, /* Total number of peers */
+                                     peers_left, /* Number of outstanding 
connections */
+                                     peers_left, /* Number of parallel ssh 
connections, or peers being started at once */
                                      TIMEOUT,
                                      NULL,
                                      NULL, &my_cb, NULL, NULL, NULL, hosts);

Modified: gnunet/src/testing/test_testing_large_topology.c
===================================================================
--- gnunet/src/testing/test_testing_large_topology.c    2011-02-15 11:56:03 UTC 
(rev 14405)
+++ gnunet/src/testing/test_testing_large_topology.c    2011-02-15 12:06:37 UTC 
(rev 14406)
@@ -1131,6 +1131,7 @@
   pg = GNUNET_TESTING_daemons_start (cfg,
                                      peers_left,
                                      peers_left / 2,
+                                     peers_left,
                                      timeout,
                                      &hostkey_callback, NULL,
                                      &peers_started_callback, NULL,

Modified: gnunet/src/testing/test_testing_topology.c
===================================================================
--- gnunet/src/testing/test_testing_topology.c  2011-02-15 11:56:03 UTC (rev 
14405)
+++ gnunet/src/testing/test_testing_topology.c  2011-02-15 12:06:37 UTC (rev 
14406)
@@ -1181,6 +1181,7 @@
   pg = GNUNET_TESTING_daemons_start (cfg,
                                      peers_left,
                                      peers_left / 2,
+                                     peers_left,
                                      GNUNET_TIME_relative_multiply
                                      (GNUNET_TIME_UNIT_SECONDS,
                                       SECONDS_PER_PEER_START * num_peers),

Modified: gnunet/src/testing/test_testing_topology_blacklist.c
===================================================================
--- gnunet/src/testing/test_testing_topology_blacklist.c        2011-02-15 
11:56:03 UTC (rev 14405)
+++ gnunet/src/testing/test_testing_topology_blacklist.c        2011-02-15 
12:06:37 UTC (rev 14406)
@@ -535,7 +535,7 @@
                                            "didn't start all daemons in 
reasonable amount of time!!!");
 
   pg = GNUNET_TESTING_daemons_start (cfg,
-                                     peers_left, peers_left,
+                                     peers_left, peers_left, peers_left,
                                      TIMEOUT, &hostkey_callback,
                                      NULL, &peers_started_callback, NULL,
                                      &topology_callback, NULL, NULL);

Modified: gnunet/src/testing/test_testing_topology_churn.c
===================================================================
--- gnunet/src/testing/test_testing_topology_churn.c    2011-02-15 11:56:03 UTC 
(rev 14405)
+++ gnunet/src/testing/test_testing_topology_churn.c    2011-02-15 12:06:37 UTC 
(rev 14406)
@@ -281,7 +281,9 @@
 
   pg = GNUNET_TESTING_daemons_start (cfg,
                                      peers_left,
-                                     peers_left, TIMEOUT, NULL, NULL,
+                                     peers_left,
+                                     peers_left,
+                                     TIMEOUT, NULL, NULL,
                                      &peers_started_callback, NULL, NULL,
                                      NULL, NULL);
 

Modified: gnunet/src/topology/test_gnunet_daemon_topology.c
===================================================================
--- gnunet/src/topology/test_gnunet_daemon_topology.c   2011-02-15 11:56:03 UTC 
(rev 14405)
+++ gnunet/src/topology/test_gnunet_daemon_topology.c   2011-02-15 12:06:37 UTC 
(rev 14406)
@@ -155,6 +155,7 @@
   pg = GNUNET_TESTING_daemons_start (cfg,
                                     peers_left,
                                     peers_left,
+                                    peers_left,
                                     TIMEOUT,
                                     NULL, NULL,
                                     &my_cb, NULL, NULL, NULL, NULL);

Modified: gnunet/src/transport/plugin_transport_unix.c
===================================================================
--- gnunet/src/transport/plugin_transport_unix.c        2011-02-15 11:56:03 UTC 
(rev 14405)
+++ gnunet/src/transport/plugin_transport_unix.c        2011-02-15 12:06:37 UTC 
(rev 14406)
@@ -80,6 +80,24 @@
 
 };
 
+struct RetryList
+{
+  /**
+   * Pointer to next element.
+   */
+  struct RetryList *next;
+
+  /**
+   * Pointer to previous element.
+   */
+  struct RetryList *prev;
+
+  /**
+   * The actual retry context.
+   */
+  struct RetrySendContext *retry_ctx;
+};
+
 /**
  * Network format for IPv4 addresses.
  */
@@ -191,6 +209,11 @@
    * The priority of the message.
    */
   unsigned int priority;
+
+  /**
+   * Entry in the DLL of retry items.
+   */
+  struct RetryList *retry_list_entry;
 };
 
 /**
@@ -342,8 +365,18 @@
 
 };
 
+/**
+ * Head of retry DLL.
+ */
+static struct RetryList *retry_list_head;
 
 /**
+ * Tail of retry DLL.
+ */
+static struct RetryList *retry_list_tail;
+
+
+/**
  * Disconnect from a remote node.  Clean up session if we have one for this 
peer
  *
  * @param cls closure for this call (should be handle to Plugin)
@@ -370,7 +403,23 @@
 unix_transport_server_stop (void *cls)
 {
   struct Plugin *plugin = cls;
+  struct RetryList *pos;
 
+  pos = retry_list_head;
+
+  while(NULL != (pos = retry_list_head))
+    {
+      GNUNET_CONTAINER_DLL_remove(retry_list_head, retry_list_tail, pos);
+      if (GNUNET_SCHEDULER_NO_TASK != pos->retry_ctx->retry_task)
+        {
+          GNUNET_SCHEDULER_cancel(pos->retry_ctx->retry_task);
+        }
+      GNUNET_free(pos->retry_ctx->msg);
+      GNUNET_free(pos->retry_ctx->addr);
+      GNUNET_free(pos->retry_ctx);
+      GNUNET_free(pos);
+    }
+
   if (plugin->select_task != GNUNET_SCHEDULER_NO_TASK)
     {
       GNUNET_SCHEDULER_cancel (plugin->select_task);
@@ -428,7 +477,13 @@
   struct RetrySendContext *retry_ctx = cls;
 
   if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN)
-    return;
+    {
+      GNUNET_free(retry_ctx->msg);
+      GNUNET_free(retry_ctx->addr);
+      GNUNET_free(retry_ctx);
+      return;
+    }
+
   unix_real_send (retry_ctx->plugin,
                   retry_ctx,
                   retry_ctx->send_handle,
@@ -489,6 +544,7 @@
   size_t sbs;
   struct sockaddr_un un;
   size_t slen;
+  struct RetryList *retry_list_entry;
 
   if (send_handle == NULL)
     {
@@ -542,6 +598,7 @@
     {
       if (incoming_retry_context == NULL)
         {
+          retry_list_entry = GNUNET_malloc(sizeof(struct RetryList));
           retry_ctx = GNUNET_malloc(sizeof(struct RetrySendContext));
           retry_ctx->addr = GNUNET_malloc(addrlen);
           retry_ctx->msg = GNUNET_malloc(msgbuf_size);
@@ -557,6 +614,9 @@
           retry_ctx->timeout = GNUNET_TIME_relative_to_absolute(timeout);
           memcpy(&retry_ctx->target, target, sizeof(struct 
GNUNET_PeerIdentity));
           retry_ctx->delay = GNUNET_TIME_UNIT_MILLISECONDS;
+          retry_ctx->retry_list_entry = retry_list_entry;
+          retry_list_entry->retry_ctx = retry_ctx;
+          GNUNET_CONTAINER_DLL_insert(retry_list_head, retry_list_tail, 
retry_list_entry);
         }
       else
         {
@@ -597,6 +657,8 @@
 
   if (incoming_retry_context != NULL)
     {
+      GNUNET_CONTAINER_DLL_remove(retry_list_head, retry_list_tail, 
incoming_retry_context->retry_list_entry);
+      GNUNET_free(incoming_retry_context->retry_list_entry);
       GNUNET_free(incoming_retry_context->msg);
       GNUNET_free(incoming_retry_context->addr);
       GNUNET_free(incoming_retry_context);




reply via email to

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