128 lines
4.7 KiB
C++
128 lines
4.7 KiB
C++
/*
|
|
* 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 "testing/gtest/include/gtest/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_, 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_, nullptr));
|
|
EXPECT_NE(
|
|
0, network_->RegisterExternalTransport(kNonExistingChannel, transport_));
|
|
}
|
|
|
|
TEST_F(VoENetworkTest,
|
|
DeRegisterExternalTransportOnNonExistingChannelShouldFail) {
|
|
EXPECT_EQ(0, base_->Init(&adm_, nullptr));
|
|
EXPECT_NE(0, network_->DeRegisterExternalTransport(kNonExistingChannel));
|
|
}
|
|
|
|
TEST_F(VoENetworkTest, DeRegisterExternalTransportBeforeRegister) {
|
|
EXPECT_EQ(0, base_->Init(&adm_, 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_, nullptr));
|
|
EXPECT_EQ(-1, network_->ReceivedRTPPacket(kNonExistingChannel, kPacket,
|
|
sizeof(kPacket)));
|
|
}
|
|
|
|
TEST_F(VoENetworkTest, ReceivedRTPPacketOnChannelWithoutTransportShouldFail) {
|
|
EXPECT_EQ(0, base_->Init(&adm_, 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_, nullptr));
|
|
EXPECT_EQ(-1, network_->ReceivedRTCPPacket(kNonExistingChannel, kPacket,
|
|
sizeof(kPacket)));
|
|
}
|
|
|
|
TEST_F(VoENetworkTest, ReceivedRTCPPacketOnChannelWithoutTransportShouldFail) {
|
|
EXPECT_EQ(0, base_->Init(&adm_, 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
|