diff options
Diffstat (limited to 'src/set/test_set_api.c')
-rw-r--r-- | src/set/test_set_api.c | 101 |
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 | ||
31 | static struct GNUNET_PeerIdentity local_id; | ||
32 | static struct GNUNET_HashCode app_id; | ||
33 | static struct GNUNET_SET_Handle *set1; | ||
34 | static struct GNUNET_SET_Handle *set2; | ||
35 | static struct GNUNET_SET_ListenHandle *listen_handle; | ||
36 | const static struct GNUNET_CONFIGURATION_Handle *config; | ||
37 | |||
38 | |||
39 | static void | ||
40 | result_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 | |||
47 | static void | ||
48 | result_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 | |||
55 | static void | ||
56 | listen_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 | */ | ||
72 | static void | ||
73 | start (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 | */ | ||
88 | static void | ||
89 | init_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 | */ | ||
108 | static void | ||
109 | init_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 | ||
51 | int | 148 | int |