aboutsummaryrefslogtreecommitdiff
path: root/src/service/testing/testing_api_traits.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/service/testing/testing_api_traits.c')
-rw-r--r--src/service/testing/testing_api_traits.c96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/service/testing/testing_api_traits.c b/src/service/testing/testing_api_traits.c
new file mode 100644
index 000000000..18faa2d04
--- /dev/null
+++ b/src/service/testing/testing_api_traits.c
@@ -0,0 +1,96 @@
1/*
2 This file is part of GNUnet
3 Copyright (C) 2021 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 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file testing/testing_api_traits.c
23 * @brief loop for trait resolution
24 * @author Christian Grothoff (GNU Taler testing)
25 * @author Marcello Stanisci (GNU Taler testing)
26 * @author t3sserakt
27 */
28#include "platform.h"
29#include "gnunet_testing_ng_lib.h"
30#include "gnunet_testing_plugin.h"
31#include "gnunet_testing_barrier.h"
32#include "gnunet_testing_netjail_lib.h"
33
34
35/* FIXME: move these into respective sub-libs? */
36
37GNUNET_TESTING_SIMPLE_TRAITS (GNUNET_TESTING_MAKE_IMPL_SIMPLE_TRAIT, GNUNET_TESTING)
38
39GNUNET_TESTING_INDEXED_TRAITS (GNUNET_TESTING_MAKE_IMPL_INDEXED_TRAIT, GNUNET_TESTING)
40
41GNUNET_TESTING_LOOP_SIMPLE_TRAITS (GNUNET_TESTING_MAKE_IMPL_SIMPLE_TRAIT, GNUNET_TESTING)
42
43GNUNET_TESTING_LOOP_INDEXED_TRAITS (GNUNET_TESTING_MAKE_IMPL_INDEXED_TRAIT, GNUNET_TESTING)
44
45GNUNET_TESTING_SIMPLE_NETJAIL_TRAITS (GNUNET_TESTING_MAKE_IMPL_SIMPLE_TRAIT, GNUNET_TESTING)
46
47/**
48 * End a trait array. Usually, commands offer several traits,
49 * and put them in arrays.
50 */
51struct GNUNET_TESTING_Trait
52GNUNET_TESTING_trait_end ()
53{
54 struct GNUNET_TESTING_Trait end = {
55 .index = 0,
56 .trait_name = NULL,
57 .ptr = NULL
58 };
59
60 return end;
61}
62
63
64/**
65 * Pick the chosen trait from the traits array.
66 *
67 * @param traits the traits array.
68 * @param ret where to store the result.
69 * @param trait type of the trait to extract.
70 * @param index index number of the object to extract.
71 * @return #GNUNET_OK if no error occurred, #GNUNET_SYSERR otherwise.
72 */
73enum GNUNET_GenericReturnValue
74GNUNET_TESTING_get_trait (const struct GNUNET_TESTING_Trait *traits,
75 const void **ret,
76 const char *trait,
77 unsigned int index)
78{
79 for (unsigned int i = 0; NULL != traits[i].trait_name; i++)
80 {
81 if ( (0 == strcmp (trait, traits[i].trait_name)) &&
82 (index == traits[i].index) )
83 {
84 *ret = (void *) traits[i].ptr;
85 return GNUNET_OK;
86 }
87 }
88 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
89 "Trait %s/%u not found.\n",
90 trait, index);
91
92 return GNUNET_SYSERR;
93}
94
95
96/* end of testing_api_traits.c */