aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/test_testbed_api_testbed_run.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/testbed/test_testbed_api_testbed_run.c')
-rw-r--r--src/testbed/test_testbed_api_testbed_run.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/src/testbed/test_testbed_api_testbed_run.c b/src/testbed/test_testbed_api_testbed_run.c
index dc6bd1ea6a..b9fd60d35c 100644
--- a/src/testbed/test_testbed_api_testbed_run.c
+++ b/src/testbed/test_testbed_api_testbed_run.c
@@ -29,9 +29,14 @@
#include "gnunet_testbed_service.h"
/**
- * Testbed run handle
+ * Number of peers we want to start
*/
-static struct GNUNET_TESTBED_RunHandle *rh;
+#define NUM_PEERS 2
+
+/**
+ * The array of peers; we fill this as the peers are given to us by the testbed
+ */
+static struct GNUNET_TESTBED_Peer *peers[NUM_PEERS];
/**
* Abort task identifier
@@ -39,6 +44,11 @@ static struct GNUNET_TESTBED_RunHandle *rh;
static GNUNET_SCHEDULER_TaskIdentifier abort_task;
/**
+ * Current peer id
+ */
+unsigned int peer_id;
+
+/**
* Testing result
*/
static int result;
@@ -55,8 +65,7 @@ do_shutdown (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc)
{
if (GNUNET_SCHEDULER_NO_TASK != abort_task)
GNUNET_SCHEDULER_cancel (abort_task);
- if (NULL != rh)
- GNUNET_TESTBED_shutdown_run (rh);
+ GNUNET_SCHEDULER_shutdown ();
}
@@ -67,7 +76,7 @@ do_shutdown (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc)
* @param tc the task context
*/
static void
-do_abort (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc)
+do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test timedout -- Aborting\n");
abort_task = GNUNET_SCHEDULER_NO_TASK;
@@ -101,9 +110,17 @@ static void
controller_event_cb (void *cls,
const struct GNUNET_TESTBED_EventInformation *event)
{
- if (GNUNET_TESTBED_ET_PEER_START == event->type)
- return;
- GNUNET_break (0);
+
+ switch (event->type)
+ {
+ case GNUNET_TESTBED_ET_PEER_START:
+ GNUNET_assert (NULL == peers[peer_id]);
+ GNUNET_assert (NULL != event->details.peer_start.peer);
+ peers[peer_id++] = event->details.peer_start.peer;
+ break;
+ default:
+ GNUNET_break (0);
+ }
}
@@ -127,7 +144,7 @@ run (void *cls, char *const *args, const char *cfgfile,
event_mask |= (1LL << GNUNET_TESTBED_ET_CONNECT);
event_mask |= (1LL << GNUNET_TESTBED_ET_DISCONNECT);
event_mask |= (1LL << GNUNET_TESTBED_ET_OPERATION_FINISHED);
- rh = GNUNET_TESTBED_run (NULL, config, 2, event_mask, &controller_event_cb,
+ GNUNET_TESTBED_run (NULL, config, 2, event_mask, &controller_event_cb,
NULL, &master_task, NULL);
abort_task = GNUNET_SCHEDULER_add_delayed
(GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), &do_abort, NULL);