From 0c468f64d90c9d25107e15d78a198e28d2c84a2a Mon Sep 17 00:00:00 2001 From: Lime787 Date: Thu, 10 Apr 2025 00:17:30 +0530 Subject: [PATCH 1/5] commented lines in tests cmakefile --- tests/CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7778ced..65b88e1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,11 +15,11 @@ add_raven_test(src/simple_data_transfer.cpp) add_raven_test(src/chunk_transfer.cpp) add_raven_test(src/deserializer_tests.cpp) -find_package(LTTngUST REQUIRED) -MESSAGE(STATUS "LTTNGUST_INCLUDE_DIRS: ${LTTNGUST_INCLUDE_DIRS}") -add_raven_test(perf/chunk_transfer_perf.cpp perf/chunk_transfer_perf_lttng.c) -target_link_libraries(chunk_transfer_perf PRIVATE Boost::program_options Boost::log ${LTTNGUST_LIBRARIES}) -target_include_directories(chunk_transfer_perf PRIVATE ${LTTNGUST_INCLUDE_DIRS} perf/) -target_compile_definitions(chunk_transfer_perf PRIVATE -DBOOST_LOG_DYN_LINK) +# find_package(LTTngUST REQUIRED) +# MESSAGE(STATUS "LTTNGUST_INCLUDE_DIRS: ${LTTNGUST_INCLUDE_DIRS}") +# add_raven_test(perf/chunk_transfer_perf.cpp perf/chunk_transfer_perf_lttng.c) +# target_link_libraries(chunk_transfer_perf PRIVATE Boost::program_options Boost::log ${LTTNGUST_LIBRARIES}) +# target_include_directories(chunk_transfer_perf PRIVATE ${LTTNGUST_INCLUDE_DIRS} perf/) +# target_compile_definitions(chunk_transfer_perf PRIVATE -DBOOST_LOG_DYN_LINK) -add_raven_test(perf/timer_wheel.cpp) +# add_raven_test(perf/timer_wheel.cpp) From fd5eeb5d9e7af3e614c19b0e518a3d318f18a92b Mon Sep 17 00:00:00 2001 From: Lime787 Date: Thu, 10 Apr 2025 00:35:42 +0530 Subject: [PATCH 2/5] added trackStatusRequest --- .../serialization/deserialization_impl.hpp | 21 ++++++ raven/includes/serialization/messages.hpp | 19 ++++- .../serialization/serialization_impl.hpp | 1 + raven/src/serialization_impl.cpp | 27 +++++++ ...serialize_track_status_request_mesaage.cpp | 71 +++++++++++++++++++ 5 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 tests/serialization/serialize_track_status_request_mesaage.cpp diff --git a/raven/includes/serialization/deserialization_impl.hpp b/raven/includes/serialization/deserialization_impl.hpp index f71d93a..34a3bcf 100644 --- a/raven/includes/serialization/deserialization_impl.hpp +++ b/raven/includes/serialization/deserialization_impl.hpp @@ -348,4 +348,25 @@ deserialize(rvn::SubscribeErrorMessage& subscribeErrorMessage, ConstSpan& span, return deserializedBytes; } +template +static inline deserialize_return_t +deserialize(rvn::TrackStatusRequestMessage& trackStatusRequestMessage, ConstSpan& span, NetworkEndian = network_endian) +{ + std::uint64_t deserializedBytes = 0; + + std::uint64_t trackNameSpaceLength; + deserializedBytes += deserialize(trackNameSpaceLength, span); + + trackStatusRequestMessage.trackNamespace_ = std::string(span.data(), span.data() + trackNameSpaceLength); + span.advance_begin(trackNameSpaceLength); + + std::uint64_t trackNameLength; + deserializedBytes += deserialize(trackNameLength, span); + + trackStatusRequestMessage.trackName_ = std::string(span.data(), span.data() + trackNameLength); + span.advance_begin(trackNameLength); + + return deserializedBytes; +} + } // namespace rvn::serialization::detail diff --git a/raven/includes/serialization/messages.hpp b/raven/includes/serialization/messages.hpp index 56f40e0..d0ba872 100644 --- a/raven/includes/serialization/messages.hpp +++ b/raven/includes/serialization/messages.hpp @@ -431,10 +431,23 @@ struct AnnounceCancelMessage Track Name (b), } */ -struct TrackStatusRequestMessage +struct TrackStatusRequestMessage : public ControlMessageBase { - BinaryBufferData trackNamespace; - BinaryBufferData trackName; + std::string trackNamespace_; + std::string trackName_; + + TrackStatusRequestMessage() + : ControlMessageBase(MoQtMessageType::TRACK_STATUS_REQUEST) + { + } + + bool operator==(const TrackStatusRequestMessage&) const = default; + + friend inline std::ostream& operator<<(std::ostream& os, const TrackStatusRequestMessage& msg) + { + os << "TrackNamespace: " << msg.trackNamespace_ << "TrackName: " << msg.trackName_; + return os; + } }; enum class ObjectStatus : iType diff --git a/raven/includes/serialization/serialization_impl.hpp b/raven/includes/serialization/serialization_impl.hpp index ccee361..028f3e0 100644 --- a/raven/includes/serialization/serialization_impl.hpp +++ b/raven/includes/serialization/serialization_impl.hpp @@ -143,6 +143,7 @@ template serialize_return_t serialize(ds::chunk& c, const StreamHeaderSubgroupObject& msg); serialize_return_t serialize(ds::chunk& c, const rvn::SubscribeErrorMessage& subscribeErrorMessage); serialize_return_t serialize(ds::chunk& c, const rvn::BatchSubscribeMessage& batchSubscribeMessage); + serialize_return_t serialize(ds::chunk& c, const rvn::TrackStatusRequestMessage& trackStatusRequestMessage); /////////////////////////////////////////////////////////////////////////////////////////////// // clang-format on } // namespace rvn::serialization::detail diff --git a/raven/src/serialization_impl.cpp b/raven/src/serialization_impl.cpp index 4c07fe0..89a57d4 100644 --- a/raven/src/serialization_impl.cpp +++ b/raven/src/serialization_impl.cpp @@ -306,4 +306,31 @@ serialize(ds::chunk& c, const rvn::BatchSubscribeMessage& batchSubscribeMessage) return headerLen + msgLen; } + +serialize_return_t +serialize(ds::chunk& c, const rvn::TrackStatusRequestMessage& trackStatusRequestMessage) +{ + std::uint64_t msgLen = 0; + //we need to find out the length of the message we would be serializing + { + msgLen += mock_serialize(trackStatusRequestMessage.trackNamespace_.size()); + msgLen += trackStatusRequestMessage.trackNamespace_.size(); + + msgLen += mock_serialize(trackStatusRequestMessage.trackName_.size()); + msgLen += trackStatusRequestMessage.trackName_.size(); + } + //Header + std::uint64_t headerLen = 0; + headerLen += serialize(c, utils::to_underlying(MoQtMessageType::TRACK_STATUS_REQUEST)); + headerLen += serialize(c, msgLen); + + //Body + serialize(c, trackStatusRequestMessage.trackNamespace_.size()); + c.append(trackStatusRequestMessage.trackNamespace_.data(), trackStatusRequestMessage.trackNamespace_.size()); + + serialize(c, trackStatusRequestMessage.trackName_.size()); + c.append(trackStatusRequestMessage.trackName_.data(), trackStatusRequestMessage.trackName_.size()); + + return headerLen + msgLen; +} } // namespace rvn::serialization::detail diff --git a/tests/serialization/serialize_track_status_request_mesaage.cpp b/tests/serialization/serialize_track_status_request_mesaage.cpp new file mode 100644 index 0000000..f66027b --- /dev/null +++ b/tests/serialization/serialize_track_status_request_mesaage.cpp @@ -0,0 +1,71 @@ +#include "test_serialization_utils.hpp" +#include "utilities.hpp" +#include +#include +#include +#include + +using namespace rvn; +using namespace rvn::serialization; + + +void test1() +{ + TrackStatusRequestMessage msg; + msg.trackNamespace_ = "h"; + msg.trackName_ = "i"; + + ds::chunk c; + serialization::detail::serialize(c, msg); + // clang-format off + // [ 00001101 ] [ 00000100 ] [ 00000001 01101000 ] [ 00000001 01101001 ] + // (quic_msg_type: 0xD) (msglen = 4) (trackNameSpace) (trackName) + std::string expectedSerializationString = "[00001101][00000100][00000001 01101000][00000001 01101001]"; + // clang-format on + + auto expectedSerialization = binary_string_to_vector(expectedSerializationString); + utils::ASSERT_LOG_THROW(c.size() == expectedSerialization.size(), "Size mismatch\n", + "Expected size: ", expectedSerialization.size(), + "\n", "Actual size: ", c.size(), "\n"); + for (std::size_t i = 0; i < c.size(); i++) + utils::ASSERT_LOG_THROW(c[i] == expectedSerialization[i], "Mismatch at index: ", i, + "\n", "Expected: ", expectedSerialization[i], + "\n", "Actual: ", c[i], "\n"); + + ds::ChunkSpan span(c); + + ControlMessageHeader header; + serialization::detail::deserialize(header, span); + + utils::ASSERT_LOG_THROW(header.messageType_ == MoQtMessageType::TRACK_STATUS_REQUEST, + "Message type mismatch\n", "Expected: ", + utils::to_underlying(MoQtMessageType::TRACK_STATUS_REQUEST), + "\n", "Actual: ", utils::to_underlying(header.messageType_), + "\n"); + + TrackStatusRequestMessage deserializedMsg; + serialization::detail::deserialize(deserializedMsg, span); + + utils::ASSERT_LOG_THROW(msg == deserializedMsg, "Deserialization failed\n", + "Expected: ", msg, "\n", "Actual: ", deserializedMsg, "\n"); +} + +void tests() +{ + try + { + test1(); + } + catch (const std::exception& e) + { + std::cerr << "Test failed\n"; + std::cerr << e.what() << std::endl; + } +} + + +int main() +{ + tests(); + return 0; +} \ No newline at end of file From 3ad5c50016fd7ad0ba5c15c30fb7504e762e6fe7 Mon Sep 17 00:00:00 2001 From: Lime787 Date: Thu, 10 Apr 2025 02:02:20 +0530 Subject: [PATCH 3/5] added tsr test to CMakeLists.txt --- tests/serialization/CMakeLists.txt | 1 + ...st_mesaage.cpp => serialize_track_status_request_message.cpp} | 0 2 files changed, 1 insertion(+) rename tests/serialization/{serialize_track_status_request_mesaage.cpp => serialize_track_status_request_message.cpp} (100%) diff --git a/tests/serialization/CMakeLists.txt b/tests/serialization/CMakeLists.txt index 1df850c..e22ecfd 100644 --- a/tests/serialization/CMakeLists.txt +++ b/tests/serialization/CMakeLists.txt @@ -5,3 +5,4 @@ add_raven_test(serialize_server_setup_message.cpp) add_raven_test(serialize_subscribe_message.cpp) add_raven_test(serialize_subscribe_error_message.cpp) add_raven_test(serialize_batch_subscribe_message.cpp) +add_raven_test(serialize_track_status_request_message.cpp) \ No newline at end of file diff --git a/tests/serialization/serialize_track_status_request_mesaage.cpp b/tests/serialization/serialize_track_status_request_message.cpp similarity index 100% rename from tests/serialization/serialize_track_status_request_mesaage.cpp rename to tests/serialization/serialize_track_status_request_message.cpp From 58f22b01d2a5d5147133dbe3cc9230abe233cf5d Mon Sep 17 00:00:00 2001 From: Lime787 Date: Fri, 11 Apr 2025 15:55:03 +0530 Subject: [PATCH 4/5] formatted the changes --- .../serialization/deserialization_impl.hpp | 10 +++++--- raven/includes/serialization/messages.hpp | 7 +++--- raven/src/serialization_impl.cpp | 23 +++++++++++-------- ...serialize_track_status_request_message.cpp | 5 ++-- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/raven/includes/serialization/deserialization_impl.hpp b/raven/includes/serialization/deserialization_impl.hpp index 34a3bcf..8ded62e 100644 --- a/raven/includes/serialization/deserialization_impl.hpp +++ b/raven/includes/serialization/deserialization_impl.hpp @@ -350,20 +350,24 @@ deserialize(rvn::SubscribeErrorMessage& subscribeErrorMessage, ConstSpan& span, template static inline deserialize_return_t -deserialize(rvn::TrackStatusRequestMessage& trackStatusRequestMessage, ConstSpan& span, NetworkEndian = network_endian) +deserialize(rvn::TrackStatusRequestMessage& trackStatusRequestMessage, + ConstSpan& span, + NetworkEndian = network_endian) { std::uint64_t deserializedBytes = 0; std::uint64_t trackNameSpaceLength; deserializedBytes += deserialize(trackNameSpaceLength, span); - trackStatusRequestMessage.trackNamespace_ = std::string(span.data(), span.data() + trackNameSpaceLength); + trackStatusRequestMessage.trackNamespace_ = + std::string(span.data(), span.data() + trackNameSpaceLength); span.advance_begin(trackNameSpaceLength); std::uint64_t trackNameLength; deserializedBytes += deserialize(trackNameLength, span); - trackStatusRequestMessage.trackName_ = std::string(span.data(), span.data() + trackNameLength); + trackStatusRequestMessage.trackName_ = + std::string(span.data(), span.data() + trackNameLength); span.advance_begin(trackNameLength); return deserializedBytes; diff --git a/raven/includes/serialization/messages.hpp b/raven/includes/serialization/messages.hpp index d0ba872..a9e0c53 100644 --- a/raven/includes/serialization/messages.hpp +++ b/raven/includes/serialization/messages.hpp @@ -436,14 +436,15 @@ struct TrackStatusRequestMessage : public ControlMessageBase(trackStatusRequestMessage.trackNamespace_.size()); + msgLen += mock_serialize( + trackStatusRequestMessage.trackNamespace_.size()); msgLen += trackStatusRequestMessage.trackNamespace_.size(); - msgLen += mock_serialize(trackStatusRequestMessage.trackName_.size()); + msgLen += + mock_serialize(trackStatusRequestMessage.trackName_.size()); msgLen += trackStatusRequestMessage.trackName_.size(); } - //Header + // Header std::uint64_t headerLen = 0; - headerLen += serialize(c, utils::to_underlying(MoQtMessageType::TRACK_STATUS_REQUEST)); + headerLen += + serialize(c, utils::to_underlying(MoQtMessageType::TRACK_STATUS_REQUEST)); headerLen += serialize(c, msgLen); - //Body + // Body serialize(c, trackStatusRequestMessage.trackNamespace_.size()); - c.append(trackStatusRequestMessage.trackNamespace_.data(), trackStatusRequestMessage.trackNamespace_.size()); + c.append(trackStatusRequestMessage.trackNamespace_.data(), + trackStatusRequestMessage.trackNamespace_.size()); serialize(c, trackStatusRequestMessage.trackName_.size()); - c.append(trackStatusRequestMessage.trackName_.data(), trackStatusRequestMessage.trackName_.size()); + c.append(trackStatusRequestMessage.trackName_.data(), + trackStatusRequestMessage.trackName_.size()); return headerLen + msgLen; } diff --git a/tests/serialization/serialize_track_status_request_message.cpp b/tests/serialization/serialize_track_status_request_message.cpp index f66027b..bd22ae7 100644 --- a/tests/serialization/serialize_track_status_request_message.cpp +++ b/tests/serialization/serialize_track_status_request_message.cpp @@ -39,9 +39,8 @@ void test1() utils::ASSERT_LOG_THROW(header.messageType_ == MoQtMessageType::TRACK_STATUS_REQUEST, "Message type mismatch\n", "Expected: ", - utils::to_underlying(MoQtMessageType::TRACK_STATUS_REQUEST), - "\n", "Actual: ", utils::to_underlying(header.messageType_), - "\n"); + utils::to_underlying(MoQtMessageType::TRACK_STATUS_REQUEST), "\n", + "Actual: ", utils::to_underlying(header.messageType_), "\n"); TrackStatusRequestMessage deserializedMsg; serialization::detail::deserialize(deserializedMsg, span); From 041e090f4ab72366420ed205f90aaa03a19674bd Mon Sep 17 00:00:00 2001 From: Lime787 Date: Sat, 12 Apr 2025 17:18:27 +0530 Subject: [PATCH 5/5] un-commented lines in CMakeLists in tests --- tests/CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 65b88e1..7778ced 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,11 +15,11 @@ add_raven_test(src/simple_data_transfer.cpp) add_raven_test(src/chunk_transfer.cpp) add_raven_test(src/deserializer_tests.cpp) -# find_package(LTTngUST REQUIRED) -# MESSAGE(STATUS "LTTNGUST_INCLUDE_DIRS: ${LTTNGUST_INCLUDE_DIRS}") -# add_raven_test(perf/chunk_transfer_perf.cpp perf/chunk_transfer_perf_lttng.c) -# target_link_libraries(chunk_transfer_perf PRIVATE Boost::program_options Boost::log ${LTTNGUST_LIBRARIES}) -# target_include_directories(chunk_transfer_perf PRIVATE ${LTTNGUST_INCLUDE_DIRS} perf/) -# target_compile_definitions(chunk_transfer_perf PRIVATE -DBOOST_LOG_DYN_LINK) +find_package(LTTngUST REQUIRED) +MESSAGE(STATUS "LTTNGUST_INCLUDE_DIRS: ${LTTNGUST_INCLUDE_DIRS}") +add_raven_test(perf/chunk_transfer_perf.cpp perf/chunk_transfer_perf_lttng.c) +target_link_libraries(chunk_transfer_perf PRIVATE Boost::program_options Boost::log ${LTTNGUST_LIBRARIES}) +target_include_directories(chunk_transfer_perf PRIVATE ${LTTNGUST_INCLUDE_DIRS} perf/) +target_compile_definitions(chunk_transfer_perf PRIVATE -DBOOST_LOG_DYN_LINK) -# add_raven_test(perf/timer_wheel.cpp) +add_raven_test(perf/timer_wheel.cpp)