aboutsummaryrefslogtreecommitdiff
path: root/src/set/test_set_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/set/test_set_api.c')
-rw-r--r--src/set/test_set_api.c101
1 files changed, 99 insertions, 2 deletions
diff --git a/src/set/test_set_api.c b/src/set/test_set_api.c
index 0753fd139..0ab02cad7 100644
--- a/src/set/test_set_api.c
+++ b/src/set/test_set_api.c
@@ -28,6 +28,99 @@
28#include "gnunet_set_service.h" 28#include "gnunet_set_service.h"
29 29
30 30
31static struct GNUNET_PeerIdentity local_id;
32static struct GNUNET_HashCode app_id;
33static struct GNUNET_SET_Handle *set1;
34static struct GNUNET_SET_Handle *set2;
35static struct GNUNET_SET_ListenHandle *listen_handle;
36const static struct GNUNET_CONFIGURATION_Handle *config;
37
38
39static void
40result_cb_set1 (void *cls, struct GNUNET_SET_Element *element,
41 enum GNUNET_SET_Status status)
42{
43 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "got result (set 1)\n");
44}
45
46
47static void
48result_cb_set2 (void *cls, struct GNUNET_SET_Element *element,
49 enum GNUNET_SET_Status status)
50{
51 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "got result (set 2)\n");
52}
53
54
55static void
56listen_cb (void *cls,
57 const struct GNUNET_PeerIdentity *other_peer,
58 const struct GNUNET_MessageHeader *context_msg,
59 struct GNUNET_SET_Request *request)
60{
61 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "listen cb called\n");
62 GNUNET_SET_accept (request, set2, GNUNET_TIME_UNIT_FOREVER_REL,
63 GNUNET_SET_RESULT_ADDED, result_cb_set2, NULL);
64}
65
66
67/**
68 * Start the set operation.
69 *
70 * @param cls closure, unused
71 */
72static void
73start (void *cls)
74{
75 listen_handle = GNUNET_SET_listen (config, GNUNET_SET_OPERATION_UNION,
76 &app_id, listen_cb, NULL);
77 GNUNET_SET_evaluate (set1, &local_id, &app_id, NULL, 42,
78 GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_SET_RESULT_ADDED,
79 result_cb_set1, NULL);
80}
81
82
83/**
84 * Initialize the second set, continue
85 *
86 * @param cls closure, unused
87 */
88static void
89init_set2 (void *cls)
90{
91 struct GNUNET_SET_Element element;
92
93
94 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "initializing set 2\n");
95
96 element.data = "hello";
97 element.size = strlen(element.data);
98 GNUNET_SET_add_element (set2, &element, NULL, NULL);
99 element.data = "quux";
100 element.size = strlen(element.data);
101 GNUNET_SET_add_element (set2, &element, start, NULL);
102}
103
104
105/**
106 * Initialize the first set, continue.
107 */
108static void
109init_set1 (void)
110{
111 struct GNUNET_SET_Element element;
112
113 element.data = "hello";
114 element.size = strlen(element.data);
115 GNUNET_SET_add_element (set1, &element, NULL, NULL);
116 element.data = "bar";
117 element.size = strlen(element.data);
118 GNUNET_SET_add_element (set1, &element, init_set2, NULL);
119
120 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "initialized set 1\n");
121}
122
123
31/** 124/**
32 * Signature of the 'main' function for a (single-peer) testcase that 125 * Signature of the 'main' function for a (single-peer) testcase that
33 * is run using 'GNUNET_TESTING_peer_run'. 126 * is run using 'GNUNET_TESTING_peer_run'.
@@ -41,11 +134,15 @@ run (void *cls,
41 const struct GNUNET_CONFIGURATION_Handle *cfg, 134 const struct GNUNET_CONFIGURATION_Handle *cfg,
42 struct GNUNET_TESTING_Peer *peer) 135 struct GNUNET_TESTING_Peer *peer)
43{ 136{
44 struct GNUNET_SET_Handle *set1;
45 struct GNUNET_SET_Handle *set2;
46 137
138 static const char* app_str = "gnunet-set";
139
140 config = cfg;
141 GNUNET_CRYPTO_hash (app_str, strlen (app_str), &app_id);
142 GNUNET_CRYPTO_get_host_identity (cfg, &local_id);
47 set1 = GNUNET_SET_create (cfg, GNUNET_SET_OPERATION_UNION); 143 set1 = GNUNET_SET_create (cfg, GNUNET_SET_OPERATION_UNION);
48 set2 = GNUNET_SET_create (cfg, GNUNET_SET_OPERATION_UNION); 144 set2 = GNUNET_SET_create (cfg, GNUNET_SET_OPERATION_UNION);
145 init_set1 ();
49} 146}
50 147
51int 148int