X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_peer.c;h=d16c66a27da4a706cdba1c3aea8b316c8b1293af;hb=f249a80a2b1e52b24969782e8afb30b86c373ae2;hp=0f4a227d3cdf32a330b7238484be903b1a9398f1;hpb=efa495524a5be052ee67793e4bcf600ba05e149c;p=oweals%2Fgnunet.git diff --git a/src/util/test_peer.c b/src/util/test_peer.c index 0f4a227d3..d16c66a27 100644 --- a/src/util/test_peer.c +++ b/src/util/test_peer.c @@ -1,10 +1,10 @@ /* This file is part of GNUnet. - (C) 2009 Christian Grothoff (and other contributing authors) + Copyright (C) 2009 GNUnet e.V. 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 2, or (at your + 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 @@ -14,8 +14,8 @@ 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. + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /** * @file util/test_peer.c @@ -24,82 +24,114 @@ */ #include "platform.h" -#include "gnunet_crypto_lib.h" -#include "gnunet_peer_lib.h" +#include "gnunet_util_lib.h" +#include #define NUMBER_OF_PEERS 10 -/*#define DEBUG*/ /** - * A list of Peer ID's to play with + * A list of Peer ID's to play with */ static struct GNUNET_PeerIdentity pidArr[NUMBER_OF_PEERS]; -static void generatePeerIdList() +static void +generatePeerIdList () { int i; - for (i = 0; i < NUMBER_OF_PEERS; i++ ) { - GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK, &pidArr[i].hashPubKey); -#ifdef DEBUG - printf ("Peer %d: %s\n", - i, - GNUNET_i2s (&pidArr[i])); -#endif + for (i = 0; i < NUMBER_OF_PEERS; i++) + { + gcry_randomize (&pidArr[i], + sizeof (struct GNUNET_PeerIdentity), + GCRY_STRONG_RANDOM); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Peer %d: %s\n", i, GNUNET_i2s (&pidArr[i])); } } -static int check() +static int +check () { int i; GNUNET_PEER_Id pid; - + struct GNUNET_PeerIdentity res; + struct GNUNET_PeerIdentity zero; + GNUNET_PEER_Id ids[] = { 1, 2, 3 }; + + GNUNET_assert (0 == GNUNET_PEER_intern (NULL)); /* Insert Peers into PeerEntry table and hashmap */ - for (i=0; i < NUMBER_OF_PEERS; i++) { - pid = GNUNET_PEER_intern(&pidArr[i]); - if ( pid != (i + 1)) { - fprintf(stderr, "Unexpected Peer ID returned by intern function \n"); + for (i = 0; i < NUMBER_OF_PEERS; i++) + { + pid = GNUNET_PEER_intern (&pidArr[i]); + if (pid != (i + 1)) + { + FPRINTF (stderr, "%s", "Unexpected Peer ID returned by intern function\n"); return 1; } } - + /* Referencing the first 3 peers once again */ - for (i = 0; i < 3; i++) { - pid = GNUNET_PEER_intern(&pidArr[i]); - if (pid != (i + 1)) { - fprintf(stderr, "Unexpcted Peer ID returned by intern function \n"); + for (i = 0; i < 3; i++) + { + pid = GNUNET_PEER_intern (&pidArr[i]); + if (pid != (i + 1)) + { + FPRINTF (stderr, "%s", "Unexpected Peer ID returned by intern function\n"); return 1; } } - + /* Dereferencing the first 3 peers once [decrementing their reference count] */ - { - GNUNET_PEER_Id ids[] = {1, 2, 3}; - GNUNET_PEER_decrement_rcs(ids, 3); - } - + GNUNET_PEER_decrement_rcs (ids, 3); + /* re-referencing the first 3 peers using the change_rc function */ - for (i = 0; i < 3; i++) { - GNUNET_PEER_change_rc(i, 1); - } - + for (i = 1; i <= 3; i++) + GNUNET_PEER_change_rc (i, 1); + /* Removing the second Peer from the PeerEntry hash map */ - GNUNET_PEER_change_rc(2, -2); - + GNUNET_PEER_change_rc (2, -2); + /* convert the pid of the first PeerEntry into that of the third */ - GNUNET_PEER_resolve(1, &pidArr[3]); - + GNUNET_PEER_resolve (1, &res); + GNUNET_assert (0 == memcmp (&res, &pidArr[0], sizeof (res))); + + /* + * Attempt to convert pid = 0 (which is reserved) + * into a peer identity object, the peer identity memory + * is expected to be set to zero + */ + memset (&zero, 0, sizeof (struct GNUNET_PeerIdentity)); + GNUNET_log_skip (1, GNUNET_YES); + GNUNET_PEER_resolve (0, &res); + GNUNET_assert (0 == memcmp (&res, &zero, sizeof (res))); + + /* Removing peer entries 1 and 3 from table using the list decrement function */ + /* If count = 0, nothing should be done whatsoever */ + GNUNET_PEER_decrement_rcs (ids, 0); + + ids[1] = 3; + GNUNET_PEER_decrement_rcs (ids, 2); + GNUNET_PEER_decrement_rcs (ids, 2); + return 0; } -int main() +int +main () { + unsigned int i; + GNUNET_log_setup ("test-peer", "ERROR", NULL); - generatePeerIdList(); - return check(); + for (i = 0; i < 1; i++) + { + generatePeerIdList (); + if (0 != check ()) + return 1; + } + return 0; } /* end of test_peer.c */