- clean up gns rest api
[oweals/gnunet.git] / src / psyc / test_psyc.c
index 02b6d3d9a46ebdd556b82dd8ae0395037099bd9c..ba31d9329e0f0a96a11fbec5dca94b8710fe9e4d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of GNUnet
- * (C) 2013 Christian Grothoff (and other contributing authors)
+ * Copyright (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
@@ -82,7 +82,7 @@ struct TransmitClosure
 
 struct TransmitClosure *tmit;
 
-uint8_t join_req_count;
+uint8_t join_req_count, end_count;
 
 enum
 {
@@ -105,6 +105,9 @@ enum
 void
 master_transmit ();
 
+void
+master_history_replay_latest ();
+
 
 void master_stopped (void *cls)
 {
@@ -197,6 +200,134 @@ end ()
 }
 
 
+void
+master_message_cb (void *cls, uint64_t message_id, uint32_t flags,
+                   const struct GNUNET_PSYC_MessageHeader *msg)
+{
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+              "Test #%d: Master got PSYC message fragment of size %u "
+              "belonging to message ID %" PRIu64 " with flags %x\n",
+              test, ntohs (msg->header.size), message_id, flags);
+  // FIXME
+}
+
+
+void
+master_message_part_cb (void *cls, uint64_t message_id,
+                        uint64_t data_offset, uint32_t flags,
+                        const struct GNUNET_MessageHeader *msg)
+{
+  if (NULL == msg)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Error while receiving message %" PRIu64 "\n", message_id);
+    return;
+  }
+
+  uint16_t type = ntohs (msg->type);
+  uint16_t size = ntohs (msg->size);
+
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+              "Test #%d: Master got message part of type %u and size %u "
+              "belonging to message ID %" PRIu64 " with flags %x\n",
+              test, type, size, message_id, flags);
+
+  switch (test)
+  {
+  case TEST_SLAVE_TRANSMIT:
+    if (GNUNET_PSYC_MESSAGE_REQUEST != flags)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  "Unexpected request flags: %x" PRIu32 "\n", flags);
+      GNUNET_assert (0);
+      return;
+    }
+    // FIXME: check rest of message
+
+    if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END == type)
+      master_transmit ();
+    break;
+
+  case TEST_MASTER_TRANSMIT:
+    if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END == type && 2 == ++end_count)
+      master_history_replay_latest ();
+    break;
+
+  case TEST_MASTER_HISTORY_REPLAY:
+  case TEST_MASTER_HISTORY_REPLAY_LATEST:
+    if (GNUNET_PSYC_MESSAGE_HISTORIC != flags)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  "Test #%d: Unexpected flags for historic message: %x" PRIu32 "\n",
+                  test, flags);
+      GNUNET_assert (0);
+      return;
+    }
+    break;
+
+  default:
+    GNUNET_assert (0);
+  }
+}
+
+
+void
+slave_message_cb (void *cls, uint64_t message_id, uint32_t flags,
+                  const struct GNUNET_PSYC_MessageHeader *msg)
+{
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+              "Test #%d: Slave got PSYC message fragment of size %u "
+              "belonging to message ID %" PRIu64 " with flags %x\n",
+              test, ntohs (msg->header.size), message_id, flags);
+  // FIXME
+}
+
+
+void
+slave_message_part_cb (void *cls, uint64_t message_id,
+                       uint64_t data_offset, uint32_t flags,
+                       const struct GNUNET_MessageHeader *msg)
+{
+  if (NULL == msg)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Error while receiving message " PRIu64 "\n", message_id);
+    return;
+  }
+
+  uint16_t type = ntohs (msg->type);
+  uint16_t size = ntohs (msg->size);
+
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+              "Test #%d: Slave got message part of type %u and size %u "
+              "belonging to message ID %" PRIu64 " with flags %x\n",
+              test, type, size, message_id, flags);
+
+  switch (test)
+  {
+  case TEST_MASTER_TRANSMIT:
+    if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END == type && 2 == ++end_count)
+      master_history_replay_latest ();
+    break;
+
+  case TEST_SLAVE_HISTORY_REPLAY:
+  case TEST_SLAVE_HISTORY_REPLAY_LATEST:
+    if (GNUNET_PSYC_MESSAGE_HISTORIC != flags)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  "Test #%d: Unexpected flags for historic message: %x" PRIu32 "\n",
+                  flags);
+      GNUNET_assert (0);
+      return;
+    }
+    break;
+
+  default:
+    GNUNET_assert (0);
+  }
+}
+
+
 void
 state_get_var (void *cls, const char *name, const void *value, size_t value_size)
 {
@@ -208,10 +339,12 @@ state_get_var (void *cls, const char *name, const void *value, size_t value_size
 /*** Slave state_get_prefix() ***/
 
 void
-slave_state_get_prefix_result (void *cls, int64_t result, const char *err_msg)
+slave_state_get_prefix_result (void *cls, int64_t result,
+                               const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "slave_state_get_prefix:\t%" PRId64 " (%s)\n", result, err_msg);
+              "slave_state_get_prefix:\t%" PRId64 " (%.s)\n",
+              result, err_msg_size, err_msg);
   // FIXME: GNUNET_assert (2 == result);
   end ();
 }
