multiple operation queues for an operation
[oweals/gnunet.git] / src / testbed / test_testbed_api_3peers_3controllers.c
index fd64d987bd54f205709b0536323cef9ab9877b0d..691e04727329b9d9eaa557dd5c3036893b0b98fe 100644 (file)
@@ -214,16 +214,6 @@ enum Stage
    */
   PEERS_1_2_CONNECTED,
 
-  /**
-   * Configuration of C has been acquired
-   */
-  CONTROLLER_CFG_ACQUIRED,
-
-  /**
-   * Linking controller B to C laterally
-   */
-  CONTROLLERS_LATERALLY_LINKED,
-
   /**
    * peer2 and peer3 are connected
    */
@@ -347,7 +337,17 @@ op_comp_cb (void *cls, struct GNUNET_TESTBED_Operation *op, const char *emsg)
     result = PEERS_1_2_CONNECTED;
     LOG (GNUNET_ERROR_TYPE_DEBUG, "Peers connected\n");
     common_operation = 
-       GNUNET_TESTBED_get_slave_config (NULL, controller1, neighbour2);
+        GNUNET_TESTBED_overlay_connect (NULL, &op_comp_cb, NULL, peer2.peer,
+                                         peer3.peer);
+    break;
+  case PEERS_1_2_CONNECTED:
+    GNUNET_assert (NULL != common_operation);
+    GNUNET_TESTBED_operation_done (common_operation);
+    common_operation = NULL;
+    result = PEERS_2_3_CONNECTED;
+    delayed_connect_task =
+          GNUNET_SCHEDULER_add_delayed (TIME_REL_SECS (3),
+                                        &do_delayed_connect, NULL);
     break;
   case PEERS_2_3_CONNECTED:
     GNUNET_assert (NULL == peer1.operation);
@@ -361,14 +361,6 @@ op_comp_cb (void *cls, struct GNUNET_TESTBED_Operation *op, const char *emsg)
     peer2.operation = GNUNET_TESTBED_peer_stop (peer2.peer, NULL, NULL);
     peer3.operation = GNUNET_TESTBED_peer_stop (peer3.peer, NULL, NULL);
     break;
-  case CONTROLLERS_LATERALLY_LINKED:
-    GNUNET_TESTBED_operation_done (common_operation);
-    common_operation = NULL;
-    result = PEERS_2_3_CONNECTED;
-    delayed_connect_task =
-       GNUNET_SCHEDULER_add_delayed (TIME_REL_SECS (3),
-                                     &do_delayed_connect, NULL);
-    break;
   default:
     GNUNET_assert (0);
   }
@@ -396,7 +388,7 @@ peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg)
     peer1.peer = peer;
     GNUNET_TESTBED_operation_done (peer1.operation);
     result = PEER1_CREATED;
-    peer1.operation = GNUNET_TESTBED_peer_start (peer, NULL, NULL);
+    peer1.operation = GNUNET_TESTBED_peer_start (NULL, peer, NULL, NULL);
     break;
   case CONTROLLER2_UP:
     GNUNET_assert (NULL != peer2.operation);
@@ -405,7 +397,7 @@ peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg)
     peer2.peer = peer;
     GNUNET_TESTBED_operation_done (peer2.operation);
     result = PEER2_CREATED;
-    peer2.operation = GNUNET_TESTBED_peer_start (peer, NULL, NULL);
+    peer2.operation = GNUNET_TESTBED_peer_start (NULL, peer, NULL, NULL);
     break;
   case CONTROLLER3_UP:
     GNUNET_assert (NULL != peer3.operation);
@@ -414,7 +406,7 @@ peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg)
     peer3.peer = peer;
     GNUNET_TESTBED_operation_done (peer3.operation);
     result = PEER3_CREATED;
-    peer3.operation = GNUNET_TESTBED_peer_start (peer, NULL, NULL);
+    peer3.operation = GNUNET_TESTBED_peer_start (NULL, peer, NULL, NULL);
     break;
   default:
     GNUNET_assert (0);
@@ -502,24 +494,6 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event)
                                       &peer_create_cb, NULL);
       GNUNET_assert (NULL != peer3.operation);
       break;
-    case PEERS_1_2_CONNECTED:
-      GNUNET_assert (NULL != event->details.operation_finished.generic);
-      cfg2 = 
-         GNUNET_CONFIGURATION_dup (event->details.operation_finished.generic);
-      GNUNET_TESTBED_operation_done (common_operation);
-      result = CONTROLLER_CFG_ACQUIRED;
-      common_operation =
-         GNUNET_TESTBED_controller_link (controller1, neighbour2, neighbour1,
-                                         cfg2, GNUNET_NO);
-      break;
-    case CONTROLLER_CFG_ACQUIRED:
-      GNUNET_assert (NULL == event->details.operation_finished.generic);
-      GNUNET_TESTBED_operation_done (common_operation);
-      result = CONTROLLERS_LATERALLY_LINKED;
-      common_operation =
-         GNUNET_TESTBED_overlay_connect (NULL, &op_comp_cb, NULL, peer2.peer,
-                                         peer3.peer);      
-      break;
     default:
       GNUNET_assert (0);
     }
