blob: ef6e4fb5f3b1ef2467633e9de28a6104035bb1aa [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() {
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,
Jelena Marusic46bd31b2015-04-30 10:57:10 +020049 RegisterExternalTransportOnNonExistingChannelShouldFail) {
50 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
51 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) {
57 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
58 EXPECT_NE(0, network_->DeRegisterExternalTransport(kNonExistingChannel));
59}
60
Jelena Marusic0b154452015-05-04 09:55:59 +020061TEST_F(VoENetworkTest, DeRegisterExternalTransportBeforeRegister) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020062 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
63 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) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020075 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
76 EXPECT_EQ(-1, network_->ReceivedRTPPacket(kNonExistingChannel, kPacket,
77 sizeof(kPacket)));
78}
79
Jelena Marusic0b154452015-05-04 09:55:59 +020080TEST_F(VoENetworkTest, ReceivedRTPPacketOnChannelWithoutTransportShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +020081 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
82 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, ReceivedRTCPPacketWithJunkDataShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200101 int channelID = CreateChannelAndRegisterExternalTransport();
102 EXPECT_EQ(0, network_->ReceivedRTCPPacket(channelID, kPacketJunk,
103 sizeof(kPacketJunk)));
104 EXPECT_EQ(VE_SOCKET_TRANSPORT_MODULE_ERROR, base_->LastError());
105}
106
Jelena Marusic0b154452015-05-04 09:55:59 +0200107TEST_F(VoENetworkTest, ReceivedRTCPPacketOnNonExistingChannelShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200108 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
109 EXPECT_EQ(-1, network_->ReceivedRTCPPacket(kNonExistingChannel, kPacket,
110 sizeof(kPacket)));
111}
112
Jelena Marusic0b154452015-05-04 09:55:59 +0200113TEST_F(VoENetworkTest, ReceivedRTCPPacketOnChannelWithoutTransportShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200114 EXPECT_EQ(0, base_->Init(&adm_, nullptr));
115 int channelID = base_->CreateChannel();
116 EXPECT_NE(channelID, -1);
117 EXPECT_EQ(-1,
118 network_->ReceivedRTCPPacket(channelID, kPacket, sizeof(kPacket)));
119}
120
Jelena Marusic0b154452015-05-04 09:55:59 +0200121TEST_F(VoENetworkTest, ReceivedTooSmallRTCPPacket4ShouldFail) {
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200122 int channelID = CreateChannelAndRegisterExternalTransport();
Jelena Marusic0b154452015-05-04 09:55:59 +0200123 EXPECT_EQ(-1, network_->ReceivedRTCPPacket(
124 channelID, kPacket, kMinValidSizeOfRtcpPacketInBytes - 1));
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200125}
126
Jelena Marusic46bd31b2015-04-30 10:57:10 +0200127} // namespace webrtc