@@ -230,7 +363,8 @@ slave_state_get_prefix ()
 
 
 void
-master_state_get_prefix_result (void *cls, int64_t result, const char *err_msg)
+master_state_get_prefix_result (void *cls, int64_t result,
+                                const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "master_state_get_prefix:\t%" PRId64 " (%s)\n", result, err_msg);
@@ -252,10 +386,12 @@ master_state_get_prefix ()
 
 
 void
-slave_state_get_result (void *cls, int64_t result, const char *err_msg)
+slave_state_get_result (void *cls, int64_t result,
+                        const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "slave_state_get:\t%" PRId64 " (%s)\n", result, err_msg);
+              "slave_state_get:\t%" PRId64 " (%.*s)\n",
+              result, err_msg_size, err_msg);
   // FIXME: GNUNET_assert (2 == result);
   master_state_get_prefix ();
 }
@@ -274,10 +410,12 @@ slave_state_get ()
 
 
 void
-master_state_get_result (void *cls, int64_t result, const char *err_msg)
+master_state_get_result (void *cls, int64_t result,
+                         const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "master_state_get:\t%" PRId64 " (%s)\n", result, err_msg);
+              "master_state_get:\t%" PRId64 " (%.*s)\n",
+              result, err_msg_size, err_msg);
   // FIXME: GNUNET_assert (1 == result);
   slave_state_get ();
 }
@@ -295,10 +433,12 @@ master_state_get ()
 /*** Slave history_replay() ***/
 
 void
-slave_history_replay_result (void *cls, int64_t result, const char *err_msg)
+slave_history_replay_result (void *cls, int64_t result,
+                             const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "slave_history_replay:\t%" PRId64 " (%s)\n", result, err_msg);
+              "slave_history_replay:\t%" PRId64 " (%.*s)\n",
+              result, err_msg_size, err_msg);
   GNUNET_assert (9 == result);
 
   master_state_get ();
@@ -309,9 +449,11 @@ void
 slave_history_replay ()
 {
   test = TEST_SLAVE_HISTORY_REPLAY;
-  GNUNET_PSYC_channel_history_replay (slv_chn, 1, 1,
-                                      &slave_history_replay_result,
-                                      NULL);
+  GNUNET_PSYC_channel_history_replay (slv_chn, 1, 1, "",
+                                      GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
+                                      &slave_message_cb,
+                                      &slave_message_part_cb,
+                                      &slave_history_replay_result, NULL);
 }
 
 
@@ -319,10 +461,12 @@ slave_history_replay ()
 
 
 void
-master_history_replay_result (void *cls, int64_t result, const char *err_msg)
+master_history_replay_result (void *cls, int64_t result,
+                              const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "master_history_replay:\t%" PRId64 " (%s)\n", result, err_msg);
+              "master_history_replay:\t%" PRId64 " (%.*s)\n",
+              result, err_msg_size, err_msg);
   GNUNET_assert (9 == result);
 
   slave_history_replay ();