@@ -534,7 +508,7 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event)
       peer1.operation = NULL;
       result = PEER1_STARTED;
       common_operation =
-          GNUNET_TESTBED_controller_link (controller1, neighbour1, NULL, cfg,
+          GNUNET_TESTBED_controller_link (NULL, controller1, neighbour1, NULL, cfg,
                                           GNUNET_YES); 
       break;
     case PEER2_CREATED:
@@ -545,7 +519,7 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event)
       result = PEER2_STARTED;
       GNUNET_assert (NULL == common_operation);              
       common_operation =
-          GNUNET_TESTBED_controller_link (controller1, neighbour2, NULL, cfg,
+          GNUNET_TESTBED_controller_link (NULL, controller1, neighbour2, NULL, cfg,
                                           GNUNET_YES);
       GNUNET_assert (NULL != common_operation);
       break;
@@ -556,8 +530,8 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event)
       peer3.operation = NULL;
       result = PEER3_STARTED;
       common_operation =
-          GNUNET_TESTBED_overlay_connect (NULL, &op_comp_cb, NULL, peer1.peer,
-                                          peer2.peer);
+          GNUNET_TESTBED_overlay_connect (NULL, &op_comp_cb, NULL, peer2.peer,
+                                          peer1.peer);
       break;
     default:
       GNUNET_assert (0);
@@ -600,18 +574,18 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event)
     {
     case PEER3_STARTED:
       GNUNET_assert (NULL != common_operation);
-      GNUNET_assert ((event->details.peer_connect.peer1 == peer1.peer) &&
-                    (event->details.peer_connect.peer2 == peer2.peer));
+      GNUNET_assert ((event->details.peer_connect.peer1 == peer2.peer) &&
+                    (event->details.peer_connect.peer2 == peer1.peer));
       break;
     case PEERS_2_3_CONNECTED:
       GNUNET_assert (NULL != common_operation);
       GNUNET_assert ((event->details.peer_connect.peer1 == peer1.peer) &&
                     (event->details.peer_connect.peer2 == peer2.peer));
       break;
-    case CONTROLLERS_LATERALLY_LINKED:
+    case PEERS_1_2_CONNECTED: 
       GNUNET_assert (NULL != common_operation);
       GNUNET_assert ((event->details.peer_connect.peer1 == peer2.peer) &&
-                    (event->details.peer_connect.peer2 == peer3.peer));
+                    (event->details.peer_connect.peer2 == peer3.peer));      
       break;
     default:
       GNUNET_assert (0);
@@ -688,8 +662,7 @@ status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *config, int stat
     break;
   default:
     GNUNET_assert (0);
-  }
-  
+  }  
 }
 
 
@@ -709,7 +682,7 @@ run (void *cls, char *const *args, const char *cfgfile,
   GNUNET_assert (NULL != host);
   cfg = GNUNET_CONFIGURATION_dup (config);
   cp1 = GNUNET_TESTBED_controller_start ("127.0.0.1", host, cfg, status_cb,
-                                        NULL);
+                                         NULL);
   abort_task =
       GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
                                     (GNUNET_TIME_UNIT_MINUTES, 3), &do_abort,
@@ -718,7 +691,9 @@ run (void *cls, char *const *args, const char *cfgfile,
 
 
 /**
- * Function to check if password-less SSH logins to given ip work
+ * Function to check if 
+ * 1. Password-less SSH logins to given ip work
+ * 2. gnunet-helper-testbed is found on the PATH on the remote side
  *
  * @param host_str numeric representation of the host's ip
  * @return GNUNET_YES if password-less SSH login to the given host works;
@@ -728,8 +703,9 @@ static int
 check_ssh (char *host_str)
 {
   char *const remote_args[] = {
-    "ssh", "-o", "BatchMode=yes", "-o", "CheckHostIP=no", "-q",
-    host_str, "echo", "SSH", "works", NULL
+    "ssh", "-o", "BatchMode=yes", "-o", "CheckHostIP=no", 
+    "-o", "NoHostAuthenticationForLocalhost=yes", "-q",
+    host_str, "which", "gnunet-helper-testbed", NULL
   };
   struct GNUNET_OS_Process *auxp;
   enum GNUNET_OS_ProcessStatusType type;
@@ -760,8 +736,8 @@ int
 main (int argc, char **argv)
 {
   char *const argv2[] = { "test_testbed_api_3peers_3controllers",
-    "-c", "test_testbed_api.conf",
-    NULL
+                          "-c", "test_testbed_api.conf",
+                          NULL
   };
   struct GNUNET_GETOPT_CommandLineOption options[] = {
     GNUNET_GETOPT_OPTION_END