aboutsummaryrefslogtreecommitdiff
path: root/src/testbed
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-07-18 15:25:26 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-07-18 15:25:26 +0000
commite3c1b801f236ea6a513d42c0b104ef0ac30de635 (patch)
tree718c276321851a4d594193bad9ff92fe0070c662 /src/testbed
parent87a733eeca4bc8d4058d72714b2751e8d0770514 (diff)
downloadgnunet-e3c1b801f236ea6a513d42c0b104ef0ac30de635.tar.gz
gnunet-e3c1b801f236ea6a513d42c0b104ef0ac30de635.zip
testbed api peer start
Diffstat (limited to 'src/testbed')
-rw-r--r--src/testbed/test_testbed_api_2peers.c5
-rw-r--r--src/testbed/testbed_api.c50
-rw-r--r--src/testbed/testbed_api.h5
-rw-r--r--src/testbed/testbed_api_peers.c18
4 files changed, 74 insertions, 4 deletions
diff --git a/src/testbed/test_testbed_api_2peers.c b/src/testbed/test_testbed_api_2peers.c
index 6378fd9cc..9f55b61eb 100644
--- a/src/testbed/test_testbed_api_2peers.c
+++ b/src/testbed/test_testbed_api_2peers.c
@@ -19,8 +19,9 @@
19 */ 19 */
20 20
21/** 21/**
22 * @file testbed/test_testbed_api.c 22 * @file testbed/test_testbed_api_2peers.c
23 * @brief testcases for the testbed api 23 * @brief testcases for the testbed api: 2 peers are configured, started and
24 * connected together
24 * @author Sree Harsha Totakura 25 * @author Sree Harsha Totakura
25 */ 26 */
26 27
diff --git a/src/testbed/testbed_api.c b/src/testbed/testbed_api.c
index e03c0e87f..e343daa31 100644
--- a/src/testbed/testbed_api.c
+++ b/src/testbed/testbed_api.c
@@ -286,6 +286,51 @@ handle_opsuccess (struct GNUNET_TESTBED_Controller *c,
286 286
287 287
288/** 288/**
289 * Handler for GNUNET_MESSAGE_TYPE_TESTBED_PEERCREATESUCCESS message from
290 * controller (testbed service)
291 *
292 * @param c the controller handler
293 * @param msg message received
294 * @return GNUNET_YES if we can continue receiving from service; GNUNET_NO if
295 * not
296 */
297static int
298handle_peer_create_success (struct GNUNET_TESTBED_Controller *c,
299 const struct
300 GNUNET_TESTBED_PeerCreateSuccessEventMessage *msg)
301{
302 struct GNUNET_TESTBED_Operation *op;
303 struct GNUNET_TESTBED_Peer *peer;
304 uint64_t op_id;
305
306 GNUNET_assert (sizeof (struct GNUNET_TESTBED_PeerCreateSuccessEventMessage)
307 == ntohs (msg->header.size));
308 op_id = GNUNET_ntohll (msg->operation_id);
309 for (op = c->op_head; NULL != op; op = op->next)
310 {
311 if (op->operation_id == op_id)
312 break;
313 }
314 GNUNET_assert (NULL != op);
315 peer = op->data;
316 GNUNET_assert (NULL != peer);
317 GNUNET_assert (peer->unique_id == ntohl (msg->peer_id));
318 if (0 != (c->event_mask & (1L << GNUNET_TESTBED_ET_PEER_START)))
319 {
320 struct GNUNET_TESTBED_EventInformation info;
321
322 info.details.peer_start.host = peer->host;
323 info.details.peer_start.peer = peer;
324 if (NULL != c->cc)
325 c->cc (c->cc_cls, &info);
326 }
327 GNUNET_CONTAINER_DLL_remove (c->op_head, c->op_tail, op);
328 GNUNET_free (op);
329 return GNUNET_YES;
330}
331
332
333/**
289 * Handler for messages from controller (testbed service) 334 * Handler for messages from controller (testbed service)
290 * 335 *
291 * @param cls the controller handler 336 * @param cls the controller handler
@@ -318,6 +363,11 @@ message_handler (void *cls, const struct GNUNET_MessageHeader *msg)
318 GNUNET_TESTBED_GenericOperationSuccessEventMessage 363 GNUNET_TESTBED_GenericOperationSuccessEventMessage
319 *) msg); 364 *) msg);
320 break; 365 break;
366 case GNUNET_MESSAGE_TYPE_TESTBED_PEERCREATESUCCESS:
367 status =
368 handle_peer_create_success
369 (c, (const struct GNUNET_TESTBED_PeerCreateSuccessEventMessage *)msg);
370 break;
321 default: 371 default:
322 GNUNET_break (0); 372 GNUNET_break (0);
323 } 373 }
diff --git a/src/testbed/testbed_api.h b/src/testbed/testbed_api.h
index 2eaf0227b..994caae8b 100644
--- a/src/testbed/testbed_api.h
+++ b/src/testbed/testbed_api.h
@@ -34,6 +34,11 @@
34enum OperationType 34enum OperationType
35 { 35 {
36 /** 36 /**
37 * Peer start operation
38 */
39 OP_PEER_START,
40
41 /**
37 * Peer destroy operation 42 * Peer destroy operation
38 */ 43 */
39 OP_PEER_DESTROY 44 OP_PEER_DESTROY
diff --git a/src/testbed/testbed_api_peers.c b/src/testbed/testbed_api_peers.c
index f2dc4dbe2..8574a0432 100644
--- a/src/testbed/testbed_api_peers.c
+++ b/src/testbed/testbed_api_peers.c
@@ -158,8 +158,22 @@ GNUNET_TESTBED_peer_create (struct GNUNET_TESTBED_Controller *controller,
158struct GNUNET_TESTBED_Operation * 158struct GNUNET_TESTBED_Operation *
159GNUNET_TESTBED_peer_start (struct GNUNET_TESTBED_Peer *peer) 159GNUNET_TESTBED_peer_start (struct GNUNET_TESTBED_Peer *peer)
160{ 160{
161 // FIXME: start locally or delegate... 161 struct GNUNET_TESTBED_Operation *op;
162 GNUNET_break (0); 162 struct GNUNET_TESTBED_PeerStartMessage *msg;
163
164 op = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_Operation));
165 op->operation_id = peer->controller->operation_counter++;
166 op->type = OP_PEER_START;
167 op->data = peer;
168 msg = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_PeerStartMessage));
169 msg->header.size = htons (sizeof (struct GNUNET_TESTBED_PeerStartMessage));
170 msg->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_STARTPEER);
171 msg->peer_id = htonl (peer->unique_id);
172 msg->operation_id = GNUNET_htonll (op->operation_id);
173 GNUNET_CONTAINER_DLL_insert_tail (peer->controller->op_head,
174 peer->controller->op_tail, op);
175 GNUNET_TESTBED_queue_message_ (peer->controller,
176 (struct GNUNET_MessageHeader *) msg);
163 return NULL; 177 return NULL;
164} 178}
165 179