[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r24312 - gnunet/src/testbed
From: |
gnunet |
Subject: |
[GNUnet-SVN] r24312 - gnunet/src/testbed |
Date: |
Sun, 14 Oct 2012 15:56:15 +0200 |
Author: harsha
Date: 2012-10-14 15:56:15 +0200 (Sun, 14 Oct 2012)
New Revision: 24312
Modified:
gnunet/src/testbed/gnunet-testbed-profiler.c
gnunet/src/testbed/testbed_api_peers.c
gnunet/src/testbed/testbed_api_topology.c
Log:
peer linking
Modified: gnunet/src/testbed/gnunet-testbed-profiler.c
===================================================================
--- gnunet/src/testbed/gnunet-testbed-profiler.c 2012-10-14 13:24:51 UTC
(rev 24311)
+++ gnunet/src/testbed/gnunet-testbed-profiler.c 2012-10-14 13:56:15 UTC
(rev 24312)
@@ -85,7 +85,12 @@
/**
* Starting peers
*/
- STATE_PEERS_STARTING
+ STATE_PEERS_STARTING,
+
+ /**
+ * Linking peers
+ */
+ STATE_PEERS_LINKING
};
@@ -135,6 +140,11 @@
struct DLLOperation *dll_op_tail;
/**
+ * Peer linking - topology operation
+ */
+struct GNUNET_TESTBED_Operation *topology_op;
+
+/**
* Abort task identifier
*/
static GNUNET_SCHEDULER_TaskIdentifier abort_task;
@@ -175,6 +185,11 @@
static unsigned int num_hosts;
/**
+ * Number of random links to be established between peers
+ */
+static unsigned int num_links;
+
+/**
* Global testing status
*/
static int result;
@@ -203,6 +218,8 @@
GNUNET_SCHEDULER_cancel (register_hosts_task);
if (NULL != reg_handle)
GNUNET_TESTBED_cancel_registration (reg_handle);
+ if (NULL != topology_op)
+ GNUNET_TESTBED_operation_cancel (topology_op);
for (nhost = 0; nhost < num_hosts; nhost++)
if (NULL != hosts[nhost])
GNUNET_TESTBED_host_destroy (hosts[nhost]);
@@ -271,6 +288,19 @@
prof_time = GNUNET_TIME_absolute_get_duration (prof_start_time);
printf ("All peers started successfully in %.2f seconds\n",
((double) prof_time.rel_value) / 1000.00);
+ result = GNUNET_OK;
+ if (0 == num_links)
+ {
+ GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
+ return;
+ }
+ state = STATE_PEERS_LINKING;
+ /* Do overlay connect */
+ prof_start_time = GNUNET_TIME_absolute_get ();
+ topology_op =
+ GNUNET_TESTBED_overlay_configure_topology (NULL, num_peers, peers,
+
GNUNET_TESTBED_TOPOLOGY_ERDOS_RENYI,
+ num_links);
}
}
@@ -320,7 +350,7 @@
for (peer_cnt = 0; peer_cnt < num_peers; peer_cnt++)
{
dll_op = GNUNET_malloc (sizeof (struct DLLOperation));
- dll_op->op = GNUNET_TESTBED_peer_start (NULL, peers[peer_cnt],
+ dll_op->op = GNUNET_TESTBED_peer_start (dll_op, peers[peer_cnt],
&peer_churn_cb, dll_op);
GNUNET_CONTAINER_DLL_insert_tail (dll_op_head, dll_op_tail, dll_op);
}
@@ -404,6 +434,38 @@
GNUNET_assert (0);
}
break;
+ case STATE_PEERS_LINKING:
+ switch (event->type)
+ {
+ case GNUNET_TESTBED_ET_OPERATION_FINISHED:
+ /* Control reaches here when a peer linking operation fails */
+ if (NULL != event->details.operation_finished.emsg)
+ {
+ LOG (GNUNET_ERROR_TYPE_WARNING,
+ _("An operation has failed while starting slaves\n"));
+ GNUNET_SCHEDULER_cancel (abort_task);
+ abort_task = GNUNET_SCHEDULER_add_now (&do_abort, NULL);
+ }
+ break;
+ case GNUNET_TESTBED_ET_CONNECT:
+ {
+ static unsigned int established_links;
+
+ if (++established_links == num_links)
+ {
+ prof_time = GNUNET_TIME_absolute_get_duration (prof_start_time);
+ printf ("%u links established in %.2f seconds\n",
+ num_links, ((double) prof_time.rel_value) / 1000.00);
+ GNUNET_TESTBED_operation_done (topology_op);
+ topology_op = NULL;
+ GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
+ }
+ }
+ break;
+ default:
+ GNUNET_assert (0);
+ }
+ break;
default:
GNUNET_assert (0);
}
@@ -590,12 +652,12 @@
main (int argc, char *const *argv)
{
static const struct GNUNET_GETOPT_CommandLineOption options[] = {
- { 'n', "num-peers", "COUNT",
+ { 'p', "num-peers", "COUNT",
gettext_noop ("create COUNT number of peers"),
GNUNET_YES, &GNUNET_GETOPT_set_uint, &num_peers },
- { 'n', "num-peers", "COUNT",
- gettext_noop ("create COUNT number of peers"),
- GNUNET_YES, &GNUNET_GETOPT_set_uint, &num_peers },
+ { 'n', "num-links", "COUNT",
+ gettext_noop ("create COUNT number of random links"),
+ GNUNET_YES, &GNUNET_GETOPT_set_uint, &num_links },
GNUNET_GETOPT_OPTION_END
};
int ret;
Modified: gnunet/src/testbed/testbed_api_peers.c
===================================================================
--- gnunet/src/testbed/testbed_api_peers.c 2012-10-14 13:24:51 UTC (rev
24311)
+++ gnunet/src/testbed/testbed_api_peers.c 2012-10-14 13:56:15 UTC (rev
24312)
@@ -716,6 +716,7 @@
opc->c = p1->controller;
opc->id = GNUNET_TESTBED_get_next_op_id (opc->c);
opc->type = OP_OVERLAY_CONNECT;
+ opc->op_cls = op_cls;
opc->op =
GNUNET_TESTBED_operation_create_ (opc, &opstart_overlay_connect,
&oprelease_overlay_connect);
Modified: gnunet/src/testbed/testbed_api_topology.c
===================================================================
--- gnunet/src/testbed/testbed_api_topology.c 2012-10-14 13:24:51 UTC (rev
24311)
+++ gnunet/src/testbed/testbed_api_topology.c 2012-10-14 13:56:15 UTC (rev
24312)
@@ -71,6 +71,11 @@
struct GNUNET_TESTBED_Operation **link_ops;
/**
+ * The operation closure
+ */
+ void *op_cls;
+
+ /**
* The size of the link array
*/
unsigned int link_array_size;
@@ -122,7 +127,7 @@
for (p = 0; p < tc->link_array_size; p++)
{
tc->link_ops[p] =
- GNUNET_TESTBED_overlay_connect (NULL, &overlay_link_completed,
+ GNUNET_TESTBED_overlay_connect (tc->op_cls, &overlay_link_completed,
&tc->link_ops[p],
tc->peers[tc->link_array[p].A],
tc->peers[tc->link_array[p].B]);
@@ -232,6 +237,7 @@
c = peers[0]->controller;
tc = GNUNET_malloc (sizeof (struct TopologyContext));
tc->peers = peers;
+ tc->op_cls = tc->op_cls;
switch (topo)
{
case GNUNET_TESTBED_TOPOLOGY_LINE:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r24312 - gnunet/src/testbed,
gnunet <=