gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r30902 - gnunet/src/revocation


From: gnunet
Subject: [GNUnet-SVN] r30902 - gnunet/src/revocation
Date: Wed, 27 Nov 2013 11:43:27 +0100

Author: wachs
Date: 2013-11-27 11:43:27 +0100 (Wed, 27 Nov 2013)
New Revision: 30902

Modified:
   gnunet/src/revocation/test_revocation.c
Log:
clean up test


Modified: gnunet/src/revocation/test_revocation.c
===================================================================
--- gnunet/src/revocation/test_revocation.c     2013-11-27 10:08:19 UTC (rev 
30901)
+++ gnunet/src/revocation/test_revocation.c     2013-11-27 10:43:27 UTC (rev 
30902)
@@ -1,22 +1,22 @@
 /*
-     This file is part of GNUnet.
-     (C) 2009, 2013 Christian Grothoff (and other contributing authors)
+ This file is part of GNUnet.
+ (C) 2009, 2013 Christian Grothoff (and other contributing authors)
 
-     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 3, or (at your
-     option) any later version.
+ 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 3, or (at your
+ option) any later version.
 
-     GNUnet is distributed in the hope that it will be useful, but
-     WITHOUT ANY WARRANTY; without even the implied warranty of
-     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-     General Public License for more details.
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
 
-     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.
-*/
+ 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.
+ */
 /**
  * @file dv/test_transport_dv.c
  * @brief base testcase for testing distance vector transport
@@ -38,13 +38,16 @@
   const struct GNUNET_CRYPTO_EcdsaPrivateKey *privkey;
   struct GNUNET_CRYPTO_EcdsaPublicKey pubkey;
   struct GNUNET_CRYPTO_EcdsaSignature sig;
+  struct GNUNET_IDENTITY_Operation *create_id_op;
+  struct GNUNET_IDENTITY_EgoLookup *ego_lookup;
+  struct GNUNET_REVOCATION_Handle *revok_handle;
   uint64_t pow;
 };
 
-struct TestPeer testpeers[2];
+static struct TestPeer testpeers[2];
 
+static GNUNET_SCHEDULER_TaskIdentifier die_task;
 
-
 /**
  * Return value from main, set to 0 on success.
  */
@@ -54,10 +57,36 @@
 do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   int c;
+
+  if (GNUNET_SCHEDULER_NO_TASK != die_task)
+  {
+    GNUNET_SCHEDULER_cancel (die_task);
+    die_task = GNUNET_SCHEDULER_NO_TASK;
+  }
+
   for (c = 0; c < NUM_TEST_PEERS; c++)
   {
-    GNUNET_TESTBED_operation_done (testpeers[c].identity_op);
-    testpeers[c].identity_op = NULL;
+    if (NULL != testpeers[c].create_id_op)
+    {
+      GNUNET_IDENTITY_cancel (testpeers[c].create_id_op);
+      testpeers[c].create_id_op = NULL;
+    }
+    if (NULL != testpeers[c].ego_lookup)
+    {
+      GNUNET_IDENTITY_ego_lookup_cancel (testpeers[c].ego_lookup);
+      testpeers[c].ego_lookup = NULL;
+    }
+
+    if (NULL != testpeers[c].revok_handle)
+    {
+      GNUNET_REVOCATION_revoke_cancel (testpeers[c].revok_handle);
+      testpeers[c].revok_handle = NULL;
+    }
+    if (NULL != testpeers[c].identity_op)
+    {
+      GNUNET_TESTBED_operation_done (testpeers[c].identity_op);
+      testpeers[c].identity_op = NULL;
+    }
   }
   GNUNET_SCHEDULER_shutdown ();
   ok = 0;
@@ -66,7 +95,9 @@
 static void
 do_shutdown_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
-  do_shutdown (NULL, NULL);
+  if (GNUNET_SCHEDULER_NO_TASK != die_task)
+    die_task = GNUNET_SCHEDULER_NO_TASK;
+  do_shutdown (NULL, NULL );
   ok = 1;
 }
 
@@ -76,10 +107,9 @@
 {
   struct TestPeer *me = cls;
   me->cfg = cfg;
-  me->idh = GNUNET_IDENTITY_connect(cfg, NULL, NULL);
+  me->idh = GNUNET_IDENTITY_connect (cfg, NULL, NULL );
   if (NULL == me->idh)
-    GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
-        "Failed to create IDENTITY handle \n");
+    GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Failed to create IDENTITY handle \n");
   return me->idh;
 }
 
@@ -87,157 +117,176 @@
 identity_disconnect_adapter (void *cls, void *op_result)
 {
   struct TestPeer *me = cls;
-  GNUNET_IDENTITY_disconnect(me->idh);
+  GNUNET_IDENTITY_disconnect (me->idh);
   me->idh = NULL;
 }
 
