X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fidentity%2Ftest_identity.c;h=a1cb1dc6dd359aea530d735dfc4b5e175a934d86;hb=688bd873c3cb463090039f64b9f13b9a029695dc;hp=6eaa86e919506502a6478608e7ba8651af42f190;hpb=29e6158507a0758192075ac6ece7ba8e75ddc49a;p=oweals%2Fgnunet.git diff --git a/src/identity/test_identity.c b/src/identity/test_identity.c index 6eaa86e91..a1cb1dc6d 100644 --- a/src/identity/test_identity.c +++ b/src/identity/test_identity.c @@ -1,21 +1,19 @@ /* This file is part of GNUnet. - Copyright (C) 2013 GNUnet e.V. + 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 - 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 Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, + 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., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ /** @@ -50,7 +48,7 @@ static struct GNUNET_IDENTITY_Operation *op; /** * Handle for task for timeout termination. */ -static struct GNUNET_SCHEDULER_Task * endbadly_task; +static struct GNUNET_SCHEDULER_Task *endbadly_task; /** @@ -105,13 +103,12 @@ end_normally (void *cls) 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 (); } @@ -143,21 +140,38 @@ notification_cb (void *cls, 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); } @@ -181,6 +195,21 @@ delete_cont (void *cls, } +/** + * 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. * @@ -192,11 +221,10 @@ fail_rename_cont (void *cls, 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); } @@ -251,8 +279,13 @@ run (void *cls, 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",