blob: 03a9b0debeba41318fba4831ef966a5b8fee0507 [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
13#include "testing/gtest/include/gtest/gtest.h"
14#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() {
35 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
36 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, RegisterExternalTransportBeforeInitShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020049 EXPECT_NE(
50 0, network_->RegisterExternalTransport(kNonExistingChannel, transport_));
51}
52
Jelena Marusic0b154452015-05-04 09:55:59 +020053TEST_F(VoENetworkTest, DeRegisterExternalTransportBeforeInitShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020054 EXPECT_NE(0, network_->DeRegisterExternalTransport(kNonExistingChannel));
55}
56
Jelena Marusic0b154452015-05-04 09:55:59 +020057TEST_F(VoENetworkTest,
Jelena Marusic46bd31b2015-04-30 10:57:10 +020058 RegisterExternalTransportOnNonExistingChannelShouldFail) {
59 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
60 EXPECT_NE(
61 0, network_->RegisterExternalTransport(kNonExistingChannel, transport_));
62}
63
Jelena Marusic0b154452015-05-04 09:55:59 +020064TEST_F(VoENetworkTest,
Jelena Marusic46bd31b2015-04-30 10:57:10 +020065 DeRegisterExternalTransportOnNonExistingChannelShouldFail) {
66 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
67 EXPECT_NE(0, network_->DeRegisterExternalTransport(kNonExistingChannel));
68}
69
Jelena Marusic0b154452015-05-04 09:55:59 +020070TEST_F(VoENetworkTest, DeRegisterExternalTransportBeforeRegister) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020071 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
72 int channelID = base_->CreateChannel();
73 EXPECT_NE(channelID, -1);
74 EXPECT_EQ(0, network_->DeRegisterExternalTransport(channelID));
75}
76
Jelena Marusic0b154452015-05-04 09:55:59 +020077TEST_F(VoENetworkTest, ReceivedRTPPacketWithJunkDataShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020078 int channelID = CreateChannelAndRegisterExternalTransport();
79 EXPECT_EQ(-1, network_->ReceivedRTPPacket(channelID, kPacketJunk,
80 sizeof(kPacketJunk)));
81}
82
Jelena Marusic0b154452015-05-04 09:55:59 +020083TEST_F(VoENetworkTest, ReceivedRTPPacketBeforeInitShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020084 EXPECT_EQ(-1, network_->ReceivedRTPPacket(0, kPacket, sizeof(kPacket)));
85}
86
Jelena Marusic0b154452015-05-04 09:55:59 +020087TEST_F(VoENetworkTest, ReceivedRTPPacketOnNonExistingChannelShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020088 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
89 EXPECT_EQ(-1, network_->ReceivedRTPPacket(kNonExistingChannel, kPacket,
90 sizeof(kPacket)));
91}
92
Jelena Marusic0b154452015-05-04 09:55:59 +020093TEST_F(VoENetworkTest, ReceivedRTPPacketOnChannelWithoutTransportShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020094 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
95 int channelID = base_->CreateChannel();
96 EXPECT_NE(channelID, -1);
97 EXPECT_EQ(-1,
98 network_->ReceivedRTPPacket(channelID, kPacket, sizeof(kPacket)));
99}
100
Jelena Marusic0b154452015-05-04 09:55:59 +0200101TEST_F(VoENetworkTest, ReceivedTooSmallRTPPacketShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200102 int channelID = CreateChannelAndRegisterExternalTransport();
Jelena Marusic0b154452015-05-04 09:55:59 +0200103 EXPECT_EQ(-1, network_->ReceivedRTPPacket(
104 channelID, kPacket, kMinValidSizeOfRtpPacketInBytes - 1));
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200105}
106
Jelena Marusic0b154452015-05-04 09:55:59 +0200107TEST_F(VoENetworkTest, ReceivedTooLargeRTPPacketShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200108 int channelID = CreateChannelAndRegisterExternalTransport();
Jelena Marusic0b154452015-05-04 09:55:59 +0200109 EXPECT_EQ(-1, network_->ReceivedRTPPacket(
110 channelID, kPacket, kMaxValidSizeOfRtpPacketInBytes + 1));
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200111}
112
Jelena Marusic0b154452015-05-04 09:55:59 +0200113TEST_F(VoENetworkTest, ReceivedRTPPacketWithNullDataShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200114 int channelID = CreateChannelAndRegisterExternalTransport();
115 EXPECT_EQ(-1, network_->ReceivedRTPPacket(channelID, nullptr, 0));
116}
117
Jelena Marusic0b154452015-05-04 09:55:59 +0200118TEST_F(VoENetworkTest, ReceivedRTCPPacketWithJunkDataShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200119 int channelID = CreateChannelAndRegisterExternalTransport();
120 EXPECT_EQ(0, network_->ReceivedRTCPPacket(channelID, kPacketJunk,
121 sizeof(kPacketJunk)));
122 EXPECT_EQ(VE_SOCKET_TRANSPORT_MODULE_ERROR, base_->LastError());
123}
124
Jelena Marusic0b154452015-05-04 09:55:59 +0200125TEST_F(VoENetworkTest, ReceivedRTCPPacketBeforeInitShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200126 EXPECT_EQ(-1, network_->ReceivedRTCPPacket(kNonExistingChannel, kPacket,
127 sizeof(kPacket)));
128}
129
Jelena Marusic0b154452015-05-04 09:55:59 +0200130TEST_F(VoENetworkTest, ReceivedRTCPPacketOnNonExistingChannelShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200131 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
132 EXPECT_EQ(-1, network_->ReceivedRTCPPacket(kNonExistingChannel, kPacket,
133 sizeof(kPacket)));
134}
135
Jelena Marusic0b154452015-05-04 09:55:59 +0200136TEST_F(VoENetworkTest, ReceivedRTCPPacketOnChannelWithoutTransportShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200137 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
138 int channelID = base_->CreateChannel();
139 EXPECT_NE(channelID, -1);
140 EXPECT_EQ(-1,
141 network_->ReceivedRTCPPacket(channelID, kPacket, sizeof(kPacket)));
142}
143
Jelena Marusic0b154452015-05-04 09:55:59 +0200144TEST_F(VoENetworkTest, ReceivedTooSmallRTCPPacket4ShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200145 int channelID = CreateChannelAndRegisterExternalTransport();
Jelena Marusic0b154452015-05-04 09:55:59 +0200146 EXPECT_EQ(-1, network_->ReceivedRTCPPacket(
147 channelID, kPacket, kMinValidSizeOfRtcpPacketInBytes - 1));
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200148}
149
Jelena Marusic0b154452015-05-04 09:55:59 +0200150TEST_F(VoENetworkTest, ReceivedRTCPPacketWithNullDataShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200151 int channelID = CreateChannelAndRegisterExternalTransport();
152 EXPECT_EQ(-1, network_->ReceivedRTCPPacket(channelID, nullptr, 0));
153}
154
155} // namespace webrtc