fix codesonar finding 2287.9399
[oweals/gnunet.git] / src / multicast / test_multicast.c
index a4288e93d5527c62f6990fe1f2658e71cb421684..e00f07b51d60b91177950358cfdc0c87aa575403 100644 (file)
@@ -2,20 +2,18 @@
  * This file is part of GNUnet
  * Copyright (C) 2013 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.
+ * Affero 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.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 /**
@@ -31,7 +29,6 @@
 #include "gnunet_common.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_lib.h"
-#include "gnunet_core_service.h"
 #include "gnunet_multicast_service.h"
 
 #define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
@@ -48,7 +45,6 @@ static struct GNUNET_SCHEDULER_Task * end_badly_task;
 
 static const struct GNUNET_CONFIGURATION_Handle *cfg;
 
-struct GNUNET_CORE_Handle *core;
 struct GNUNET_PeerIdentity this_peer;
 
 struct GNUNET_MULTICAST_Origin *origin;
@@ -110,11 +106,6 @@ member_join (int t);
 static void
 cleanup ()
 {
-  if (NULL != core)
-  {
-    GNUNET_CORE_disconnecT (core);
-    core = NULL;
-  }
   if (NULL != member)
   {
     GNUNET_MULTICAST_member_part (member, NULL, NULL);
@@ -274,6 +265,7 @@ member_parted (void *cls)
   switch (test)
   {
   case TEST_MEMBER_JOIN_REFUSE:
+    // Test 3 starts here
     member_join (TEST_MEMBER_JOIN_ADMIT);
     break;
 
@@ -304,6 +296,7 @@ member_part ()
   test = TEST_MEMBER_PART;
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Test #%u: member_part()\n", test);
+  // Test 10 starts here
   GNUNET_SCHEDULER_add_now (&schedule_member_part, NULL);
 }
 
@@ -311,6 +304,7 @@ member_part ()
 static void
 member_replay_ok ()
 {
+  // Execution of test 8 here
   test = TEST_MEMBER_REPLAY_OK;
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Test #%u: member_replay_ok()\n", test);
@@ -377,6 +371,7 @@ origin_recv_replay_frag (void *cls,
   switch (test)
   {
   case TEST_MEMBER_REPLAY_ERROR:
+    // Test 8 starts here
     GNUNET_MULTICAST_replay_response (rh, NULL, GNUNET_SYSERR);
     member_replay_ok ();
     break;
@@ -435,9 +430,12 @@ origin_recv_request (void *cls,
   GNUNET_assert (0 == memcmp (&req->member_pub_key,
                               &member_pub_key, sizeof (member_pub_key)));
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Test #%u: verify message content, take first 3 bytes: %.3s\n",
+              test, (char *)&req[1]);
+  GNUNET_assert (0 == memcmp (&req[1], "abc", 3));
 
-  // FIXME: check message content
-
+  // Test 7 starts here
   member_replay_error ();
 }
 
@@ -471,7 +469,8 @@ member_recv_message (void *cls,
 {
   struct MemberClosure *mcls = cls;
 
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+  // Test 5 starts here after message has been received from origin
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Test #%u: member_recv_message() %u/%u\n",
               test,
               (unsigned int) (mcls->n + 1),
@@ -483,11 +482,17 @@ member_recv_message (void *cls,
 
   switch (test)
   {
+  case TEST_ORIGIN_TO_ALL:
+    test = TEST_ORIGIN_TO_ALL_RECV;
+    break;
+
   case TEST_ORIGIN_TO_ALL_RECV:
+    // Test 6 starts here
     member_to_origin ();
     break;
 
   case TEST_MEMBER_REPLAY_OK:
+    // Test 9 starts here
     GNUNET_assert (replay_fragment_id == GNUNET_ntohll (msg->fragment_id));
     member_part ();
     break;
@@ -516,9 +521,15 @@ origin_recv_message (void *cls,
   switch (test)
   {
   case TEST_ORIGIN_TO_ALL:
+    // Prepare to execute test 5
     test = TEST_ORIGIN_TO_ALL_RECV;
     break;
 
+  case TEST_ORIGIN_TO_ALL_RECV:
+    // Test 6 starts here
+    member_to_origin ();
+    break;
+
   default:
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Invalid test #%d in origin_recv_message()\n", test);
@@ -574,12 +585,14 @@ member_recv_join_decision (void *cls,
   {
   case TEST_MEMBER_JOIN_REFUSE:
     GNUNET_assert (0 == relay_count);
+    // Test 3 starts here
     GNUNET_SCHEDULER_add_now (&schedule_member_part, NULL);
     break;
 
   case TEST_MEMBER_JOIN_ADMIT:
     GNUNET_assert (1 == relay_count);
     GNUNET_assert (0 == memcmp (relays, &this_peer, sizeof (this_peer)));
+    // Test 4 starts here
     origin_to_all ();
     break;
 
@@ -590,7 +603,9 @@ member_recv_join_decision (void *cls,
   }
 }
 
-
+/**
+ * Test: origin receives join request
+ */
 static void
 origin_recv_join_request (void *cls,
                           const struct GNUNET_CRYPTO_EcdsaPublicKey *mem_key,
@@ -615,10 +630,12 @@ origin_recv_join_request (void *cls,
   switch (test)
   {
   case TEST_MEMBER_JOIN_REFUSE:
+    // Test 3 starts here
     GNUNET_MULTICAST_join_decision (jh, GNUNET_NO, 0, NULL, join_resp);
     break;
 
   case TEST_MEMBER_JOIN_ADMIT:
+    // Test 3 is running
     GNUNET_MULTICAST_join_decision (jh, GNUNET_YES, 1, &this_peer, join_resp);
     break;
 
@@ -630,7 +647,9 @@ origin_recv_join_request (void *cls,
   }
 }
 
-
+/**
+ * Test: member joins multicast group
+ */
 static void
 member_join (int t)
 {
@@ -661,7 +680,9 @@ member_join (int t)
                                          &member_cls);
 }
 
-
+/**
+ * Test: Start a multicast group as origin
+ */
 static void
 origin_start ()
 {
@@ -679,18 +700,11 @@ origin_start ()
                                           origin_recv_request,
                                           origin_recv_message,
                                           &origin_cls);
+  // Test 2 starts here
   member_join (TEST_MEMBER_JOIN_REFUSE);
 }
 
 
-static void
-core_connected (void *cls, const struct GNUNET_PeerIdentity *my_identity)
-{
-  this_peer = *my_identity;
-  origin_start ();
-}
-
-
 /**
  * Main function of the test, run from scheduler.
  *
@@ -713,8 +727,10 @@ run (void *cls,
   cfg = c;
   end_badly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT,
                                                 &end_badly, NULL);
-  core = GNUNET_CORE_connecT (cfg, NULL,
-                             &core_connected, NULL, NULL, NULL);
+  GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer);
+
+  // Test 1 starts here
+  origin_start ();
 }