/* Timeout for entire testcase */
#define TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 60)
+#define SETUP_TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 10)
/* Global return value (0 for success, anything else for failure) */
static int ok;
static GNUNET_SCHEDULER_TaskIdentifier wait_task;
+static GNUNET_SCHEDULER_TaskIdentifier setup_task;
+
static struct GNUNET_CRYPTO_ShortHashCode dave_hash;
static struct GNUNET_CRYPTO_ShortHashCode bob_hash;
GNUNET_SCHEDULER_shutdown ();
}
+static void
+setup_end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+ setup_task = GNUNET_SCHEDULER_NO_TASK;
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Timeout during setup, test failed\n");
+
+ if (NULL != connect_ops[0])
+ {
+ GNUNET_TESTBED_operation_done (connect_ops[0]);
+ connect_ops[0] = NULL;
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not connect peer 0 and 1\n");
+ }
+
+ if (NULL != connect_ops[1])
+ {
+ GNUNET_TESTBED_operation_done (connect_ops[1]);
+ connect_ops[1] = NULL;
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not connect peer 1 and 2\n");
+ }
+
+ if (NULL != connect_ops[2])
+ {
+ GNUNET_TESTBED_operation_done (connect_ops[2]);
+ connect_ops[2] = NULL;
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not connect peer 0 and 2\n");
+ }
+
+ GNUNET_SCHEDULER_shutdown ();
+ ok = GNUNET_SYSERR;
+}
+
static void
end_now ()
{
all_connected ()
{
GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Created all connections! Waiting for PUTs\n");
+ if (GNUNET_SCHEDULER_NO_TASK != setup_task)
+ {
+ GNUNET_SCHEDULER_cancel (setup_task);
+ setup_task = GNUNET_SCHEDULER_NO_TASK;
+ }
wait_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &commence_testing, NULL);
}
GNUNET_assert (NULL != peers);
cpeers = peers;
+ setup_task = GNUNET_SCHEDULER_add_delayed (SETUP_TIMEOUT, &setup_end_badly, NULL);
+
/* peer 0: dave */
GNUNET_assert (NULL != peers[0]);
get_cfg_ops[0] = GNUNET_TESTBED_peer_get_information (peers[0],
break;
case GNUNET_TESTBED_ET_CONNECT:
connections ++;
+ if ((event->details.peer_connect.peer1 == cpeers[0]) &&
+ (event->details.peer_connect.peer2 == cpeers[1]))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer 0 and 1 are connected\n");
+ GNUNET_TESTBED_operation_done (connect_ops[0]);
+ connect_ops[0] = NULL;
+ }
+
+ if ((event->details.peer_connect.peer1 == cpeers[1]) &&
+ (event->details.peer_connect.peer2 == cpeers[2]))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer 1 and 2 are connected\n");
+ GNUNET_TESTBED_operation_done (connect_ops[1]);
+ connect_ops[1] = NULL;
+ }
+
+ if ((event->details.peer_connect.peer1 == cpeers[0]) &&
+ (event->details.peer_connect.peer2 == cpeers[2]))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer 0 and 2 are connected\n");
+ GNUNET_TESTBED_operation_done (connect_ops[2]);
+ connect_ops[2] = NULL;
+ }
if (connections == 3)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "All peers connected\n");
- GNUNET_TESTBED_operation_done (connect_ops[0]);
- connect_ops[0] = NULL;
- GNUNET_TESTBED_operation_done (connect_ops[1]);
- connect_ops[1] = NULL;
- GNUNET_TESTBED_operation_done (connect_ops[2]);
- connect_ops[2] = NULL;
all_connected ();
}
break;