gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r23412 - gnunet/src/testbed
Date: Fri, 24 Aug 2012 17:46:24 +0200

Author: harsha
Date: 2012-08-24 17:46:24 +0200 (Fri, 24 Aug 2012)
New Revision: 23412

Modified:
   gnunet/src/testbed/gnunet-service-testbed.c
   gnunet/src/testbed/test_testbed_api_controllerlink.c
Log:
peer destroy forwarding with tests

Modified: gnunet/src/testbed/gnunet-service-testbed.c
===================================================================
--- gnunet/src/testbed/gnunet-service-testbed.c 2012-08-24 15:32:15 UTC (rev 
23411)
+++ gnunet/src/testbed/gnunet-service-testbed.c 2012-08-24 15:46:24 UTC (rev 
23412)
@@ -942,8 +942,8 @@
  * @param msg the peer create success message
  */
 static void
-forwarded_link_controllers_reply_relay (void *cls,
-                                       const struct GNUNET_MessageHeader *msg)
+forwarded_operation_reply_relay (void *cls,
+                                 const struct GNUNET_MessageHeader *msg)
 {
   struct ForwardedOperationContext *fopc = cls;
   struct GNUNET_MessageHeader *dup_msg;  
@@ -955,7 +955,7 @@
   queue_message (fopc->client, dup_msg);
   GNUNET_SERVER_client_drop (fopc->client);
   GNUNET_SCHEDULER_cancel (fopc->timeout_task);  
-  GNUNET_free (fopc);  
+  GNUNET_free (fopc);
 }
 
 
@@ -966,13 +966,14 @@
  * @param tc the task context from scheduler
  */
 static void
-forwarded_link_controllers_timeout (void *cls,
+forwarded_operation_timeout (void *cls,
                                    const struct GNUNET_SCHEDULER_TaskContext
                                    *tc)
 {
   struct ForwardedOperationContext *fopc = cls;
   
   GNUNET_TESTBED_forward_operation_msg_cancel_ (fopc->opc);
+  send_operation_fail_msg (fopc->client, fopc->operation_id, "Timeout");
   GNUNET_SERVER_client_drop (fopc->client);
   GNUNET_free (fopc);  
 }
@@ -1034,11 +1035,11 @@
       GNUNET_TESTBED_forward_operation_msg_ (lcf->gateway->controller,
                                             lcf->operation_id,
                                             &lcf->msg->header,
-                                            
&forwarded_link_controllers_reply_relay,
+                                            &forwarded_operation_reply_relay,
                                             fopc);
     fopc->timeout_task = 
       GNUNET_SCHEDULER_add_delayed (TIMEOUT,
-                                   &forwarded_link_controllers_timeout, fopc); 
   
+                                   &forwarded_operation_timeout, fopc);    
     lcf->state = FINISHED;
     lcf_proc_task_id = GNUNET_SCHEDULER_add_now (&lcf_proc_task, lcf);
     break;
@@ -1717,6 +1718,7 @@
                      const struct GNUNET_MessageHeader *message)
 {
   const struct GNUNET_TESTBED_PeerDestroyMessage *msg;
+  struct ForwardedOperationContext *fopc;
   struct Peer *peer;
   uint32_t peer_id;
   
@@ -1727,7 +1729,7 @@
   if ((peer_list_size <= peer_id) || (NULL == peer_list[peer_id]))
   {
     LOG (GNUNET_ERROR_TYPE_ERROR,
-         "Asked for destroy when peer not created at us\n");
+         "Asked to destroy a non existent peer with id: %u\n", peer_id);
     GNUNET_SERVER_receive_done (client, GNUNET_OK);
     return;
   }
@@ -1735,7 +1737,19 @@
   if (GNUNET_YES == peer->is_remote)
   {
     /* Forward the destory message to sub controller */
-    GNUNET_break (0);
+    fopc = GNUNET_malloc (sizeof (struct ForwardedOperationContext));
+    GNUNET_SERVER_client_keep (client);    
+    fopc->client = client;
+    fopc->operation_id = GNUNET_ntohll (msg->operation_id);
+    fopc->opc = 
+      GNUNET_TESTBED_forward_operation_msg_ (peer->details.remote.controller,
+                                             fopc->operation_id,
+                                             &msg->header,
+                                             &forwarded_operation_reply_relay,
+                                             fopc);
+    fopc->timeout_task =
+      GNUNET_SCHEDULER_add_delayed (TIMEOUT,
+                                    &forwarded_operation_timeout, fopc);    
     GNUNET_SERVER_receive_done (client, GNUNET_OK);
     return;
   }