@@ -333,9 +477,11 @@ void
 master_history_replay ()
 {
   test = TEST_MASTER_HISTORY_REPLAY;
-  GNUNET_PSYC_channel_history_replay (mst_chn, 1, 1,
-                                      &master_history_replay_result,
-                                      NULL);
+  GNUNET_PSYC_channel_history_replay (mst_chn, 1, 1, "",
+                                      GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
+                                      &master_message_cb,
+                                      &master_message_part_cb,
+                                      &master_history_replay_result, NULL);
 }
 
 
@@ -343,10 +489,12 @@ master_history_replay ()
 
 
 void
-slave_history_replay_latest_result (void *cls, int64_t result, const char *err_msg)
+slave_history_replay_latest_result (void *cls, int64_t result,
+                                    const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "slave_history_replay_latest:\t%" PRId64 " (%s)\n", result, err_msg);
+              "slave_history_replay_latest:\t%" PRId64 " (%.*s)\n",
+              result, err_msg_size, err_msg);
   GNUNET_assert (9 == result);
 
   master_history_replay ();
@@ -357,7 +505,10 @@ void
 slave_history_replay_latest ()
 {
   test = TEST_SLAVE_HISTORY_REPLAY_LATEST;
-  GNUNET_PSYC_channel_history_replay_latest (slv_chn, 1,
+  GNUNET_PSYC_channel_history_replay_latest (slv_chn, 1, "",
+                                             GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
+                                             &slave_message_cb,
+                                             &slave_message_part_cb,
                                              &slave_history_replay_latest_result,
                                              NULL);
 }
@@ -367,10 +518,12 @@ slave_history_replay_latest ()
 
 
 void
-master_history_replay_latest_result (void *cls, int64_t result, const char *err_msg)
+master_history_replay_latest_result (void *cls, int64_t result,
+                                     const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "master_history_replay_latest:\t%" PRId64 " (%s)\n", result, err_msg);
+              "master_history_replay_latest:\t%" PRId64 " (%.*s)\n",
+              result, err_msg_size, err_msg);
   GNUNET_assert (9 == result);
 
   slave_history_replay_latest ();
