-ignore
[oweals/gnunet.git] / src / multicast / test_multicast.c
1 /*
2  * This file is part of GNUnet
3  * (C) 2013 Christian Grothoff (and other contributing authors)
4  *
5  * GNUnet is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published
7  * by the Free Software Foundation; either version 3, or (at your
8  * 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  * General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with GNUnet; see the file COPYING.  If not, write to the
17  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18  * Boston, MA 02111-1307, USA.
19  */
20
21 /**
22  * @file multicast/test_multicast.c
23  * @brief Tests for the Multicast API.
24  * @author Gabor X Toth
25  */
26
27 #include <inttypes.h>
28
29 #include "platform.h"
30 #include "gnunet_crypto_lib.h"
31 #include "gnunet_common.h"
32 #include "gnunet_util_lib.h"
33 #include "gnunet_testing_lib.h"
34 #include "gnunet_multicast_service.h"
35
36 #define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
37
38 #define DEBUG_SERVICE 0
39
40 /**
41  * Return value from 'main'.
42  */
43 static int res;
44
45 static const struct GNUNET_CONFIGURATION_Handle *cfg;
46
47 /**
48  * Handle for task for timeout termination.
49  */
50 static GNUNET_SCHEDULER_TaskIdentifier end_badly_task;
51
52
53 /**
54  * Clean up all resources used.
55  */
56 static void
57 cleanup ()
58 {
59
60 }
61
62
63 /**
64  * Terminate the test case (failure).
65  *
66  * @param cls NULL
67  * @param tc scheduler context
68  */
69 static void
70 end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
71 {
72   res = 1;
73   cleanup ();
74   GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Test FAILED.\n");
75 }
76
77
78 /**
79  * Terminate the test case (success).
80  *
81  * @param cls NULL
82  * @param tc scheduler context
83  */
84 static void
85 end_normally (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
86 {
87   res = 0;
88   cleanup ();
89   GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test PASSED.\n");
90 }
91
92
93 /**
94  * Finish the test case (successfully).
95  */
96 static void
97 end ()
98 {
99   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Ending tests.\n");
100
101   if (end_badly_task != GNUNET_SCHEDULER_NO_TASK)
102   {
103     GNUNET_SCHEDULER_cancel (end_badly_task);
104     end_badly_task = GNUNET_SCHEDULER_NO_TASK;
105   }
106   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MILLISECONDS,
107                                 &end_normally, NULL);
108 }
109
110
111 /**
112  * Main function of the test, run from scheduler.
113  *
114  * @param cls NULL
115  * @param cfg configuration we use (also to connect to Multicast service)
116  * @param peer handle to access more of the peer (not used)
117  */
118 static void
119 #if DEBUG_SERVICE
120 run (void *cls, char *const *args, const char *cfgfile,
121      const struct GNUNET_CONFIGURATION_Handle *c)
122 #else
123 run (void *cls,
124      const struct GNUNET_CONFIGURATION_Handle *c,
125      struct GNUNET_TESTING_Peer *peer)
126 #endif
127 {
128   cfg = c;
129   end_badly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
130
131   /* FIXME: add tests */
132
133   end ();
134 }
135
136
137 int
138 main (int argc, char *argv[])
139 {
140   res = 1;
141 #if DEBUG_SERVICE
142   const struct GNUNET_GETOPT_CommandLineOption opts[] = {
143     GNUNET_GETOPT_OPTION_END
144   };
145   if (GNUNET_OK != GNUNET_PROGRAM_run (argc, argv, "test-multicast",
146                                        "test-multicast [options]",
147                                        opts, &run, NULL))
148     return 1;
149 #else
150   if (0 != GNUNET_TESTING_peer_run ("test-multicast", "test_multicast.conf", &run, NULL))
151     return 1;
152 #endif
153   return res;
154 }
155
156 /* end of test_multicast.c */