[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r38228 - gnunet/src/testbed
From: |
gnunet |
Subject: |
[GNUnet-SVN] r38228 - gnunet/src/testbed |
Date: |
Thu, 27 Oct 2016 15:00:37 +0200 |
Author: harsha
Date: 2016-10-27 15:00:37 +0200 (Thu, 27 Oct 2016)
New Revision: 38228
Modified:
gnunet/src/testbed/gnunet-service-testbed_barriers.c
gnunet/src/testbed/test_testbed_api_barriers.c
Log:
Fix #4718: Do not echo BARRIER_STATUS messages back to the main controller/test
driverAlso add a few FIXMEs to be fixed and fix testcase logic to accommodate
new scheduler shutdown semantics
Modified: gnunet/src/testbed/gnunet-service-testbed_barriers.c
===================================================================
--- gnunet/src/testbed/gnunet-service-testbed_barriers.c 2016-10-27
09:35:00 UTC (rev 38227)
+++ gnunet/src/testbed/gnunet-service-testbed_barriers.c 2016-10-27
13:00:37 UTC (rev 38228)
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2008--2013 GNUnet e.V.
+ Copyright (C) 2008--2016 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
@@ -234,7 +234,7 @@
GNUNET_CONTAINER_DLL_remove (barrier->head,
barrier->tail,
ctx);
- GNUNET_free (ctx);
+ ctx->barrier = NULL;
}
GNUNET_free (barrier->name);
GNUNET_free (barrier);
@@ -546,6 +546,8 @@
struct WBarrier *wrapper = cls;
struct Barrier *barrier = wrapper->barrier;
+ //FIXME: why are we removing the wrapper? They should only be removed if
they
+ //barrier is crossed or errored out
GNUNET_assert (b_ == wrapper->hbarrier);
wrapper->hbarrier = NULL;
GNUNET_CONTAINER_DLL_remove (barrier->whead,
@@ -713,6 +715,7 @@
GNUNET_CONTAINER_DLL_insert_tail (barrier->whead,
barrier->wtail,
wrapper);
+ //FIXME: Increment barrier->num_wbarriers
wrapper->hbarrier = GNUNET_TESTBED_barrier_init_ (slave->controller,
barrier->name,
barrier->quorum,
@@ -898,16 +901,13 @@
return;
}
GNUNET_SERVICE_client_continue (client);
- while (NULL != (client_ctx = barrier->head)) /* Notify peers */
+ for(client_ctx = barrier->head; NULL != client_ctx; client_ctx =
client_ctx->next) /* Notify peers */
{
env = GNUNET_MQ_msg_copy (&msg->header);
- GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
+ GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client_ctx->client),
env);
- GNUNET_CONTAINER_DLL_remove (barrier->head,
- barrier->tail,
- client_ctx);
- client_ctx->barrier = NULL;
}
+ //FIXME: Send status to wrappers if they exist
}
/* end of gnunet-service-testbed_barriers.c */
Modified: gnunet/src/testbed/test_testbed_api_barriers.c
===================================================================
--- gnunet/src/testbed/test_testbed_api_barriers.c 2016-10-27 09:35:00 UTC
(rev 38227)
+++ gnunet/src/testbed/test_testbed_api_barriers.c 2016-10-27 13:00:37 UTC
(rev 38228)
@@ -50,7 +50,7 @@
/**
* Identifier for the shutdown task
*/
-static struct GNUNET_SCHEDULER_Task *shutdown_task;
+static struct GNUNET_SCHEDULER_Task *timeout_task;
/**
* Result of this test case
@@ -59,20 +59,30 @@
/**
+ * Handle SIGINT and SIGTERM
+ */
+static void
+shutdown_handler(void *cls)
+{
+ if (NULL != timeout_task)
+ {
+ GNUNET_SCHEDULER_cancel(timeout_task);
+ timeout_task = NULL;
+ }
+}
+
+
+/**
* Shutdown this test case when it takes too long
*
* @param cls NULL
*/
static void
-do_shutdown (void *cls)
+do_timeout (void *cls)
{
- shutdown_task = NULL;
- if (NULL != barrier)
- {
- GNUNET_TESTBED_barrier_cancel (barrier);
- barrier = NULL;
- }
-
+ timeout_task = NULL;
+ if (barrier != NULL)
+ GNUNET_TESTBED_barrier_cancel (barrier);
GNUNET_SCHEDULER_shutdown ();
}
@@ -112,20 +122,19 @@
LOG (GNUNET_ERROR_TYPE_ERROR,
"Barrier initialisation failed: %s",
(NULL == emsg) ? "unknown reason" : emsg);
- barrier = NULL;
- GNUNET_SCHEDULER_shutdown ();
- return;
+ break;
case GNUNET_TESTBED_BARRIERSTATUS_CROSSED:
LOG (GNUNET_ERROR_TYPE_INFO,
"Barrier crossed\n");
if (old_status == GNUNET_TESTBED_BARRIERSTATUS_INITIALISED)
result = GNUNET_OK;
- barrier = NULL;
- GNUNET_SCHEDULER_shutdown ();
- return;
+ break;
default:
GNUNET_assert (0);
+ return;
}
+ barrier = NULL;
+ GNUNET_SCHEDULER_shutdown ();
}
@@ -165,11 +174,12 @@
100,
&barrier_cb,
NULL);
- shutdown_task =
+ timeout_task =
GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
(GNUNET_TIME_UNIT_SECONDS,
10 * (NUM_PEERS + 1)),
- &do_shutdown, NULL);
+ &do_timeout, NULL);
+ GNUNET_SCHEDULER_add_shutdown(&shutdown_handler, NULL);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r38228 - gnunet/src/testbed,
gnunet <=