From 9c62a68e15c8f9a1121d4bb7934f842ab930fce7 Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 11 Dec 2019 18:25:47 +0800 Subject: [PATCH] For #1042, cover RTMP server response commands. --- trunk/src/protocol/srs_rtmp_stack.cpp | 2 +- trunk/src/utest/srs_utest_protostack.cpp | 82 ++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) diff --git a/trunk/src/protocol/srs_rtmp_stack.cpp b/trunk/src/protocol/srs_rtmp_stack.cpp index 7fd74fa3c..3c2c67ede 100644 --- a/trunk/src/protocol/srs_rtmp_stack.cpp +++ b/trunk/src/protocol/srs_rtmp_stack.cpp @@ -2698,7 +2698,7 @@ srs_error_t SrsRtmpServer::on_play_client_pause(int stream_id, bool is_pause) return srs_error_wrap(err, "send NetStream.Unpause.Notify"); } } - // StreanBegin + // StreamBegin if (true) { SrsUserControlPacket* pkt = new SrsUserControlPacket(); diff --git a/trunk/src/utest/srs_utest_protostack.cpp b/trunk/src/utest/srs_utest_protostack.cpp index 01adf60ee..3dbf21290 100644 --- a/trunk/src/utest/srs_utest_protostack.cpp +++ b/trunk/src/utest/srs_utest_protostack.cpp @@ -2048,3 +2048,85 @@ VOID TEST(ProtoStackTest, ServerRecursiveDepth) } } +VOID TEST(ProtoStackTest, ServerResponseCommands) +{ + srs_error_t err; + + // Start play. + if (true) { + MockBufferIO io; + SrsRtmpServer r(&io); + HELPER_EXPECT_SUCCESS(r.start_play(1)); + + if (true) { + MockBufferIO tio; + tio.in_buffer.append(&io.out_buffer); + + SrsProtocol p(&tio); + + SrsCommonMessage* msg = NULL; + SrsCallPacket* pkt = NULL; + + // onStatus(NetStream.Play.Reset) + HELPER_ASSERT_SUCCESS(p.expect_message(&msg, &pkt)); + srs_freep(msg); + srs_freep(pkt); + + // onStatus(NetStream.Play.Start) + HELPER_ASSERT_SUCCESS(p.expect_message(&msg, &pkt)); + srs_freep(msg); + srs_freep(pkt); + + // onStatus(NetStream.Data.Start) + SrsPacket* bpkt = NULL; + HELPER_ASSERT_SUCCESS(p.expect_message(&msg, &bpkt)); + srs_freep(msg); + srs_freep(bpkt); + } + } + + // Pause true. + if (true) { + MockBufferIO io; + SrsRtmpServer r(&io); + HELPER_EXPECT_SUCCESS(r.on_play_client_pause(1, true)); + + if (true) { + MockBufferIO tio; + tio.in_buffer.append(&io.out_buffer); + + SrsProtocol p(&tio); + + SrsCommonMessage* msg = NULL; + SrsCallPacket* pkt = NULL; + + // onStatus(NetStream.Pause.Notify) + HELPER_ASSERT_SUCCESS(p.expect_message(&msg, &pkt)); + srs_freep(msg); + srs_freep(pkt); + } + } + + // Pause false. + if (true) { + MockBufferIO io; + SrsRtmpServer r(&io); + HELPER_EXPECT_SUCCESS(r.on_play_client_pause(1, false)); + + if (true) { + MockBufferIO tio; + tio.in_buffer.append(&io.out_buffer); + + SrsProtocol p(&tio); + + SrsCommonMessage* msg = NULL; + SrsCallPacket* pkt = NULL; + + // onStatus(NetStream.Pause.Notify) + HELPER_ASSERT_SUCCESS(p.expect_message(&msg, &pkt)); + srs_freep(msg); + srs_freep(pkt); + } + } +} +