projects
/
oweals
/
gnunet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
eliminate KX short cut
[oweals/gnunet.git]
/
src
/
testbed
/
test_testbed_api_testbed_run.c
diff --git
a/src/testbed/test_testbed_api_testbed_run.c
b/src/testbed/test_testbed_api_testbed_run.c
index 349dc492399f30b6424224b39e9750e9d98c61f2..45c9f5adf36cf12785fdf87657f7be012797f440 100644
(file)
--- a/
src/testbed/test_testbed_api_testbed_run.c
+++ b/
src/testbed/test_testbed_api_testbed_run.c
@@
-1,6
+1,6
@@
/*
This file is part of GNUnet
/*
This file is part of GNUnet
- (C) 2008--2012 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2008--2013 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@
-14,8
+14,8
@@
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 5
9 Temple Place - Suite 330
,
- Boston, MA 0211
1-1307
, USA.
+ Free Software Foundation, Inc., 5
1 Franklin Street, Fifth Floor
,
+ Boston, MA 0211
0-1301
, USA.
*/
/**
*/
/**
@@
-25,7
+25,7
@@
*/
#include "platform.h"
*/
#include "platform.h"
-#include "gnunet_
common
.h"
+#include "gnunet_
util_lib
.h"
#include "gnunet_testbed_service.h"
/**
#include "gnunet_testbed_service.h"
/**
@@
-46,31
+46,35
@@
static struct GNUNET_TESTBED_Operation *op;
/**
* Abort task identifier
*/
/**
* Abort task identifier
*/
-static
GNUNET_SCHEDULER_TaskIdentifier
abort_task;
+static
struct GNUNET_SCHEDULER_Task *
abort_task;
/**
* Current peer id
*/
/**
* Current peer id
*/
-unsigned int peer_id;
+
static
unsigned int peer_id;
/**
* Testing result
*/
static int result;
/**
* Testing result
*/
static int result;
+/**
+ * Should we wait forever after testbed is initialized?
+ */
+static int wait_forever;
+
/**
* Shutdown nicely
*
* @param cls NULL
/**
* Shutdown nicely
*
* @param cls NULL
- * @param tc the task context
*/
static void
*/
static void
-do_shutdown (void *cls
, const struct GNUNET_SCHEDULER_TaskContext *tc
)
+do_shutdown (void *cls)
{
{
- if (
GNUNET_SCHEDULER_NO_TASK
!= abort_task)
+ if (
NULL
!= abort_task)
GNUNET_SCHEDULER_cancel (abort_task);
GNUNET_SCHEDULER_cancel (abort_task);
- GNUNET_SCHEDULER_shutdown ();
/* Stop scheduler to shutdown testbed run */
+ GNUNET_SCHEDULER_shutdown (); /* Stop scheduler to shutdown testbed run */
}
}
@@
-78,29
+82,49
@@
do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
* abort task to run on test timed out
*
* @param cls NULL
* abort task to run on test timed out
*
* @param cls NULL
- * @param tc the task context
*/
static void
*/
static void
-do_abort (void *cls
, const struct GNUNET_SCHEDULER_TaskContext *tc
)
+do_abort (void *cls)
{
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test timedout -- Aborting\n");
- abort_task = GNUNET_SCHEDULER_NO_TASK;
+ abort_task = NULL;
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Test timed out -- Aborting\n");
GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
}
/**
GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
}
/**
- *
Task to be executed when peers are ready
+ *
Signature of a main function for a testcase.
*
*
- * @param cls NULL
- * @param tc the task context
+ * @param cls closure
+ * @param h the run handle
+ * @param num_peers number of peers in 'peers'
+ * @param peers_ handle to peers run in the testbed
+ * @param links_succeeded the number of overlay link connection attempts that
+ * succeeded
+ * @param links_failed the number of overlay link connection attempts that
+ * failed
*/
static void
*/
static void
-master_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+test_master (void *cls,
+ struct GNUNET_TESTBED_RunHandle *h,
+ unsigned int num_peers,
+ struct GNUNET_TESTBED_Peer **peers_,
+ unsigned int links_succeeded,
+ unsigned int links_failed)
{
result = GNUNET_OK;
{
result = GNUNET_OK;
+ if (GNUNET_YES == wait_forever)
+ {
+ if (NULL == abort_task)
+ return; /* abort already scheduled */
+ GNUNET_SCHEDULER_cancel (abort_task);
+ abort_task = NULL;
+ GNUNET_SCHEDULER_add_shutdown (&do_shutdown, NULL);
+ return;
+ }
GNUNET_assert (NULL != peers[0]);
GNUNET_assert (NULL != peers[0]);
- op = GNUNET_TESTBED_peer_stop (peers[0], NULL, NULL);
+ op = GNUNET_TESTBED_peer_stop (
NULL,
peers[0], NULL, NULL);
GNUNET_assert (NULL != op);
}
GNUNET_assert (NULL != op);
}
@@
-144,7
+168,9
@@
controller_event_cb (void *cls,
* @param cfg the configuration file handle
*/
static void
* @param cfg the configuration file handle
*/
static void
-run (void *cls, char *const *args, const char *cfgfile,
+run (void *cls,
+ char *const *args,
+ const char *cfgfile,
const struct GNUNET_CONFIGURATION_Handle *config)
{
uint64_t event_mask;
const struct GNUNET_CONFIGURATION_Handle *config)
{
uint64_t event_mask;
@@
-152,11
+178,13
@@
run (void *cls, char *const *args, const char *cfgfile,
event_mask = 0;
event_mask |= (1LL << GNUNET_TESTBED_ET_PEER_START);
event_mask |= (1LL << GNUNET_TESTBED_ET_PEER_STOP);
event_mask = 0;
event_mask |= (1LL << GNUNET_TESTBED_ET_PEER_START);
event_mask |= (1LL << GNUNET_TESTBED_ET_PEER_STOP);
- GNUNET_TESTBED_run (NULL, config, NUM_PEERS, event_mask, &controller_event_cb,
- NULL, &master_task, NULL);
+ GNUNET_TESTBED_run (NULL, config, NUM_PEERS, event_mask,
+ &controller_event_cb, NULL,
+ &test_master, NULL);
abort_task =
GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
abort_task =
GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_SECONDS, 300), &do_abort,
+ (GNUNET_TIME_UNIT_SECONDS, 300),
+ &do_abort,
NULL);
}
NULL);
}
@@
-198,10
+226,12
@@
main (int argc, char **argv)
GNUNET_break (0); /* Windows with no .exe? */
}
#endif
GNUNET_break (0); /* Windows with no .exe? */
}
#endif
- if (0 != strcmp ("run", testname))
+ if (0 == strcmp ("waitforever", testname))
+ wait_forever = GNUNET_YES;
+ if ( (GNUNET_YES != wait_forever) && (0 != strcmp ("run", testname)) )
{
{
- GNUNET_asprintf (&config_filename,
-
"test_testbed_api_testbed_run_%s.conf",
testname);
+ GNUNET_asprintf (&config_filename,
"test_testbed_api_testbed_run_%s.conf",
+ testname);
}
else
config_filename = GNUNET_strdup ("test_testbed_api.conf");
}
else
config_filename = GNUNET_strdup ("test_testbed_api.conf");