[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r26992 - gnunet/src/testbed
From: |
gnunet |
Subject: |
[GNUnet-SVN] r26992 - gnunet/src/testbed |
Date: |
Fri, 26 Apr 2013 10:47:58 +0200 |
Author: harsha
Date: 2013-04-26 10:47:58 +0200 (Fri, 26 Apr 2013)
New Revision: 26992
Modified:
gnunet/src/testbed/Makefile.am
gnunet/src/testbed/gnunet-helper-testbed.c
gnunet/src/testbed/test_testbed_api_testbed_run.c
Log:
- signal termination to peers when controller crashes
Modified: gnunet/src/testbed/Makefile.am
===================================================================
--- gnunet/src/testbed/Makefile.am 2013-04-26 07:38:20 UTC (rev 26991)
+++ gnunet/src/testbed/Makefile.am 2013-04-26 08:47:58 UTC (rev 26992)
@@ -144,6 +144,7 @@
test_testbed_api_testbed_run_topologysmallworld \
test_testbed_api_testbed_run_topologyfromfile \
test_testbed_api_testbed_run_topologyscalefree \
+ test_testbed_api_testbed_run_waitforever \ #Can be used for manual debugging
test_testbed_api_statistics
if ENABLE_TEST_RUN
@@ -319,6 +320,12 @@
$(top_builddir)/src/util/libgnunetutil.la \
libgnunettestbed.la
+test_testbed_api_testbed_run_waitforever_SOURCES = \
+ test_testbed_api_testbed_run.c
+test_testbed_api_testbed_run_waitforever_LDADD = \
+ $(top_builddir)/src/util/libgnunetutil.la \
+ libgnunettestbed.la
+
test_testbed_api_statistics_SOURCES = \
test_testbed_api_statistics.c
test_testbed_api_statistics_LDADD = \
Modified: gnunet/src/testbed/gnunet-helper-testbed.c
===================================================================
--- gnunet/src/testbed/gnunet-helper-testbed.c 2013-04-26 07:38:20 UTC (rev
26991)
+++ gnunet/src/testbed/gnunet-helper-testbed.c 2013-04-26 08:47:58 UTC (rev
26992)
@@ -29,7 +29,10 @@
* This helper monitors for three termination events. They are:
(1)The
* stdin of the helper is closed for reading; (2)the helper received
* SIGTERM/SIGINT; (3)the testbed crashed. In case of events 1 and 2
- * the helper kills the testbed service.
+ * the helper kills the testbed service. When testbed crashed (event
+ * 3), the helper should send a SIGTERM to its own process group; this
+ * behaviour will help terminate any child processes (peers) testbed
+ * has started and prevents them from leaking and running forever.
*
* @author Sree Harsha Totakura <address@hidden>
*/
@@ -294,7 +297,12 @@
{
GNUNET_OS_process_destroy (testbed);
testbed = NULL;
- shutdown_now ();
+ /* Send SIGTERM to our process group */
+ if (0 != PLIBC_KILL (0, SIGTERM))
+ {
+ GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "signal");
+ shutdown_now (); /* Couldn't send the signal, we shutdown
frowning */
+ }
return;
}
LOG_DEBUG ("Child hasn't died. Resuming to monitor its status\n");
Modified: gnunet/src/testbed/test_testbed_api_testbed_run.c
===================================================================
--- gnunet/src/testbed/test_testbed_api_testbed_run.c 2013-04-26 07:38:20 UTC
(rev 26991)
+++ gnunet/src/testbed/test_testbed_api_testbed_run.c 2013-04-26 08:47:58 UTC
(rev 26992)
@@ -51,14 +51,19 @@
/**
* Current peer id
*/
-unsigned int peer_id;
+static unsigned int peer_id;
/**
* Testing result
*/
static int result;
+/**
+ * Should we wait forever after testbed is initialized?
+ */
+static int wait_forever;
+
/**
* Shutdown nicely
*
@@ -85,7 +90,7 @@
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test timedout -- Aborting\n");
abort_task = GNUNET_SCHEDULER_NO_TASK;
- GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
+ (void) GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
}
@@ -107,6 +112,14 @@
unsigned int links_failed)
{
result = GNUNET_OK;
+ if (GNUNET_YES == wait_forever)
+ {
+ GNUNET_SCHEDULER_cancel (abort_task);
+ abort_task = GNUNET_SCHEDULER_NO_TASK;
+ (void) GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
+ &do_shutdown, NULL);
+ return;
+ }
GNUNET_assert (NULL != peers[0]);
op = GNUNET_TESTBED_peer_stop (NULL, peers[0], NULL, NULL);
GNUNET_assert (NULL != op);
@@ -206,7 +219,9 @@
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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r26992 - gnunet/src/testbed,
gnunet <=