From 3dfcafa46627f230f83bb323cac321346a0f75eb Mon Sep 17 00:00:00 2001 From: Sree Harsha Totakura Date: Sat, 26 May 2012 14:04:59 +0000 Subject: port reservation and test cases --- src/testing/Makefile.am | 12 +++- src/testing/test_testing_new_portreservation.c | 78 ++++++++++++++++++++++++++ src/testing/testing_new.c | 4 +- 3 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 src/testing/test_testing_new_portreservation.c (limited to 'src/testing') diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am index 25cf2cbe2..dc357fbf7 100644 --- a/src/testing/Makefile.am +++ b/src/testing/Makefile.am @@ -89,7 +89,8 @@ check_PROGRAMS = \ test_testing_topology_erdos_renyi \ test_testing_topology_internat \ test_testing_topology_none \ - test_testing_topology_scale_free + test_testing_topology_scale_free \ + test_testing_new_portreservation if ENABLE_TEST_RUN TESTS = \ @@ -97,7 +98,8 @@ TESTS = \ test_testing_connect \ test_testing_reconnect \ test_testing_group \ - test_testing_peergroup + test_testing_peergroup \ + test_testing_new_portreservation endif gnunet_testing_SOURCES = \ @@ -263,6 +265,12 @@ test_testing_topology_none_LDADD = \ $(top_builddir)/src/core/libgnunetcore.la \ $(top_builddir)/src/util/libgnunetutil.la +test_testing_new_portreservation_SOURCES = \ + test_testing_new_portreservation.c +test_testing_new_portreservation_LDADD = \ + $(top_builddir)/src/testing/libgnunettesting_new.la \ + $(top_builddir)/src/util/libgnunetutil.la + EXTRA_DIST = \ test_testing_defaults.conf \ diff --git a/src/testing/test_testing_new_portreservation.c b/src/testing/test_testing_new_portreservation.c new file mode 100644 index 000000000..a5821edb0 --- /dev/null +++ b/src/testing/test_testing_new_portreservation.c @@ -0,0 +1,78 @@ +/* + This file is part of GNUnet + (C) 2008, 2009, 2012 Christian Grothoff (and other contributing authors) + + 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 3, or (at your + option) any later version. + + GNUnet is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNUnet; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + */ + +/** + * @file testing/test_testing_new_portreservation.c + * @brief test case for testing port reservation routines from the new testing + * library API + * @author Sree Harsha Totakura + */ + +#include "platform.h" +#include "gnunet_util_lib.h" +#include "gnunet_testing_lib-new.h" + +#define LOG(kind,...) \ + GNUNET_log (kind, __VA_ARGS__) + +/** + * Main point of test execution + */ +static void +run (void *cls, char *const *args, const char *cfgfile, + const struct GNUNET_CONFIGURATION_Handle *cfg) +{ + uint16_t new_port1, new_port2; + struct GNUNET_TESTING_System *system; + + system = GNUNET_TESTING_system_create ("/tmp/gnunet-testing-new", + "localhost"); + GNUNET_assert (NULL != system); + new_port1 = reserve_port (system, GNUNET_YES); + LOG (GNUNET_ERROR_TYPE_DEBUG, + "Reserved TCP port %u\n", new_port1); + GNUNET_assert (0 != new_port1); + new_port2 = reserve_port (system, GNUNET_YES); + LOG (GNUNET_ERROR_TYPE_DEBUG, + "Reserved TCP port %u\n", new_port2); + GNUNET_assert (0 != new_port2); + GNUNET_assert (new_port1 != new_port2); + GNUNET_TESTING_system_destroy (system, GNUNET_NO); +} + +int main (int argc, char *argv[]) +{ + struct GNUNET_GETOPT_CommandLineOption options[] = { + GNUNET_GETOPT_OPTION_END + }; + if (GNUNET_OK != + GNUNET_PROGRAM_run (argc, + argv, + "test_testing_new_portreservation", + "test case for testing port reservation routines" + " from the new testing library API", + options, + &run, + NULL)) + { + return 1; + } + return 0; +} diff --git a/src/testing/testing_new.c b/src/testing/testing_new.c index 4622ae874..7a97b3b9c 100644 --- a/src/testing/testing_new.c +++ b/src/testing/testing_new.c @@ -210,11 +210,11 @@ reserve_port (struct GNUNET_TESTING_System *system, struct addrinfo *ret; uint32_t *port_buckets; char *open_port_str; - int pos; int bind_status; uint32_t xor_image; uint16_t index; uint16_t open_port; + uint16_t pos; hint.ai_family = AF_UNSPEC; /* IPv4 and IPv6 */ hint.ai_socktype = (GNUNET_YES == is_tcp)? SOCK_STREAM : SOCK_DGRAM; @@ -244,7 +244,7 @@ reserve_port (struct GNUNET_TESTING_System *system, ret = NULL; GNUNET_assert (0 == getaddrinfo (NULL, open_port_str, &hint, &ret)); GNUNET_free (open_port_str); - socket = GNUNET_NETWORK_socket_create (AF_UNSPEC, + socket = GNUNET_NETWORK_socket_create (ret->ai_family, (GNUNET_YES == is_tcp) ? SOCK_STREAM : SOCK_DGRAM, 0); -- cgit v1.2.3