-static void check_revocation ();
+static void
+check_revocation ();
 
-static void revocation_remote_cb (void *cls,
-                           int is_valid)
+static void
+revocation_remote_cb (void *cls, int is_valid)
 {
   static int repeat = 0;
-  if  (GNUNET_NO == is_valid)
+  if (GNUNET_NO == is_valid)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Local revocation successful\n");
-    GNUNET_SCHEDULER_add_now(&do_shutdown, NULL);
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Local revocation successful\n");
+    GNUNET_SCHEDULER_add_now (&do_shutdown, NULL );
   }
   else if (repeat < 10)
   {
-    GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_UNIT_SECONDS, &check_revocation, 
NULL);
+    GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &check_revocation,
+        NULL );
   }
   else
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Flooding of revocation failed\n");
-    GNUNET_SCHEDULER_add_now(&do_shutdown_badly, NULL);
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Flooding of revocation failed\n");
+    if (GNUNET_SCHEDULER_NO_TASK != die_task)
+    {
+      GNUNET_SCHEDULER_cancel (die_task);
+      die_task = GNUNET_SCHEDULER_NO_TASK;
+    }
+    GNUNET_SCHEDULER_add_now (&do_shutdown_badly, NULL );
   }
   repeat++;
 }
 
-static void check_revocation ()
+static void
+check_revocation ()
 {
-  GNUNET_REVOCATION_query (testpeers[0].cfg, &testpeers[1].pubkey, 
&revocation_remote_cb, NULL);
+  GNUNET_REVOCATION_query (testpeers[0].cfg, &testpeers[1].pubkey,
+      &revocation_remote_cb, NULL );
 }
 
-static void revocation_cb (void *cls,
-                           int is_valid)
+static void
+revocation_cb (void *cls, int is_valid)
 {
-  if  (GNUNET_NO == is_valid)
+  testpeers[1].revok_handle = NULL;
+  if (GNUNET_NO == is_valid)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Revocation successful\n");
-    check_revocation();
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Revocation successful\n");
+    check_revocation ();
   }
 }
 
-static void ego_cb (void *cls, const struct GNUNET_IDENTITY_Ego *ego)
+static void
+ego_cb (void *cls, const struct GNUNET_IDENTITY_Ego *ego)
 {
   static int completed = 0;
   if ((NULL != ego) && (cls == &testpeers[0]))
   {
-    testpeers[0].privkey = GNUNET_IDENTITY_ego_get_private_key(ego);
-    GNUNET_IDENTITY_ego_get_public_key(ego, &testpeers[0].pubkey);
-    completed ++;
+    testpeers[0].ego_lookup = NULL;
+    testpeers[0].privkey = GNUNET_IDENTITY_ego_get_private_key (ego);
+    GNUNET_IDENTITY_ego_get_public_key (ego, &testpeers[0].pubkey);
+    completed++;
   }
   if ((NULL != ego) && (cls == &testpeers[1]))
   {
-    testpeers[1].privkey = GNUNET_IDENTITY_ego_get_private_key(ego);
-    GNUNET_IDENTITY_ego_get_public_key(ego, &testpeers[1].pubkey);
-    GNUNET_REVOCATION_sign_revocation(testpeers[1].privkey, &testpeers[1].sig);
+    testpeers[1].ego_lookup = NULL;
+    testpeers[1].privkey = GNUNET_IDENTITY_ego_get_private_key (ego);
+    GNUNET_IDENTITY_ego_get_public_key (ego, &testpeers[1].pubkey);
+    GNUNET_REVOCATION_sign_revocation (testpeers[1].privkey, 
&testpeers[1].sig);
 
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Calculating proof of work...\n");
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Calculating proof of work...\n");
     testpeers[1].pow = 0;
-    int res = GNUNET_REVOCATION_check_pow (&testpeers[1].pubkey, 
testpeers[1].pow, 5);
+    int res = GNUNET_REVOCATION_check_pow (&testpeers[1].pubkey,
+        testpeers[1].pow, 5);
     while (GNUNET_OK != res)
     {
       testpeers[1].pow++;
-      res = GNUNET_REVOCATION_check_pow (&testpeers[1].pubkey, 
testpeers[1].pow, 5);
+      res = GNUNET_REVOCATION_check_pow (&testpeers[1].pubkey, 
testpeers[1].pow,
+          5);
     }
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Done calculating proof of work\n");
-    completed ++;
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Done calculating proof of work\n");
+    completed++;
   }
   if (2 == completed)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Egos retrieved\n");
-    GNUNET_REVOCATION_revoke (testpeers[1].cfg, &testpeers[1].pubkey, 
&testpeers[1].sig, testpeers[1].pow, revocation_cb, NULL);
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Egos retrieved\n");
+    testpeers[1].revok_handle = GNUNET_REVOCATION_revoke (testpeers[1].cfg,
+        &testpeers[1].pubkey, &testpeers[1].sig, testpeers[1].pow,
+        revocation_cb, NULL );
   }
 }
 
