GNUnet  0.19.2
testbed_test.c
Go to the documentation of this file.
1 #include "platform.h"
2 #include <unistd.h>
3 #include <gnunet/platform.h>
4 #include <gnunet/gnunet_util_lib.h>
5 #include <gnunet/gnunet_testbed_service.h>
6 #include <gnunet/gnunet_dht_service.h>
7 
8 #define NUM_PEERS 20
9 
11 
13 
14 
15 struct MyContext
16 {
17  int ht_len;
18 } ctxt;
19 
20 
21 static int result;
22 
23 
24 static void
25 shutdown_task (void *cls)
26 {
27  if (NULL != dht_op)
28  {
30  dht_op = NULL;
31  dht_handle = NULL;
32  }
33  result = GNUNET_OK;
34 }
35 
36 
37 static void
40  void *ca_result,
41  const char *emsg)
42 {
43  GNUNET_assert (op == dht_op);
44  dht_handle = ca_result;
45  // Do work here...
47 }
48 
49 
50 static void *
51 dht_ca (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg)
52 {
53  struct MyContext *ctxt = cls;
54 
56  return dht_handle;
57 }
58 
59 
60 static void
61 dht_da (void *cls, void *op_result)
62 {
63  struct MyContext *ctxt = cls;
64 
66  dht_handle = NULL;
67 }
68 
69 
70 static void
71 test_master (void *cls,
73  unsigned int num_peers,
74  struct GNUNET_TESTBED_Peer **peers,
75  unsigned int links_succeeded,
76  unsigned int links_failed)
77 {
78  ctxt.ht_len = 10;
80  (NULL, peers[0], "dht",
81  &service_connect_comp, NULL,
82  &dht_ca, &dht_da, &ctxt);
84 }
85 
86 
87 int
88 main (int argc, char **argv)
89 {
90  int ret;
91 
94  ("awesome-test", "template.conf",
95  NUM_PEERS, 0LL,
96  NULL, NULL, &test_master, NULL);
97  if ( (GNUNET_OK != ret) || (GNUNET_OK != result) )
98  return 1;
99  return 0;
100 }
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration we are using.
Definition: gnunet-abd.c:36
static int ret
Return value of the commandline.
Definition: gnunet-abd.c:81
static struct GNUNET_ARM_Operation * op
Current operation.
Definition: gnunet-arm.c:144
static struct GNUNET_ARM_Handle * h
Connection with ARM.
Definition: gnunet-arm.c:99
static struct CadetPeer * peers
Operation to get peer ids.
static unsigned int num_peers
struct GNUNET_DHT_Handle * GNUNET_DHT_connect(const struct GNUNET_CONFIGURATION_Handle *cfg, unsigned int ht_len)
Initialize the connection with the DHT service.
Definition: dht_api.c:1039
void GNUNET_DHT_disconnect(struct GNUNET_DHT_Handle *handle)
Shutdown connection with the DHT service.
Definition: dht_api.c:1062
@ GNUNET_OK
@ GNUNET_SYSERR
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:534
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_shutdown(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run on shutdown, that is when a CTRL-C signal is received,...
Definition: scheduler.c:1303
void GNUNET_TESTBED_operation_done(struct GNUNET_TESTBED_Operation *operation)
This function is used to signal that the event information (struct GNUNET_TESTBED_EventInformation) f...
Definition: testbed_api.c:2021
int GNUNET_TESTBED_test_run(const char *testname, const char *cfg_filename, unsigned int num_peers, uint64_t event_mask, GNUNET_TESTBED_ControllerCallback cc, void *cc_cls, GNUNET_TESTBED_TestMaster test_master, void *test_master_cls)
Convenience method for running a "simple" test on the local system with a single call from 'main'.
struct GNUNET_TESTBED_Operation * GNUNET_TESTBED_service_connect(void *op_cls, struct GNUNET_TESTBED_Peer *peer, const char *service_name, GNUNET_TESTBED_ServiceConnectCompletionCallback cb, void *cb_cls, GNUNET_TESTBED_ConnectAdapter ca, GNUNET_TESTBED_DisconnectAdapter da, void *cada_cls)
Connect to a service offered by the given peer.
static int op_result(struct GNUNET_OP_Handle *h, uint64_t op_id, int64_t result_code, const void *data, uint16_t data_size, void **ctx, uint8_t cancel)
Remove an operation, and call its result callback (unless it was cancelled).
Definition: op.c:246
Connection to the DHT service.
Definition: dht_api.c:237
Opaque handle to an abstract operation to be executed by the testing framework.
A peer controlled by the testing framework.
struct MyContext ctxt
#define NUM_PEERS
Definition: testbed_test.c:8
int main(int argc, char **argv)
Definition: testbed_test.c:88
static void 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)
Definition: testbed_test.c:71
static void shutdown_task(void *cls)
Definition: testbed_test.c:25
static struct GNUNET_DHT_Handle * dht_handle
Definition: testbed_test.c:12
static int result
Definition: testbed_test.c:21
static void dht_da(void *cls, void *op_result)
Definition: testbed_test.c:61
static void service_connect_comp(void *cls, struct GNUNET_TESTBED_Operation *op, void *ca_result, const char *emsg)
Definition: testbed_test.c:38
static void * dht_ca(void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg)
Definition: testbed_test.c:51
static struct GNUNET_TESTBED_Operation * dht_op
Definition: testbed_test.c:10