summaryrefslogtreecommitdiff
path: root/src/mongo/transport/message_compressor_manager_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/transport/message_compressor_manager_test.cpp')
-rw-r--r--src/mongo/transport/message_compressor_manager_test.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/mongo/transport/message_compressor_manager_test.cpp b/src/mongo/transport/message_compressor_manager_test.cpp
index 53a057d5445..ffffebb0c2b 100644
--- a/src/mongo/transport/message_compressor_manager_test.cpp
+++ b/src/mongo/transport/message_compressor_manager_test.cpp
@@ -343,6 +343,26 @@ TEST(MessageCompressorManager, MessageSizeTooLarge) {
ASSERT_NOT_OK(status);
}
+TEST(MessageCompressorManager, MessageSizeTooSmall) {
+ auto registry = buildRegistry();
+ MessageCompressorManager compManager(&registry);
+
+ auto badMessageBuffer = SharedBuffer::allocate(128);
+ MsgData::View badMessage(badMessageBuffer.get());
+ badMessage.setId(1);
+ badMessage.setResponseToMsgId(0);
+ badMessage.setOperation(dbCompressed);
+ badMessage.setLen(128);
+
+ DataRangeCursor cursor(badMessage.data(), badMessage.data() + badMessage.dataLen());
+ cursor.writeAndAdvance<LittleEndian<int32_t>>(dbQuery);
+ cursor.writeAndAdvance<LittleEndian<int32_t>>(-1);
+ cursor.writeAndAdvance<LittleEndian<uint8_t>>(registry.getCompressor("noop")->getId());
+
+ auto status = compManager.decompressMessage(Message(badMessageBuffer), nullptr).getStatus();
+ ASSERT_NOT_OK(status);
+}
+
TEST(MessageCompressorManager, RuntMessage) {
auto registry = buildRegistry();
MessageCompressorManager compManager(&registry);