*/
MASTER_STARTED,
+ /**
+ * A peer has been created on master
+ */
+ MASTER_PEER_CREATE_SUCCESS,
+
+ /**
+ * Peer on master controller has been started successfully.
+ */
+ MASTER_PEER_START_SUCCESS,
+
/**
* The first slave has been registered at master controller
*/
*/
SLAVE2_PEER_START_SUCCESS,
+ /**
+ * Try to connect peers on master and slave 2.
+ */
+ MASTER_SLAVE2_PEERS_CONNECTED,
+
/**
* Peer on slave 2 successfully stopped
*/
SLAVE3_GET_CONFIG_SUCCESS,
/**
- * Slave 1 has linked to slave 3; Also marks test as success
+ * Slave 1 has linked to slave 3;
*/
- SLAVE3_LINK_SUCCESS,
+ SLAVE3_LINK_SUCCESS
};
*/
static struct GNUNET_TESTBED_Peer *slave2_peer;
+/**
+ * Handle to a peer started at master controller
+ */
+static struct GNUNET_TESTBED_Peer *master_peer;
+
/**
* Event mask
*/
op = GNUNET_TESTBED_peer_stop (slave1_peer, NULL, NULL);
GNUNET_assert (NULL != op);
break;
- case SLAVE2_PEER_START_SUCCESS:
+ case MASTER_SLAVE2_PEERS_CONNECTED:
op = GNUNET_TESTBED_peer_stop (slave2_peer, NULL, NULL);
GNUNET_assert (NULL != op);
break;
static void
peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg)
{
+ GNUNET_assert (NULL != peer);
+ GNUNET_assert (NULL == emsg);
switch (result)
{
+ case MASTER_STARTED:
+ result = MASTER_PEER_CREATE_SUCCESS;
+ master_peer = peer;
+ GNUNET_TESTBED_operation_done (op);
+ op = GNUNET_TESTBED_peer_start (NULL, master_peer, NULL, NULL);
+ break;
case SLAVE2_LINK_SUCCESS:
- GNUNET_assert (NULL != peer);
- GNUNET_assert (NULL == emsg);
result = SLAVE1_PEER_CREATE_SUCCESS;
slave1_peer = peer;
GNUNET_TESTBED_operation_done (op);
op = GNUNET_TESTBED_peer_create (mc, slave2, cfg, peer_create_cb, NULL);
- GNUNET_assert (NULL != op);
break;
case SLAVE1_PEER_CREATE_SUCCESS:
- GNUNET_assert (NULL != peer);
- GNUNET_assert (NULL == emsg);
result = SLAVE2_PEER_CREATE_SUCCESS;
slave2_peer = peer;
GNUNET_TESTBED_operation_done (op);
- op = GNUNET_TESTBED_peer_start (slave1_peer, NULL, NULL);
- GNUNET_assert (NULL != op);
+ op = GNUNET_TESTBED_peer_start (NULL, slave1_peer, NULL, NULL);
break;
default:
GNUNET_assert (0);
}
+ GNUNET_assert (NULL != op);
}
result = SLAVE1_LINK_SUCCESS;
GNUNET_assert (NULL != slave2);
GNUNET_assert (NULL != slave);
- op = GNUNET_TESTBED_controller_link (mc, slave2, slave, cfg, GNUNET_YES);
+ op = GNUNET_TESTBED_controller_link (NULL, mc, slave2, slave, cfg, GNUNET_YES);
GNUNET_assert (NULL != op);
break;
case SLAVE1_LINK_SUCCESS:
op = GNUNET_TESTBED_peer_create (mc, slave, cfg, peer_create_cb, NULL);
GNUNET_assert (NULL != op);
break;
+ case MASTER_PEER_CREATE_SUCCESS:
+ GNUNET_assert (GNUNET_TESTBED_ET_PEER_START == event->type);
+ GNUNET_assert (event->details.peer_start.host == host);
+ GNUNET_assert (event->details.peer_start.peer == master_peer);
+ GNUNET_TESTBED_operation_done (op);
+ result = MASTER_PEER_START_SUCCESS;
+ slave = GNUNET_TESTBED_host_create_with_id (1, "127.0.0.1", NULL, 0);
+ GNUNET_assert (NULL != slave);
+ rh = GNUNET_TESTBED_register_host (mc, slave, ®istration_cont, NULL);
+ GNUNET_assert (NULL != rh);
+ break;
case SLAVE2_PEER_CREATE_SUCCESS:
GNUNET_assert (GNUNET_TESTBED_ET_PEER_START == event->type);
GNUNET_assert (event->details.peer_start.host == slave);
GNUNET_assert (event->details.peer_stop.peer == slave1_peer);
GNUNET_TESTBED_operation_done (op);
result = SLAVE1_PEER_STOP_SUCCESS;
- op = GNUNET_TESTBED_peer_start (slave2_peer, NULL, NULL);
+ op = GNUNET_TESTBED_peer_start (NULL, slave2_peer, NULL, NULL);
GNUNET_assert (NULL != op);
break;
case SLAVE1_PEER_STOP_SUCCESS:
GNUNET_assert (event->details.peer_start.peer == slave2_peer);
GNUNET_TESTBED_operation_done (op);
result = SLAVE2_PEER_START_SUCCESS;
+ op = GNUNET_TESTBED_overlay_connect (mc, NULL, NULL, master_peer,
+ slave2_peer);
+ break;
+ case SLAVE2_PEER_START_SUCCESS:
+ GNUNET_assert (NULL != event);
+ GNUNET_assert (GNUNET_TESTBED_ET_CONNECT == event->type);
+ GNUNET_assert (event->details.peer_connect.peer1 == master_peer);
+ GNUNET_assert (event->details.peer_connect.peer2 == slave2_peer);
+ result = MASTER_SLAVE2_PEERS_CONNECTED;
+ GNUNET_TESTBED_operation_done (op);
+ op = NULL;
GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
(GNUNET_TIME_UNIT_SECONDS, 1), &delay_task,
NULL);
break;
- case SLAVE2_PEER_START_SUCCESS:
+ case MASTER_SLAVE2_PEERS_CONNECTED:
GNUNET_assert (GNUNET_TESTBED_ET_PEER_STOP == event->type);
GNUNET_assert (event->details.peer_stop.peer == slave2_peer);
GNUNET_TESTBED_operation_done (op);
cfg3 = GNUNET_CONFIGURATION_dup (event->details.operation_finished.generic);
GNUNET_TESTBED_operation_done (op);
result = SLAVE3_GET_CONFIG_SUCCESS;
- op = GNUNET_TESTBED_controller_link (mc, slave3, slave, cfg3, GNUNET_NO);
+ op = GNUNET_TESTBED_controller_link (NULL, mc, slave3, slave, cfg3, GNUNET_NO);
break;
case SLAVE3_GET_CONFIG_SUCCESS:
result = SLAVE3_LINK_SUCCESS;
rh = NULL;
switch (result)
{
- case MASTER_STARTED:
+ case MASTER_PEER_START_SUCCESS:
GNUNET_assert (NULL == emsg);
GNUNET_assert (NULL != mc);
result = SLAVE1_REGISTERED;
GNUNET_assert (NULL != mc);
result = SLAVE2_REGISTERED;
GNUNET_assert (NULL != cfg);
- op = GNUNET_TESTBED_controller_link (mc, slave, NULL, cfg, GNUNET_YES);
+ op = GNUNET_TESTBED_controller_link (NULL, mc, slave, NULL, cfg, GNUNET_YES);
GNUNET_assert (NULL != op);
break;
case SLAVE2_PEER_DESTROY_SUCCESS:
GNUNET_assert (NULL != mc);
GNUNET_assert (NULL == op);
result = SLAVE3_REGISTERED;
- op = GNUNET_TESTBED_controller_link (mc, slave3, NULL, cfg, GNUNET_YES);
+ op = GNUNET_TESTBED_controller_link (NULL, mc, slave3, NULL, cfg, GNUNET_YES);
GNUNET_assert (NULL != op);
break;
default:
&controller_cb, NULL);
GNUNET_assert (NULL != mc);
result = MASTER_STARTED;
- slave = GNUNET_TESTBED_host_create_with_id (1, "127.0.0.1", NULL, 0);
- GNUNET_assert (NULL != slave);
- rh = GNUNET_TESTBED_register_host (mc, slave, ®istration_cont, NULL);
- GNUNET_assert (NULL != rh);
+ op = GNUNET_TESTBED_peer_create (mc, host, cfg, peer_create_cb, NULL);
+ GNUNET_assert (NULL != op);
break;
default:
GNUNET_break (0);
{
host = GNUNET_TESTBED_host_create (NULL, NULL, 0);
GNUNET_assert (NULL != host);
+ if (GNUNET_YES != GNUNET_TESTBED_is_host_habitable (host, config))
+ {
+ GNUNET_TESTBED_host_destroy (host);
+ host = NULL;
+ (void) PRINTF ("%s",
+ "Unable to run the test as this system is not configured "
+ "to use password less SSH logins to localhost.\n"
+ "Marking test as successful\n");
+ result = SLAVE3_LINK_SUCCESS;
+ return;
+ }
cfg = GNUNET_CONFIGURATION_dup (config);
cp = GNUNET_TESTBED_controller_start ("127.0.0.1", host, cfg, status_cb,
NULL);
int
main (int argc, char **argv)
{
- int ret;
-
char *const argv2[] = { "test_testbed_api_controllerlink",
"-c", "test_testbed_api.conf",
NULL
struct GNUNET_GETOPT_CommandLineOption options[] = {
GNUNET_GETOPT_OPTION_END
};
- char *const remote_args[] = {
- "ssh", "-o", "BatchMode=yes", "127.0.0.1", "echo", "Hello", "World", NULL
- };
- struct GNUNET_OS_Process *auxp;
- enum GNUNET_OS_ProcessStatusType type;
- unsigned long code;
-
- auxp =
- GNUNET_OS_start_process_vap (GNUNET_NO, GNUNET_OS_INHERIT_STD_ALL, NULL,
- NULL, "ssh", remote_args);
- GNUNET_assert (NULL != auxp);
- do
- {
- ret = GNUNET_OS_process_status (auxp, &type, &code);
- GNUNET_assert (GNUNET_SYSERR != ret);
- (void) usleep (300);
- }
- while (GNUNET_NO == ret);
- (void) GNUNET_OS_process_wait (auxp);
- GNUNET_OS_process_destroy (auxp);
- if (0 != code)
- {
- (void) printf ("Unable to run the test as this system is not configured "
- "to use password less SSH logins to localhost.\n"
- "Marking test as successful\n");
- return 0;
- }
+ int ret;
+
result = INIT;
ret =
GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1, argv2,