From 88c11d3a2219762a919e49872d6d24108b06b987 Mon Sep 17 00:00:00 2001 From: "Nathan S. Evans" Date: Thu, 5 Aug 2010 12:11:41 +0000 Subject: [PATCH] topology stability testcase --- src/testing/Makefile.am | 10 ++++ .../test_testing_data_topology_none.conf | 2 +- .../test_testing_data_topology_stability.conf | 55 +++++++++++++++++++ src/testing/test_testing_topology.c | 47 ++++++++++++---- 4 files changed, 103 insertions(+), 11 deletions(-) create mode 100644 src/testing/test_testing_data_topology_stability.conf diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am index 77d3e8cbe..fa56e1726 100644 --- a/src/testing/Makefile.am +++ b/src/testing/Makefile.am @@ -19,11 +19,14 @@ libgnunettesting_la_LIBADD = $(XLIB) \ $(top_builddir)/src/transport/libgnunettransport.la \ -lm \ $(top_builddir)/src/util/libgnunetutil.la + +#noinst_PROGRAMS = ${check_PROGRAMS} check_PROGRAMS = \ test_testing \ test_testing_connect \ test_testing_group \ + test_testing_topology_stability \ test_testing_topology_clique \ test_testing_topology_clique_random \ test_testing_topology_clique_minimum \ @@ -47,6 +50,7 @@ TESTS = \ test_testing_connect \ test_testing_group \ test_testing_topology_clique +# test_testing_topology_stability \ # test_testing_topology_clique_random \ # test_testing_topology_clique_minimum \ # test_testing_topology_clique_dfs \ @@ -87,6 +91,12 @@ test_testing_topology_clique_LDADD = \ $(top_builddir)/src/testing/libgnunettesting.la \ $(top_builddir)/src/util/libgnunetutil.la +test_testing_topology_stability_SOURCES = \ + test_testing_topology.c +test_testing_topology_stability_LDADD = \ + $(top_builddir)/src/testing/libgnunettesting.la \ + $(top_builddir)/src/util/libgnunetutil.la + test_testing_topology_blacklist_SOURCES = \ test_testing_topology_blacklist.c test_testing_topology_blacklist_LDADD = \ diff --git a/src/testing/test_testing_data_topology_none.conf b/src/testing/test_testing_data_topology_none.conf index d63b99ba4..6a2d023dc 100644 --- a/src/testing/test_testing_data_topology_none.conf +++ b/src/testing/test_testing_data_topology_none.conf @@ -40,7 +40,7 @@ PORT = 0 PORT = 0 [testing] -NUM_PEERS = 50 +NUM_PEERS = 1000 WEAKRANDOM = YES TOPOLOGY = NONE F2F = NO diff --git a/src/testing/test_testing_data_topology_stability.conf b/src/testing/test_testing_data_topology_stability.conf new file mode 100644 index 000000000..47e0a18df --- /dev/null +++ b/src/testing/test_testing_data_topology_stability.conf @@ -0,0 +1,55 @@ +[PATHS] +SERVICEHOME = /tmp/test-gnunet-testing/ +DEFAULTCONFIG = test_testing_data_topology_clique.conf + +[resolver] +PORT = 2564 + +[transport] +PORT = 2565 +PLUGINS = tcp +#PREFIX = xterm -e xterm -T transport -e gdb --args +#BINARY = /home/mrwiggles/documents/research/gnunet/gnunet-ng/src/transport/.libs/gnunet-service-transport +#PREFIX = valgrind --tool=memcheck --log-file=logs%p +#PREFIX = valgrind --tool=callgrind --log-file=callgrind.%p +#DEBUG = YES + +[arm] +PORT = 2566 +DEFAULTSERVICES = + +[statistics] +PORT = 2567 + +[transport-tcp] +PORT = 2568 + +[transport-udp] +PORT = 2568 + +[peerinfo] +PORT = 2569 +#DEBUG = YES +#PREFIX = xterm -e xterm -T peerinfo -e gdb --args +#BINARY = /home/mrwiggles/documents/research/gnunet/gnunet-ng/src/peerinfo/.libs/gnunet-service-peerinfo +#PREFIX = valgrind --tool=memcheck --log-file=peerinfo%p + +[core] +PORT = 2570 +#PREFIX = xterm -e xterm -T CORE -e gdb --args +#PREFIX = valgrind --tool=memcheck --log-file=logs%p +#DEBUG = YES + +[testing] +SETTLE_TIME = 600 +NUM_PEERS = 10 +WEAKRANDOM = YES +#CONNECT_TOPOLOGY = CLIQUE +TOPOLOGY = CLIQUE +F2F = YES +#DEBUG = YES + +[dht] +AUTOSTART = NO + + diff --git a/src/testing/test_testing_topology.c b/src/testing/test_testing_topology.c index a2bb350f0..f357862c5 100644 --- a/src/testing/test_testing_topology.c +++ b/src/testing/test_testing_topology.c @@ -33,7 +33,7 @@ /** * How long until we fail the whole testcase? */ -#define TEST_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 600) +#define TEST_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 240) /** * How long until we give up on starting the peers? @@ -52,6 +52,8 @@ static int ok; static unsigned long long num_peers; +static unsigned int topology_connections; + static unsigned int total_connections; static unsigned int failed_connections; @@ -76,6 +78,8 @@ GNUNET_SCHEDULER_TaskIdentifier die_task; static char *dotOutFileName; +static struct GNUNET_TIME_Relative settle_time; + static FILE *dotOutFile; static char *topology_string; @@ -184,6 +188,7 @@ static void gather_log_data () } #endif + static void finish_testing () { @@ -219,8 +224,8 @@ finish_testing () GNUNET_free(free_pos); } #if VERBOSE - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Transmit_ready's scheduled %d, failed %d, transmit_ready's called %d\n", transmit_ready_scheduled, transmit_ready_failed, transmit_ready_called); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Transmit_ready's scheduled %d, failed %d, transmit_ready's called %d\n", transmit_ready_scheduled, transmit_ready_failed, transmit_ready_called); #endif #if VERBOSE @@ -276,23 +281,22 @@ void topology_cb (void *cls, outfile = cls; if (first != NULL) { - if (outfile == NULL) - fprintf(stderr, "Peer %s connected to %s\n", GNUNET_i2s(first), GNUNET_h2s(&second->hashPubKey)); - else + if (outfile != NULL) { fprintf(outfile, "\t\"%s\" -- ", GNUNET_i2s(first)); fprintf(outfile, "\"%s\";\n", GNUNET_i2s(second)); } + topology_connections++; } else { - fprintf(stderr, "Finished iterating over topology!\n"); + fprintf(stderr, "Finished iterating over topology, %d total connections!\n", topology_connections); if (outfile != NULL) { fprintf(outfile, "}\n"); fclose(outfile); + GNUNET_SCHEDULER_add_now (sched, &finish_testing, NULL); } - GNUNET_SCHEDULER_add_now (sched, &finish_testing, NULL); } } @@ -348,6 +352,7 @@ process_mtype (void *cls, { fprintf(dotOutFileFinished, "strict graph G {\n"); } + topology_connections = 0; GNUNET_TESTING_get_topology (pg, &topology_cb, dotOutFileFinished); //GNUNET_SCHEDULER_add_now (sched, &finish_testing, NULL); } @@ -386,6 +391,13 @@ end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext * tc) GNUNET_free(free_pos); } +#if VERBOSE + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Transmit_ready's scheduled %d, failed %d, transmit_ready's called %d\n", transmit_ready_scheduled, transmit_ready_failed, transmit_ready_called); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Total messages received %d, expected %d.\n", total_messages_received, expected_messages); +#endif + if (pg != NULL) { GNUNET_TESTING_daemons_stop (pg, TIMEOUT, &shutdown_callback, NULL); @@ -500,6 +512,11 @@ send_test_messages (void *cls, const struct GNUNET_SCHEDULER_TaskContext * tc) { struct TestMessageContext *pos = cls; + if ((pos == test_messages) && (settle_time.value > 0)) + { + topology_connections = 0; + GNUNET_TESTING_get_topology (pg, &topology_cb, NULL); + } if ((tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN) || (cls == NULL)) return; @@ -507,7 +524,7 @@ send_test_messages (void *cls, const struct GNUNET_SCHEDULER_TaskContext * tc) { die_task = GNUNET_SCHEDULER_add_delayed (sched, TEST_TIMEOUT, - &end_badly, "from create topology (timeout)"); + &end_badly, "from send test messages (timeout)"); } if (total_server_connections >= MAX_OUTSTANDING_CONNECTIONS) @@ -626,7 +643,11 @@ topology_callback (void *cls, &send_test_messages, test_messages); gather_log_data(); #else - GNUNET_SCHEDULER_add_now (sched, &send_test_messages, test_messages); + if (settle_time.value > 0) + { + GNUNET_TESTING_get_topology (pg, &topology_cb, NULL); + } + GNUNET_SCHEDULER_add_delayed (sched, settle_time, &send_test_messages, test_messages); #endif #if VERBOSE fprintf(stdout, "Test message progress: ["); @@ -852,6 +873,7 @@ run (void *cls, char * blacklist_topology_str; char * connect_topology_option_str; char * connect_topology_option_modifier_string; + unsigned long long temp_settle; sched = s; ok = 1; @@ -927,6 +949,11 @@ run (void *cls, GNUNET_free_non_null(topology_str); GNUNET_free_non_null(blacklist_topology_str); + if (GNUNET_OK == + GNUNET_CONFIGURATION_get_value_number (cfg, "testing", "settle_time", + &temp_settle)) + settle_time = GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, temp_settle); + if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_number (cfg, "testing", "num_peers", &num_peers)) -- 2.25.1