gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r22868 - gnunet/src/testbed


From: gnunet
Subject: [GNUnet-SVN] r22868 - gnunet/src/testbed
Date: Tue, 24 Jul 2012 14:39:39 +0200

Author: harsha
Date: 2012-07-24 14:39:39 +0200 (Tue, 24 Jul 2012)
New Revision: 22868

Modified:
   gnunet/src/testbed/test_testbed_api.c
   gnunet/src/testbed/testbed_api.c
   gnunet/src/testbed/testbed_api_peers.c
   gnunet/src/testbed/testbed_api_peers.h
Log:
testcases for peer get information

Modified: gnunet/src/testbed/test_testbed_api.c
===================================================================
--- gnunet/src/testbed/test_testbed_api.c       2012-07-24 11:40:07 UTC (rev 
22867)
+++ gnunet/src/testbed/test_testbed_api.c       2012-07-24 12:39:39 UTC (rev 
22868)
@@ -94,6 +94,32 @@
 
 
 /**
+ * Enumeration of sub testcases
+ */
+enum Test
+  {
+    /**
+     * Test cases which are not covered by the below ones
+     */
+    OTHER,
+
+    /**
+     * Test where we get a peer config from controller
+     */
+    PEER_GETCONFIG,
+
+    /**
+     * Test where we get a peer's identity from controller
+     */
+    PEER_DESTROY,
+  };
+
+/**
+ * Testing status
+ */
+static enum Test sub_test;
+
+/**
  * Shutdown nicely
  *
  * @param cls NULL
@@ -102,6 +128,7 @@
 static void
 do_shutdown (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
+  LOG (GNUNET_ERROR_TYPE_DEBUG, "Shutting down...\n");
   if (GNUNET_SCHEDULER_NO_TASK != abort_task)
     GNUNET_SCHEDULER_cancel (abort_task);
   if (NULL != reg_handle)
@@ -143,12 +170,32 @@
   switch (event->type)
   {
   case GNUNET_TESTBED_ET_OPERATION_FINISHED:
-    GNUNET_assert (event->details.operation_finished.operation == operation);
-    GNUNET_assert (NULL == event->details.operation_finished.op_cls);
-    GNUNET_assert (NULL == event->details.operation_finished.emsg);
-    GNUNET_assert (GNUNET_TESTBED_PIT_GENERIC ==
-                  event->details.operation_finished.pit);
-    GNUNET_assert (NULL == 
event->details.operation_finished.op_result.generic);
+    switch(sub_test)
+    {
+    case PEER_GETCONFIG:
+      GNUNET_assert (event->details.operation_finished.operation == operation);
+      GNUNET_assert (NULL == event->details.operation_finished.op_cls);
+      GNUNET_assert (NULL == event->details.operation_finished.emsg);
+      GNUNET_assert (GNUNET_TESTBED_PIT_CONFIGURATION ==
+                    event->details.operation_finished.pit);
+      GNUNET_assert (NULL != event->details.operation_finished.op_result.cfg);
+      sub_test = PEER_DESTROY;
+      operation = GNUNET_TESTBED_peer_destroy (peer);
+      break;
+    case PEER_DESTROY:
+      GNUNET_assert (event->details.operation_finished.operation == operation);
+      GNUNET_assert (NULL == event->details.operation_finished.op_cls);
+      GNUNET_assert (NULL == event->details.operation_finished.emsg);
+      GNUNET_assert (GNUNET_TESTBED_PIT_GENERIC ==
+                    event->details.operation_finished.pit);
+      GNUNET_assert (NULL ==
+                    event->details.operation_finished.op_result.generic); 
+      GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
+      break;
+    case OTHER:
+      GNUNET_assert (0);
+      break;
+    }    
     break;
   case GNUNET_TESTBED_ET_PEER_START:
     GNUNET_assert (event->details.peer_start.host == host);
@@ -157,8 +204,11 @@
     break;
   case GNUNET_TESTBED_ET_PEER_STOP:
     GNUNET_assert (event->details.peer_stop.peer == peer);    
-    result = GNUNET_YES;  
-    GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
+    result = GNUNET_YES;
+    sub_test = PEER_GETCONFIG;
+    operation = 
+      GNUNET_TESTBED_peer_get_information (peer,
+                                          GNUNET_TESTBED_PIT_CONFIGURATION);
     break;
   default:
     GNUNET_assert (0);         /* We should never reach this state */

