summaryrefslogtreecommitdiff
path: root/src/hostlist/test_gnunet_daemon_hostlist_learning.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hostlist/test_gnunet_daemon_hostlist_learning.c')
-rw-r--r--src/hostlist/test_gnunet_daemon_hostlist_learning.c647
1 files changed, 325 insertions, 322 deletions
diff --git a/src/hostlist/test_gnunet_daemon_hostlist_learning.c b/src/hostlist/test_gnunet_daemon_hostlist_learning.c
index fa72ac828..f9fabab10 100644
--- a/src/hostlist/test_gnunet_daemon_hostlist_learning.c
+++ b/src/hostlist/test_gnunet_daemon_hostlist_learning.c
@@ -35,12 +35,14 @@
35/** 35/**
36 * How long until wait until testcases fails 36 * How long until wait until testcases fails
37 */ 37 */
38#define TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 180) 38#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 180)
39 39
40#define CHECK_INTERVAL GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 1) 40#define CHECK_INTERVAL GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, \
41 1)
41 42
42 43
43struct PeerContext { 44struct PeerContext
45{
44 struct GNUNET_CONFIGURATION_Handle *cfg; 46 struct GNUNET_CONFIGURATION_Handle *cfg;
45 struct GNUNET_MessageHeader *hello; 47 struct GNUNET_MessageHeader *hello;
46 struct GNUNET_CORE_Handle *core; 48 struct GNUNET_CORE_Handle *core;
@@ -78,86 +80,86 @@ static struct GNUNET_STATISTICS_GetHandle *advsent_stat;
78 80
79 81
80static void 82static void
81shutdown_testcase() 83shutdown_testcase ()
82{ 84{
83 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 85 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
84 "Shutdown testcase....\n"); 86 "Shutdown testcase....\n");
85 if (NULL != timeout_task) 87 if (NULL != timeout_task)
86 { 88 {
87 GNUNET_SCHEDULER_cancel(timeout_task); 89 GNUNET_SCHEDULER_cancel (timeout_task);
88 timeout_task = NULL; 90 timeout_task = NULL;
89 } 91 }
90 if (NULL != download_stats) 92 if (NULL != download_stats)
91 { 93 {
92 GNUNET_STATISTICS_get_cancel(download_stats); 94 GNUNET_STATISTICS_get_cancel (download_stats);
93 download_stats = NULL; 95 download_stats = NULL;
94 } 96 }
95 if (NULL != urisrecv_stat) 97 if (NULL != urisrecv_stat)
96 { 98 {
97 GNUNET_STATISTICS_get_cancel(urisrecv_stat); 99 GNUNET_STATISTICS_get_cancel (urisrecv_stat);
98 urisrecv_stat = NULL; 100 urisrecv_stat = NULL;
99 } 101 }
100 if (NULL != advsent_stat) 102 if (NULL != advsent_stat)
101 { 103 {
102 GNUNET_STATISTICS_get_cancel(advsent_stat); 104 GNUNET_STATISTICS_get_cancel (advsent_stat);
103 advsent_stat = NULL; 105 advsent_stat = NULL;
104 } 106 }
105 if (NULL != adv_peer.stats) 107 if (NULL != adv_peer.stats)
106 { 108 {
107 GNUNET_STATISTICS_destroy(adv_peer.stats, GNUNET_NO); 109 GNUNET_STATISTICS_destroy (adv_peer.stats, GNUNET_NO);
108 adv_peer.stats = NULL; 110 adv_peer.stats = NULL;
109 } 111 }
110 if (NULL != learn_peer.stats) 112 if (NULL != learn_peer.stats)
111 { 113 {
112 GNUNET_STATISTICS_destroy(learn_peer.stats, GNUNET_NO); 114 GNUNET_STATISTICS_destroy (learn_peer.stats, GNUNET_NO);
113 learn_peer.stats = NULL; 115 learn_peer.stats = NULL;
114 } 116 }
115 if (NULL != check_task) 117 if (NULL != check_task)
116 { 118 {
117 GNUNET_SCHEDULER_cancel(check_task); 119 GNUNET_SCHEDULER_cancel (check_task);
118 check_task = NULL; 120 check_task = NULL;
119 } 121 }
120 if (NULL != current_adv_uri) 122 if (NULL != current_adv_uri)
121 { 123 {
122 GNUNET_free(current_adv_uri); 124 GNUNET_free (current_adv_uri);
123 current_adv_uri = NULL; 125 current_adv_uri = NULL;
124 } 126 }
125 if (NULL != adv_peer.core) 127 if (NULL != adv_peer.core)
126 { 128 {
127 GNUNET_CORE_disconnect(adv_peer.core); 129 GNUNET_CORE_disconnect (adv_peer.core);
128 adv_peer.core = NULL; 130 adv_peer.core = NULL;
129 } 131 }
130 if (NULL != learn_peer.core) 132 if (NULL != learn_peer.core)
131 { 133 {
132 GNUNET_CORE_disconnect(learn_peer.core); 134 GNUNET_CORE_disconnect (learn_peer.core);
133 learn_peer.core = NULL; 135 learn_peer.core = NULL;
134 } 136 }
135 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 137 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
136 "Killing hostlist server ARM process.\n"); 138 "Killing hostlist server ARM process.\n");
137 if (0 != GNUNET_OS_process_kill(adv_peer.arm_proc, 139 if (0 != GNUNET_OS_process_kill (adv_peer.arm_proc,
138 GNUNET_TERM_SIG)) 140 GNUNET_TERM_SIG))
139 GNUNET_log_strerror(GNUNET_ERROR_TYPE_WARNING, 141 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
140 "kill"); 142 "kill");
141 if (GNUNET_OK != 143 if (GNUNET_OK !=
142 GNUNET_OS_process_wait(adv_peer.arm_proc)) 144 GNUNET_OS_process_wait (adv_peer.arm_proc))
143 GNUNET_log_strerror(GNUNET_ERROR_TYPE_WARNING, 145 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
144 "waitpid"); 146 "waitpid");
145 GNUNET_OS_process_destroy(adv_peer.arm_proc); 147 GNUNET_OS_process_destroy (adv_peer.arm_proc);
146 adv_peer.arm_proc = NULL; 148 adv_peer.arm_proc = NULL;
147 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 149 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
148 "Killing hostlist client ARM process.\n"); 150 "Killing hostlist client ARM process.\n");
149 if (0 != GNUNET_OS_process_kill(learn_peer.arm_proc, 151 if (0 != GNUNET_OS_process_kill (learn_peer.arm_proc,
150 GNUNET_TERM_SIG)) 152 GNUNET_TERM_SIG))
151 GNUNET_log_strerror(GNUNET_ERROR_TYPE_WARNING, 153 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
152 "kill"); 154 "kill");
153 if (GNUNET_OK != 155 if (GNUNET_OK !=
154 GNUNET_OS_process_wait(learn_peer.arm_proc)) 156 GNUNET_OS_process_wait (learn_peer.arm_proc))
155 GNUNET_log_strerror(GNUNET_ERROR_TYPE_WARNING, 157 GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
156 "waitpid"); 158 "waitpid");
157 GNUNET_OS_process_destroy(learn_peer.arm_proc); 159 GNUNET_OS_process_destroy (learn_peer.arm_proc);
158 learn_peer.arm_proc = NULL; 160 learn_peer.arm_proc = NULL;
159 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 161 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
160 "Shutdown complete....\n"); 162 "Shutdown complete....\n");
161} 163}
162 164
163 165
@@ -165,112 +167,112 @@ shutdown_testcase()
165 * Timeout, give up. 167 * Timeout, give up.
166 */ 168 */
167static void 169static void
168timeout_error(void *cls) 170timeout_error (void *cls)
169{ 171{
170 timeout_task = NULL; 172 timeout_task = NULL;
171 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 173 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
172 "Timeout while executing testcase, test failed.\n"); 174 "Timeout while executing testcase, test failed.\n");
173 timeout = GNUNET_YES; 175 timeout = GNUNET_YES;
174 shutdown_testcase(); 176 shutdown_testcase ();
175} 177}
176 178
177 179
178static void 180static void
179process_downloads_done(void *cls, int success) 181process_downloads_done (void *cls, int success)
180{ 182{
181 download_stats = NULL; 183 download_stats = NULL;
182} 184}
183 185
184 186
185static void 187static void
186do_shutdown(void *cls) 188do_shutdown (void *cls)
187{ 189{
188 shutdown_testcase(); 190 shutdown_testcase ();
189} 191}
190 192
191 193
192static int 194static int
193process_downloads(void *cls, 195process_downloads (void *cls,
194 const char *subsystem, 196 const char *subsystem,
195 const char *name, 197 const char *name,
196 uint64_t value, 198 uint64_t value,
197 int is_persistent) 199 int is_persistent)
198{ 200{
199 if ((value >= 2) && 201 if ((value >= 2) &&
200 (GNUNET_NO == learned_hostlist_downloaded)) 202 (GNUNET_NO == learned_hostlist_downloaded))
203 {
204 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
205 "Peer has successfully downloaded advertised URI\n");
206 learned_hostlist_downloaded = GNUNET_YES;
207 if ((learned_hostlist_saved == GNUNET_YES) && (adv_sent == GNUNET_YES))
201 { 208 {
202 GNUNET_log(GNUNET_ERROR_TYPE_INFO, 209 GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
203 "Peer has successfully downloaded advertised URI\n");
204 learned_hostlist_downloaded = GNUNET_YES;
205 if ((learned_hostlist_saved == GNUNET_YES) && (adv_sent == GNUNET_YES))
206 {
207 GNUNET_SCHEDULER_add_now(&do_shutdown, NULL);
208 }
209 } 210 }
211 }
210 return GNUNET_OK; 212 return GNUNET_OK;
211} 213}
212 214
213 215
214static void 216static void
215process_uris_recv_done(void *cls, int success) 217process_uris_recv_done (void *cls, int success)
216{ 218{
217 urisrecv_stat = NULL; 219 urisrecv_stat = NULL;
218} 220}
219 221
220 222
221static int 223static int
222process_uris_recv(void *cls, 224process_uris_recv (void *cls,
223 const char *subsystem, 225 const char *subsystem,
224 const char *name, 226 const char *name,
225 uint64_t value, 227 uint64_t value,
226 int is_persistent) 228 int is_persistent)
227{ 229{
228 struct PeerContext *pc = cls; 230 struct PeerContext *pc = cls;
229 231
230 if ((pc == &learn_peer) && 232 if ((pc == &learn_peer) &&
231 (value == 1) && 233 (value == 1) &&
232 (learned_hostlist_saved == GNUNET_NO)) 234 (learned_hostlist_saved == GNUNET_NO))
235 {
236 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
237 "Peer has successfully saved advertised URI\n");
238 learned_hostlist_saved = GNUNET_YES;
239 if ((learned_hostlist_downloaded == GNUNET_YES) &&
240 (adv_sent == GNUNET_YES))
233 { 241 {
234 GNUNET_log(GNUNET_ERROR_TYPE_INFO, 242 GNUNET_SCHEDULER_add_now (&do_shutdown,
235 "Peer has successfully saved advertised URI\n"); 243 NULL);
236 learned_hostlist_saved = GNUNET_YES;
237 if ((learned_hostlist_downloaded == GNUNET_YES) &&
238 (adv_sent == GNUNET_YES))
239 {
240 GNUNET_SCHEDULER_add_now(&do_shutdown,
241 NULL);
242 }
243 } 244 }
245 }
244 return GNUNET_OK; 246 return GNUNET_OK;
245} 247}
246 248
247 249
248static void 250static void
249process_adv_sent_done(void *cls, int success) 251process_adv_sent_done (void *cls, int success)
250{ 252{
251 advsent_stat = NULL; 253 advsent_stat = NULL;
252} 254}
253 255
254 256
255static int 257static int
256process_adv_sent(void *cls, 258process_adv_sent (void *cls,
257 const char *subsystem, 259 const char *subsystem,
258 const char *name, 260 const char *name,
259 uint64_t value, 261 uint64_t value,
260 int is_persistent) 262 int is_persistent)
261{ 263{
262 if ((value >= 1) && (adv_sent == GNUNET_NO)) 264 if ((value >= 1) && (adv_sent == GNUNET_NO))
265 {
266 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
267 "Server has successfully sent advertisement\n");
268 adv_sent = GNUNET_YES;
269 if ((learned_hostlist_downloaded == GNUNET_YES) &&
270 (learned_hostlist_saved == GNUNET_YES))
263 { 271 {
264 GNUNET_log(GNUNET_ERROR_TYPE_INFO, 272 GNUNET_SCHEDULER_add_now (&do_shutdown,
265 "Server has successfully sent advertisement\n"); 273 NULL);
266 adv_sent = GNUNET_YES;
267 if ((learned_hostlist_downloaded == GNUNET_YES) &&
268 (learned_hostlist_saved == GNUNET_YES))
269 {
270 GNUNET_SCHEDULER_add_now(&do_shutdown,
271 NULL);
272 }
273 } 274 }
275 }
274 return GNUNET_OK; 276 return GNUNET_OK;
275} 277}
276 278
@@ -279,70 +281,71 @@ process_adv_sent(void *cls,
279 * Check the server statistics regularly 281 * Check the server statistics regularly
280 */ 282 */
281static void 283static void
282check_statistics(void *cls) 284check_statistics (void *cls)
283{ 285{
284 char *stat; 286 char *stat;
285 287
286 check_task = NULL; 288 check_task = NULL;
287 GNUNET_asprintf(&stat, 289 GNUNET_asprintf (&stat,
288 gettext_noop("# advertised URI `%s' downloaded"), 290 gettext_noop ("# advertised URI `%s' downloaded"),
289 current_adv_uri); 291 current_adv_uri);
290 if (NULL != learn_peer.stats) 292 if (NULL != learn_peer.stats)
291 { 293 {
292 if (NULL != download_stats) 294 if (NULL != download_stats)
293 GNUNET_STATISTICS_get_cancel(download_stats); 295 GNUNET_STATISTICS_get_cancel (download_stats);
294 download_stats = 296 download_stats =
295 GNUNET_STATISTICS_get(learn_peer.stats, 297 GNUNET_STATISTICS_get (learn_peer.stats,
296 "hostlist", 298 "hostlist",
297 stat, 299 stat,
298 &process_downloads_done, 300 &process_downloads_done,
299 &process_downloads, 301 &process_downloads,
300 &learn_peer); 302 &learn_peer);
301 if (NULL != urisrecv_stat) 303 if (NULL != urisrecv_stat)
302 GNUNET_STATISTICS_get_cancel(urisrecv_stat); 304 GNUNET_STATISTICS_get_cancel (urisrecv_stat);
303 urisrecv_stat = 305 urisrecv_stat =
304 GNUNET_STATISTICS_get(learn_peer.stats, "hostlist", 306 GNUNET_STATISTICS_get (learn_peer.stats, "hostlist",
305 gettext_noop("# advertised hostlist URIs"), 307 gettext_noop ("# advertised hostlist URIs"),
306 &process_uris_recv_done, &process_uris_recv, 308 &process_uris_recv_done, &process_uris_recv,
307 &learn_peer); 309 &learn_peer);
308 } 310 }
309 GNUNET_free(stat); 311 GNUNET_free (stat);
310 if (NULL != adv_peer.stats) 312 if (NULL != adv_peer.stats)
311 { 313 {
312 if (NULL != advsent_stat) 314 if (NULL != advsent_stat)
313 GNUNET_STATISTICS_get_cancel(advsent_stat); 315 GNUNET_STATISTICS_get_cancel (advsent_stat);
314 advsent_stat = 316 advsent_stat =
315 GNUNET_STATISTICS_get(adv_peer.stats, "hostlist", 317 GNUNET_STATISTICS_get (adv_peer.stats, "hostlist",
316 gettext_noop("# hostlist advertisements send"), 318 gettext_noop ("# hostlist advertisements send"),
317 &process_adv_sent_done, 319 &process_adv_sent_done,
318 &process_adv_sent, 320 &process_adv_sent,
319 NULL); 321 NULL);
320 } 322 }
321 check_task = 323 check_task =
322 GNUNET_SCHEDULER_add_delayed(CHECK_INTERVAL, 324 GNUNET_SCHEDULER_add_delayed (CHECK_INTERVAL,
323 &check_statistics, 325 &check_statistics,
324 NULL); 326 NULL);
325} 327}
326 328
327 329
328static int 330static int
329check_ad_arrive(void *cls, 331check_ad_arrive (void *cls,
330 const struct GNUNET_MessageHeader *message) 332 const struct GNUNET_MessageHeader *message)
331{ 333{
332 const char *end = (const char *)&message[1]; 334 const char *end = (const char *) &message[1];
333 335
334 if ('\0' != end[ntohs(message->size) - sizeof(struct GNUNET_MessageHeader) - 1]) 336 if ('\0' != end[ntohs (message->size) - sizeof(struct GNUNET_MessageHeader)
335 { 337 - 1])
336 GNUNET_break(0); 338 {
337 return GNUNET_SYSERR; 339 GNUNET_break (0);
338 } 340 return GNUNET_SYSERR;
341 }
339 return GNUNET_OK; 342 return GNUNET_OK;
340} 343}
341 344
342 345
343static void 346static void
344handle_ad_arrive(void *cls, 347handle_ad_arrive (void *cls,
345 const struct GNUNET_MessageHeader *message) 348 const struct GNUNET_MessageHeader *message)
346{ 349{
347 char *hostname; 350 char *hostname;
348 char *expected_uri; 351 char *expected_uri;
@@ -350,132 +353,132 @@ handle_ad_arrive(void *cls,
350 const char *end; 353 const char *end;
351 354
352 if (GNUNET_SYSERR == 355 if (GNUNET_SYSERR ==
353 GNUNET_CONFIGURATION_get_value_number(adv_peer.cfg, 356 GNUNET_CONFIGURATION_get_value_number (adv_peer.cfg,
354 "HOSTLIST", 357 "HOSTLIST",
355 "HTTPPORT", 358 "HTTPPORT",
356 &port)) 359 &port))
357 { 360 {
358 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 361 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
359 "Could not read advertising server's configuration\n"); 362 "Could not read advertising server's configuration\n");
360 return; 363 return;
361 } 364 }
362 365
363 if (GNUNET_SYSERR == 366 if (GNUNET_SYSERR ==
364 GNUNET_CONFIGURATION_get_value_string(adv_peer.cfg, 367 GNUNET_CONFIGURATION_get_value_string (adv_peer.cfg,
365 "HOSTLIST", 368 "HOSTLIST",
366 "EXTERNAL_DNS_NAME", 369 "EXTERNAL_DNS_NAME",
367 &hostname)) 370 &hostname))
368 hostname = GNUNET_RESOLVER_local_fqdn_get(); 371 hostname = GNUNET_RESOLVER_local_fqdn_get ();
369 GNUNET_asprintf(&expected_uri, 372 GNUNET_asprintf (&expected_uri,
370 "http://%s:%u/", 373 "http://%s:%u/",
371 hostname != NULL ? hostname : "localhost", 374 hostname != NULL ? hostname : "localhost",
372 (unsigned int)port); 375 (unsigned int) port);
373 end = (const char *)&message[1]; 376 end = (const char *) &message[1];
374 current_adv_uri = GNUNET_strdup(end); 377 current_adv_uri = GNUNET_strdup (end);
375 if (0 == strcmp(expected_uri, 378 if (0 == strcmp (expected_uri,
376 current_adv_uri)) 379 current_adv_uri))
377 { 380 {
378 GNUNET_log(GNUNET_ERROR_TYPE_INFO, 381 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
379 "Received hostlist advertisement with URI `%s' as expected\n", 382 "Received hostlist advertisement with URI `%s' as expected\n",
380 current_adv_uri); 383 current_adv_uri);
381 adv_arrived = GNUNET_YES; 384 adv_arrived = GNUNET_YES;
382 adv_sent = GNUNET_YES; 385 adv_sent = GNUNET_YES;
383 } 386 }
384 else 387 else
385 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 388 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
386 "Expected URI `%s' and received URI `%s' differ\n", 389 "Expected URI `%s' and received URI `%s' differ\n",
387 expected_uri, 390 expected_uri,
388 current_adv_uri); 391 current_adv_uri);
389 GNUNET_free(expected_uri); 392 GNUNET_free (expected_uri);
390 GNUNET_free_non_null(hostname); 393 GNUNET_free_non_null (hostname);
391} 394}
392 395
393 396
394static void 397static void
395setup_learn_peer(struct PeerContext *p, 398setup_learn_peer (struct PeerContext *p,
396 const char *cfgname) 399 const char *cfgname)
397{ 400{
398 struct GNUNET_MQ_MessageHandler learn_handlers[] = { 401 struct GNUNET_MQ_MessageHandler learn_handlers[] = {
399 GNUNET_MQ_hd_var_size(ad_arrive, 402 GNUNET_MQ_hd_var_size (ad_arrive,
400 GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT, 403 GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT,
401 struct GNUNET_MessageHeader, 404 struct GNUNET_MessageHeader,
402 NULL), 405 NULL),
403 GNUNET_MQ_handler_end() 406 GNUNET_MQ_handler_end ()
404 }; 407 };
405 char *filename; 408 char *filename;
406 unsigned int result; 409 unsigned int result;
407 char *binary; 410 char *binary;
408 411
409 binary = GNUNET_OS_get_libexec_binary_path("gnunet-service-arm"); 412 binary = GNUNET_OS_get_libexec_binary_path ("gnunet-service-arm");
410 p->cfg = GNUNET_CONFIGURATION_create(); 413 p->cfg = GNUNET_CONFIGURATION_create ();
411 p->arm_proc = 414 p->arm_proc =
412 GNUNET_OS_start_process(GNUNET_YES, GNUNET_OS_INHERIT_STD_OUT_AND_ERR, 415 GNUNET_OS_start_process (GNUNET_YES, GNUNET_OS_INHERIT_STD_OUT_AND_ERR,
413 NULL, NULL, NULL, 416 NULL, NULL, NULL,
414 binary, 417 binary,
415 "gnunet-service-arm", 418 "gnunet-service-arm",
416 "-c", cfgname, NULL); 419 "-c", cfgname, NULL);
417 GNUNET_assert(GNUNET_OK == 420 GNUNET_assert (GNUNET_OK ==
418 GNUNET_CONFIGURATION_load(p->cfg, 421 GNUNET_CONFIGURATION_load (p->cfg,
419 cfgname)); 422 cfgname));
420 if (GNUNET_OK == 423 if (GNUNET_OK ==
421 GNUNET_CONFIGURATION_get_value_string(p->cfg, 424 GNUNET_CONFIGURATION_get_value_string (p->cfg,
422 "HOSTLIST", 425 "HOSTLIST",
423 "HOSTLISTFILE", 426 "HOSTLISTFILE",
424 &filename)) 427 &filename))
428 {
429 if (GNUNET_YES == GNUNET_DISK_file_test (filename))
425 { 430 {
426 if (GNUNET_YES == GNUNET_DISK_file_test(filename)) 431 result = unlink (filename);
427 { 432 if (result == 0)
428 result = unlink(filename); 433 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
429 if (result == 0) 434 _ ("Hostlist file `%s' was removed\n"),
430 GNUNET_log(GNUNET_ERROR_TYPE_INFO, 435 filename);
431 _("Hostlist file `%s' was removed\n"),
432 filename);
433 }
434 GNUNET_free(filename);
435 } 436 }
436 p->core = GNUNET_CORE_connect(p->cfg, 437 GNUNET_free (filename);
437 NULL, 438 }
438 NULL, 439 p->core = GNUNET_CORE_connect (p->cfg,
439 NULL, 440 NULL,
440 NULL, 441 NULL,
441 learn_handlers); 442 NULL,
442 GNUNET_assert(NULL != p->core); 443 NULL,
443 p->stats = GNUNET_STATISTICS_create("hostlist", 444 learn_handlers);
444 p->cfg); 445 GNUNET_assert (NULL != p->core);
445 GNUNET_assert(NULL != p->stats); 446 p->stats = GNUNET_STATISTICS_create ("hostlist",
446 GNUNET_free(binary); 447 p->cfg);
448 GNUNET_assert (NULL != p->stats);
449 GNUNET_free (binary);
447} 450}
448 451
449 452
450static void 453static void
451setup_adv_peer(struct PeerContext *p, 454setup_adv_peer (struct PeerContext *p,
452 const char *cfgname) 455 const char *cfgname)
453{ 456{
454 char *binary; 457 char *binary;
455 458
456 binary = GNUNET_OS_get_libexec_binary_path("gnunet-service-arm"); 459 binary = GNUNET_OS_get_libexec_binary_path ("gnunet-service-arm");
457 p->cfg = GNUNET_CONFIGURATION_create(); 460 p->cfg = GNUNET_CONFIGURATION_create ();
458 p->arm_proc = 461 p->arm_proc =
459 GNUNET_OS_start_process(GNUNET_YES, 462 GNUNET_OS_start_process (GNUNET_YES,
460 GNUNET_OS_INHERIT_STD_OUT_AND_ERR, 463 GNUNET_OS_INHERIT_STD_OUT_AND_ERR,
461 NULL, NULL, NULL, 464 NULL, NULL, NULL,
462 binary, 465 binary,
463 "gnunet-service-arm", 466 "gnunet-service-arm",
464 "-c", cfgname, NULL); 467 "-c", cfgname, NULL);
465 GNUNET_assert(GNUNET_OK == 468 GNUNET_assert (GNUNET_OK ==
466 GNUNET_CONFIGURATION_load(p->cfg, 469 GNUNET_CONFIGURATION_load (p->cfg,
467 cfgname)); 470 cfgname));
468 p->stats = GNUNET_STATISTICS_create("hostlist", p->cfg); 471 p->stats = GNUNET_STATISTICS_create ("hostlist", p->cfg);
469 GNUNET_assert(NULL != p->stats); 472 GNUNET_assert (NULL != p->stats);
470 GNUNET_free(binary); 473 GNUNET_free (binary);
471} 474}
472 475
473 476
474static void 477static void
475run(void *cls, 478run (void *cls,
476 char *const *args, 479 char *const *args,
477 const char *cfgfile, 480 const char *cfgfile,
478 const struct GNUNET_CONFIGURATION_Handle *c) 481 const struct GNUNET_CONFIGURATION_Handle *c)
479{ 482{
480 timeout = GNUNET_NO; 483 timeout = GNUNET_NO;
481 adv_sent = GNUNET_NO; 484 adv_sent = GNUNET_NO;
@@ -486,22 +489,22 @@ run(void *cls,
486 489
487 cfg = c; 490 cfg = c;
488 491
489 setup_adv_peer(&adv_peer, 492 setup_adv_peer (&adv_peer,
490 "test_learning_adv_peer.conf"); 493 "test_learning_adv_peer.conf");
491 setup_learn_peer(&learn_peer, 494 setup_learn_peer (&learn_peer,
492 "test_learning_learn_peer.conf"); 495 "test_learning_learn_peer.conf");
493 timeout_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT, 496 timeout_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT,
494 &timeout_error, 497 &timeout_error,
495 NULL); 498 NULL);
496 check_task = 499 check_task =
497 GNUNET_SCHEDULER_add_delayed(CHECK_INTERVAL, 500 GNUNET_SCHEDULER_add_delayed (CHECK_INTERVAL,
498 &check_statistics, 501 &check_statistics,
499 NULL); 502 NULL);
500} 503}
501 504
502 505
503static int 506static int
504check() 507check ()
505{ 508{
506 unsigned int failed; 509 unsigned int failed;
507 510
@@ -514,44 +517,44 @@ check()
514 GNUNET_GETOPT_OPTION_END 517 GNUNET_GETOPT_OPTION_END
515 }; 518 };
516 519
517 GNUNET_PROGRAM_run((sizeof(argv) / sizeof(char *)) - 1, 520 GNUNET_PROGRAM_run ((sizeof(argv) / sizeof(char *)) - 1,
518 argv, 521 argv,
519 "test-gnunet-daemon-hostlist-learning", 522 "test-gnunet-daemon-hostlist-learning",
520 "nohelp", 523 "nohelp",
521 options, 524 options,
522 &run, 525 &run,
523 NULL); 526 NULL);
524 failed = GNUNET_NO; 527 failed = GNUNET_NO;
525 if (timeout == GNUNET_YES) 528 if (timeout == GNUNET_YES)
526 { 529 {
527 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 530 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
528 "Testcase timeout\n"); 531 "Testcase timeout\n");
529 failed = GNUNET_YES; 532 failed = GNUNET_YES;
530 } 533 }
531 if (adv_arrived != GNUNET_YES) 534 if (adv_arrived != GNUNET_YES)
532 { 535 {
533 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 536 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
534 "Learning peer did not receive advertisement from server\n"); 537 "Learning peer did not receive advertisement from server\n");
535 failed = GNUNET_YES; 538 failed = GNUNET_YES;
536 } 539 }
537 if (learned_hostlist_saved == GNUNET_NO) 540 if (learned_hostlist_saved == GNUNET_NO)
538 { 541 {
539 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 542 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
540 "Advertised hostlist was not saved in datastore\n"); 543 "Advertised hostlist was not saved in datastore\n");
541 failed = GNUNET_YES; 544 failed = GNUNET_YES;
542 } 545 }
543 if (learned_hostlist_downloaded == GNUNET_NO) 546 if (learned_hostlist_downloaded == GNUNET_NO)
544 { 547 {
545 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 548 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
546 "Advertised hostlist could not be downloaded from server\n"); 549 "Advertised hostlist could not be downloaded from server\n");
547 failed = GNUNET_YES; 550 failed = GNUNET_YES;
548 } 551 }
549 if (adv_sent == GNUNET_NO) 552 if (adv_sent == GNUNET_NO)
550 { 553 {
551 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 554 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
552 "Advertised was not sent from server to client\n"); 555 "Advertised was not sent from server to client\n");
553 failed = GNUNET_YES; 556 failed = GNUNET_YES;
554 } 557 }
555 if (GNUNET_YES == failed) 558 if (GNUNET_YES == failed)
556 return GNUNET_YES; 559 return GNUNET_YES;
557 return GNUNET_NO; 560 return GNUNET_NO;
@@ -559,29 +562,29 @@ check()
559 562
560 563
561int 564int
562main(int argc, char *argv[]) 565main (int argc, char *argv[])
563{ 566{
564 int ret; 567 int ret;
565 568
566 GNUNET_DISK_purge_cfg_dir("test_learning_learn_peer.conf", 569 GNUNET_DISK_purge_cfg_dir ("test_learning_learn_peer.conf",
567 "GNUNET_TEST_HOME"); 570 "GNUNET_TEST_HOME");
568 GNUNET_DISK_purge_cfg_dir("test_learning_adv_peer.conf", 571 GNUNET_DISK_purge_cfg_dir ("test_learning_adv_peer.conf",
569 "GNUNET_TEST_HOME"); 572 "GNUNET_TEST_HOME");
570 GNUNET_log_setup("test-gnunet-daemon-hostlist", 573 GNUNET_log_setup ("test-gnunet-daemon-hostlist",
571 "WARNING", 574 "WARNING",
572 NULL); 575 NULL);
573 ret = check(); 576 ret = check ();
574 GNUNET_DISK_purge_cfg_dir("test_learning_learn_peer.conf", 577 GNUNET_DISK_purge_cfg_dir ("test_learning_learn_peer.conf",
575 "GNUNET_TEST_HOME"); 578 "GNUNET_TEST_HOME");
576 GNUNET_DISK_purge_cfg_dir("test_learning_adv_peer.conf", 579 GNUNET_DISK_purge_cfg_dir ("test_learning_adv_peer.conf",
577 "GNUNET_TEST_HOME"); 580 "GNUNET_TEST_HOME");
578 if (GNUNET_YES == 581 if (GNUNET_YES ==
579 GNUNET_DISK_file_test("hostlists_learn_peer.file")) 582 GNUNET_DISK_file_test ("hostlists_learn_peer.file"))
580 { 583 {
581 if (0 == unlink("hostlists_learn_peer.file")) 584 if (0 == unlink ("hostlists_learn_peer.file"))
582 GNUNET_log(GNUNET_ERROR_TYPE_INFO, 585 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
583 "Hostlist file hostlists_learn_peer.file was removed\n"); 586 "Hostlist file hostlists_learn_peer.file was removed\n");
584 } 587 }
585 return ret; 588 return ret;
586} 589}
587 590