summaryrefslogtreecommitdiff
path: root/src/testbed/test_testbed_api_barriers.c
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2016-10-27 13:00:37 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2016-10-27 13:00:37 +0000
commit251c9287514c0e3a2cf6a3f6f978a27a49e65085 (patch)
tree0516668b8721fe2f320d3f2afcd014239ac6fe2b /src/testbed/test_testbed_api_barriers.c
parent7c5d2c6f7da4a48cbb997791d1dc514c842097a9 (diff)
downloadgnunet-251c9287514c0e3a2cf6a3f6f978a27a49e65085.tar.gz
gnunet-251c9287514c0e3a2cf6a3f6f978a27a49e65085.zip
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
Diffstat (limited to 'src/testbed/test_testbed_api_barriers.c')
-rw-r--r--src/testbed/test_testbed_api_barriers.c44
1 files changed, 27 insertions, 17 deletions
diff --git a/src/testbed/test_testbed_api_barriers.c b/src/testbed/test_testbed_api_barriers.c
index 01c745a75..e712e2d5a 100644
--- a/src/testbed/test_testbed_api_barriers.c
+++ b/src/testbed/test_testbed_api_barriers.c
@@ -50,7 +50,7 @@ struct GNUNET_TESTBED_Barrier *barrier;
50/** 50/**
51 * Identifier for the shutdown task 51 * Identifier for the shutdown task
52 */ 52 */
53static struct GNUNET_SCHEDULER_Task *shutdown_task; 53static struct GNUNET_SCHEDULER_Task *timeout_task;
54 54
55/** 55/**
56 * Result of this test case 56 * Result of this test case
@@ -59,20 +59,30 @@ static int result;
59 59
60 60
61/** 61/**
62 * Shutdown this test case when it takes too long 62 * Handle SIGINT and SIGTERM
63 *
64 * @param cls NULL
65 */ 63 */
66static void 64static void
67do_shutdown (void *cls) 65shutdown_handler(void *cls)
68{ 66{
69 shutdown_task = NULL; 67 if (NULL != timeout_task)
70 if (NULL != barrier)
71 { 68 {
72 GNUNET_TESTBED_barrier_cancel (barrier); 69 GNUNET_SCHEDULER_cancel(timeout_task);
73 barrier = NULL; 70 timeout_task = NULL;
74 } 71 }
72}
75 73
74
75/**
76 * Shutdown this test case when it takes too long
77 *
78 * @param cls NULL
79 */
80static void
81do_timeout (void *cls)
82{
83 timeout_task = NULL;
84 if (barrier != NULL)
85 GNUNET_TESTBED_barrier_cancel (barrier);
76 GNUNET_SCHEDULER_shutdown (); 86 GNUNET_SCHEDULER_shutdown ();
77} 87}
78 88
@@ -112,20 +122,19 @@ barrier_cb (void *cls,
112 LOG (GNUNET_ERROR_TYPE_ERROR, 122 LOG (GNUNET_ERROR_TYPE_ERROR,
113 "Barrier initialisation failed: %s", 123 "Barrier initialisation failed: %s",
114 (NULL == emsg) ? "unknown reason" : emsg); 124 (NULL == emsg) ? "unknown reason" : emsg);
115 barrier = NULL; 125 break;
116 GNUNET_SCHEDULER_shutdown ();
117 return;
118 case GNUNET_TESTBED_BARRIERSTATUS_CROSSED: 126 case GNUNET_TESTBED_BARRIERSTATUS_CROSSED:
119 LOG (GNUNET_ERROR_TYPE_INFO, 127 LOG (GNUNET_ERROR_TYPE_INFO,
120 "Barrier crossed\n"); 128 "Barrier crossed\n");
121 if (old_status == GNUNET_TESTBED_BARRIERSTATUS_INITIALISED) 129 if (old_status == GNUNET_TESTBED_BARRIERSTATUS_INITIALISED)
122 result = GNUNET_OK; 130 result = GNUNET_OK;
123 barrier = NULL; 131 break;
124 GNUNET_SCHEDULER_shutdown ();
125 return;
126 default: 132 default:
127 GNUNET_assert (0); 133 GNUNET_assert (0);
134 return;
128 } 135 }
136 barrier = NULL;
137 GNUNET_SCHEDULER_shutdown ();
129} 138}
130 139
131 140
@@ -165,11 +174,12 @@ test_master (void *cls,
165 100, 174 100,
166 &barrier_cb, 175 &barrier_cb,
167 NULL); 176 NULL);
168 shutdown_task = 177 timeout_task =
169 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply 178 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
170 (GNUNET_TIME_UNIT_SECONDS, 179 (GNUNET_TIME_UNIT_SECONDS,
171 10 * (NUM_PEERS + 1)), 180 10 * (NUM_PEERS + 1)),
172 &do_shutdown, NULL); 181 &do_timeout, NULL);
182 GNUNET_SCHEDULER_add_shutdown(&shutdown_handler, NULL);
173} 183}
174 184
175 185