diff options
Diffstat (limited to 'src/ats/test_ats_api_common.c')
-rw-r--r-- | src/ats/test_ats_api_common.c | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/src/ats/test_ats_api_common.c b/src/ats/test_ats_api_common.c new file mode 100644 index 0000000..f1002f8 --- /dev/null +++ b/src/ats/test_ats_api_common.c @@ -0,0 +1,139 @@ +/* + This file is part of GNUnet. + (C) 2010,2011 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 ats/test_ats_api_common.c + * @brief shared functions for ats test + * @author Christian Grothoff + * @author Matthias Wachs + */ + +#include "test_ats_api_common.h" + +#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30) + +#define PEERID0 "2AK99KD8RM9UA9LC3QKA0IQ5UBFC0FBB50EBGCFQT8448DGGACNAC4CJQDD1CPFS494O41U88DJD1FLIG8VA5CQR9IN4L96GP104MVO" +#define PEERID1 "5ED7I0AR3MSTAL7FQN04S22E0EQ3CR9RLASCDLVMM1BNFPUPTCT46DLKNJ4DACASJ6U0DR5J8S3R2UJL49682JS7MOVRAB8P8A4PJH0" + +void +create_test_address (struct Test_Address *dest, char * plugin, void *session, void *addr, size_t addrlen) +{ + + dest->plugin = GNUNET_strdup (plugin); + dest->session = session; + if (addrlen > 0) + { + dest->addr = GNUNET_malloc (addrlen); + memcpy (dest->addr, addr, addrlen); + } + else + dest->addr = NULL; + dest->addr_len = addrlen; +} + +void +free_test_address (struct Test_Address *dest) +{ + GNUNET_free (dest->plugin); + if (NULL != dest->addr) + GNUNET_free (dest->addr); +} + +int +compare_addresses (const struct GNUNET_HELLO_Address *address1, void *session1, + const struct GNUNET_HELLO_Address *address2, void *session2) +{ + if (0 != memcmp (&address1->peer, &address2->peer, sizeof (struct GNUNET_PeerIdentity))) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid peer id'\n"); + return GNUNET_SYSERR; + } + if (0 != strcmp (address1->transport_name, address2->transport_name)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid plugin'\n"); + return GNUNET_SYSERR; + } + if (address1->address_length != address2->address_length) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid address length'\n"); + return GNUNET_SYSERR; + + } + else if (0 != memcmp (address1->address, address2->address, address2->address_length)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid address'\n"); + return GNUNET_SYSERR; + } + if (session1 != session2) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid session1 %p vs session2 %p'\n", + session1, session2); + return GNUNET_SYSERR; + + } + return GNUNET_OK; +} + + +int +compare_ats (const struct GNUNET_ATS_Information *ats_is, uint32_t ats_count_is, + const struct GNUNET_ATS_Information *ats_should, uint32_t ats_count_should) +{ + unsigned int c_o; + unsigned int c_i; + char *prop[] = GNUNET_ATS_PropertyStrings; + uint32_t type1; + uint32_t type2; + uint32_t val1; + uint32_t val2; + int res = GNUNET_OK; + + for (c_o = 0; c_o < ats_count_is; c_o++) + { + for (c_i = 0; c_i < ats_count_should; c_i++) + { + type1 = ntohl(ats_is[c_o].type); + type2 = ntohl(ats_should[c_i].type); + if (type1 == type2) + { + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ATS type `%s'\n", + prop[type1]); + val1 = ntohl(ats_is[c_o].value); + val2 = ntohl(ats_should[c_i].value); + if (val1 != val2) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "ATS value `%s' not equal: %u != %u\n", + prop[type1], + val1, val2); + res = GNUNET_SYSERR; + } + else + { + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ATS value `%s' equal: %u == %u\n", + prop[type1], + val1, val2); + } + } + } + } + return res; +} + + +/* end of file test_ats_api_common.c */ |