2 This file is part of GNUnet.
3 Copyright (C) 2009 GNUnet e.V.
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.
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.
16 * @file util/test_peer.c
17 * @brief testcase for peer.c
18 * @author Safey Mohammed
22 #include "gnunet_util_lib.h"
25 #define NUMBER_OF_PEERS 10
28 * A list of Peer ID's to play with
30 static struct GNUNET_PeerIdentity pidArr[NUMBER_OF_PEERS];
38 for (i = 0; i < NUMBER_OF_PEERS; i++)
40 gcry_randomize (&pidArr[i],
41 sizeof (struct GNUNET_PeerIdentity),
43 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
44 "Peer %d: %s\n", i, GNUNET_i2s (&pidArr[i]));
54 struct GNUNET_PeerIdentity res;
55 struct GNUNET_PeerIdentity zero;
56 GNUNET_PEER_Id ids[] = { 1, 2, 3 };
58 GNUNET_assert (0 == GNUNET_PEER_intern (NULL));
59 /* Insert Peers into PeerEntry table and hashmap */
60 for (i = 0; i < NUMBER_OF_PEERS; i++)
62 pid = GNUNET_PEER_intern (&pidArr[i]);
65 FPRINTF (stderr, "%s", "Unexpected Peer ID returned by intern function\n");
70 /* Referencing the first 3 peers once again */
71 for (i = 0; i < 3; i++)
73 pid = GNUNET_PEER_intern (&pidArr[i]);
76 FPRINTF (stderr, "%s", "Unexpected Peer ID returned by intern function\n");
81 /* Dereferencing the first 3 peers once [decrementing their reference count] */
82 GNUNET_PEER_decrement_rcs (ids, 3);
84 /* re-referencing the first 3 peers using the change_rc function */
85 for (i = 1; i <= 3; i++)
86 GNUNET_PEER_change_rc (i, 1);
88 /* Removing the second Peer from the PeerEntry hash map */
89 GNUNET_PEER_change_rc (2, -2);
91 /* convert the pid of the first PeerEntry into that of the third */
92 GNUNET_PEER_resolve (1, &res);
93 GNUNET_assert (0 == memcmp (&res, &pidArr[0], sizeof (res)));
96 * Attempt to convert pid = 0 (which is reserved)
97 * into a peer identity object, the peer identity memory
98 * is expected to be set to zero
100 memset (&zero, 0, sizeof (struct GNUNET_PeerIdentity));
101 GNUNET_log_skip (1, GNUNET_YES);
102 GNUNET_PEER_resolve (0, &res);
103 GNUNET_assert (0 == memcmp (&res, &zero, sizeof (res)));
105 /* Removing peer entries 1 and 3 from table using the list decrement function */
106 /* If count = 0, nothing should be done whatsoever */
107 GNUNET_PEER_decrement_rcs (ids, 0);
110 GNUNET_PEER_decrement_rcs (ids, 2);
111 GNUNET_PEER_decrement_rcs (ids, 2);
122 GNUNET_log_setup ("test-peer", "ERROR", NULL);
123 for (i = 0; i < 1; i++)
125 generatePeerIdList ();
132 /* end of test_peer.c */