From: Matthias Wachs Date: Thu, 11 Aug 2011 18:28:50 +0000 (+0000) Subject: transport testing testcase X-Git-Tag: initial-import-from-subversion-38251~17396 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c34cc2e767ce2e48787148694c810602f19f7d5e;p=oweals%2Fgnunet.git transport testing testcase --- diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am index 5d0e40439..5fe5aa32f 100644 --- a/src/transport/Makefile.am +++ b/src/transport/Makefile.am @@ -264,6 +264,7 @@ libgnunet_plugin_transport_https_la_CPPFLAGS = \ check_PROGRAMS = \ + test_transport_testing \ test_transport_api_disconnect \ $(TEST_TRANSPORT_ATS) \ $(ATS_TRANSPORT_BENCHMARKS) \ @@ -297,6 +298,7 @@ check_PROGRAMS = \ if ENABLE_TEST_RUN TESTS = \ + test_transport_testing \ test_transport_api_disconnect \ $(TEST_TRANSPORT_ATS) \ $(ATS_TRANSPORT_BENCHMARKS) \ @@ -329,6 +331,11 @@ TESTS = \ $(WLAN_UREL_TEST) endif +test_transport_testing_SOURCES = \ + test_transport_testing.c +test_transport_testing_LDADD = \ + $(top_builddir)/src/transport/libgnunettransport.la \ + $(top_builddir)/src/transport/libgnunettransporttesting.la test_transport_api_disconnect_SOURCES = \ test_transport_api_disconnect.c diff --git a/src/transport/test_transport_testing.c b/src/transport/test_transport_testing.c index b2ac507d2..1a176c129 100644 --- a/src/transport/test_transport_testing.c +++ b/src/transport/test_transport_testing.c @@ -48,123 +48,7 @@ */ #define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30) -/** - * How long until we give up on transmitting the message? - */ -#define TIMEOUT_TRANSMIT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60) - -#define MTYPE 12345 - -static struct PeerContext p1; - -static struct PeerContext p2; - -static int ok; - -static int is_tcp; - -static GNUNET_SCHEDULER_TaskIdentifier die_task; - -static GNUNET_SCHEDULER_TaskIdentifier tct; - - -#if VERBOSE -#define OKPP do { ok++; fprintf (stderr, "Now at stage %u at %s:%u\n", ok, __FILE__, __LINE__); } while (0) -#else -#define OKPP do { ok++; } while (0) -#endif - - - -static void -stop_arm (struct PeerContext *p) -{ -#if START_ARM - if (NULL != p->arm_proc) - { - if (0 != GNUNET_OS_process_kill (p->arm_proc, SIGTERM)) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); - GNUNET_OS_process_wait (p->arm_proc); - GNUNET_OS_process_close (p->arm_proc); - p->arm_proc = NULL; - } -#endif - GNUNET_CONFIGURATION_destroy (p->cfg); -} - - - - -static void -exchange_hello_last (void *cls, - const struct GNUNET_MessageHeader *message) -{ - struct PeerContext *me = cls; - - GNUNET_assert (message != NULL); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Exchanging HELLO of size %d with peer (%s)!\n", - (int) GNUNET_HELLO_size((const struct GNUNET_HELLO_Message *)message), - GNUNET_i2s (&me->id)); - GNUNET_assert (GNUNET_OK == - GNUNET_HELLO_get_id ((const struct GNUNET_HELLO_Message *) - message, &me->id)); - GNUNET_TRANSPORT_offer_hello (p1.th, message, NULL, NULL); -} - - -static void -exchange_hello (void *cls, - const struct GNUNET_MessageHeader *message) -{ - struct PeerContext *me = cls; - - GNUNET_assert (message != NULL); - GNUNET_assert (GNUNET_OK == - GNUNET_HELLO_get_id ((const struct GNUNET_HELLO_Message *) - message, &me->id)); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Exchanging HELLO of size %d from peer %s!\n", - (int) GNUNET_HELLO_size((const struct GNUNET_HELLO_Message *)message), - GNUNET_i2s (&me->id)); - GNUNET_TRANSPORT_offer_hello (p2.th, message, NULL, NULL); -} - - -static void -end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) -{ - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnecting from transports!\n"); - GNUNET_break (0); - die_task = GNUNET_SCHEDULER_NO_TASK; - GNUNET_TRANSPORT_get_hello_cancel (p2.th, &exchange_hello_last, &p2); - GNUNET_TRANSPORT_get_hello_cancel (p1.th, &exchange_hello, &p1); - GNUNET_TRANSPORT_disconnect (p1.th); - GNUNET_TRANSPORT_disconnect (p2.th); - if (GNUNET_SCHEDULER_NO_TASK != tct) - { - GNUNET_SCHEDULER_cancel (tct); - tct = GNUNET_SCHEDULER_NO_TASK; - } - ok = 1; -} - -static void -end_normally (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) -{ - ok = 60; - die_task = GNUNET_SCHEDULER_NO_TASK; - GNUNET_TRANSPORT_get_hello_cancel (p2.th, &exchange_hello_last, &p2); - GNUNET_TRANSPORT_get_hello_cancel (p1.th, &exchange_hello, &p1); - GNUNET_TRANSPORT_disconnect (p1.th); - GNUNET_TRANSPORT_disconnect (p2.th); - if (GNUNET_SCHEDULER_NO_TASK != tct) - { - GNUNET_SCHEDULER_cancel (tct); - tct = GNUNET_SCHEDULER_NO_TASK; - } - ok = 0; -} +static struct PeerContext * p; static void notify_connect (void *cls, @@ -172,88 +56,25 @@ notify_connect (void *cls, const struct GNUNET_TRANSPORT_ATS_Information *ats, uint32_t ats_count) { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Peer `%4s' connected to us (%p)!\n", - GNUNET_i2s (peer), - cls); - if (cls == &p1) - { - GNUNET_assert (ok >= 2); - OKPP; - OKPP; - if (GNUNET_SCHEDULER_NO_TASK != die_task) - GNUNET_SCHEDULER_cancel (die_task); - if (GNUNET_SCHEDULER_NO_TASK != tct) - GNUNET_SCHEDULER_cancel (tct); - tct = GNUNET_SCHEDULER_NO_TASK; - die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT_TRANSMIT, - &end_normally, NULL); - } + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer `%s' connected \n", + GNUNET_i2s (peer)); } - static void -notify_disconnect (void *cls, - const struct GNUNET_PeerIdentity *peer) +notify_disconnect (void *cls, const struct GNUNET_PeerIdentity *peer) { - if ( (ok != 60) && - (GNUNET_SCHEDULER_NO_TASK != die_task) ) - { - GNUNET_SCHEDULER_cancel (die_task); - die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL); - } - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Peer `%4s' disconnected (%p)!\n", - GNUNET_i2s (peer), cls); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer `%s' disconnected \n", + GNUNET_i2s (peer)); } - static void -setup_peer (struct PeerContext *p, - const char *cfgname) -{ - p->cfg = GNUNET_CONFIGURATION_create (); - - GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_load (p->cfg, cfgname)); - if (GNUNET_CONFIGURATION_have_value (p->cfg,"PATHS", "SERVICEHOME")) - { - GNUNET_assert (GNUNET_OK == - GNUNET_CONFIGURATION_get_value_string (p->cfg, - "PATHS", "SERVICEHOME", - &p->servicehome)); - GNUNET_DISK_directory_remove (p->servicehome); - } - -#if START_ARM - p->arm_proc = GNUNET_OS_start_process (NULL, NULL, "gnunet-service-arm", - "gnunet-service-arm", -#if VERBOSE_ARM - "-L", "DEBUG", -#endif - "-c", cfgname, NULL); -#endif - p->th = GNUNET_TRANSPORT_connect (p->cfg, - NULL, p, - NULL, - ¬ify_connect, ¬ify_disconnect); - GNUNET_assert (p->th != NULL); -} - - -static void -try_connect (void *cls, - const struct GNUNET_SCHEDULER_TaskContext *tc) +notify_receive (void *cls, + const struct GNUNET_PeerIdentity *peer, + const struct GNUNET_MessageHeader *message, + const struct GNUNET_TRANSPORT_ATS_Information *ats, + uint32_t ats_count) { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Asking peers to connect...\n"); - /* FIXME: 'pX.id' may still be all-zeros here... */ - GNUNET_TRANSPORT_try_connect (p2.th, - &p1.id); - GNUNET_TRANSPORT_try_connect (p1.th, - &p2.id); - tct = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, - &try_connect, - NULL); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Receiving\n"); } @@ -262,68 +83,40 @@ run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg) { - GNUNET_assert (ok == 1); - OKPP; - die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, - &end_badly, NULL); - if (is_tcp) - { - setup_peer (&p1, "test_transport_api_multiaddress_tcp_peer1.conf"); - setup_peer (&p2, "test_transport_api_multiaddress_tcp_peer2.conf"); - } - GNUNET_assert(p1.th != NULL); - GNUNET_assert(p2.th != NULL); - - GNUNET_TRANSPORT_get_hello (p1.th, &exchange_hello, &p1); - GNUNET_TRANSPORT_get_hello (p2.th, &exchange_hello_last, &p2); - tct = GNUNET_SCHEDULER_add_now (&try_connect, NULL); -} + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting peer\n"); + p = GNUNET_TRANSPORT_TESTING_start_peer("test_quota_compliance_tcp_peer1.conf"); + + if (p != NULL) + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer was successfully started\n"); + else + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer was not started successfully\n"); + GNUNET_assert (p != NULL); + + + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tConnecting to transport service\n"); + GNUNET_assert (p->th == NULL); + p->th = GNUNET_TRANSPORT_connect(p->cfg, NULL, + NULL, + ¬ify_receive, + ¬ify_connect, + ¬ify_disconnect); + GNUNET_assert (p->th != NULL); -static int -check () -{ - static char *const argv[] = { "test-transport-api", - "-c", - "test_transport_api_data.conf", -#if VERBOSE - "-L", "DEBUG", -#endif - NULL - }; - static struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tDisconnecting to transport service\n"); + GNUNET_TRANSPORT_disconnect(p->th); -#if WRITECONFIG - setTransportOptions("test_transport_api_data.conf"); -#endif - ok = 1; - GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, - argv, "test-transport-api", "nohelp", - options, &run, &ok); - stop_arm (&p1); - stop_arm (&p2); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stopping peer\n"); + GNUNET_TRANSPORT_TESTING_stop_peer(p); - if (p1.servicehome != NULL) - { - GNUNET_DISK_directory_remove (p1.servicehome); - GNUNET_free(p1.servicehome); - } - if (p2.servicehome != NULL) - { - GNUNET_DISK_directory_remove (p2.servicehome); - GNUNET_free(p2.servicehome); - } - return ok; + GNUNET_free (p); } - int main (int argc, char *argv[]) { - int ret; + int ret = 0; - GNUNET_log_setup ("test-transport-api", + GNUNET_log_setup ("test_transport_testing", #if VERBOSE "DEBUG", #else @@ -331,12 +124,22 @@ main (int argc, char *argv[]) #endif NULL); - if (strstr(argv[0], "tcp") != NULL) - { - is_tcp = GNUNET_YES; - } + char *const argv_1[] = { "test_transport_testing", + "-c", + "test_transport_api_data.conf", +#if VERBOSE + "-L", "DEBUG", +#endif + NULL + }; + + struct GNUNET_GETOPT_CommandLineOption options[] = { + GNUNET_GETOPT_OPTION_END + }; - ret = check (); + GNUNET_PROGRAM_run ((sizeof (argv_1) / sizeof (char *)) - 1, + argv_1, "test_transport_testing", "nohelp", + options, &run, &ret); return ret; }