/*
This file is part of GNUnet.
- Copyright (C) 2013 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2013, 2016 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
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.
*/
/**
/**
* Handle for task for timeout termination.
*/
-static struct GNUNET_SCHEDULER_Task * endbadly_task;
+static struct GNUNET_SCHEDULER_Task *endbadly_task;
/**
* Termiante the testcase (failure).
*
* @param cls NULL
- * @param tc scheduler context
*/
static void
-endbadly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+endbadly (void *cls)
{
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)
+end_normally (void *cls)
{
cleanup ();
res = 0;
static void
end ()
{
- if (endbadly_task != NULL)
+ if (NULL != endbadly_task)
{
GNUNET_SCHEDULER_cancel (endbadly_task);
endbadly_task = NULL;
}
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MILLISECONDS,
- &end_normally, NULL);
+ GNUNET_SCHEDULER_shutdown ();
}
break;
case 1: /* create */
GNUNET_assert (NULL != ego);
- GNUNET_assert (0 == strcmp (identifier, "test-id"));
+ 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 (0 == strcmp (identifier,
+ "test"));
GNUNET_assert (*ctx == &round);
break;
- case 3: /* delete */
+ case 3: /* reconnect-down */
GNUNET_assert (my_ego == ego);
GNUNET_assert (NULL == identifier);
GNUNET_assert (*ctx == &round);
*ctx = NULL;
break;
+ case 4: /* reconnect-up */
+ GNUNET_assert (0 == strcmp (identifier,
+ "test"));
+ my_ego = ego;
+ *ctx = &round;
+ break;
+ case 5: /* end of iteration after reconnect */
+ GNUNET_assert (NULL == ego);
+ GNUNET_assert (NULL == identifier);
+ break;
+ case 6: /* delete */
+ GNUNET_assert (my_ego == ego);
+ GNUNET_assert (*ctx == &round);
+ *ctx = NULL;
+ break;
default:
GNUNET_break (0);
}
}
+/**
+ * Continue by deleting the "test" identity.
+ *
+ * @param cls NULL
+ */
+static void
+finally_delete (void *cls)
+{
+ op = GNUNET_IDENTITY_delete (h,
+ "test",
+ &delete_cont,
+ NULL);
+}
+
+
/**
* Continuation called from expected-to-fail rename operation.
*
const char *emsg)
{
GNUNET_assert (NULL != emsg);
- op = GNUNET_IDENTITY_delete (h,
- "test",
- &delete_cont,
- NULL);
- end (); /* yepee */
+ op = NULL;
+ GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
+ &finally_delete,
+ NULL);
}
struct GNUNET_TESTING_Peer *peer)
{
endbadly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT,
- &endbadly, NULL);
- h = GNUNET_IDENTITY_connect (cfg, ¬ification_cb, NULL);
+ &endbadly,
+ NULL);
+ GNUNET_SCHEDULER_add_shutdown (&end_normally,
+ NULL);
+ h = GNUNET_IDENTITY_connect (cfg,
+ ¬ification_cb,
+ NULL);
GNUNET_assert (NULL != h);
op = GNUNET_IDENTITY_create (h,
"test-id",