port reservation and test cases
authorSree Harsha Totakura <totakura@in.tum.de>
Sat, 26 May 2012 14:04:59 +0000 (14:04 +0000)
committerSree Harsha Totakura <totakura@in.tum.de>
Sat, 26 May 2012 14:04:59 +0000 (14:04 +0000)
src/testing/Makefile.am
src/testing/test_testing_new_portreservation.c [new file with mode: 0644]
src/testing/testing_new.c

index 25cf2cbe27f9934dcdcf840c5f6e6da94e5bd4e0..dc357fbf7b8ab2c9d42693bde316a25e7ab0602d 100644 (file)
@@ -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 (file)
index 0000000..a5821ed
--- /dev/null
@@ -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;
+}
index 4622ae87402490db7b1d86ddc0330f8e04f18f31..7a97b3b9ce877b6f83430ae12452f791fe988fdf 100644 (file)
@@ -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);