X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_peer.c;h=45633119cf84a2b2df2842c8f158b2b52fe3a8ce;hb=555214089c7045298f23fea9e060ea931804e75f;hp=e2fd100fd2198ff18df2e125e37b5dd02efc0d54;hpb=660c6da4fcbca6bd2cb15599dfe3c6d53b890c7f;p=oweals%2Fgnunet.git diff --git a/src/util/test_peer.c b/src/util/test_peer.c index e2fd100fd..45633119c 100644 --- a/src/util/test_peer.c +++ b/src/util/test_peer.c @@ -28,7 +28,8 @@ #include "gnunet_peer_lib.h" #define NUMBER_OF_PEERS 10 -/*#define DEBUG*/ + +#define DEBUG GNUNET_NO /** * A list of Peer ID's to play with @@ -44,8 +45,8 @@ generatePeerIdList () for (i = 0; i < NUMBER_OF_PEERS; i++) { GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK, - &pidArr[i].hashPubKey); -#ifdef DEBUG + &pidArr[i].hashPubKey); +#if DEBUG printf ("Peer %d: %s\n", i, GNUNET_i2s (&pidArr[i])); #endif } @@ -57,17 +58,21 @@ 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"); - return 1; - } + { + fprintf (stderr, + "Unexpected Peer ID returned by intern function \n"); + return 1; + } } /* Referencing the first 3 peers once again */ @@ -75,30 +80,44 @@ check () { pid = GNUNET_PEER_intern (&pidArr[i]); if (pid != (i + 1)) - { - fprintf (stderr, - "Unexpcted Peer ID returned by intern function \n"); - return 1; - } + { + fprintf (stderr, + "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); /* 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; } @@ -107,9 +126,15 @@ check () int main () { + 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 */