| /* |
| * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include "webrtc/voice_engine/include/voe_network.h" |
| |
| #include "webrtc/test/gtest.h" |
| #include "webrtc/voice_engine/include/voe_errors.h" |
| #include "webrtc/voice_engine/voice_engine_fixture.h" |
| |
| namespace webrtc { |
| |
| enum { |
| kMinValidSizeOfRtcpPacketInBytes = 4, |
| kMinValidSizeOfRtpPacketInBytes = 12, |
| kMaxValidSizeOfRtpPacketInBytes = 1292 |
| }; |
| |
| // A packet with a valid header for both RTP and RTCP. |
| // Methods that are tested in this file are checking only packet header. |
| static const uint8_t kPacket[kMinValidSizeOfRtpPacketInBytes] = {0x80}; |
| static const uint8_t kPacketJunk[kMinValidSizeOfRtpPacketInBytes] = {}; |
| |
| static const int kNonExistingChannel = 1234; |
| |
| class VoENetworkTest : public VoiceEngineFixture { |
| protected: |
| int CreateChannelAndRegisterExternalTransport() { |
| EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr)); |
| int channelID = base_->CreateChannel(); |
| EXPECT_NE(channelID, -1); |
| EXPECT_EQ(0, network_->RegisterExternalTransport(channelID, transport_)); |
| return channelID; |
| } |
| }; |
| |
| TEST_F(VoENetworkTest, RegisterAndDeRegisterExternalTransport) { |
| int channelID = CreateChannelAndRegisterExternalTransport(); |
| EXPECT_EQ(0, network_->DeRegisterExternalTransport(channelID)); |
| } |
| |
| TEST_F(VoENetworkTest, |
| RegisterExternalTransportOnNonExistingChannelShouldFail) { |
| EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr)); |
| EXPECT_NE( |
| 0, network_->RegisterExternalTransport(kNonExistingChannel, transport_)); |
| } |
| |
| TEST_F(VoENetworkTest, |
| DeRegisterExternalTransportOnNonExistingChannelShouldFail) { |
| EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr)); |
| EXPECT_NE(0, network_->DeRegisterExternalTransport(kNonExistingChannel)); |
| } |
| |
| TEST_F(VoENetworkTest, DeRegisterExternalTransportBeforeRegister) { |
| EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr)); |
| int channelID = base_->CreateChannel(); |
| EXPECT_NE(channelID, -1); |
| EXPECT_EQ(0, network_->DeRegisterExternalTransport(channelID)); |
| } |
| |
| TEST_F(VoENetworkTest, ReceivedRTPPacketWithJunkDataShouldFail) { |
| int channelID = CreateChannelAndRegisterExternalTransport(); |
| EXPECT_EQ(-1, network_->ReceivedRTPPacket(channelID, kPacketJunk, |
| sizeof(kPacketJunk))); |
| } |
| |
| TEST_F(VoENetworkTest, ReceivedRTPPacketOnNonExistingChannelShouldFail) { |
| EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr)); |
| EXPECT_EQ(-1, network_->ReceivedRTPPacket(kNonExistingChannel, kPacket, |
| sizeof(kPacket))); |
| } |
| |
| TEST_F(VoENetworkTest, ReceivedRTPPacketOnChannelWithoutTransportShouldFail) { |
| EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr)); |
| int channelID = base_->CreateChannel(); |
| EXPECT_NE(channelID, -1); |
| EXPECT_EQ(-1, |
| network_->ReceivedRTPPacket(channelID, kPacket, sizeof(kPacket))); |
| } |
| |
| TEST_F(VoENetworkTest, ReceivedTooSmallRTPPacketShouldFail) { |
| int channelID = CreateChannelAndRegisterExternalTransport(); |
| EXPECT_EQ(-1, network_->ReceivedRTPPacket( |
| channelID, kPacket, kMinValidSizeOfRtpPacketInBytes - 1)); |
| } |
| |
| TEST_F(VoENetworkTest, ReceivedTooLargeRTPPacketShouldFail) { |
| int channelID = CreateChannelAndRegisterExternalTransport(); |
| EXPECT_EQ(-1, network_->ReceivedRTPPacket( |
| channelID, kPacket, kMaxValidSizeOfRtpPacketInBytes + 1)); |
| } |
| |
| TEST_F(VoENetworkTest, ReceivedRTCPPacketWithJunkDataShouldFail) { |
| int channelID = CreateChannelAndRegisterExternalTransport(); |
| EXPECT_EQ(0, network_->ReceivedRTCPPacket(channelID, kPacketJunk, |
| sizeof(kPacketJunk))); |
| EXPECT_EQ(VE_SOCKET_TRANSPORT_MODULE_ERROR, base_->LastError()); |
| } |
| |
| TEST_F(VoENetworkTest, ReceivedRTCPPacketOnNonExistingChannelShouldFail) { |
| EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr)); |
| EXPECT_EQ(-1, network_->ReceivedRTCPPacket(kNonExistingChannel, kPacket, |
| sizeof(kPacket))); |
| } |
| |
| TEST_F(VoENetworkTest, ReceivedRTCPPacketOnChannelWithoutTransportShouldFail) { |
| EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr)); |
| int channelID = base_->CreateChannel(); |
| EXPECT_NE(channelID, -1); |
| EXPECT_EQ(-1, |
| network_->ReceivedRTCPPacket(channelID, kPacket, sizeof(kPacket))); |
| } |
| |
| TEST_F(VoENetworkTest, ReceivedTooSmallRTCPPacket4ShouldFail) { |
| int channelID = CreateChannelAndRegisterExternalTransport(); |
| EXPECT_EQ(-1, network_->ReceivedRTCPPacket( |
| channelID, kPacket, kMinValidSizeOfRtcpPacketInBytes - 1)); |
| } |
| |
| } // namespace webrtc |