aboutsummaryrefslogtreecommitdiff
path: root/src/ats/test_ats_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ats/test_ats_lib.c')
-rw-r--r--src/ats/test_ats_lib.c1128
1 files changed, 568 insertions, 560 deletions
diff --git a/src/ats/test_ats_lib.c b/src/ats/test_ats_lib.c
index 979dbde3e..cd512634d 100644
--- a/src/ats/test_ats_lib.c
+++ b/src/ats/test_ats_lib.c
@@ -31,7 +31,8 @@
31/** 31/**
32 * Information about the last address suggestion we got for a peer. 32 * Information about the last address suggestion we got for a peer.
33 */ 33 */
34struct AddressSuggestData { 34struct AddressSuggestData
35{
35 /** 36 /**
36 * Which session were we given? 37 * Which session were we given?
37 */ 38 */
@@ -62,7 +63,8 @@ struct AddressSuggestData {
62/** 63/**
63 * Information about the last address information we got for an address. 64 * Information about the last address information we got for an address.
64 */ 65 */
65struct AddressInformationData { 66struct AddressInformationData
67{
66 /** 68 /**
67 * What address is this data about? 69 * What address is this data about?
68 */ 70 */
@@ -154,18 +156,18 @@ static struct Command *test_commands;
154 * @return #GNUNET_OK (continue to iterate) 156 * @return #GNUNET_OK (continue to iterate)
155 */ 157 */
156static int 158static int
157free_asd(void *cls, 159free_asd (void *cls,
158 const struct GNUNET_PeerIdentity *key, 160 const struct GNUNET_PeerIdentity *key,
159 void *value) 161 void *value)
160{ 162{
161 struct AddressSuggestData *asd = value; 163 struct AddressSuggestData *asd = value;
162 164
163 GNUNET_assert(GNUNET_YES == 165 GNUNET_assert (GNUNET_YES ==
164 GNUNET_CONTAINER_multipeermap_remove(p2asd, 166 GNUNET_CONTAINER_multipeermap_remove (p2asd,
165 key, 167 key,
166 asd)); 168 asd));
167 GNUNET_free_non_null(asd->address); 169 GNUNET_free_non_null (asd->address);
168 GNUNET_free(asd); 170 GNUNET_free (asd);
169 return GNUNET_OK; 171 return GNUNET_OK;
170} 172}
171 173
@@ -179,18 +181,18 @@ free_asd(void *cls,
179 * @return #GNUNET_OK (continue to iterate) 181 * @return #GNUNET_OK (continue to iterate)
180 */ 182 */
181static int 183static int
182free_aid(void *cls, 184free_aid (void *cls,
183 const struct GNUNET_PeerIdentity *key, 185 const struct GNUNET_PeerIdentity *key,
184 void *value) 186 void *value)
185{ 187{
186 struct AddressInformationData *aid = value; 188 struct AddressInformationData *aid = value;
187 189
188 GNUNET_assert(GNUNET_YES == 190 GNUNET_assert (GNUNET_YES ==
189 GNUNET_CONTAINER_multipeermap_remove(p2aid, 191 GNUNET_CONTAINER_multipeermap_remove (p2aid,
190 key, 192 key,
191 aid)); 193 aid));
192 GNUNET_free(aid->address); 194 GNUNET_free (aid->address);
193 GNUNET_free(aid); 195 GNUNET_free (aid);
194 return GNUNET_OK; 196 return GNUNET_OK;
195} 197}
196 198
@@ -202,17 +204,18 @@ free_aid(void *cls,
202 * @return NULL if peer was never involved 204 * @return NULL if peer was never involved
203 */ 205 */
204static struct AddressSuggestData * 206static struct AddressSuggestData *
205find_address_suggestion(const struct GNUNET_PeerIdentity *pid) 207find_address_suggestion (const struct GNUNET_PeerIdentity *pid)
206{ 208{
207 return GNUNET_CONTAINER_multipeermap_get(p2asd, 209 return GNUNET_CONTAINER_multipeermap_get (p2asd,
208 pid); 210 pid);
209} 211}
210 212
211 213
212/** 214/**
213 * Closure for #match_address() 215 * Closure for #match_address()
214 */ 216 */
215struct MatchAddressContext { 217struct MatchAddressContext
218{
216 /** 219 /**
217 * Address to find. 220 * Address to find.
218 */ 221 */
@@ -234,19 +237,19 @@ struct MatchAddressContext {
234 * @return #GNUNET_OK if not found 237 * @return #GNUNET_OK if not found
235 */ 238 */
236static int 239static int
237match_address(void *cls, 240match_address (void *cls,
238 const struct GNUNET_PeerIdentity *key, 241 const struct GNUNET_PeerIdentity *key,
239 void *value) 242 void *value)
240{ 243{
241 struct MatchAddressContext *mac = cls; 244 struct MatchAddressContext *mac = cls;
242 struct AddressInformationData *aid = value; 245 struct AddressInformationData *aid = value;
243 246
244 if (0 == GNUNET_HELLO_address_cmp(mac->addr, 247 if (0 == GNUNET_HELLO_address_cmp (mac->addr,
245 aid->address)) 248 aid->address))
246 { 249 {
247 mac->ret = aid; 250 mac->ret = aid;
248 return GNUNET_NO; 251 return GNUNET_NO;
249 } 252 }
250 return GNUNET_OK; 253 return GNUNET_OK;
251} 254}
252 255
@@ -258,16 +261,16 @@ match_address(void *cls,
258 * @return NULL if peer was never involved 261 * @return NULL if peer was never involved
259 */ 262 */
260static struct AddressInformationData * 263static struct AddressInformationData *
261find_address_information(const struct GNUNET_HELLO_Address *addr) 264find_address_information (const struct GNUNET_HELLO_Address *addr)
262{ 265{
263 struct MatchAddressContext mac; 266 struct MatchAddressContext mac;
264 267
265 mac.ret = NULL; 268 mac.ret = NULL;
266 mac.addr = addr; 269 mac.addr = addr;
267 GNUNET_CONTAINER_multipeermap_get_multiple(p2aid, 270 GNUNET_CONTAINER_multipeermap_get_multiple (p2aid,
268 &addr->peer, 271 &addr->peer,
269 &match_address, 272 &match_address,
270 &mac); 273 &mac);
271 return mac.ret; 274 return mac.ret;
272} 275}
273 276
@@ -278,51 +281,51 @@ find_address_information(const struct GNUNET_HELLO_Address *addr)
278 * @param cls NULL 281 * @param cls NULL
279 */ 282 */
280static void 283static void
281end(void *cls) 284end (void *cls)
282{ 285{
283 if (0 != ret) 286 if (0 != ret)
284 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 287 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
285 "Test failed at stage %u %s\n", 288 "Test failed at stage %u %s\n",
286 off, 289 off,
287 (NULL != test_commands[off].label) 290 (NULL != test_commands[off].label)
288 ? test_commands[off].label 291 ? test_commands[off].label
289 : ""); 292 : "");
290 if (NULL != interpreter_task) 293 if (NULL != interpreter_task)
291 { 294 {
292 GNUNET_SCHEDULER_cancel(interpreter_task); 295 GNUNET_SCHEDULER_cancel (interpreter_task);
293 interpreter_task = NULL; 296 interpreter_task = NULL;
294 } 297 }
295 if (NULL != sched_ats) 298 if (NULL != sched_ats)
296 { 299 {
297 GNUNET_ATS_scheduling_done(sched_ats); 300 GNUNET_ATS_scheduling_done (sched_ats);
298 sched_ats = NULL; 301 sched_ats = NULL;
299 } 302 }
300 if (NULL != con_ats) 303 if (NULL != con_ats)
301 { 304 {
302 GNUNET_ATS_connectivity_done(con_ats); 305 GNUNET_ATS_connectivity_done (con_ats);
303 con_ats = NULL; 306 con_ats = NULL;
304 } 307 }
305 if (NULL != perf_ats) 308 if (NULL != perf_ats)
306 { 309 {
307 GNUNET_ATS_performance_done(perf_ats); 310 GNUNET_ATS_performance_done (perf_ats);
308 perf_ats = NULL; 311 perf_ats = NULL;
309 } 312 }
310 if (NULL != p2asd) 313 if (NULL != p2asd)
311 { 314 {
312 GNUNET_CONTAINER_multipeermap_iterate(p2asd, 315 GNUNET_CONTAINER_multipeermap_iterate (p2asd,
313 &free_asd, 316 &free_asd,
314 NULL); 317 NULL);
315 GNUNET_CONTAINER_multipeermap_destroy(p2asd); 318 GNUNET_CONTAINER_multipeermap_destroy (p2asd);
316 p2asd = NULL; 319 p2asd = NULL;
317 } 320 }
318 if (NULL != p2aid) 321 if (NULL != p2aid)
319 { 322 {
320 GNUNET_CONTAINER_multipeermap_iterate(p2aid, 323 GNUNET_CONTAINER_multipeermap_iterate (p2aid,
321 &free_aid, 324 &free_aid,
322 NULL); 325 NULL);
323 GNUNET_CONTAINER_multipeermap_destroy(p2aid); 326 GNUNET_CONTAINER_multipeermap_destroy (p2aid);
324 p2aid = NULL; 327 p2aid = NULL;
325 } 328 }
326} 329}
327 330
328 331
@@ -332,19 +335,19 @@ end(void *cls)
332 * @param cls NULL 335 * @param cls NULL
333 */ 336 */
334static void 337static void
335interpreter(void *cls); 338interpreter (void *cls);
336 339
337 340
338/** 341/**
339 * Run the interpreter next. 342 * Run the interpreter next.
340 */ 343 */
341static void 344static void
342run_interpreter() 345run_interpreter ()
343{ 346{
344 if (NULL != interpreter_task) 347 if (NULL != interpreter_task)
345 GNUNET_SCHEDULER_cancel(interpreter_task); 348 GNUNET_SCHEDULER_cancel (interpreter_task);
346 interpreter_task = GNUNET_SCHEDULER_add_now(&interpreter, 349 interpreter_task = GNUNET_SCHEDULER_add_now (&interpreter,
347 NULL); 350 NULL);
348} 351}
349 352
350 353
@@ -355,15 +358,15 @@ run_interpreter()
355 * @param pk resulting fake public key 358 * @param pk resulting fake public key
356 */ 359 */
357static void 360static void
358make_peer(uint32_t pid, 361make_peer (uint32_t pid,
359 struct GNUNET_PeerIdentity *pk) 362 struct GNUNET_PeerIdentity *pk)
360{ 363{
361 memset(pk, 364 memset (pk,
362 (int)pid, 365 (int) pid,
363 sizeof(struct GNUNET_PeerIdentity)); 366 sizeof(struct GNUNET_PeerIdentity));
364 GNUNET_memcpy(pk, 367 GNUNET_memcpy (pk,
365 &pid, 368 &pid,
366 sizeof(uint32_t)); 369 sizeof(uint32_t));
367} 370}
368 371
369 372
@@ -376,28 +379,29 @@ make_peer(uint32_t pid,
376 * @return the address 379 * @return the address
377 */ 380 */
378static struct GNUNET_HELLO_Address * 381static struct GNUNET_HELLO_Address *
379make_address(uint32_t pid, 382make_address (uint32_t pid,
380 uint32_t num, 383 uint32_t num,
381 enum GNUNET_HELLO_AddressInfo addr_flags) 384 enum GNUNET_HELLO_AddressInfo addr_flags)
382{ 385{
383 struct GNUNET_PeerIdentity pk; 386 struct GNUNET_PeerIdentity pk;
384 uint32_t nbo; 387 uint32_t nbo;
385 388
386 nbo = htonl(num); 389 nbo = htonl (num);
387 make_peer(pid, 390 make_peer (pid,
388 &pk); 391 &pk);
389 return GNUNET_HELLO_address_allocate(&pk, 392 return GNUNET_HELLO_address_allocate (&pk,
390 "test", 393 "test",
391 &nbo, 394 &nbo,
392 sizeof(nbo), 395 sizeof(nbo),
393 addr_flags); 396 addr_flags);
394} 397}
395 398
396 399
397/** 400/**
398 * Our dummy sessions. 401 * Our dummy sessions.
399 */ 402 */
400struct GNUNET_ATS_Session { 403struct GNUNET_ATS_Session
404{
401 /** 405 /**
402 * Field to avoid `0 == sizeof(struct GNUNET_ATS_Session)`. 406 * Field to avoid `0 == sizeof(struct GNUNET_ATS_Session)`.
403 */ 407 */
@@ -412,7 +416,7 @@ struct GNUNET_ATS_Session {
412 * @return NULL if @a i is 0, otherwise a pointer unique to @a i 416 * @return NULL if @a i is 0, otherwise a pointer unique to @a i
413 */ 417 */
414static struct GNUNET_ATS_Session * 418static struct GNUNET_ATS_Session *
415make_session(unsigned int i) 419make_session (unsigned int i)
416{ 420{
417 struct GNUNET_ATS_Session *baseptr = NULL; 421 struct GNUNET_ATS_Session *baseptr = NULL;
418 422
@@ -434,8 +438,8 @@ make_session(unsigned int i)
434 * @return previous command with the matching label 438 * @return previous command with the matching label
435 */ 439 */
436static struct Command * 440static struct Command *
437find_command(enum CommandCode code, 441find_command (enum CommandCode code,
438 const char *label) 442 const char *label)
439{ 443{
440 int i; 444 int i;
441 445
@@ -443,10 +447,10 @@ find_command(enum CommandCode code,
443 return NULL; 447 return NULL;
444 for (i = off - 1; i >= 0; i--) 448 for (i = off - 1; i >= 0; i--)
445 if ((code == test_commands[i].code) && 449 if ((code == test_commands[i].code) &&
446 (0 == strcmp(test_commands[i].label, 450 (0 == strcmp (test_commands[i].label,
447 label))) 451 label)))
448 return &test_commands[i]; 452 return &test_commands[i];
449 GNUNET_break(0); 453 GNUNET_break (0);
450 return NULL; 454 return NULL;
451} 455}
452 456
@@ -466,53 +470,53 @@ find_command(enum CommandCode code,
466 * @param prop performance data for the address 470 * @param prop performance data for the address
467 */ 471 */
468static void 472static void
469info_cb(void *cls, 473info_cb (void *cls,
470 const struct GNUNET_HELLO_Address *address, 474 const struct GNUNET_HELLO_Address *address,
471 int address_active, 475 int address_active,
472 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, 476 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
473 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in, 477 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
474 const struct GNUNET_ATS_Properties *prop) 478 const struct GNUNET_ATS_Properties *prop)
475{ 479{
476 struct Command *c = cls; 480 struct Command *c = cls;
477 struct CommandListAddresses *cmd = &c->details.list_addresses; 481 struct CommandListAddresses *cmd = &c->details.list_addresses;
478 482
479 if (NULL == address) 483 if (NULL == address)
484 {
485 cmd->alh = NULL;
486 /* we are done with the iteration, continue to execute */
487 if ((cmd->calls < cmd->min_calls) &&
488 (cmd->active_calls < cmd->min_active_calls))
480 { 489 {
481 cmd->alh = NULL; 490 GNUNET_SCHEDULER_shutdown ();
482 /* we are done with the iteration, continue to execute */
483 if ((cmd->calls < cmd->min_calls) &&
484 (cmd->active_calls < cmd->min_active_calls))
485 {
486 GNUNET_SCHEDULER_shutdown();
487 return;
488 }
489 off++;
490 run_interpreter();
491 return; 491 return;
492 } 492 }
493 off++;
494 run_interpreter ();
495 return;
496 }
493 switch (address_active) 497 switch (address_active)
494 { 498 {
495 case GNUNET_YES: 499 case GNUNET_YES:
496 cmd->active_calls++; 500 cmd->active_calls++;
497 cmd->calls++; 501 cmd->calls++;
498 break; 502 break;
499 503
500 case GNUNET_NO: 504 case GNUNET_NO:
501 cmd->calls++; 505 cmd->calls++;
502 break; 506 break;
503 507
504 case GNUNET_SYSERR: 508 case GNUNET_SYSERR:
505 return; 509 return;
506 } 510 }
507 if ((cmd->calls > cmd->max_calls) && 511 if ((cmd->calls > cmd->max_calls) &&
508 (cmd->active_calls < cmd->max_active_calls)) 512 (cmd->active_calls < cmd->max_active_calls))
509 { 513 {
510 GNUNET_break(0); 514 GNUNET_break (0);
511 GNUNET_ATS_performance_list_addresses_cancel(cmd->alh); 515 GNUNET_ATS_performance_list_addresses_cancel (cmd->alh);
512 cmd->alh = NULL; 516 cmd->alh = NULL;
513 GNUNET_SCHEDULER_shutdown(); 517 GNUNET_SCHEDULER_shutdown ();
514 return; 518 return;
515 } 519 }
516} 520}
517 521
518 522
@@ -527,58 +531,58 @@ info_cb(void *cls,
527 * long should the client wait until re-trying? 531 * long should the client wait until re-trying?
528 */ 532 */
529static void 533static void
530reservation_cb(void *cls, 534reservation_cb (void *cls,
531 const struct GNUNET_PeerIdentity *peer, 535 const struct GNUNET_PeerIdentity *peer,
532 int32_t amount, 536 int32_t amount,
533 struct GNUNET_TIME_Relative res_delay) 537 struct GNUNET_TIME_Relative res_delay)
534{ 538{
535 struct Command *cmd = cls; 539 struct Command *cmd = cls;
536 struct GNUNET_PeerIdentity pid; 540 struct GNUNET_PeerIdentity pid;
537 541
538 cmd->details.reserve_bandwidth.rc = NULL; 542 cmd->details.reserve_bandwidth.rc = NULL;
539 make_peer(cmd->details.reserve_bandwidth.pid, 543 make_peer (cmd->details.reserve_bandwidth.pid,
540 &pid); 544 &pid);
541 GNUNET_assert(0 == GNUNET_memcmp(peer, 545 GNUNET_assert (0 == GNUNET_memcmp (peer,
542 &pid)); 546 &pid));
543 switch (cmd->details.reserve_bandwidth.expected_result) 547 switch (cmd->details.reserve_bandwidth.expected_result)
548 {
549 case GNUNET_OK:
550 if (amount != cmd->details.reserve_bandwidth.amount)
544 { 551 {
545 case GNUNET_OK: 552 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
546 if (amount != cmd->details.reserve_bandwidth.amount) 553 "Unexpectedly failed to reserve %d/%d bytes with delay %s!\n",
547 { 554 (int) amount,
548 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 555 (int) cmd->details.reserve_bandwidth.amount,
549 "Unexpectedly failed to reserve %d/%d bytes with delay %s!\n", 556 GNUNET_STRINGS_relative_time_to_string (res_delay,
550 (int)amount, 557 GNUNET_YES));
551 (int)cmd->details.reserve_bandwidth.amount, 558 GNUNET_break (0);
552 GNUNET_STRINGS_relative_time_to_string(res_delay, 559 GNUNET_SCHEDULER_shutdown ();
553 GNUNET_YES)); 560 return;
554 GNUNET_break(0); 561 }
555 GNUNET_SCHEDULER_shutdown(); 562 break;
556 return;
557 }
558 break;
559 563
560 case GNUNET_NO: 564 case GNUNET_NO:
561 GNUNET_break((0 != amount) || 565 GNUNET_break ((0 != amount) ||
562 (0 != res_delay.rel_value_us)); 566 (0 != res_delay.rel_value_us));
563 break; 567 break;
564 568
565 case GNUNET_SYSERR: 569 case GNUNET_SYSERR:
566 if ((amount != 0) || 570 if ((amount != 0) ||
567 (0 == res_delay.rel_value_us)) 571 (0 == res_delay.rel_value_us))
568 { 572 {
569 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 573 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
570 "Unexpectedly reserved %d bytes with delay %s!\n", 574 "Unexpectedly reserved %d bytes with delay %s!\n",
571 (int)amount, 575 (int) amount,
572 GNUNET_STRINGS_relative_time_to_string(res_delay, 576 GNUNET_STRINGS_relative_time_to_string (res_delay,
573 GNUNET_YES)); 577 GNUNET_YES));
574 GNUNET_break(0); 578 GNUNET_break (0);
575 GNUNET_SCHEDULER_shutdown(); 579 GNUNET_SCHEDULER_shutdown ();
576 return; 580 return;
577 }
578 break;
579 } 581 }
582 break;
583 }
580 off++; 584 off++;
581 run_interpreter(); 585 run_interpreter ();
582} 586}
583 587
584 588
@@ -588,297 +592,301 @@ reservation_cb(void *cls,
588 * @param cls NULL 592 * @param cls NULL
589 */ 593 */
590static void 594static void
591interpreter(void *cls) 595interpreter (void *cls)
592 596
593{ 597{
594 struct Command *cmd; 598 struct Command *cmd;
595 599
596 interpreter_task = NULL; 600 interpreter_task = NULL;
597 while (1) 601 while (1)
602 {
603 cmd = &test_commands[off];
604 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
605 "#%u: %d %s\n",
606 off,
607 (int) cmd->code,
608 (NULL != cmd->label) ? cmd->label : "");
609 switch (cmd->code)
598 { 610 {
599 cmd = &test_commands[off]; 611 case CMD_END_PASS:
600 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 612 ret = 0;
601 "#%u: %d %s\n", 613 GNUNET_SCHEDULER_shutdown ();
602 off, 614 return;
603 (int)cmd->code,
604 (NULL != cmd->label) ? cmd->label : "");
605 switch (cmd->code)
606 {
607 case CMD_END_PASS:
608 ret = 0;
609 GNUNET_SCHEDULER_shutdown();
610 return;
611
612 case CMD_ADD_ADDRESS:
613 {
614 struct GNUNET_HELLO_Address *addr;
615 struct GNUNET_ATS_Session *session;
616
617 addr = make_address(cmd->details.add_address.pid,
618 cmd->details.add_address.addr_num,
619 cmd->details.add_address.addr_flags);
620 session = make_session(cmd->details.add_address.session);
621 if (cmd->details.add_address.expect_fail)
622 GNUNET_log_skip(1, GNUNET_NO);
623 cmd->details.add_address.ar
624 = GNUNET_ATS_address_add(sched_ats,
625 addr,
626 session,
627 &cmd->details.add_address.properties);
628 GNUNET_free(addr);
629 if (cmd->details.add_address.expect_fail)
630 {
631 GNUNET_log_skip(0, GNUNET_YES);
632 }
633 else if (NULL == cmd->details.add_address.ar)
634 {
635 GNUNET_break(0);
636 GNUNET_SCHEDULER_shutdown();
637 return;
638 }
639 off++;
640 break;
641 }
642
643 case CMD_DEL_ADDRESS:
644 {
645 struct Command *add;
646
647 add = find_command(CMD_ADD_ADDRESS,
648 cmd->details.del_address.add_label);
649 GNUNET_assert(NULL != add->details.add_address.ar);
650 GNUNET_ATS_address_destroy(add->details.add_address.ar);
651 add->details.add_address.ar = NULL;
652 off++;
653 break;
654 }
655
656 case CMD_AWAIT_ADDRESS_SUGGESTION:
657 {
658 struct GNUNET_PeerIdentity pid;
659 struct GNUNET_HELLO_Address *addr;
660 struct Command *add;
661 struct AddressSuggestData *asd;
662 int done;
663
664 make_peer(cmd->details.await_address_suggestion.pid,
665 &pid);
666 asd = find_address_suggestion(&pid);
667 if (NULL == asd)
668 return;
669 if (GNUNET_NO == asd->active)
670 return; /* last suggestion was to disconnect, wait longer */
671 done = GNUNET_YES;
672 if (NULL != cmd->details.await_address_suggestion.add_label)
673 {
674 done = GNUNET_NO;
675 add = find_command(CMD_ADD_ADDRESS,
676 cmd->details.await_address_suggestion.add_label);
677 addr = make_address(add->details.add_address.pid,
678 add->details.add_address.addr_num,
679 add->details.add_address.addr_flags);
680 if ((asd->session ==
681 make_session(add->details.add_address.session)) &&
682 (0 ==
683 GNUNET_HELLO_address_cmp(addr,
684 asd->address)))
685 done = GNUNET_YES;
686 GNUNET_free(addr);
687 }
688 if (GNUNET_NO == done)
689 return;
690 off++;
691 break;
692 }
693
694 case CMD_AWAIT_DISCONNECT_SUGGESTION:
695 {
696 struct GNUNET_PeerIdentity pid;
697 struct AddressSuggestData *asd;
698
699 make_peer(cmd->details.await_disconnect_suggestion.pid,
700 &pid);
701 asd = find_address_suggestion(&pid);
702 if (NULL == asd)
703 return; /* odd, no suggestion at all yet!? */
704 if (GNUNET_YES == asd->active)
705 return; /* last suggestion was to activate, wait longer */
706 /* last suggestion was to deactivate, condition satisfied! */
707 off++;
708 break;
709 }
710
711 case CMD_REQUEST_CONNECTION_START:
712 {
713 struct GNUNET_PeerIdentity pid;
714
715 make_peer(cmd->details.request_connection_start.pid,
716 &pid);
717 cmd->details.request_connection_start.csh
718 = GNUNET_ATS_connectivity_suggest(con_ats,
719 &pid,
720 1);
721 off++;
722 break;
723 }
724 615
725 case CMD_REQUEST_CONNECTION_STOP: 616 case CMD_ADD_ADDRESS:
617 {
618 struct GNUNET_HELLO_Address *addr;
619 struct GNUNET_ATS_Session *session;
620
621 addr = make_address (cmd->details.add_address.pid,
622 cmd->details.add_address.addr_num,
623 cmd->details.add_address.addr_flags);
624 session = make_session (cmd->details.add_address.session);
625 if (cmd->details.add_address.expect_fail)
626 GNUNET_log_skip (1, GNUNET_NO);
627 cmd->details.add_address.ar
628 = GNUNET_ATS_address_add (sched_ats,
629 addr,
630 session,
631 &cmd->details.add_address.properties);
632 GNUNET_free (addr);
633 if (cmd->details.add_address.expect_fail)
726 { 634 {
727 struct Command *start; 635 GNUNET_log_skip (0, GNUNET_YES);
728
729 start = find_command(CMD_REQUEST_CONNECTION_START,
730 cmd->details.request_connection_stop.connect_label);
731 GNUNET_ATS_connectivity_suggest_cancel(start->details.request_connection_start.csh);
732 start->details.request_connection_start.csh = NULL;
733 off++;
734 break;
735 } 636 }
736 637 else if (NULL == cmd->details.add_address.ar)
737 case CMD_AWAIT_ADDRESS_INFORMATION:
738 { 638 {
739 struct AddressInformationData *aid; 639 GNUNET_break (0);
740 struct Command *add; 640 GNUNET_SCHEDULER_shutdown ();
741 struct Command *update;
742 struct GNUNET_HELLO_Address *addr;
743 const struct GNUNET_ATS_Properties *cmp;
744
745 add = find_command(CMD_ADD_ADDRESS,
746 cmd->details.await_address_information.add_label);
747 update = find_command(CMD_UPDATE_ADDRESS,
748 cmd->details.await_address_information.update_label);
749 addr = make_address(add->details.add_address.pid,
750 add->details.add_address.addr_num,
751 add->details.add_address.addr_flags);
752 aid = find_address_information(addr);
753 GNUNET_free(addr);
754 if (NULL == update)
755 cmp = &add->details.add_address.properties;
756 else
757 cmp = &update->details.update_address.properties;
758 if ((NULL != aid) &&
759 (cmp->delay.rel_value_us == aid->properties.delay.rel_value_us) &&
760 (cmp->utilization_out == aid->properties.utilization_out) &&
761 (cmp->utilization_in == aid->properties.utilization_in) &&
762 (cmp->distance == aid->properties.distance) &&
763 (cmp->scope == aid->properties.scope))
764 {
765 off++;
766 break;
767 }
768 return; 641 return;
769 } 642 }
770 643 off++;
771 case CMD_UPDATE_ADDRESS: 644 break;
645 }
646
647 case CMD_DEL_ADDRESS:
648 {
649 struct Command *add;
650
651 add = find_command (CMD_ADD_ADDRESS,
652 cmd->details.del_address.add_label);
653 GNUNET_assert (NULL != add->details.add_address.ar);
654 GNUNET_ATS_address_destroy (add->details.add_address.ar);
655 add->details.add_address.ar = NULL;
656 off++;
657 break;
658 }
659
660 case CMD_AWAIT_ADDRESS_SUGGESTION:
661 {
662 struct GNUNET_PeerIdentity pid;
663 struct GNUNET_HELLO_Address *addr;
664 struct Command *add;
665 struct AddressSuggestData *asd;
666 int done;
667
668 make_peer (cmd->details.await_address_suggestion.pid,
669 &pid);
670 asd = find_address_suggestion (&pid);
671 if (NULL == asd)
672 return;
673 if (GNUNET_NO == asd->active)
674 return; /* last suggestion was to disconnect, wait longer */
675 done = GNUNET_YES;
676 if (NULL != cmd->details.await_address_suggestion.add_label)
772 { 677 {
773 struct Command *add; 678 done = GNUNET_NO;
774 679 add = find_command (CMD_ADD_ADDRESS,
775 add = find_command(CMD_ADD_ADDRESS, 680 cmd->details.await_address_suggestion.add_label);
776 cmd->details.update_address.add_label); 681 addr = make_address (add->details.add_address.pid,
777 GNUNET_assert(NULL != add->details.add_address.ar); 682 add->details.add_address.addr_num,
778 GNUNET_ATS_address_update(add->details.add_address.ar, 683 add->details.add_address.addr_flags);
779 &cmd->details.update_address.properties); 684 if ((asd->session ==
780 off++; 685 make_session (add->details.add_address.session)) &&
781 break; 686 (0 ==
687 GNUNET_HELLO_address_cmp (addr,
688 asd->address)))
689 done = GNUNET_YES;
690 GNUNET_free (addr);
782 } 691 }
783 692 if (GNUNET_NO == done)
784 case CMD_ADD_SESSION: 693 return;
785 { 694 off++;
786 struct Command *add; 695 break;
787 struct GNUNET_ATS_Session *session; 696 }
788 697
789 add = find_command(CMD_ADD_ADDRESS, 698 case CMD_AWAIT_DISCONNECT_SUGGESTION:
790 cmd->details.add_session.add_label); 699 {
791 session = make_session(cmd->details.add_session.session); 700 struct GNUNET_PeerIdentity pid;
792 GNUNET_assert(NULL != add->details.add_address.ar); 701 struct AddressSuggestData *asd;
793 GNUNET_ATS_address_add_session(add->details.add_address.ar, 702
794 session); 703 make_peer (cmd->details.await_disconnect_suggestion.pid,
795 off++; 704 &pid);
796 break; 705 asd = find_address_suggestion (&pid);
797 } 706 if (NULL == asd)
798 707 return; /* odd, no suggestion at all yet!? */
799 case CMD_DEL_SESSION: 708 if (GNUNET_YES == asd->active)
709 return; /* last suggestion was to activate, wait longer */
710 /* last suggestion was to deactivate, condition satisfied! */
711 off++;
712 break;
713 }
714
715 case CMD_REQUEST_CONNECTION_START:
716 {
717 struct GNUNET_PeerIdentity pid;
718
719 make_peer (cmd->details.request_connection_start.pid,
720 &pid);
721 cmd->details.request_connection_start.csh
722 = GNUNET_ATS_connectivity_suggest (con_ats,
723 &pid,
724 1);
725 off++;
726 break;
727 }
728
729 case CMD_REQUEST_CONNECTION_STOP:
730 {
731 struct Command *start;
732
733 start = find_command (CMD_REQUEST_CONNECTION_START,
734 cmd->details.request_connection_stop.connect_label);
735 GNUNET_ATS_connectivity_suggest_cancel (
736 start->details.request_connection_start.csh);
737 start->details.request_connection_start.csh = NULL;
738 off++;
739 break;
740 }
741
742 case CMD_AWAIT_ADDRESS_INFORMATION:
743 {
744 struct AddressInformationData *aid;
745 struct Command *add;
746 struct Command *update;
747 struct GNUNET_HELLO_Address *addr;
748 const struct GNUNET_ATS_Properties *cmp;
749
750 add = find_command (CMD_ADD_ADDRESS,
751 cmd->details.await_address_information.add_label);
752 update = find_command (CMD_UPDATE_ADDRESS,
753 cmd->details.await_address_information.
754 update_label);
755 addr = make_address (add->details.add_address.pid,
756 add->details.add_address.addr_num,
757 add->details.add_address.addr_flags);
758 aid = find_address_information (addr);
759 GNUNET_free (addr);
760 if (NULL == update)
761 cmp = &add->details.add_address.properties;
762 else
763 cmp = &update->details.update_address.properties;
764 if ((NULL != aid) &&
765 (cmp->delay.rel_value_us == aid->properties.delay.rel_value_us) &&
766 (cmp->utilization_out == aid->properties.utilization_out) &&
767 (cmp->utilization_in == aid->properties.utilization_in) &&
768 (cmp->distance == aid->properties.distance) &&
769 (cmp->scope == aid->properties.scope))
800 { 770 {
801 struct Command *add_address;
802 struct Command *add_session;
803 struct GNUNET_ATS_Session *session;
804
805 add_session = find_command(CMD_ADD_SESSION,
806 cmd->details.del_session.add_session_label);
807 add_address = find_command(CMD_ADD_ADDRESS,
808 add_session->details.add_session.add_label);
809 GNUNET_assert(NULL != add_address->details.add_address.ar);
810 session = make_session(add_session->details.add_session.session);
811 GNUNET_ATS_address_del_session(add_address->details.add_address.ar,
812 session);
813 off++; 771 off++;
814 break; 772 break;
815 } 773 }
816 774 return;
817 case CMD_CHANGE_PREFERENCE: 775 }
818 { 776
819 struct GNUNET_PeerIdentity pid; 777 case CMD_UPDATE_ADDRESS:
820 778 {
821 make_peer(cmd->details.change_preference.pid, 779 struct Command *add;
822 &pid); 780
823 GNUNET_ATS_performance_change_preference(perf_ats, 781 add = find_command (CMD_ADD_ADDRESS,
782 cmd->details.update_address.add_label);
783 GNUNET_assert (NULL != add->details.add_address.ar);
784 GNUNET_ATS_address_update (add->details.add_address.ar,
785 &cmd->details.update_address.properties);
786 off++;
787 break;
788 }
789
790 case CMD_ADD_SESSION:
791 {
792 struct Command *add;
793 struct GNUNET_ATS_Session *session;
794
795 add = find_command (CMD_ADD_ADDRESS,
796 cmd->details.add_session.add_label);
797 session = make_session (cmd->details.add_session.session);
798 GNUNET_assert (NULL != add->details.add_address.ar);
799 GNUNET_ATS_address_add_session (add->details.add_address.ar,
800 session);
801 off++;
802 break;
803 }
804
805 case CMD_DEL_SESSION:
806 {
807 struct Command *add_address;
808 struct Command *add_session;
809 struct GNUNET_ATS_Session *session;
810
811 add_session = find_command (CMD_ADD_SESSION,
812 cmd->details.del_session.add_session_label);
813 add_address = find_command (CMD_ADD_ADDRESS,
814 add_session->details.add_session.add_label);
815 GNUNET_assert (NULL != add_address->details.add_address.ar);
816 session = make_session (add_session->details.add_session.session);
817 GNUNET_ATS_address_del_session (add_address->details.add_address.ar,
818 session);
819 off++;
820 break;
821 }
822
823 case CMD_CHANGE_PREFERENCE:
824 {
825 struct GNUNET_PeerIdentity pid;
826
827 make_peer (cmd->details.change_preference.pid,
828 &pid);
829 GNUNET_ATS_performance_change_preference (perf_ats,
830 &pid,
831 GNUNET_ATS_PREFERENCE_END);
832 off++;
833 break;
834 }
835
836 case CMD_PROVIDE_FEEDBACK:
837 {
838 struct GNUNET_PeerIdentity pid;
839
840 make_peer (cmd->details.provide_feedback.pid,
841 &pid);
842 GNUNET_ATS_performance_give_feedback (perf_ats,
843 &pid,
844 cmd->details.provide_feedback.
845 scope,
846 GNUNET_ATS_PREFERENCE_END);
847 off++;
848 break;
849 }
850
851 case CMD_LIST_ADDRESSES:
852 {
853 struct GNUNET_PeerIdentity pid;
854
855 make_peer (cmd->details.list_addresses.pid,
856 &pid);
857 cmd->details.list_addresses.alh
858 = GNUNET_ATS_performance_list_addresses (perf_ats,
824 &pid, 859 &pid,
825 GNUNET_ATS_PREFERENCE_END); 860 cmd->details.list_addresses.
826 off++; 861 all,
827 break; 862 &info_cb,
828 } 863 cmd);
829 864 return;
830 case CMD_PROVIDE_FEEDBACK: 865 }
831 { 866
832 struct GNUNET_PeerIdentity pid; 867 case CMD_RESERVE_BANDWIDTH:
833 868 {
834 make_peer(cmd->details.provide_feedback.pid, 869 struct GNUNET_PeerIdentity pid;
835 &pid); 870
836 GNUNET_ATS_performance_give_feedback(perf_ats, 871 make_peer (cmd->details.reserve_bandwidth.pid,
837 &pid, 872 &pid);
838 cmd->details.provide_feedback.scope, 873 cmd->details.reserve_bandwidth.rc
839 GNUNET_ATS_PREFERENCE_END); 874 = GNUNET_ATS_reserve_bandwidth (perf_ats,
840 off++; 875 &pid,
841 break; 876 cmd->details.reserve_bandwidth.amount,
842 } 877 &reservation_cb,
843 878 cmd);
844 case CMD_LIST_ADDRESSES: 879 return;
845 { 880 }
846 struct GNUNET_PeerIdentity pid; 881
847 882 case CMD_SLEEP:
848 make_peer(cmd->details.list_addresses.pid, 883 off++;
849 &pid); 884 interpreter_task = GNUNET_SCHEDULER_add_delayed (cmd->details.sleep.delay,
850 cmd->details.list_addresses.alh 885 &interpreter,
851 = GNUNET_ATS_performance_list_addresses(perf_ats, 886 NULL);
852 &pid, 887 return;
853 cmd->details.list_addresses.all, 888 } /* end switch */
854 &info_cb, 889 } /* end while(1) */
855 cmd);
856 return;
857 }
858
859 case CMD_RESERVE_BANDWIDTH:
860 {
861 struct GNUNET_PeerIdentity pid;
862
863 make_peer(cmd->details.reserve_bandwidth.pid,
864 &pid);
865 cmd->details.reserve_bandwidth.rc
866 = GNUNET_ATS_reserve_bandwidth(perf_ats,
867 &pid,
868 cmd->details.reserve_bandwidth.amount,
869 &reservation_cb,
870 cmd);
871 return;
872 }
873
874 case CMD_SLEEP:
875 off++;
876 interpreter_task = GNUNET_SCHEDULER_add_delayed(cmd->details.sleep.delay,
877 &interpreter,
878 NULL);
879 return;
880 } /* end switch */
881 } /* end while(1) */
882} 890}
883 891
884 892
@@ -897,59 +905,59 @@ interpreter(void *cls)
897 * 0 to signal disconnect 905 * 0 to signal disconnect
898 */ 906 */
899static void 907static void
900address_suggest_cb(void *cls, 908address_suggest_cb (void *cls,
901 const struct GNUNET_PeerIdentity *peer, 909 const struct GNUNET_PeerIdentity *peer,
902 const struct GNUNET_HELLO_Address *address, 910 const struct GNUNET_HELLO_Address *address,
903 struct GNUNET_ATS_Session *session, 911 struct GNUNET_ATS_Session *session,
904 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, 912 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
905 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in) 913 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
906{ 914{
907 const char *asc_cls = cls; 915 const char *asc_cls = cls;
908 struct AddressSuggestData *asd; 916 struct AddressSuggestData *asd;
909 917
910 GNUNET_break(0 == strcmp(asc_cls, "asc-closure")); 918 GNUNET_break (0 == strcmp (asc_cls, "asc-closure"));
911 if (NULL == peer) 919 if (NULL == peer)
912 { 920 {
913 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 921 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
914 "Connection to ATS died, likely a crash!\n"); 922 "Connection to ATS died, likely a crash!\n");
915 GNUNET_SCHEDULER_shutdown(); 923 GNUNET_SCHEDULER_shutdown ();
916#if 0 924#if 0
917 /* This is what we should do if we wanted to continue past 925 /* This is what we should do if we wanted to continue past
918 the ATS crash. */ 926 the ATS crash. */
919 GNUNET_CONTAINER_multipeermap_iterate(p2asd, 927 GNUNET_CONTAINER_multipeermap_iterate (p2asd,
920 &free_asd, 928 &free_asd,
921 NULL); 929 NULL);
922 GNUNET_CONTAINER_multipeermap_iterate(p2aid, 930 GNUNET_CONTAINER_multipeermap_iterate (p2aid,
923 &free_aid, 931 &free_aid,
924 NULL); 932 NULL);
925#endif 933#endif
926 return; 934 return;
927 } 935 }
928 936
929 asd = find_address_suggestion(peer); 937 asd = find_address_suggestion (peer);
930 if (NULL == asd) 938 if (NULL == asd)
931 { 939 {
932 asd = GNUNET_new(struct AddressSuggestData); 940 asd = GNUNET_new (struct AddressSuggestData);
933 GNUNET_assert(GNUNET_YES == 941 GNUNET_assert (GNUNET_YES ==
934 GNUNET_CONTAINER_multipeermap_put(p2asd, 942 GNUNET_CONTAINER_multipeermap_put (p2asd,
935 peer, 943 peer,
936 asd, 944 asd,
937 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY)); 945 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
938 } 946 }
939 if ((0 == ntohl(bandwidth_out.value__)) && 947 if ((0 == ntohl (bandwidth_out.value__)) &&
940 (0 == ntohl(bandwidth_in.value__))) 948 (0 == ntohl (bandwidth_in.value__)))
941 asd->active = GNUNET_NO; 949 asd->active = GNUNET_NO;
942 else 950 else
943 asd->active = GNUNET_YES; 951 asd->active = GNUNET_YES;
944 asd->bandwidth_out = bandwidth_out; 952 asd->bandwidth_out = bandwidth_out;
945 asd->bandwidth_in = bandwidth_in; 953 asd->bandwidth_in = bandwidth_in;
946 asd->session = session; 954 asd->session = session;
947 GNUNET_free_non_null(asd->address); 955 GNUNET_free_non_null (asd->address);
948 asd->address = NULL; 956 asd->address = NULL;
949 if (NULL != address) 957 if (NULL != address)
950 asd->address = GNUNET_HELLO_address_copy(address); 958 asd->address = GNUNET_HELLO_address_copy (address);
951 if (NULL == interpreter_task) 959 if (NULL == interpreter_task)
952 run_interpreter(); 960 run_interpreter ();
953} 961}
954 962
955 963
@@ -967,44 +975,44 @@ address_suggest_cb(void *cls,
967 * @param prop performance data for the address 975 * @param prop performance data for the address
968 */ 976 */
969static void 977static void
970address_information_cb(void *cls, 978address_information_cb (void *cls,
971 const struct GNUNET_HELLO_Address *address, 979 const struct GNUNET_HELLO_Address *address,
972 int address_active, 980 int address_active,
973 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, 981 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
974 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in, 982 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
975 const struct GNUNET_ATS_Properties *prop) 983 const struct GNUNET_ATS_Properties *prop)
976{ 984{
977 const char *aic_cls = cls; 985 const char *aic_cls = cls;
978 struct AddressInformationData *aid; 986 struct AddressInformationData *aid;
979 987
980 GNUNET_break(0 == strcmp(aic_cls, "aic-closure")); 988 GNUNET_break (0 == strcmp (aic_cls, "aic-closure"));
981 if (NULL == address) 989 if (NULL == address)
982 { 990 {
983 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 991 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
984 "Connection to ATS died, likely a crash!\n"); 992 "Connection to ATS died, likely a crash!\n");
985 GNUNET_CONTAINER_multipeermap_iterate(p2aid, 993 GNUNET_CONTAINER_multipeermap_iterate (p2aid,
986 &free_aid, 994 &free_aid,
987 NULL); 995 NULL);
988 return; 996 return;
989 } 997 }
990 998
991 aid = find_address_information(address); 999 aid = find_address_information (address);
992 if (NULL == aid) 1000 if (NULL == aid)
993 { 1001 {
994 aid = GNUNET_new(struct AddressInformationData); 1002 aid = GNUNET_new (struct AddressInformationData);
995 aid->address = GNUNET_HELLO_address_copy(address); 1003 aid->address = GNUNET_HELLO_address_copy (address);
996 GNUNET_assert(GNUNET_YES == 1004 GNUNET_assert (GNUNET_YES ==
997 GNUNET_CONTAINER_multipeermap_put(p2aid, 1005 GNUNET_CONTAINER_multipeermap_put (p2aid,
998 &address->peer, 1006 &address->peer,
999 aid, 1007 aid,
1000 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); 1008 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE));
1001 } 1009 }
1002 aid->active = address_active; 1010 aid->active = address_active;
1003 aid->bandwidth_out = bandwidth_out; 1011 aid->bandwidth_out = bandwidth_out;
1004 aid->bandwidth_in = bandwidth_in; 1012 aid->bandwidth_in = bandwidth_in;
1005 aid->properties = *prop; 1013 aid->properties = *prop;
1006 if (NULL == interpreter_task) 1014 if (NULL == interpreter_task)
1007 run_interpreter(); 1015 run_interpreter ();
1008} 1016}
1009 1017
1010 1018
@@ -1016,44 +1024,44 @@ address_information_cb(void *cls,
1016 * @param peer handle to the peer 1024 * @param peer handle to the peer
1017 */ 1025 */
1018static void 1026static void
1019run(void *cls, 1027run (void *cls,
1020 const struct GNUNET_CONFIGURATION_Handle *cfg, 1028 const struct GNUNET_CONFIGURATION_Handle *cfg,
1021 struct GNUNET_TESTING_Peer *peer) 1029 struct GNUNET_TESTING_Peer *peer)
1022{ 1030{
1023 p2asd = GNUNET_CONTAINER_multipeermap_create(128, 1031 p2asd = GNUNET_CONTAINER_multipeermap_create (128,
1024 GNUNET_NO); 1032 GNUNET_NO);
1025 p2aid = GNUNET_CONTAINER_multipeermap_create(128, 1033 p2aid = GNUNET_CONTAINER_multipeermap_create (128,
1026 GNUNET_NO); 1034 GNUNET_NO);
1027 GNUNET_SCHEDULER_add_delayed(TIMEOUT, 1035 GNUNET_SCHEDULER_add_delayed (TIMEOUT,
1028 &end, 1036 &end,
1029 NULL); 1037 NULL);
1030 1038
1031 sched_ats = GNUNET_ATS_scheduling_init(cfg, 1039 sched_ats = GNUNET_ATS_scheduling_init (cfg,
1032 &address_suggest_cb, 1040 &address_suggest_cb,
1033 "asc-closure"); 1041 "asc-closure");
1034 if (NULL == sched_ats) 1042 if (NULL == sched_ats)
1035 { 1043 {
1036 GNUNET_break(0); 1044 GNUNET_break (0);
1037 GNUNET_SCHEDULER_shutdown(); 1045 GNUNET_SCHEDULER_shutdown ();
1038 return; 1046 return;
1039 } 1047 }
1040 con_ats = GNUNET_ATS_connectivity_init(cfg); 1048 con_ats = GNUNET_ATS_connectivity_init (cfg);
1041 if (NULL == con_ats) 1049 if (NULL == con_ats)
1042 { 1050 {
1043 GNUNET_break(0); 1051 GNUNET_break (0);
1044 GNUNET_SCHEDULER_shutdown(); 1052 GNUNET_SCHEDULER_shutdown ();
1045 return; 1053 return;
1046 } 1054 }
1047 perf_ats = GNUNET_ATS_performance_init(cfg, 1055 perf_ats = GNUNET_ATS_performance_init (cfg,
1048 &address_information_cb, 1056 &address_information_cb,
1049 "aic-closure"); 1057 "aic-closure");
1050 if (NULL == perf_ats) 1058 if (NULL == perf_ats)
1051 { 1059 {
1052 GNUNET_break(0); 1060 GNUNET_break (0);
1053 GNUNET_SCHEDULER_shutdown(); 1061 GNUNET_SCHEDULER_shutdown ();
1054 return; 1062 return;
1055 } 1063 }
1056 run_interpreter(); 1064 run_interpreter ();
1057} 1065}
1058 1066
1059 1067
@@ -1067,32 +1075,32 @@ run(void *cls,
1067 * @return 0 on success 1075 * @return 0 on success
1068 */ 1076 */
1069int 1077int
1070TEST_ATS_run(int argc, 1078TEST_ATS_run (int argc,
1071 char *argv[], 1079 char *argv[],
1072 struct Command *cmds, 1080 struct Command *cmds,
1073 struct GNUNET_TIME_Relative timeout) 1081 struct GNUNET_TIME_Relative timeout)
1074{ 1082{
1075 char *test_filename = GNUNET_strdup(argv[0]); 1083 char *test_filename = GNUNET_strdup (argv[0]);
1076 char *sep; 1084 char *sep;
1077 char *config_file; 1085 char *config_file;
1078 char *underscore; 1086 char *underscore;
1079 1087
1080 test_commands = cmds; 1088 test_commands = cmds;
1081 TIMEOUT = timeout; 1089 TIMEOUT = timeout;
1082 if (NULL != (sep = strstr(test_filename, ".exe"))) 1090 if (NULL != (sep = strstr (test_filename, ".exe")))
1083 sep[0] = '\0'; 1091 sep[0] = '\0';
1084 underscore = strrchr(test_filename, (int)'_'); 1092 underscore = strrchr (test_filename, (int) '_');
1085 GNUNET_assert(NULL != underscore); 1093 GNUNET_assert (NULL != underscore);
1086 GNUNET_asprintf(&config_file, 1094 GNUNET_asprintf (&config_file,
1087 "test_ats_api_%s.conf", 1095 "test_ats_api_%s.conf",
1088 underscore + 1); 1096 underscore + 1);
1089 ret = 2; 1097 ret = 2;
1090 if (0 != GNUNET_TESTING_peer_run("test-ats-api", 1098 if (0 != GNUNET_TESTING_peer_run ("test-ats-api",
1091 config_file, 1099 config_file,
1092 &run, NULL)) 1100 &run, NULL))
1093 ret = 1; 1101 ret = 1;
1094 GNUNET_free(test_filename); 1102 GNUNET_free (test_filename);
1095 GNUNET_free(config_file); 1103 GNUNET_free (config_file);
1096 return ret; 1104 return ret;
1097} 1105}
1098 1106