Modified: gnunet/src/testbed/test_testbed_api_controllerlink.c
===================================================================
--- gnunet/src/testbed/test_testbed_api_controllerlink.c        2012-08-24 
15:32:15 UTC (rev 23411)
+++ gnunet/src/testbed/test_testbed_api_controllerlink.c        2012-08-24 
15:46:24 UTC (rev 23412)
@@ -83,8 +83,18 @@
     SLAVE1_PEER_CREATE_SUCCESS,
 
     /**
-     * Test is successful
+     * Peer create on slave 2 successful
      */
+    SLAVE2_PEER_CREATE_SUCCESS,
+
+    /**
+     * Peer destroy on slave 1 successful
+     */
+    SLAVE1_PEER_DESTROY_SUCCESS,
+
+    /**
+     * Peer destory on slave 2 successful; Marks test as successful
+     */
     SUCCESS
   };
 
@@ -224,10 +234,11 @@
   case SLAVE1_PEER_CREATE_SUCCESS:
     GNUNET_assert (NULL != peer);
     GNUNET_assert (NULL == emsg);
-    result = SUCCESS;
+    result = SLAVE2_PEER_CREATE_SUCCESS;
     slave2_peer = peer;    
     GNUNET_TESTBED_operation_done (op);
-    GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
+    op = GNUNET_TESTBED_peer_destroy (slave1_peer);
+    GNUNET_assert (NULL != op);    
     break;
   default:
     GNUNET_assert (0);    
@@ -236,6 +247,26 @@
 
 
 /**
+ * Checks the event if it is an operation finished event and if indicates a
+ * successfull completion of operation
+ *
+ * @param event the event information to check
+ */
+static void
+check_operation_success (const struct GNUNET_TESTBED_EventInformation *event)
+{
+  GNUNET_assert (NULL != event);
+  GNUNET_assert (GNUNET_TESTBED_ET_OPERATION_FINISHED == event->type);
+  GNUNET_assert (event->details.operation_finished.operation == op);
+  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);
+}
+
+
+/**
  * Signature of the event handler function called by the
  * respective event controller.
  *
@@ -248,14 +279,7 @@
   switch (result)
   {
   case SLAVE2_REGISTERED:
-    GNUNET_assert (NULL != event);
-    GNUNET_assert (GNUNET_TESTBED_ET_OPERATION_FINISHED == event->type);
-    GNUNET_assert (event->details.operation_finished.operation == op);
-    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);
+    check_operation_success (event);    
     GNUNET_TESTBED_operation_done (op);
     op = NULL;
     result = SLAVE1_LINK_SUCCESS;
@@ -265,18 +289,25 @@
     GNUNET_assert (NULL != op);
     break;
   case SLAVE1_LINK_SUCCESS:
-    GNUNET_assert (GNUNET_TESTBED_ET_OPERATION_FINISHED == event->type);
-    GNUNET_assert (event->details.operation_finished.operation == op);
-    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);
+    check_operation_success (event);
     GNUNET_TESTBED_operation_done (op);
     op = NULL;
     result = SLAVE2_LINK_SUCCESS;
     op = GNUNET_TESTBED_peer_create (mc, slave, cfg, peer_create_cb, NULL);
     GNUNET_assert (NULL != op);
+    break;
+  case SLAVE2_PEER_CREATE_SUCCESS:
+    check_operation_success (event);
+    GNUNET_TESTBED_operation_done (op);
+    result = SLAVE1_PEER_DESTROY_SUCCESS;
+    op = GNUNET_TESTBED_peer_destroy (slave2_peer);
+    GNUNET_assert (NULL != slave2_peer);
+    break;
+  case SLAVE1_PEER_DESTROY_SUCCESS:
+    check_operation_success (event);
+    GNUNET_TESTBED_operation_done (op);
+    result = SUCCESS;
+    GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
     break;    
   default:
     GNUNET_assert (0);




reply via email to

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