-remove async ecc key generation, not needed
[oweals/gnunet.git] / src / util / test_peer.c
index e2fd100fd2198ff18df2e125e37b5dd02efc0d54..fa4d31b8db3bd2e319eabd683c2e918b3bdc8a95 100644 (file)
@@ -4,7 +4,7 @@
 
      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
 #include "gnunet_peer_lib.h"
 
 #define NUMBER_OF_PEERS 10
 #include "gnunet_peer_lib.h"
 
 #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];
 
@@ -42,13 +41,12 @@ generatePeerIdList ()
   int i;
 
   for (i = 0; i < NUMBER_OF_PEERS; 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
-    }
+  {
+    GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK,
+                                      &pidArr[i].hashPubKey);
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "Peer %d: %s\n", i, GNUNET_i2s (&pidArr[i]));
+  }
 }
 
 
 }
 
 
@@ -57,48 +55,64 @@ 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 */
   for (i = 0; i < NUMBER_OF_PEERS; i++)
   /* 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))
     {
     {
-      pid = GNUNET_PEER_intern (&pidArr[i]);
-      if (pid != (i + 1))
-        {
-          fprintf (stderr,
-                   "Unexpected Peer ID returned by intern function \n");
-          return 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++)
 
   /* Referencing the first 3 peers once again */
   for (i = 0; i < 3; i++)
+  {
+    pid = GNUNET_PEER_intern (&pidArr[i]);
+    if (pid != (i + 1))
     {
     {
-      pid = GNUNET_PEER_intern (&pidArr[i]);
-      if (pid != (i + 1))
-        {
-          fprintf (stderr,
-                   "Unexpcted Peer ID returned by intern function \n");
-          return 1;
-        }
+      FPRINTF (stderr, "%s",  "Unexpected Peer ID returned by intern function\n");
+      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 */
   GNUNET_PEER_change_rc (2, -2);
 
   /* convert the pid of the first PeerEntry into that of the third */
 
   /* 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;
 }
 
   return 0;
 }
@@ -107,9 +121,16 @@ check ()
 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 */