diff options
Diffstat (limited to 'src/ats/test_ats_lib.c')
-rw-r--r-- | src/ats/test_ats_lib.c | 1128 |
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 | */ |
34 | struct AddressSuggestData { | 34 | struct 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 | */ |
65 | struct AddressInformationData { | 66 | struct 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 | */ |
156 | static int | 158 | static int |
157 | free_asd(void *cls, | 159 | free_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 | */ |
181 | static int | 183 | static int |
182 | free_aid(void *cls, | 184 | free_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 | */ |
204 | static struct AddressSuggestData * | 206 | static struct AddressSuggestData * |
205 | find_address_suggestion(const struct GNUNET_PeerIdentity *pid) | 207 | find_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 | */ |
215 | struct MatchAddressContext { | 217 | struct 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 | */ |
236 | static int | 239 | static int |
237 | match_address(void *cls, | 240 | match_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 | */ |
260 | static struct AddressInformationData * | 263 | static struct AddressInformationData * |
261 | find_address_information(const struct GNUNET_HELLO_Address *addr) | 264 | find_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 | */ |
280 | static void | 283 | static void |
281 | end(void *cls) | 284 | end (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 | */ |
334 | static void | 337 | static void |
335 | interpreter(void *cls); | 338 | interpreter (void *cls); |
336 | 339 | ||
337 | 340 | ||
338 | /** | 341 | /** |
339 | * Run the interpreter next. | 342 | * Run the interpreter next. |
340 | */ | 343 | */ |
341 | static void | 344 | static void |
342 | run_interpreter() | 345 | run_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 | */ |
357 | static void | 360 | static void |
358 | make_peer(uint32_t pid, | 361 | make_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 | */ |
378 | static struct GNUNET_HELLO_Address * | 381 | static struct GNUNET_HELLO_Address * |
379 | make_address(uint32_t pid, | 382 | make_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 | */ |
400 | struct GNUNET_ATS_Session { | 403 | struct 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 | */ |
414 | static struct GNUNET_ATS_Session * | 418 | static struct GNUNET_ATS_Session * |
415 | make_session(unsigned int i) | 419 | make_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 | */ |
436 | static struct Command * | 440 | static struct Command * |
437 | find_command(enum CommandCode code, | 441 | find_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 | */ |
468 | static void | 472 | static void |
469 | info_cb(void *cls, | 473 | info_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 | */ |
529 | static void | 533 | static void |
530 | reservation_cb(void *cls, | 534 | reservation_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 | */ |
590 | static void | 594 | static void |
591 | interpreter(void *cls) | 595 | interpreter (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 | */ |
899 | static void | 907 | static void |
900 | address_suggest_cb(void *cls, | 908 | address_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 | */ |
969 | static void | 977 | static void |
970 | address_information_cb(void *cls, | 978 | address_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 | */ |
1018 | static void | 1026 | static void |
1019 | run(void *cls, | 1027 | run (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 | */ |
1069 | int | 1077 | int |
1070 | TEST_ATS_run(int argc, | 1078 | TEST_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 | ||