-void identity_create_cb (void *cls, const char *emsg)
+void
+identity_create_cb (void *cls, const char *emsg)
 {
   static int completed = 0;
   if ((NULL == emsg) && (cls == &testpeers[0]))
   {
-    completed ++;
+    testpeers[0].create_id_op = NULL;
+    completed++;
   }
   if ((NULL == emsg) && (cls == &testpeers[1]))
   {
-    completed ++;
+    testpeers[1].create_id_op = NULL;
+    completed++;
   }
   if (2 == completed)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Identities created\n");
-    GNUNET_IDENTITY_ego_lookup (testpeers[0].cfg, "client", ego_cb, 
&testpeers[0]);
-    GNUNET_IDENTITY_ego_lookup (testpeers[1].cfg, "toberevoked", ego_cb, 
&testpeers[1]);
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Identities created\n");
+    testpeers[0].ego_lookup = GNUNET_IDENTITY_ego_lookup (testpeers[0].cfg,
+        "client", ego_cb, &testpeers[0]);
+    testpeers[1].ego_lookup = GNUNET_IDENTITY_ego_lookup (testpeers[1].cfg,
+        "toberevoked", ego_cb, &testpeers[1]);
   }
 }
 
-
 static void
 identity_completion_cb (void *cls, struct GNUNET_TESTBED_Operation *op,
     void *ca_result, const char *emsg)
 {
   static int completed = 0;
-  completed ++;
+  completed++;
   if (NUM_TEST_PEERS == completed)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Connected to identity\n");
-   GNUNET_IDENTITY_create (testpeers[0].idh, "client", identity_create_cb, 
&testpeers[0]);
-   GNUNET_IDENTITY_create (testpeers[1].idh, "toberevoked", 
identity_create_cb, &testpeers[1]);
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Connected to identity\n");
+    testpeers[0].create_id_op = GNUNET_IDENTITY_create (testpeers[0].idh,
+        "client", identity_create_cb, &testpeers[0]);
+    testpeers[1].create_id_op = GNUNET_IDENTITY_create (testpeers[1].idh,
+        "toberevoked", identity_create_cb, &testpeers[1]);
   }
 }
 
 static void
-test_connection (void *cls,
-                 struct GNUNET_TESTBED_RunHandle *h,
-                unsigned int num_peers,
-                struct GNUNET_TESTBED_Peer **peers,
-                 unsigned int links_succeeded,
-                 unsigned int links_failed)
+test_connection (void *cls, struct GNUNET_TESTBED_RunHandle *h,
+    unsigned int num_peers, struct GNUNET_TESTBED_Peer **peers,
+    unsigned int links_succeeded, unsigned int links_failed)
 {
   int c;
+
+  die_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
+      &do_shutdown_badly, NULL );
   if (NUM_TEST_PEERS != num_peers)
   {
     ok = 1;
-    fprintf (stderr, "Only %u out of 2 peers were started ...\n",
-        num_peers);
+    fprintf (stderr, "Only %u out of 2 peers were started ...\n", num_peers);
   }
 
   if (0 == links_failed)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Testbed connected peers\n");
-    for (c = 0; c< num_peers; c++)
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Testbed connected peers\n");
+    for (c = 0; c < num_peers; c++)
     {
       testpeers[c].p = peers[c];
 
       /* Connect to identity service */
-      testpeers[c].identity_op = GNUNET_TESTBED_service_connect (NULL, 
testpeers[c].p,
-          "identity", identity_completion_cb, NULL, &identity_connect_adapter,
-          &identity_disconnect_adapter, &testpeers[c]);
+      testpeers[c].identity_op = GNUNET_TESTBED_service_connect (NULL,
+          testpeers[c].p, "identity", identity_completion_cb, NULL,
+          &identity_connect_adapter, &identity_disconnect_adapter,
+          &testpeers[c]);
     }
   }
 }
 
-
 int
 main (int argc, char *argv[])
 {
   ok = 1;
   /* Connecting initial topology */
-  (void) GNUNET_TESTBED_test_run ("test-revocation",
-                                 "test_revocation.conf",
-                                 NUM_TEST_PEERS,
-                                 0, NULL, NULL,
-                                 &test_connection, NULL);
+  (void) GNUNET_TESTBED_test_run ("test-revocation", "test_revocation.conf",
+      NUM_TEST_PEERS, 0, NULL, NULL, &test_connection, NULL );
   return ok;
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]