Skip to content

Commit a6bca0b

Browse files
committed
refactor: apply changes from review
Signed-off-by: Jose Faria <[email protected]>
1 parent 13b2456 commit a6bca0b

File tree

4 files changed

+14
-28
lines changed

4 files changed

+14
-28
lines changed

rosbag2_cpp/src/rosbag2_cpp/cache/circular_message_cache.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,8 @@ CircularMessageCache::~CircularMessageCache()
4242

4343
bool CircularMessageCache::push(std::shared_ptr<const rosbag2_storage::SerializedBagMessage> msg)
4444
{
45-
if (msg == nullptr) {
46-
return false;
47-
}
48-
4945
std::lock_guard<std::mutex> cache_lock(producer_buffer_mutex_);
50-
producer_buffer_->push(msg);
51-
// Always return true since circular message cache drops old messages by design and it
52-
// shouldn't be counted as a lost messages.
53-
return true;
46+
return producer_buffer_->push(msg);
5447
}
5548

5649
std::shared_ptr<CacheBufferInterface> CircularMessageCache::get_consumer_buffer()

rosbag2_cpp/src/rosbag2_cpp/cache/message_cache_circular_buffer.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,14 @@ MessageCacheCircularBuffer::MessageCacheCircularBuffer(size_t max_cache_size)
3232

3333
bool MessageCacheCircularBuffer::push(CacheBufferInterface::buffer_element_t msg)
3434
{
35-
if (msg == nullptr) {
35+
if (!msg || !msg->serialized_data) {
36+
ROSBAG2_CPP_LOG_ERROR("Attempted to push null message into circular buffer. Dropping message!");
3637
return false;
3738
}
3839

3940
// Drop message if it exceeds the buffer size
4041
if (msg->serialized_data->buffer_length > max_bytes_size_) {
41-
ROSBAG2_CPP_LOG_WARN_STREAM("Last message exceeds snapshot buffer size. Dropping message!");
42+
ROSBAG2_CPP_LOG_WARN("Last message exceeds snapshot buffer size. Dropping message!");
4243
return false;
4344
}
4445

rosbag2_cpp/test/rosbag2_cpp/test_circular_message_cache.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,12 @@ TEST_F(CircularMessageCacheTest, circular_message_cache_ensure_empty) {
133133
EXPECT_THAT(circular_message_cache->get_consumer_buffer()->size(), Eq(0u));
134134
circular_message_cache->release_consumer_buffer();
135135
}
136+
137+
TEST_F(CircularMessageCacheTest, circular_message_cache_rejects_null_message) {
138+
auto circular_message_cache_ = std::make_shared<rosbag2_cpp::cache::CircularMessageCache>(
139+
cache_size_);
140+
141+
bool result = true;
142+
ASSERT_NO_THROW(result = circular_message_cache_->push(nullptr));
143+
EXPECT_FALSE(result);
144+
}

rosbag2_cpp/test/rosbag2_cpp/test_message_cache.cpp

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// limitations under the License.
1414

1515
#include <gmock/gmock.h>
16-
#include <gtest/gtest.h>
16+
1717
#include <chrono>
1818
#include <numeric>
1919
#include <memory>
@@ -23,14 +23,12 @@
2323
#include <vector>
2424
#include <thread>
2525

26-
#include "rosbag2_cpp/cache/message_cache_circular_buffer.hpp"
2726
#include "rosbag2_storage/ros_helper.hpp"
2827
#include "rosbag2_storage/serialized_bag_message.hpp"
2928

3029
#include "mock_cache_consumer.hpp"
3130
#include "mock_message_cache.hpp"
3231

33-
3432
using namespace testing; // NOLINT
3533

3634
namespace
@@ -107,18 +105,3 @@ TEST_F(MessageCacheTest, message_cache_writes_full_producer_buffer) {
107105
mock_cache_consumer->stop();
108106
EXPECT_EQ(consumed_message_count, message_count - should_be_dropped_count);
109107
}
110-
111-
class MessageCacheCircularBufferTest : public testing::Test {
112-
protected:
113-
MessageCacheCircularBufferTest()
114-
: buffer_(1024) {}
115-
rosbag2_cpp::cache::MessageCacheCircularBuffer buffer_;
116-
};
117-
118-
TEST_F(MessageCacheCircularBufferTest, PushNullptrCausesCrash) {
119-
bool result = true;
120-
ASSERT_NO_THROW({
121-
result = buffer_.push(nullptr);
122-
});
123-
EXPECT_FALSE(result);
124-
}

0 commit comments

Comments
 (0)