blob: 1124c3ba21725839401691437279c59c3fd12af8 [file] [log] [blame]
Jelena Marusic46bd31b2015-04-30 10:57:10 +02001/*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "webrtc/voice_engine/include/voe_network.h"
12
kwiberg77eab702016-09-28 17:42:01 -070013#include "webrtc/test/gtest.h"
Jelena Marusic46bd31b2015-04-30 10:57:10 +020014#include "webrtc/voice_engine/include/voe_errors.h"
15#include "webrtc/voice_engine/voice_engine_fixture.h"
16
17namespace webrtc {
18
19enum {
Jelena Marusic0b154452015-05-04 09:55:59 +020020 kMinValidSizeOfRtcpPacketInBytes = 4,
21 kMinValidSizeOfRtpPacketInBytes = 12,
22 kMaxValidSizeOfRtpPacketInBytes = 1292
Jelena Marusic46bd31b2015-04-30 10:57:10 +020023};
24
25// A packet with a valid header for both RTP and RTCP.
Jelena Marusic0b154452015-05-04 09:55:59 +020026// Methods that are tested in this file are checking only packet header.
27static const uint8_t kPacket[kMinValidSizeOfRtpPacketInBytes] = {0x80};
28static const uint8_t kPacketJunk[kMinValidSizeOfRtpPacketInBytes] = {};
Jelena Marusic46bd31b2015-04-30 10:57:10 +020029
30static const int kNonExistingChannel = 1234;
31
Jelena Marusic0b154452015-05-04 09:55:59 +020032class VoENetworkTest : public VoiceEngineFixture {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020033 protected:
34 int CreateChannelAndRegisterExternalTransport() {
peaha9cc40b2017-06-29 08:32:09 -070035 EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr));
Jelena Marusic46bd31b2015-04-30 10:57:10 +020036 int channelID = base_->CreateChannel();
37 EXPECT_NE(channelID, -1);
38 EXPECT_EQ(0, network_->RegisterExternalTransport(channelID, transport_));
39 return channelID;
40 }
41};
42
Jelena Marusic0b154452015-05-04 09:55:59 +020043TEST_F(VoENetworkTest, RegisterAndDeRegisterExternalTransport) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020044 int channelID = CreateChannelAndRegisterExternalTransport();
45 EXPECT_EQ(0, network_->DeRegisterExternalTransport(channelID));
46}
47
Jelena Marusic0b154452015-05-04 09:55:59 +020048TEST_F(VoENetworkTest,
Jelena Marusic46bd31b2015-04-30 10:57:10 +020049 RegisterExternalTransportOnNonExistingChannelShouldFail) {
peaha9cc40b2017-06-29 08:32:09 -070050 EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr));
Jelena Marusic46bd31b2015-04-30 10:57:10 +020051 EXPECT_NE(
52 0, network_->RegisterExternalTransport(kNonExistingChannel, transport_));
53}
54
Jelena Marusic0b154452015-05-04 09:55:59 +020055TEST_F(VoENetworkTest,
Jelena Marusic46bd31b2015-04-30 10:57:10 +020056 DeRegisterExternalTransportOnNonExistingChannelShouldFail) {
peaha9cc40b2017-06-29 08:32:09 -070057 EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr));
Jelena Marusic46bd31b2015-04-30 10:57:10 +020058 EXPECT_NE(0, network_->DeRegisterExternalTransport(kNonExistingChannel));
59}
60
Jelena Marusic0b154452015-05-04 09:55:59 +020061TEST_F(VoENetworkTest, DeRegisterExternalTransportBeforeRegister) {
peaha9cc40b2017-06-29 08:32:09 -070062 EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr));
Jelena Marusic46bd31b2015-04-30 10:57:10 +020063 int channelID = base_->CreateChannel();
64 EXPECT_NE(channelID, -1);
65 EXPECT_EQ(0, network_->DeRegisterExternalTransport(channelID));
66}
67
Jelena Marusic0b154452015-05-04 09:55:59 +020068TEST_F(VoENetworkTest, ReceivedRTPPacketWithJunkDataShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020069 int channelID = CreateChannelAndRegisterExternalTransport();
70 EXPECT_EQ(-1, network_->ReceivedRTPPacket(channelID, kPacketJunk,
71 sizeof(kPacketJunk)));
72}
73
Jelena Marusic0b154452015-05-04 09:55:59 +020074TEST_F(VoENetworkTest, ReceivedRTPPacketOnNonExistingChannelShouldFail) {
peaha9cc40b2017-06-29 08:32:09 -070075 EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr));
Jelena Marusic46bd31b2015-04-30 10:57:10 +020076 EXPECT_EQ(-1, network_->ReceivedRTPPacket(kNonExistingChannel, kPacket,
77 sizeof(kPacket)));
78}
79
Jelena Marusic0b154452015-05-04 09:55:59 +020080TEST_F(VoENetworkTest, ReceivedRTPPacketOnChannelWithoutTransportShouldFail) {
peaha9cc40b2017-06-29 08:32:09 -070081 EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr));
Jelena Marusic46bd31b2015-04-30 10:57:10 +020082 int channelID = base_->CreateChannel();
83 EXPECT_NE(channelID, -1);
84 EXPECT_EQ(-1,
85 network_->ReceivedRTPPacket(channelID, kPacket, sizeof(kPacket)));
86}
87
Jelena Marusic0b154452015-05-04 09:55:59 +020088TEST_F(VoENetworkTest, ReceivedTooSmallRTPPacketShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020089 int channelID = CreateChannelAndRegisterExternalTransport();
Jelena Marusic0b154452015-05-04 09:55:59 +020090 EXPECT_EQ(-1, network_->ReceivedRTPPacket(
91 channelID, kPacket, kMinValidSizeOfRtpPacketInBytes - 1));
Jelena Marusic46bd31b2015-04-30 10:57:10 +020092}
93
Jelena Marusic0b154452015-05-04 09:55:59 +020094TEST_F(VoENetworkTest, ReceivedTooLargeRTPPacketShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020095 int channelID = CreateChannelAndRegisterExternalTransport();
Jelena Marusic0b154452015-05-04 09:55:59 +020096 EXPECT_EQ(-1, network_->ReceivedRTPPacket(
97 channelID, kPacket, kMaxValidSizeOfRtpPacketInBytes + 1));
Jelena Marusic46bd31b2015-04-30 10:57:10 +020098}
99
Jelena Marusic0b154452015-05-04 09:55:59 +0200100TEST_F(VoENetworkTest, ReceivedRTCPPacketOnNonExistingChannelShouldFail) {
peaha9cc40b2017-06-29 08:32:09 -0700101 EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr));
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200102 EXPECT_EQ(-1, network_->ReceivedRTCPPacket(kNonExistingChannel, kPacket,
103 sizeof(kPacket)));
104}
105
Jelena Marusic0b154452015-05-04 09:55:59 +0200106TEST_F(VoENetworkTest, ReceivedRTCPPacketOnChannelWithoutTransportShouldFail) {
peaha9cc40b2017-06-29 08:32:09 -0700107 EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr));
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200108 int channelID = base_->CreateChannel();
109 EXPECT_NE(channelID, -1);
110 EXPECT_EQ(-1,
111 network_->ReceivedRTCPPacket(channelID, kPacket, sizeof(kPacket)));
112}
113
Jelena Marusic0b154452015-05-04 09:55:59 +0200114TEST_F(VoENetworkTest, ReceivedTooSmallRTCPPacket4ShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200115 int channelID = CreateChannelAndRegisterExternalTransport();
Jelena Marusic0b154452015-05-04 09:55:59 +0200116 EXPECT_EQ(-1, network_->ReceivedRTCPPacket(
117 channelID, kPacket, kMinValidSizeOfRtcpPacketInBytes - 1));
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200118}
119
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200120} // namespace webrtc