Modified: gnunet/src/testbed/testbed_api.c
===================================================================
--- gnunet/src/testbed/testbed_api.c    2012-07-24 11:40:07 UTC (rev 22867)
+++ gnunet/src/testbed/testbed_api.c    2012-07-24 12:39:39 UTC (rev 22868)
@@ -410,6 +410,7 @@
 {
   struct GNUNET_TESTBED_Operation *op;
   struct GNUNET_TESTBED_Peer *peer;
+  struct PeerInfoData *data;
   struct GNUNET_TESTBED_EventInformation info;
   uint64_t op_id;
   
@@ -424,12 +425,15 @@
     LOG_DEBUG ("Operation not found");
     return GNUNET_YES;
   }
-  peer = op->data;  
+  data = op->data;
+  GNUNET_assert (NULL != data);
+  peer = data->peer;
   GNUNET_assert (NULL != peer);
   GNUNET_assert (ntohl (msg->peer_id) == peer->unique_id);
   if (0 == (c->event_mask & (1L << GNUNET_TESTBED_ET_OPERATION_FINISHED)))
   {
     GNUNET_CONTAINER_DLL_remove (c->op_head, c->op_tail, op);
+    GNUNET_free (data);
     GNUNET_free (op);
     return GNUNET_YES;
   }
@@ -437,8 +441,8 @@
   info.details.operation_finished.operation = op;
   info.details.operation_finished.op_cls = NULL;
   info.details.operation_finished.emsg = NULL;
-  info.details.operation_finished.pit = op->operation_id;
-  switch (op->operation_id)
+  info.details.operation_finished.pit = data->pit;
+  switch (data->pit)
   {
   case GNUNET_TESTBED_PIT_IDENTITY:
     {
@@ -467,7 +471,9 @@
       cfg = GNUNET_CONFIGURATION_create ();
       GNUNET_assert (GNUNET_OK == 
                     GNUNET_CONFIGURATION_deserialize (cfg, config,
-                                                      (size_t) config_size, 
GNUNET_NO));
+                                                      (size_t) config_size,
+                                                      GNUNET_NO));
+      GNUNET_free (config);
       info.details.operation_finished.op_result.cfg = cfg;
     }
     break;
@@ -477,6 +483,7 @@
   }
   c->cc (c->cc_cls, &info);
   GNUNET_CONTAINER_DLL_remove (c->op_head, c->op_tail, op);
+  GNUNET_free (data);
   GNUNET_free (op);
   return GNUNET_YES;
 }

Modified: gnunet/src/testbed/testbed_api_peers.c
===================================================================
--- gnunet/src/testbed/testbed_api_peers.c      2012-07-24 11:40:07 UTC (rev 
22867)
+++ gnunet/src/testbed/testbed_api_peers.c      2012-07-24 12:39:39 UTC (rev 
22868)
@@ -242,12 +242,16 @@
 {
   struct GNUNET_TESTBED_PeerGetConfigurationMessage *msg;
   struct GNUNET_TESTBED_Operation *op;
+  struct PeerInfoData *data;
   
   GNUNET_assert (GNUNET_TESTBED_PIT_GENERIC != pit);
+  data = GNUNET_malloc (sizeof (struct PeerInfoData));
+  data->peer = peer;
+  data->pit = pit;
   op = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_Operation));
   op->type = OP_PEER_INFO;
   op->operation_id = peer->controller->operation_counter++;
-  op->data = peer;
+  op->data = data;
   msg = GNUNET_malloc (sizeof (struct
                                GNUNET_TESTBED_PeerGetConfigurationMessage));
   msg->header.size = htons

Modified: gnunet/src/testbed/testbed_api_peers.h
===================================================================
--- gnunet/src/testbed/testbed_api_peers.h      2012-07-24 11:40:07 UTC (rev 
22867)
+++ gnunet/src/testbed/testbed_api_peers.h      2012-07-24 12:39:39 UTC (rev 
22868)
@@ -116,6 +116,23 @@
 
 
 /**
+ * Data for the OperationType OP_PEER_INFO
+ */
+struct PeerInfoData
+{
+  /**
+   * The peer whose information has been requested
+   */
+  struct GNUNET_TESTBED_Peer *peer;
+  
+  /**
+   * The type of peer information requested
+   */
+  enum GNUNET_TESTBED_PeerInformationType pit;
+};
+
+
+/**
  * Create the given peer at the specified host using the given
  * controller.  If the given controller is not running on the target
  * host, it should find or create a controller at the target host and




reply via email to

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