gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r28125 - gnunet/src/identity


From: gnunet
Subject: [GNUnet-SVN] r28125 - gnunet/src/identity
Date: Wed, 17 Jul 2013 21:33:34 +0200

Author: grothoff
Date: 2013-07-17 21:33:34 +0200 (Wed, 17 Jul 2013)
New Revision: 28125

Added:
   gnunet/src/identity/test_identity_defaults.c
Log:
-skeleton for 2nd test

Added: gnunet/src/identity/test_identity_defaults.c
===================================================================
--- gnunet/src/identity/test_identity_defaults.c                                
(rev 0)
+++ gnunet/src/identity/test_identity_defaults.c        2013-07-17 19:33:34 UTC 
(rev 28125)
@@ -0,0 +1,321 @@
+/*
+     This file is part of GNUnet.
+     (C) 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 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.
+*/
+
+/**
+ * @file identity/test_identity.c
+ * @brief testcase for identity service
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include "gnunet_common.h"
+#include "gnunet_util_lib.h"
+#include "gnunet_identity_service.h"
+#include "gnunet_testing_lib.h"
+
+
+#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10)
+
+
+/**
+ * Return value from 'main'.
+ */
+static int res;
+
+/**
+ * Handle to identity service.
+ */
+static struct GNUNET_IDENTITY_Handle *h;
+
+/**
+ * Handle to identity operation.
+ */
+static struct GNUNET_IDENTITY_Operation *op;
+
+/**
+ * Handle for task for timeout termination.
+ */ 
+static GNUNET_SCHEDULER_TaskIdentifier endbadly_task;
+
+
+/**
+ * Clean up all resources used.
+ */
+static void
+cleanup ()
+{
+  if (NULL != op)
+  {
+    GNUNET_IDENTITY_cancel (op);
+    op = NULL;
+  }
+  if (NULL != h)
+  {
+    GNUNET_IDENTITY_disconnect (h);
+    h = NULL;
+  }
+  GNUNET_SCHEDULER_shutdown ();
+}
+
+
+/**
+ * Termiante the testcase (failure).
+ *
+ * @param cls NULL
+ * @param tc scheduler context
+ */
+static void
+endbadly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  cleanup ();
+  res = 1;
+}
+
+
+/**
+ * Termiante the testcase (success).
+ *
+ * @param cls NULL
+ * @param tc scheduler context
+ */
+static void
+end_normally (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  cleanup ();
+  res = 0;
+}
+
+
+/**
+ * Finish the testcase (successfully).
+ */
+static void 
+end ()
+{
+  if (endbadly_task != GNUNET_SCHEDULER_NO_TASK)
+  {
+    GNUNET_SCHEDULER_cancel (endbadly_task);
+    endbadly_task = GNUNET_SCHEDULER_NO_TASK;
+  }
+  GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MILLISECONDS,
+                               &end_normally, NULL);
+}
+
+
+/**
+ * Called with events about egos.
+ *
+ * @param cls NULL
+ * @param ego ego handle
+ * @param ego_ctx context for application to store data for this ego
+ *                 (during the lifetime of this process, initially NULL)
+ * @param identifier identifier assigned by the user for this ego,
+ *                   NULL if the user just deleted the ego and it
+ *                   must thus no longer be used
+ */
+static void
+notification_cb (void *cls,
+                struct GNUNET_IDENTITY_Ego *ego,
+                void **ctx,
+                const char *identifier)
+{
+#if 0
+  static struct GNUNET_IDENTITY_Ego *my_ego;
+  static int round;
+
+  switch (round)
+  {
+  case 0: /* end of initial iteration */
+    GNUNET_assert (NULL == ego);
+    GNUNET_assert (NULL == identifier);
+    break;
+  case 1: /* create */
+    GNUNET_assert (NULL != ego);
+    GNUNET_assert (0 == strcmp (identifier, "test-id"));
+    my_ego = ego;
+    *ctx = &round;
+    break;
+  case 2: /* rename */
+    GNUNET_assert (my_ego == ego);
+    GNUNET_assert (0 == strcmp (identifier, "test"));
+    GNUNET_assert (*ctx == &round);
+    break;
+  case 3: /* delete */
+    GNUNET_assert (my_ego == ego);
+    GNUNET_assert (NULL == identifier);
+    GNUNET_assert (*ctx == &round);
+    *ctx = NULL;
+    break;
+  default:
+    GNUNET_break (0);
+  }
+  round++;
+#endif
+}
+
+
+/**
+ * Continuation called from successful delete operation.
+ *
+ * @param cls NULL
+ * @param emsg (should also be NULL)
+ */
+static void
+delete_cont (void *cls,
+            const char *emsg)
+{
+  op = NULL;
+  GNUNET_assert (NULL == emsg);
+  end ();
+}
+
+
+/**
+ * Continuation called from expected-to-fail rename operation.
+ *
+ * @param cls NULL
+ * @param emsg (should also be NULL)
+ */
+static void
+get_cb (void *cls,
+       struct GNUNET_IDENTITY_Ego *ego,
+       void **ctx,
+       const char *identifier)
+{
+  GNUNET_assert (NULL != emsg);
+  GNUNET_assert (my_ego == ego);
+  GNUNET_assert (0 == strcmp (identifier, "test-id"));
+  op = GNUNET_IDENTITY_delete (h, 
+                              "test-id",
+                              &delete_cont, 
+                              NULL);
+}
+
+
+/**
+ * Main function of the test, run from scheduler.
+ *
+ * @param cls NULL
+ * @param cfg configuration we use (also to connect to identity service)
+ * @param peer handle to access more of the peer (not used)
+ */
+static void
+run_get (void *cls, 
+        const struct GNUNET_CONFIGURATION_Handle *cfg,
+        struct GNUNET_TESTING_Peer *peer)
+{
+  endbadly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, 
+                                               &endbadly, NULL); 
+  h = GNUNET_IDENTITY_connect (cfg, &notification_cb, NULL);
+  GNUNET_assert (NULL != h);
+  op = GNUNET_IDENTITY_get (h,
+                           "test-service",
+                           &get_cb,
+                           NULL);
+}
+
+
+/**
+ * Continuation called from successful rename operation.
+ *
+ * @param cls NULL
+ * @param emsg (should also be NULL)
+ */
+static void
+success_set_cont (void *cls,
+                 const char *emsg)
+{
+  op = NULL;
+  GNUNET_assert (NULL == emsg);
+  end ();
+}
+
+
+/**
+ * Called with events about created ego.
+ *
+ * @param cls NULL
+ * @param ego ego handle
+ * @param ego_ctx context for application to store data for this ego
+ *                 (during the lifetime of this process, initially NULL)
+ * @param identifier identifier assigned by the user for this ego,
+ *                   NULL if the user just deleted the ego and it
+ *                   must thus no longer be used
+ */
+static void
+create_cb (void *cls,
+          struct GNUNET_IDENTITY_Ego *ego,
+          void **ctx,
+          const char *identifier)
+{  
+  op = GNUNET_IDENTITY_set (h, 
+                           "test-service",
+                           ego,
+                           &success_set_cont, 
+                           NULL);
+}
+
+
+/**
+ * Main function of the test, run from scheduler.
+ *
+ * @param cls NULL
+ * @param cfg configuration we use (also to connect to identity service)
+ * @param peer handle to access more of the peer (not used)
+ */
+static void
+run_set (void *cls, 
+        const struct GNUNET_CONFIGURATION_Handle *cfg,
+        struct GNUNET_TESTING_Peer *peer)
+{
+  endbadly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, 
+                                               &endbadly, NULL); 
+  h = GNUNET_IDENTITY_connect (cfg, &notification_cb, NULL);
+  GNUNET_assert (NULL != h);
+  op = GNUNET_IDENTITY_create (h,
+                              "test-id",
+                              &create_cb,
+                              NULL);
+  
+}
+
+
+int
+main (int argc, char *argv[])
+{
+  res = 1;
+  if (0 != 
+      GNUNET_TESTING_service_run ("test-identity",
+                                 "identity",
+                                 "test_identity.conf",
+                                 &run_set,
+                                 NULL))
+    return 1;
+  if (0 != 
+      GNUNET_TESTING_service_run ("test-identity",
+                                 "identity",
+                                 "test_identity.conf",
+                                 &run_get,
+                                 NULL))
+    return 1;
+  return res;
+}
+
+
+/* end of test_identity.c */




reply via email to

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