X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fpsyc%2Ftest_psyc.c;h=ba31d9329e0f0a96a11fbec5dca94b8710fe9e4d;hb=26d1b687ca01be01505b69ff48ae5d3e0cd4186e;hp=02b6d3d9a46ebdd556b82dd8ae0395037099bd9c;hpb=f1f603c7d0b3f03dca46a4f313472288eb080eb1;p=oweals%2Fgnunet.git diff --git a/src/psyc/test_psyc.c b/src/psyc/test_psyc.c index 02b6d3d9a..ba31d9329 100644 --- a/src/psyc/test_psyc.c +++ b/src/psyc/test_psyc.c @@ -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); }