From 6eab86644e04771196c9548c7ad3afb49ed308e2 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 19 Nov 2019 18:18:43 +0800 Subject: [PATCH] Cover protocol stack RTMP. 3.0.63 --- trunk/src/utest/srs_utest_protostack.cpp | 71 +++++++++++++++++++++++- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/trunk/src/utest/srs_utest_protostack.cpp b/trunk/src/utest/srs_utest_protostack.cpp index f5992d9af..30076a6e1 100644 --- a/trunk/src/utest/srs_utest_protostack.cpp +++ b/trunk/src/utest/srs_utest_protostack.cpp @@ -445,7 +445,7 @@ VOID TEST(ProtoStackTest, OnDecodeMessages) } } -SrsCommonMessage* _mock_create_message(char* bytes, int size, int stream_id) +SrsCommonMessage* _create_amf0(char* bytes, int size, int stream_id) { SrsCommonMessage* msg = new SrsCommonMessage(); msg->header.initialize_amf0_script(size, stream_id); @@ -464,7 +464,7 @@ VOID TEST(ProtoStackTest, OnDecodeMessages2) SrsProtocol p(&io); uint8_t bytes[] = {0x17, 0x02, 0x00, 0x01, 's', 0x00, 0,0,0,0,0,0,0,0, 0x03,0,0,9}; - SrsCommonMessage* msg = _mock_create_message((char*)bytes, sizeof(bytes), 1); + SrsCommonMessage* msg = _create_amf0((char*)bytes, sizeof(bytes), 1); SrsAutoFree(SrsCommonMessage, msg); msg->header.message_type = RTMP_MSG_AMF3CommandMessage; @@ -481,7 +481,7 @@ VOID TEST(ProtoStackTest, OnDecodeMessages2) SrsProtocol p(&io); uint8_t bytes[] = {0x17, 0x02, 0x00, 0x01, 's'}; - SrsCommonMessage* msg = _mock_create_message((char*)bytes, sizeof(bytes), 1); + SrsCommonMessage* msg = _create_amf0((char*)bytes, sizeof(bytes), 1); SrsAutoFree(SrsCommonMessage, msg); msg->header.message_type = RTMP_MSG_AMF3CommandMessage; @@ -490,5 +490,70 @@ VOID TEST(ProtoStackTest, OnDecodeMessages2) HELPER_EXPECT_FAILED(p.decode_message(msg, &pkt)); } + + if (true) { + MockBufferIO io; + SrsProtocol p(&io); + + uint8_t bytes[] = {0x00}; + SrsCommonMessage* msg = _create_amf0((char*)bytes, sizeof(bytes), 1); + SrsAutoFree(SrsCommonMessage, msg); + msg->header.message_type = 0xff; + + SrsPacket* pkt; + SrsAutoFree(SrsPacket, pkt); + + HELPER_EXPECT_SUCCESS(p.decode_message(msg, &pkt)); + } + + if (true) { + MockBufferIO io; + SrsProtocol p(&io); + + uint8_t bytes[] = {0x02, 0x00, 0x01, 's'}; + SrsCommonMessage* msg = _create_amf0((char*)bytes, sizeof(bytes), 1); + SrsAutoFree(SrsCommonMessage, msg); + msg->header.message_type = RTMP_MSG_AMF0DataMessage; + + SrsPacket* pkt; + SrsAutoFree(SrsPacket, pkt); + + HELPER_EXPECT_SUCCESS(p.decode_message(msg, &pkt)); + } +} + +VOID TEST(ProtoStackTest, OnDecodeMessages3) +{ + srs_error_t err; + + if (true) { + MockBufferIO io; + SrsProtocol p(&io); + + uint8_t bytes[] = {0x02, 0x00, 0x07, '_', 'r', 'e', 's', 'u', 'l', 't'}; + SrsCommonMessage* msg = _create_amf0((char*)bytes, sizeof(bytes), 1); + SrsAutoFree(SrsCommonMessage, msg); + msg->header.message_type = RTMP_MSG_AMF0DataMessage; + + SrsPacket* pkt; + SrsAutoFree(SrsPacket, pkt); + + HELPER_EXPECT_FAILED(p.decode_message(msg, &pkt)); + } + + if (true) { + MockBufferIO io; + SrsProtocol p(&io); + + uint8_t bytes[] = {0x17, 0x02, 0x00, 0x07, '_', 'r', 'e', 's', 'u', 'l', 't'}; + SrsCommonMessage* msg = _create_amf0((char*)bytes, sizeof(bytes), 1); + SrsAutoFree(SrsCommonMessage, msg); + msg->header.message_type = RTMP_MSG_AMF0DataMessage; + + SrsPacket* pkt; + SrsAutoFree(SrsPacket, pkt); + + HELPER_EXPECT_FAILED(p.decode_message(msg, &pkt)); + } }