@@ -381,138 +534,15 @@ void
 master_history_replay_latest ()
 {
   test = TEST_MASTER_HISTORY_REPLAY_LATEST;
-  GNUNET_PSYC_channel_history_replay_latest (mst_chn, 1,
+  GNUNET_PSYC_channel_history_replay_latest (mst_chn, 1, "",
+                                             GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
+                                             &master_message_cb,
+                                             &master_message_part_cb,
                                              &master_history_replay_latest_result,
                                              NULL);
 }
 
 
-void
-master_message_cb (void *cls, uint64_t message_id, uint32_t flags,
-                   const struct GNUNET_PSYC_MessageHeader *msg)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "Test #%d: Master got PSYC message fragment of size %u "
-              "belonging to message ID %" PRIu64 " with flags %x\n",
-              test, ntohs (msg->header.size), message_id, flags);
-  // FIXME
-}
-
-
-void
-master_message_part_cb (void *cls, uint64_t message_id,
-                        uint64_t data_offset, uint32_t flags,
-                        const struct GNUNET_MessageHeader *msg)
-{
-  if (NULL == msg)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Error while receiving message %" PRIu64 "\n", message_id);
-    return;
-  }
-
-  uint16_t type = ntohs (msg->type);
-  uint16_t size = ntohs (msg->size);
-
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "Test #%d: Master got message part of type %u and size %u "
-              "belonging to message ID %" PRIu64 " with flags %x\n",
-              test, type, size, message_id, flags);
-
-  switch (test)
-  {
-  case TEST_SLAVE_TRANSMIT:
-    if (GNUNET_PSYC_MESSAGE_REQUEST != flags)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Unexpected request flags: %x" PRIu32 "\n", flags);
-      GNUNET_assert (0);
-      return;
-    }
-    // FIXME: check rest of message
-
-    if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END == type)
-      master_transmit ();
-    break;
-
-  case TEST_MASTER_TRANSMIT:
-    break;
-
-  case TEST_MASTER_HISTORY_REPLAY:
-  case TEST_MASTER_HISTORY_REPLAY_LATEST:
-    if (GNUNET_PSYC_MESSAGE_HISTORIC != flags)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Test #%d: Unexpected flags for historic message: %x" PRIu32 "\n",
-                  flags);
-      GNUNET_assert (0);
-      return;
-    }
-    break;
-
-  default:
-    GNUNET_assert (0);
-  }
-}
-
-
-void
-slave_message_cb (void *cls, uint64_t message_id, uint32_t flags,
-                  const struct GNUNET_PSYC_MessageHeader *msg)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "Test #%d: Slave got PSYC message fragment of size %u "
-              "belonging to message ID %" PRIu64 " with flags %x\n",
-              test, ntohs (msg->header.size), message_id, flags);
-  // FIXME
-}
-
-
-void
-slave_message_part_cb (void *cls, uint64_t message_id,
-                       uint64_t data_offset, uint32_t flags,
-                       const struct GNUNET_MessageHeader *msg)
-{
-  if (NULL == msg)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Error while receiving message " PRIu64 "\n", message_id);
-    return;
-  }
-
-  uint16_t type = ntohs (msg->type);
-  uint16_t size = ntohs (msg->size);
-
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "Test #%d: Slave got message part of type %u and size %u "
-              "belonging to message ID %" PRIu64 " with flags %x\n",
-              test, type, size, message_id, flags);
-
-  switch (test)
-  {
-  case TEST_MASTER_TRANSMIT:
-    if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END == type)
-      master_history_replay_latest ();
-    break;
-
-  case TEST_SLAVE_HISTORY_REPLAY:
-  case TEST_SLAVE_HISTORY_REPLAY_LATEST:
-    if (GNUNET_PSYC_MESSAGE_HISTORIC != flags)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Test #%d: Unexpected flags for historic message: %x" PRIu32 "\n",
-                  flags);
-      GNUNET_assert (0);
-      return;
-    }
-    break;
-
-  default:
-    GNUNET_assert (0);
-  }
-}
-
-
 void
 transmit_resume (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
@@ -665,27 +695,31 @@ slave_transmit ()
   tmit->data[0] = "slave test";
   tmit->data_count = 1;
   tmit->slv_tmit
-    = GNUNET_PSYC_slave_transmit (slv, "_request_test", tmit_notify_mod,
-                                  tmit_notify_data, tmit,
+    = GNUNET_PSYC_slave_transmit (slv, "_request_test", &tmit_notify_mod,
+                                  &tmit_notify_data, tmit,
                                   GNUNET_PSYC_SLAVE_TRANSMIT_NONE);
 }
 
 
 void
-slave_remove_cb (void *cls, int64_t result, const char *err_msg)
+slave_remove_cb (void *cls, int64_t result,
+                 const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "slave_remove:\t%" PRId64 " (%s)\n", result, err_msg);
+              "slave_remove:\t%" PRId64 " (%.*s)\n",
+              result, err_msg_size, err_msg);
 
   slave_transmit ();
 }
 
 
 void
-slave_add_cb (void *cls, int64_t result, const char *err_msg)
+slave_add_cb (void *cls, int64_t result,
+              const void *err_msg, uint16_t err_msg_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "slave_add:\t%" PRId64 " (%s)\n", result, err_msg);
+              "slave_add:\t%" PRId64 " (%.*s)\n",
+              result, err_msg_size, err_msg);
 
   struct GNUNET_PSYC_Channel *chn = cls;
   GNUNET_PSYC_channel_slave_remove (chn, &slave_pub_key, 2,
@@ -775,6 +809,8 @@ master_transmit ()
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Master sending message to all.\n");
   test = TEST_MASTER_TRANSMIT;
+  end_count = 0;
+
   uint32_t i, j;
 
   char *name_max = "_test_max";
@@ -816,8 +852,8 @@ master_transmit ()
   tmit->data_delay[1] = 3;
   tmit->data_count = 4;
   tmit->mst_tmit
-    = GNUNET_PSYC_master_transmit (mst, "_notice_test", tmit_notify_mod,
-                                   tmit_notify_data, tmit,
+    = GNUNET_PSYC_master_transmit (mst, "_notice_test", &tmit_notify_mod,
+                                   &tmit_notify_data, tmit,
                                    GNUNET_PSYC_MASTER_TRANSMIT_INC_GROUP_GEN);
 }