aboutsummaryrefslogtreecommitdiff
path: root/src/namestore/test_namestore_api_monitoring.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/namestore/test_namestore_api_monitoring.c')
-rw-r--r--src/namestore/test_namestore_api_monitoring.c449
1 files changed, 225 insertions, 224 deletions
diff --git a/src/namestore/test_namestore_api_monitoring.c b/src/namestore/test_namestore_api_monitoring.c
index f1ee980cc..f7271cd76 100644
--- a/src/namestore/test_namestore_api_monitoring.c
+++ b/src/namestore/test_namestore_api_monitoring.c
@@ -31,94 +31,94 @@
31 31
32 32
33 33
34#define TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 100) 34#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 100)
35 35
36 36
37static struct GNUNET_NAMESTORE_Handle * nsh; 37static struct GNUNET_NAMESTORE_Handle *nsh;
38 38
39static struct GNUNET_SCHEDULER_Task * endbadly_task; 39static struct GNUNET_SCHEDULER_Task *endbadly_task;
40 40
41static struct GNUNET_CRYPTO_EcdsaPrivateKey * privkey; 41static struct GNUNET_CRYPTO_EcdsaPrivateKey *privkey;
42 42
43static struct GNUNET_CRYPTO_EcdsaPrivateKey * privkey2; 43static struct GNUNET_CRYPTO_EcdsaPrivateKey *privkey2;
44 44
45static struct GNUNET_NAMESTORE_ZoneMonitor *zm; 45static struct GNUNET_NAMESTORE_ZoneMonitor *zm;
46 46
47static int res; 47static int res;
48 48
49static char * s_name_1; 49static char *s_name_1;
50 50
51static struct GNUNET_GNSRECORD_Data *s_rd_1; 51static struct GNUNET_GNSRECORD_Data *s_rd_1;
52 52
53static char * s_name_2; 53static char *s_name_2;
54 54
55static struct GNUNET_GNSRECORD_Data *s_rd_2; 55static struct GNUNET_GNSRECORD_Data *s_rd_2;
56 56
57static char * s_name_3; 57static char *s_name_3;
58 58
59static struct GNUNET_GNSRECORD_Data *s_rd_3; 59static struct GNUNET_GNSRECORD_Data *s_rd_3;
60 60
61struct GNUNET_NAMESTORE_QueueEntry * ns_ops[3]; 61struct GNUNET_NAMESTORE_QueueEntry *ns_ops[3];
62 62
63 63
64static void 64static void
65do_shutdown() 65do_shutdown ()
66{ 66{
67 if (NULL != zm) 67 if (NULL != zm)
68 { 68 {
69 GNUNET_NAMESTORE_zone_monitor_stop(zm); 69 GNUNET_NAMESTORE_zone_monitor_stop (zm);
70 zm = NULL; 70 zm = NULL;
71 } 71 }
72 if (NULL != ns_ops[0]) 72 if (NULL != ns_ops[0])
73 { 73 {
74 GNUNET_NAMESTORE_cancel(ns_ops[0]); 74 GNUNET_NAMESTORE_cancel (ns_ops[0]);
75 ns_ops[0] = NULL; 75 ns_ops[0] = NULL;
76 } 76 }
77 if (NULL != ns_ops[1]) 77 if (NULL != ns_ops[1])
78 { 78 {
79 GNUNET_NAMESTORE_cancel(ns_ops[1]); 79 GNUNET_NAMESTORE_cancel (ns_ops[1]);
80 ns_ops[1] = NULL; 80 ns_ops[1] = NULL;
81 } 81 }
82 if (NULL != ns_ops[2]) 82 if (NULL != ns_ops[2])
83 { 83 {
84 GNUNET_NAMESTORE_cancel(ns_ops[2]); 84 GNUNET_NAMESTORE_cancel (ns_ops[2]);
85 ns_ops[2] = NULL; 85 ns_ops[2] = NULL;
86 } 86 }
87 if (NULL != nsh) 87 if (NULL != nsh)
88 { 88 {
89 GNUNET_NAMESTORE_disconnect(nsh); 89 GNUNET_NAMESTORE_disconnect (nsh);
90 nsh = NULL; 90 nsh = NULL;
91 } 91 }
92 GNUNET_free_non_null(s_name_1); 92 GNUNET_free_non_null (s_name_1);
93 GNUNET_free_non_null(s_name_2); 93 GNUNET_free_non_null (s_name_2);
94 GNUNET_free_non_null(s_name_3); 94 GNUNET_free_non_null (s_name_3);
95 95
96 if (s_rd_1 != NULL) 96 if (s_rd_1 != NULL)
97 { 97 {
98 GNUNET_free((void *)s_rd_1->data); 98 GNUNET_free ((void *) s_rd_1->data);
99 GNUNET_free(s_rd_1); 99 GNUNET_free (s_rd_1);
100 } 100 }
101 if (s_rd_2 != NULL) 101 if (s_rd_2 != NULL)
102 { 102 {
103 GNUNET_free((void *)s_rd_2->data); 103 GNUNET_free ((void *) s_rd_2->data);
104 GNUNET_free(s_rd_2); 104 GNUNET_free (s_rd_2);
105 } 105 }
106 if (s_rd_3 != NULL) 106 if (s_rd_3 != NULL)
107 { 107 {
108 GNUNET_free((void *)s_rd_3->data); 108 GNUNET_free ((void *) s_rd_3->data);
109 GNUNET_free(s_rd_3); 109 GNUNET_free (s_rd_3);
110 } 110 }
111 111
112 if (NULL != privkey) 112 if (NULL != privkey)
113 { 113 {
114 GNUNET_free(privkey); 114 GNUNET_free (privkey);
115 privkey = NULL; 115 privkey = NULL;
116 } 116 }
117 if (NULL != privkey2) 117 if (NULL != privkey2)
118 { 118 {
119 GNUNET_free(privkey2); 119 GNUNET_free (privkey2);
120 privkey2 = NULL; 120 privkey2 = NULL;
121 } 121 }
122} 122}
123 123
124 124
@@ -128,237 +128,238 @@ do_shutdown()
128 * @param cls handle to use to re-connect. 128 * @param cls handle to use to re-connect.
129 */ 129 */
130static void 130static void
131endbadly(void *cls) 131endbadly (void *cls)
132{ 132{
133 do_shutdown(); 133 do_shutdown ();
134 res = 1; 134 res = 1;
135} 135}
136 136
137 137
138static void 138static void
139end(void *cls) 139end (void *cls)
140{ 140{
141 do_shutdown(); 141 do_shutdown ();
142 res = 0; 142 res = 0;
143} 143}
144 144
145 145
146static void 146static void
147zone_proc(void *cls, 147zone_proc (void *cls,
148 const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone_key, 148 const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone_key,
149 const char *name, 149 const char *name,
150 unsigned int rd_count, 150 unsigned int rd_count,
151 const struct GNUNET_GNSRECORD_Data *rd) 151 const struct GNUNET_GNSRECORD_Data *rd)
152{ 152{
153 static int returned_records; 153 static int returned_records;
154 static int fail = GNUNET_NO; 154 static int fail = GNUNET_NO;
155 155
156 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 156 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
157 "Comparing results name %s\n", 157 "Comparing results name %s\n",
158 name); 158 name);
159 if (0 != GNUNET_memcmp(zone_key, 159 if (0 != GNUNET_memcmp (zone_key,
160 privkey)) 160 privkey))
161 { 161 {
162 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 162 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
163 "Monitoring returned wrong zone key\n"); 163 "Monitoring returned wrong zone key\n");
164 GNUNET_break(0); 164 GNUNET_break (0);
165 GNUNET_SCHEDULER_cancel(endbadly_task); 165 GNUNET_SCHEDULER_cancel (endbadly_task);
166 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL); 166 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
167 return; 167 return;
168 } 168 }
169 169
170 if (0 == strcmp(name, s_name_1)) 170 if (0 == strcmp (name, s_name_1))
171 { 171 {
172 if (GNUNET_YES != GNUNET_GNSRECORD_records_cmp(rd, s_rd_1)) 172 if (GNUNET_YES != GNUNET_GNSRECORD_records_cmp (rd, s_rd_1))
173 {
174 GNUNET_break(0);
175 fail = GNUNET_YES;
176 }
177 }
178 else if (0 == strcmp(name, s_name_2))
179 { 173 {
180 if (GNUNET_YES != GNUNET_GNSRECORD_records_cmp(rd, s_rd_2)) 174 GNUNET_break (0);
181 { 175 fail = GNUNET_YES;
182 GNUNET_break(0);
183 fail = GNUNET_YES;
184 }
185 } 176 }
186 else 177 }
178 else if (0 == strcmp (name, s_name_2))
179 {
180 if (GNUNET_YES != GNUNET_GNSRECORD_records_cmp (rd, s_rd_2))
187 { 181 {
188 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 182 GNUNET_break (0);
189 "Invalid name %s\n",
190 name);
191 GNUNET_break(0);
192 fail = GNUNET_YES; 183 fail = GNUNET_YES;
193 } 184 }
194 GNUNET_NAMESTORE_zone_monitor_next(zm, 185 }
195 1); 186 else
187 {
188 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
189 "Invalid name %s\n",
190 name);
191 GNUNET_break (0);
192 fail = GNUNET_YES;
193 }
194 GNUNET_NAMESTORE_zone_monitor_next (zm,
195 1);
196 if (2 == ++returned_records) 196 if (2 == ++returned_records)
197 {
198 if (endbadly_task != NULL)
197 { 199 {
198 if (endbadly_task != NULL) 200 GNUNET_SCHEDULER_cancel (endbadly_task);
199 { 201 endbadly_task = NULL;
200 GNUNET_SCHEDULER_cancel(endbadly_task);
201 endbadly_task = NULL;
202 }
203 if (GNUNET_YES == fail)
204 GNUNET_SCHEDULER_add_now(&endbadly, NULL);
205 else
206 GNUNET_SCHEDULER_add_now(&end, NULL);
207 } 202 }
203 if (GNUNET_YES == fail)
204 GNUNET_SCHEDULER_add_now (&endbadly, NULL);
205 else
206 GNUNET_SCHEDULER_add_now (&end, NULL);
207 }
208} 208}
209 209
210 210
211static void 211static void
212put_cont(void *cls, 212put_cont (void *cls,
213 int32_t success, 213 int32_t success,
214 const char *emsg) 214 const char *emsg)
215{ 215{
216 static int c = 0; 216 static int c = 0;
217 char *label = cls; 217 char *label = cls;
218 218
219 if (0 == strcmp(label, s_name_1)) 219 if (0 == strcmp (label, s_name_1))
220 ns_ops[0] = NULL; 220 ns_ops[0] = NULL;
221 else if (0 == strcmp(label, s_name_2)) 221 else if (0 == strcmp (label, s_name_2))
222 ns_ops[1] = NULL; 222 ns_ops[1] = NULL;
223 else if (0 == strcmp(label, s_name_3)) 223 else if (0 == strcmp (label, s_name_3))
224 ns_ops[2] = NULL; 224 ns_ops[2] = NULL;
225 225
226 if (success == GNUNET_OK) 226 if (success == GNUNET_OK)
227 { 227 {
228 c++; 228 c++;
229 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 229 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
230 "Created record %u: `%s'\n", 230 "Created record %u: `%s'\n",
231 c, 231 c,
232 label); 232 label);
233 } 233 }
234 else 234 else
235 { 235 {
236 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 236 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
237 "Failed to create record `%s'\n", 237 "Failed to create record `%s'\n",
238 label); 238 label);
239 GNUNET_break(0); 239 GNUNET_break (0);
240 GNUNET_SCHEDULER_cancel(endbadly_task); 240 GNUNET_SCHEDULER_cancel (endbadly_task);
241 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, 241 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly,
242 NULL); 242 NULL);
243 } 243 }
244} 244}
245 245
246 246
247static struct GNUNET_GNSRECORD_Data * 247static struct GNUNET_GNSRECORD_Data *
248create_record(unsigned int count) 248create_record (unsigned int count)
249{ 249{
250 struct GNUNET_GNSRECORD_Data *rd; 250 struct GNUNET_GNSRECORD_Data *rd;
251 251
252 rd = GNUNET_new_array(count, 252 rd = GNUNET_new_array (count,
253 struct GNUNET_GNSRECORD_Data); 253 struct GNUNET_GNSRECORD_Data);
254 for (unsigned int c = 0; c < count; c++) 254 for (unsigned int c = 0; c < count; c++)
255 { 255 {
256 rd[c].expiration_time = GNUNET_TIME_relative_to_absolute(GNUNET_TIME_UNIT_HOURS).abs_value_us; 256 rd[c].expiration_time = GNUNET_TIME_relative_to_absolute (
257 rd[c].record_type = TEST_RECORD_TYPE; 257 GNUNET_TIME_UNIT_HOURS).abs_value_us;
258 rd[c].data_size = 50; 258 rd[c].record_type = TEST_RECORD_TYPE;
259 rd[c].data = GNUNET_malloc(50); 259 rd[c].data_size = 50;
260 rd[c].flags = 0; 260 rd[c].data = GNUNET_malloc (50);
261 memset((char *)rd[c].data, 'a', 50); 261 rd[c].flags = 0;
262 } 262 memset ((char *) rd[c].data, 'a', 50);
263 }
263 return rd; 264 return rd;
264} 265}
265 266
266 267
267static void 268static void
268fail_cb(void *cls) 269fail_cb (void *cls)
269{ 270{
270 GNUNET_assert(0); 271 GNUNET_assert (0);
271} 272}
272 273
273 274
274static void 275static void
275sync_cb(void *cls) 276sync_cb (void *cls)
276{ 277{
277 /* do nothing */ 278 /* do nothing */
278} 279}
279 280
280 281
281static void 282static void
282run(void *cls, 283run (void *cls,
283 const struct GNUNET_CONFIGURATION_Handle *cfg, 284 const struct GNUNET_CONFIGURATION_Handle *cfg,
284 struct GNUNET_TESTING_Peer *peer) 285 struct GNUNET_TESTING_Peer *peer)
285{ 286{
286 res = 1; 287 res = 1;
287 privkey = GNUNET_CRYPTO_ecdsa_key_create(); 288 privkey = GNUNET_CRYPTO_ecdsa_key_create ();
288 GNUNET_assert(privkey != NULL); 289 GNUNET_assert (privkey != NULL);
289 290
290 /* Start monitoring */ 291 /* Start monitoring */
291 zm = GNUNET_NAMESTORE_zone_monitor_start(cfg, 292 zm = GNUNET_NAMESTORE_zone_monitor_start (cfg,
292 privkey, 293 privkey,
293 GNUNET_YES, 294 GNUNET_YES,
294 &fail_cb, 295 &fail_cb,
295 NULL, 296 NULL,
296 &zone_proc, 297 &zone_proc,
297 NULL, 298 NULL,
298 &sync_cb, 299 &sync_cb,
299 NULL); 300 NULL);
300 if (NULL == zm) 301 if (NULL == zm)
301 { 302 {
302 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 303 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
303 "Failed to create zone monitor\n"); 304 "Failed to create zone monitor\n");
304 GNUNET_break(0); 305 GNUNET_break (0);
305 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL); 306 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
306 return; 307 return;
307 } 308 }
308 309
309 endbadly_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT, &endbadly, NULL); 310 endbadly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &endbadly, NULL);
310 /* Connect to namestore */ 311 /* Connect to namestore */
311 nsh = GNUNET_NAMESTORE_connect(cfg); 312 nsh = GNUNET_NAMESTORE_connect (cfg);
312 if (NULL == nsh) 313 if (NULL == nsh)
313 { 314 {
314 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Connect to namestore\n"); 315 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Connect to namestore\n");
315 GNUNET_break(0); 316 GNUNET_break (0);
316 endbadly_task = GNUNET_SCHEDULER_add_now(&endbadly, NULL); 317 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
317 return; 318 return;
318 } 319 }
319 320
320 privkey2 = GNUNET_CRYPTO_ecdsa_key_create(); 321 privkey2 = GNUNET_CRYPTO_ecdsa_key_create ();
321 GNUNET_assert(privkey2 != NULL); 322 GNUNET_assert (privkey2 != NULL);
322 323
323 324
324 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 325 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
325 "Created record 3\n"); 326 "Created record 3\n");
326 /* name in different zone */ 327 /* name in different zone */
327 GNUNET_asprintf(&s_name_3, "dummy3"); 328 GNUNET_asprintf (&s_name_3, "dummy3");
328 s_rd_3 = create_record(1); 329 s_rd_3 = create_record (1);
329 GNUNET_assert(NULL != (ns_ops[2] = 330 GNUNET_assert (NULL != (ns_ops[2] =
330 GNUNET_NAMESTORE_records_store(nsh, 331 GNUNET_NAMESTORE_records_store (nsh,
331 privkey2, 332 privkey2,
332 s_name_3, 333 s_name_3,
333 1, 334 1,
334 s_rd_3, 335 s_rd_3,
335 &put_cont, 336 &put_cont,
336 s_name_3))); 337 s_name_3)));
337 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 338 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
338 "Created record 1\n"); 339 "Created record 1\n");
339 GNUNET_asprintf(&s_name_1, "dummy1"); 340 GNUNET_asprintf (&s_name_1, "dummy1");
340 s_rd_1 = create_record(1); 341 s_rd_1 = create_record (1);
341 GNUNET_assert(NULL != (ns_ops[0] = 342 GNUNET_assert (NULL != (ns_ops[0] =
342 GNUNET_NAMESTORE_records_store(nsh, 343 GNUNET_NAMESTORE_records_store (nsh,
343 privkey, 344 privkey,
344 s_name_1, 345 s_name_1,
345 1, 346 1,
346 s_rd_1, 347 s_rd_1,
347 &put_cont, 348 &put_cont,
348 s_name_1))); 349 s_name_1)));
349 350
350 351
351 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created record 2 \n"); 352 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created record 2 \n");
352 GNUNET_asprintf(&s_name_2, "dummy2"); 353 GNUNET_asprintf (&s_name_2, "dummy2");
353 s_rd_2 = create_record(1); 354 s_rd_2 = create_record (1);
354 GNUNET_assert(NULL != (ns_ops[1] = 355 GNUNET_assert (NULL != (ns_ops[1] =
355 GNUNET_NAMESTORE_records_store(nsh, 356 GNUNET_NAMESTORE_records_store (nsh,
356 privkey, 357 privkey,
357 s_name_2, 358 s_name_2,
358 1, 359 1,
359 s_rd_2, 360 s_rd_2,
360 &put_cont, 361 &put_cont,
361 s_name_2))); 362 s_name_2)));
362} 363}
363 364
364 365
@@ -366,25 +367,25 @@ run(void *cls,
366 367
367 368
368int 369int
369main(int argc, 370main (int argc,
370 char *argv[]) 371 char *argv[])
371{ 372{
372 const char *plugin_name; 373 const char *plugin_name;
373 char *cfg_name; 374 char *cfg_name;
374 375
375 SETUP_CFG(plugin_name, cfg_name); 376 SETUP_CFG (plugin_name, cfg_name);
376 res = 1; 377 res = 1;
377 if (0 != 378 if (0 !=
378 GNUNET_TESTING_peer_run("test-namestore-api-monitoring", 379 GNUNET_TESTING_peer_run ("test-namestore-api-monitoring",
379 cfg_name, 380 cfg_name,
380 &run, 381 &run,
381 NULL)) 382 NULL))
382 { 383 {
383 res = 1; 384 res = 1;
384 } 385 }
385 GNUNET_DISK_purge_cfg_dir(cfg_name, 386 GNUNET_DISK_purge_cfg_dir (cfg_name,
386 "GNUNET_TEST_HOME"); 387 "GNUNET_TEST_HOME");
387 GNUNET_free(cfg_name); 388 GNUNET_free (cfg_name);
388 return res; 389 return res;
389} 390}
390 391