2e2f4373ebc49910dfc5a82102b40d2b8ca1ab3a
[oweals/gnunet.git] / src / testing / test_testing_portreservation.c
1 /*
2       This file is part of GNUnet
3       Copyright (C) 2008, 2009, 2012 GNUnet e.V.
4
5       GNUnet is free software: you can redistribute it and/or modify it
6       under the terms of the GNU Affero General Public License as published
7       by the Free Software Foundation, either version 3 of the License,
8       or (at your option) any later version.
9
10       GNUnet is distributed in the hope that it will be useful, but
11       WITHOUT ANY WARRANTY; without even the implied warranty of
12       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13       Affero General Public License for more details.
14      
15       You should have received a copy of the GNU Affero General Public License
16       along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18
19 /**
20  * @file testing/test_testing_new_portreservation.c
21  * @brief test case for testing port reservation routines from the new testing
22  *          library API
23  * @author Sree Harsha Totakura
24  */
25
26 #include "platform.h"
27 #include "gnunet_util_lib.h"
28 #include "gnunet_testing_lib.h"
29
30 #define LOG(kind,...) \
31   GNUNET_log (kind, __VA_ARGS__)
32
33 /**
34  * The status of the test
35  */
36 int status;
37
38 /**
39  * Main point of test execution
40  */
41 static void
42 run (void *cls, char *const *args, const char *cfgfile,
43      const struct GNUNET_CONFIGURATION_Handle *cfg)
44 {
45   struct GNUNET_TESTING_System *system;
46   uint16_t new_port1;
47   uint16_t new_port2;
48   uint16_t old_port1;
49
50   system = GNUNET_TESTING_system_create ("/tmp/gnunet-testing-new",
51                                          "localhost", NULL, NULL);
52   GNUNET_assert (NULL != system);
53   new_port1 = GNUNET_TESTING_reserve_port (system);
54   LOG (GNUNET_ERROR_TYPE_DEBUG,
55                 "Reserved TCP port %u\n", new_port1);
56   if (0 == new_port1)
57     goto end;
58   new_port2 = GNUNET_TESTING_reserve_port (system);
59   LOG (GNUNET_ERROR_TYPE_DEBUG,
60                 "Reserved TCP port %u\n", new_port2);
61   if (0 == new_port2)
62     goto end;
63   GNUNET_assert (new_port1 != new_port2);
64   GNUNET_TESTING_release_port (system, new_port1);
65   old_port1 = new_port1;
66   new_port1 = 0;
67   new_port1 = GNUNET_TESTING_reserve_port (system);
68   LOG (GNUNET_ERROR_TYPE_DEBUG,
69        "Reserved TCP port %u\n", new_port1);
70   GNUNET_assert (0 != new_port1);
71   GNUNET_assert (old_port1 == new_port1);
72   GNUNET_TESTING_release_port (system, new_port1);
73   GNUNET_TESTING_release_port (system, new_port2);
74   status = GNUNET_OK;
75
76  end:
77   GNUNET_TESTING_system_destroy (system, GNUNET_YES);
78 }
79
80
81 int main (int argc, char *argv[])
82 {
83   struct GNUNET_GETOPT_CommandLineOption options[] = {
84     GNUNET_GETOPT_OPTION_END
85   };
86
87   status = GNUNET_SYSERR;
88   if (GNUNET_OK !=
89       GNUNET_PROGRAM_run (argc,
90                           argv,
91                           "test_testing_new_portreservation",
92                           "test case for testing port reservation routines"
93                           " from the new testing library API",
94                           options,
95                           &run,
96                           NULL))
97     return 1;
98   return (GNUNET_OK == status) ? 0 : 1;
99 }
100
101 /* end of test_testing_portreservation.c */