diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-11-16 17:53:26 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-11-16 17:53:26 +0000 |
commit | 26bf6d22e5395a03ec3f6ac6164df1f3482da374 (patch) | |
tree | becde8a860504da20f45045815fc9252cce7d252 /src/testbed/testbed_api_testbed.c | |
parent | 5c6866ff424ec0292ea1b5cc637c5a0d87021c82 (diff) | |
download | gnunet-26bf6d22e5395a03ec3f6ac6164df1f3482da374.tar.gz gnunet-26bf6d22e5395a03ec3f6ac6164df1f3482da374.zip |
small world topology
Diffstat (limited to 'src/testbed/testbed_api_testbed.c')
-rw-r--r-- | src/testbed/testbed_api_testbed.c | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/src/testbed/testbed_api_testbed.c b/src/testbed/testbed_api_testbed.c index a7e15dc6b..20633378d 100644 --- a/src/testbed/testbed_api_testbed.c +++ b/src/testbed/testbed_api_testbed.c | |||
@@ -441,17 +441,34 @@ call_cc: | |||
441 | if (GNUNET_TESTBED_TOPOLOGY_NONE != rc->topology) | 441 | if (GNUNET_TESTBED_TOPOLOGY_NONE != rc->topology) |
442 | { | 442 | { |
443 | if ( (GNUNET_TESTBED_TOPOLOGY_ERDOS_RENYI == rc->topology) | 443 | if ( (GNUNET_TESTBED_TOPOLOGY_ERDOS_RENYI == rc->topology) |
444 | || (GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD_RING == rc->topology)) | 444 | || (GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD_RING == rc->topology) |
445 | || (GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD == rc->topology)) | ||
446 | { | ||
447 | unsigned int rand_links; | ||
448 | |||
449 | switch (rc->topology) | ||
450 | { | ||
451 | case GNUNET_TESTBED_TOPOLOGY_ERDOS_RENYI: | ||
452 | rand_links = rc->num_oc; | ||
453 | break; | ||
454 | case GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD_RING: | ||
455 | rand_links = rc->num_oc - rc->num_peers; | ||
456 | break; | ||
457 | case GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD: | ||
458 | rand_links = GNUNET_TESTBED_2dtorus_calc_links (rc->num_peers, NULL, NULL); | ||
459 | break; | ||
460 | default: | ||
461 | GNUNET_break (0); | ||
462 | rand_links = 0; | ||
463 | } | ||
445 | rc->topology_operation = | 464 | rc->topology_operation = |
446 | GNUNET_TESTBED_overlay_configure_topology (NULL, | 465 | GNUNET_TESTBED_overlay_configure_topology (NULL, |
447 | rc->num_peers, | 466 | rc->num_peers, |
448 | rc->peers, | 467 | rc->peers, |
449 | rc->topology, | 468 | rc->topology, |
450 | (GNUNET_TESTBED_TOPOLOGY_ERDOS_RENYI | 469 | rand_links, |
451 | == rc->topology) ? | ||
452 | rc->num_oc : | ||
453 | (rc->num_oc - rc->num_peers), | ||
454 | GNUNET_TESTBED_TOPOLOGY_OPTION_END); | 470 | GNUNET_TESTBED_TOPOLOGY_OPTION_END); |
471 | } | ||
455 | else | 472 | else |
456 | rc->topology_operation = | 473 | rc->topology_operation = |
457 | GNUNET_TESTBED_overlay_configure_topology (NULL, | 474 | GNUNET_TESTBED_overlay_configure_topology (NULL, |
@@ -655,6 +672,12 @@ GNUNET_TESTBED_run (const char *host_filename, | |||
655 | else if (0 == strcasecmp (topology, "SMALL_WORLD_RING")) | 672 | else if (0 == strcasecmp (topology, "SMALL_WORLD_RING")) |
656 | { | 673 | { |
657 | rc->topology = GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD_RING; | 674 | rc->topology = GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD_RING; |
675 | rc->num_oc = num_peers; | ||
676 | } | ||
677 | else if (0 == strcasecmp (topology, "SMALL_WORLD")) | ||
678 | { | ||
679 | rc->topology = GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD; | ||
680 | rc->num_oc = GNUNET_TESTBED_2dtorus_calc_links (num_peers, NULL, NULL); | ||
658 | } | 681 | } |
659 | else if (0 == strcasecmp (topology, "CLIQUE")) | 682 | else if (0 == strcasecmp (topology, "CLIQUE")) |
660 | { | 683 | { |
@@ -682,7 +705,8 @@ GNUNET_TESTBED_run (const char *host_filename, | |||
682 | GNUNET_free (topology); | 705 | GNUNET_free (topology); |
683 | } | 706 | } |
684 | if ( (GNUNET_TESTBED_TOPOLOGY_ERDOS_RENYI == rc->topology) | 707 | if ( (GNUNET_TESTBED_TOPOLOGY_ERDOS_RENYI == rc->topology) |
685 | || (GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD_RING == rc->topology)) | 708 | || (GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD_RING == rc->topology) |
709 | || (GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD == rc->topology)) | ||
686 | { | 710 | { |
687 | if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_number (cfg, "testbed", | 711 | if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_number (cfg, "testbed", |
688 | "OVERLAY_RANDOM_LINKS", | 712 | "OVERLAY_RANDOM_LINKS", |
@@ -700,9 +724,7 @@ GNUNET_TESTBED_run (const char *host_filename, | |||
700 | GNUNET_free (rc); | 724 | GNUNET_free (rc); |
701 | return; | 725 | return; |
702 | } | 726 | } |
703 | rc->num_oc = (unsigned int) random_links; | 727 | rc->num_oc += (unsigned int) random_links; |
704 | if (GNUNET_TESTBED_TOPOLOGY_SMALL_WORLD_RING == rc->topology) | ||
705 | rc->num_oc += num_peers; | ||
706 | } | 728 | } |
707 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, | 729 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, |
708 | &shutdown_run_task, rc); | 730 | &shutdown_run_task, rc); |