X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_client.c;h=2b44c1690791f03e714637ab8d6ecaa811060e11;hb=9edc29a3c924554eecc00aa856bf3b0eb95ead52;hp=3545b9fa98f8d3fc7bc15c23582f02a9246df5af;hpb=36ccc5b502d85f9fcf212e30fa9f1a0787de73ab;p=oweals%2Fgnunet.git diff --git a/src/util/test_client.c b/src/util/test_client.c index 3545b9fa9..2b44c1690 100644 --- a/src/util/test_client.c +++ b/src/util/test_client.c @@ -4,7 +4,7 @@ GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 2, or (at your + by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but @@ -22,14 +22,8 @@ * @brief tests for client.c */ #include "platform.h" -#include "gnunet_common.h" -#include "gnunet_client_lib.h" -#include "gnunet_configuration_lib.h" -#include "gnunet_scheduler_lib.h" -#include "gnunet_server_lib.h" -#include "gnunet_time_lib.h" +#include "gnunet_util_lib.h" -#define VERBOSE GNUNET_NO #define PORT 14325 @@ -61,6 +55,7 @@ copy_msg (void *cls, size_t size, void *buf) GNUNET_SERVER_receive_done (ctx->client, GNUNET_OK); GNUNET_free (cpy); GNUNET_free (ctx); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Message bounced back to client\n"); return sizeof (struct GNUNET_MessageHeader); } @@ -69,16 +64,16 @@ copy_msg (void *cls, size_t size, void *buf) * Callback that just bounces the message back to the sender. */ static void -echo_cb (void *cls, - struct GNUNET_SERVER_Client *client, +echo_cb (void *cls, struct GNUNET_SERVER_Client *client, const struct GNUNET_MessageHeader *message) { struct CopyContext *cc; struct GNUNET_MessageHeader *cpy; - GNUNET_assert (sizeof (struct GNUNET_MessageHeader) == - ntohs (message->size)); - cc = GNUNET_malloc (sizeof (struct CopyContext)); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Receiving message from client, bouncing back\n"); + GNUNET_assert (sizeof (struct GNUNET_MessageHeader) == ntohs (message->size)); + cc = GNUNET_new (struct CopyContext); cc->client = client; cpy = GNUNET_malloc (ntohs (message->size)); memcpy (cpy, message, ntohs (message->size)); @@ -104,9 +99,10 @@ recv_bounce (void *cls, const struct GNUNET_MessageHeader *got) struct GNUNET_MessageHeader msg; GNUNET_assert (got != NULL); /* timeout */ + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Receiving bounce, checking content\n"); msg.type = htons (MY_TYPE); - msg.size = htons (sizeof (msg)); - GNUNET_assert (0 == memcmp (got, &msg, sizeof (msg))); + msg.size = htons (sizeof (struct GNUNET_MessageHeader)); + GNUNET_assert (0 == memcmp (got, &msg, sizeof (struct GNUNET_MessageHeader))); GNUNET_CLIENT_disconnect (client); client = NULL; GNUNET_SERVER_destroy (server); @@ -119,9 +115,11 @@ static size_t make_msg (void *cls, size_t size, void *buf) { struct GNUNET_MessageHeader *msg = buf; + GNUNET_assert (size >= sizeof (struct GNUNET_MessageHeader)); msg->type = htons (MY_TYPE); - msg->size = htons (sizeof (msg)); + msg->size = htons (sizeof (struct GNUNET_MessageHeader)); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Creating message for transmission\n"); return sizeof (struct GNUNET_MessageHeader); } @@ -130,65 +128,63 @@ static void task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct sockaddr_in sa; + struct sockaddr *sap[2]; + socklen_t slens[2]; + + /* test that ill-configured client fails instantly */ + GNUNET_assert (NULL == GNUNET_CLIENT_connect ("invalid-service", cfg)); + /* test IPC between client and server */ + sap[0] = (struct sockaddr *) &sa; + slens[0] = sizeof (sa); + sap[1] = NULL; + slens[1] = 0; memset (&sa, 0, sizeof (sa)); +#if HAVE_SOCKADDR_IN_SIN_LEN + sa.sin_len = sizeof (sa); +#endif sa.sin_family = AF_INET; sa.sin_port = htons (PORT); - server = GNUNET_SERVER_create (tc->sched, - NULL, - NULL, - (const struct sockaddr *) &sa, - sizeof (sa), - 1024, - GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_MILLISECONDS, 250), - GNUNET_NO); + server = + GNUNET_SERVER_create (NULL, NULL, sap, slens, + GNUNET_TIME_relative_multiply + (GNUNET_TIME_UNIT_MILLISECONDS, 10000), GNUNET_NO); GNUNET_assert (server != NULL); handlers[0].callback_cls = cls; handlers[1].callback_cls = cls; GNUNET_SERVER_add_handlers (server, handlers); - client = GNUNET_CLIENT_connect (tc->sched, MYNAME, cfg); + client = GNUNET_CLIENT_connect (MYNAME, cfg); GNUNET_assert (client != NULL); GNUNET_assert (NULL != GNUNET_CLIENT_notify_transmit_ready (client, sizeof (struct GNUNET_MessageHeader), GNUNET_TIME_UNIT_SECONDS, - &make_msg, NULL)); + GNUNET_NO, &make_msg, + NULL)); GNUNET_CLIENT_receive (client, &recv_bounce, cls, GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_MILLISECONDS, 250)); + (GNUNET_TIME_UNIT_MILLISECONDS, 10000)); } -/** - * Main method, starts scheduler with task1, - * checks that "ok" is correct at the end. - */ -static int -check () +int +main (int argc, char *argv[]) { int ok; + GNUNET_log_setup ("test_client", + "WARNING", + NULL); cfg = GNUNET_CONFIGURATION_create (); GNUNET_CONFIGURATION_set_value_number (cfg, MYNAME, "PORT", PORT); - GNUNET_CONFIGURATION_set_value_string (cfg, - MYNAME, "HOSTNAME", "localhost"); + GNUNET_CONFIGURATION_set_value_string (cfg, MYNAME, "HOSTNAME", "localhost"); + GNUNET_CONFIGURATION_set_value_string (cfg, "resolver", "HOSTNAME", + "localhost"); ok = 1; GNUNET_SCHEDULER_run (&task, &ok); GNUNET_CONFIGURATION_destroy (cfg); return ok; } -int -main (int argc, char *argv[]) -{ - int ret = 0; - - GNUNET_log_setup ("test_client", "WARNING", NULL); - ret += check (); - - return ret; -} - /* end of test_client.c */