aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlo von lynX <lynX@time.to.get.psyced.org>2016-08-06 13:59:03 +0000
committerCarlo von lynX <lynX@time.to.get.psyced.org>2016-08-06 13:59:03 +0000
commitaa317bd7953190ac0b0ceef02ba3f36047982a6c (patch)
tree0be172cac20979e4927a4d181e055ffcc970a207
parent2506c0b954088dc5f9bf267678de89fe0d4ac53e (diff)
testbed: STAR topology (SCNR)
-rw-r--r--src/include/gnunet_testbed_service.h5
-rw-r--r--src/testbed/Makefile.am9
-rw-r--r--src/testbed/generate-underlay-topology.c1
-rw-r--r--src/testbed/test_testbed_api_testbed_run_topologystar.conf4
-rw-r--r--src/testbed/testbed_api_topology.c53
5 files changed, 72 insertions, 0 deletions
diff --git a/src/include/gnunet_testbed_service.h b/src/include/gnunet_testbed_service.h
index 781dc0441a..bc4be0140e 100644
--- a/src/include/gnunet_testbed_service.h
+++ b/src/include/gnunet_testbed_service.h
@@ -981,6 +981,11 @@ enum GNUNET_TESTBED_TopologyOption
GNUNET_TESTBED_TOPOLOGY_RING,
/**
+ * Star topology. No options.
+ */
+ GNUNET_TESTBED_TOPOLOGY_STAR,
+
+ /**
* 2-d torus. No options.
*/
GNUNET_TESTBED_TOPOLOGY_2D_TORUS,
diff --git a/src/testbed/Makefile.am b/src/testbed/Makefile.am
index 9c1bfcce68..16fe27fc0c 100644
--- a/src/testbed/Makefile.am
+++ b/src/testbed/Makefile.am
@@ -142,6 +142,7 @@ check_PROGRAMS = \
test_testbed_api_topology_clique \
test_testbed_api_testbed_run_topologyrandom \
test_testbed_api_testbed_run_topologyline \
+ test_testbed_api_testbed_run_topologystar \
test_testbed_api_testbed_run_topologyclique \
test_testbed_api_testbed_run_topologyring \
test_testbed_api_testbed_run_topologysmallworldring \
@@ -176,6 +177,7 @@ if ENABLE_TEST_RUN
test_testbed_api_topology_clique \
test_testbed_api_testbed_run_topologyrandom \
test_testbed_api_testbed_run_topologyline \
+ test_testbed_api_testbed_run_topologystar \
test_testbed_api_testbed_run_topologyclique \
test_testbed_api_testbed_run_topologyring \
test_testbed_api_testbed_run_topology2dtorus \
@@ -282,6 +284,12 @@ test_testbed_api_testbed_run_topologyline_LDADD = \
$(top_builddir)/src/util/libgnunetutil.la \
libgnunettestbed.la
+test_testbed_api_testbed_run_topologystar_SOURCES = \
+ test_testbed_api_testbed_run.c
+test_testbed_api_testbed_run_topologystar_LDADD = \
+ $(top_builddir)/src/util/libgnunetutil.la \
+ libgnunettestbed.la
+
test_testbed_api_testbed_run_topologyclique_SOURCES = \
test_testbed_api_testbed_run.c
test_testbed_api_testbed_run_topologyclique_LDADD = \
@@ -374,6 +382,7 @@ EXTRA_DIST = \
test_testbed_api_test_timeout.conf \
test_testbed_api_template.conf \
test_testbed_api_testbed_run_topologyring.conf \
+ test_testbed_api_testbed_run_topologystar.conf \
test_testbed_api_testbed_run_topologyclique.conf \
test_testbed_api_testbed_run_topologyline.conf \
test_testbed_api_testbed_run_topologyrandom.conf \
diff --git a/src/testbed/generate-underlay-topology.c b/src/testbed/generate-underlay-topology.c
index 22fe98e337..36580a2a38 100644
--- a/src/testbed/generate-underlay-topology.c
+++ b/src/testbed/generate-underlay-topology.c
@@ -298,6 +298,7 @@ run (void *cls, char *const *args, const char *cfgfile,
{
case GNUNET_TESTBED_TOPOLOGY_LINE:
case GNUNET_TESTBED_TOPOLOGY_RING:
+ case GNUNET_TESTBED_TOPOLOGY_STAR:
case GNUNET_TESTBED_TOPOLOGY_CLIQUE:
case GNUNET_TESTBED_TOPOLOGY_2D_TORUS:
GNUNET_TESTBED_underlay_construct_ (num_peers, link_processor, NULL,
diff --git a/src/testbed/test_testbed_api_testbed_run_topologystar.conf b/src/testbed/test_testbed_api_testbed_run_topologystar.conf
new file mode 100644
index 0000000000..13f8d17840
--- /dev/null
+++ b/src/testbed/test_testbed_api_testbed_run_topologystar.conf
@@ -0,0 +1,4 @@
+@INLINE@ test_testbed_api_template.conf
+
+[testbed]
+OVERLAY_TOPOLOGY = STAR
diff --git a/src/testbed/testbed_api_topology.c b/src/testbed/testbed_api_topology.c
index 1f7d11b273..b7722b9c76 100644
--- a/src/testbed/testbed_api_topology.c
+++ b/src/testbed/testbed_api_topology.c
@@ -286,6 +286,11 @@ const char *topology_strings[] = {
"RING",
/**
+ * Star topology. No options.
+ */
+ "STAR",
+
+ /**
* 2-d torus. No options.
*/
"2D_TORUS",
@@ -316,6 +321,11 @@ const char *topology_strings[] = {
"LINE",
/**
+ * Star topology. No options.
+ */
+ "STAR",
+
+ /**
* Read a topology from a given file. Followed by the name of the file (const char *).
*/
"FROM_FILE",
@@ -540,6 +550,43 @@ gen_topo_line (struct TopologyContext *tc)
/**
+ * Generates star topology
+ *
+ * @param tc the topology context
+ */
+static void
+gen_topo_star (struct TopologyContext *tc)
+{
+ unsigned int cnt;
+
+ tc->link_array_size = tc->num_peers - 1;
+ switch (tc->type)
+ {
+ case TOPOLOGYCONTEXT_TYPE_OVERLAY:
+ {
+ struct TopologyContextOverlay *overlay;
+
+ overlay = &tc->u.overlay;
+ overlay->link_array =
+ GNUNET_malloc (sizeof (struct OverlayLink) * tc->link_array_size);
+ }
+ break;
+ case TOPOLOGYCONTEXT_TYPE_UNDERLAY:
+ {
+ struct TopologyContextUnderlay *underlay;
+
+ underlay = &tc->u.underlay;
+ underlay->link_array =
+ GNUNET_malloc (sizeof (struct UnderlayLink) * tc->link_array_size);
+ }
+ break;
+ }
+ for (cnt = tc->link_array_size; cnt; cnt--)
+ make_link (0, 0, cnt, tc);
+}
+
+
+/**
* Generates ring topology
*
* @param tc the topology context
@@ -1278,6 +1325,9 @@ GNUNET_TESTBED_overlay_configure_topology_va (void *op_cls,
case GNUNET_TESTBED_TOPOLOGY_LINE:
gen_topo_line (tc);
break;
+ case GNUNET_TESTBED_TOPOLOGY_STAR:
+ gen_topo_star (tc);
+ break;
case GNUNET_TESTBED_TOPOLOGY_RING:
gen_topo_ring (tc);
break;
@@ -1492,6 +1542,9 @@ GNUNET_TESTBED_underlay_construct_ (int num_peers,
case GNUNET_TESTBED_TOPOLOGY_LINE:
gen_topo_line (&tc);
break;
+ case GNUNET_TESTBED_TOPOLOGY_STAR:
+ gen_topo_star (&tc);
+ break;
case GNUNET_TESTBED_TOPOLOGY_RING:
gen_topo_ring (&tc);
break;