- add subdirectory gitignore files
[oweals/gnunet.git] / src / util / test_peer.c
index 0f4a227d3cdf32a330b7238484be903b1a9398f1..d16c66a27da4a706cdba1c3aea8b316c8b1293af 100644 (file)
@@ -1,10 +1,10 @@
 /*
      This file is part of GNUnet.
 /*
      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
 
      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
      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
 
      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
 */
 /**
  * @file util/test_peer.c
  */
 
 #include "platform.h"
  */
 
 #include "platform.h"
-#include "gnunet_crypto_lib.h"
-#include "gnunet_peer_lib.h"
+#include "gnunet_util_lib.h"
+#include <gcrypt.h>
 
 #define NUMBER_OF_PEERS 10
 
 #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 struct GNUNET_PeerIdentity pidArr[NUMBER_OF_PEERS];
 
 
-static void generatePeerIdList()
+static void
+generatePeerIdList ()
 {
   int i;
 
 {
   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;
 {
   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 */
   /* 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;
     }
   }
       return 1;
     }
   }
-       
+
   /* Referencing the first 3 peers once again */
   /* 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;
     }
   }
       return 1;
     }
   }
-       
+
   /* Dereferencing the first 3 peers once [decrementing their reference count] */
   /* 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 */
   /* 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 */
   /* 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 */
   /* 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;
 }
 
 
   return 0;
 }
 
 
-int main()
+int
+main ()
 {
 {
+  unsigned int i;
+
   GNUNET_log_setup ("test-peer", "ERROR", NULL);
   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 */
 }
 
 /* end of test_peer.c */