blob: e5582234c59456f7c2c959889d3dbb37342a7018 [file] [log] [blame]
/*
* Copyright (c) 2011 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.
*/
//
// vie_autotest_network.cc
//
#include "vie_autotest_defines.h"
#include "vie_autotest.h"
#include "engine_configurations.h"
#include "tb_capture_device.h"
#include "tb_external_transport.h"
#include "tb_interfaces.h"
#include "tb_video_channel.h"
#if defined(_WIN32)
#include <qos.h>
#elif defined(WEBRTC_MAC_INTEL)
#endif
class ViEAutoTestNetworkObserver: public webrtc::ViENetworkObserver
{
public:
ViEAutoTestNetworkObserver()
{
}
virtual ~ViEAutoTestNetworkObserver()
{
}
virtual void OnPeriodicDeadOrAlive(const int videoChannel, const bool alive)
{
}
virtual void PacketTimeout(const int videoChannel,
const webrtc::ViEPacketTimeout timeout)
{
}
};
void ViEAutoTest::ViENetworkStandardTest()
{
TbInterfaces ViE("ViENetworkStandardTest"); // Create VIE
TbCaptureDevice tbCapture(ViE);
EXPECT_EQ(0, ViE.render->AddRenderer(
tbCapture.captureId, _window1, 0, 0.0, 0.0, 1.0, 1.0));
EXPECT_EQ(0, ViE.render->StartRender(tbCapture.captureId));
{
// Create a video channel
TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecVP8);
tbCapture.ConnectTo(tbChannel.videoChannel);
EXPECT_EQ(0, ViE.render->AddRenderer(
tbChannel.videoChannel, _window2, 1, 0.0, 0.0, 1.0, 1.0));
EXPECT_EQ(0, ViE.render->StartRender(tbChannel.videoChannel));
// ***************************************************************
// Engine ready. Begin testing class
// ***************************************************************
//
// Transport
//
TbExternalTransport testTransport(*ViE.network);
EXPECT_EQ(0, ViE.network->RegisterSendTransport(
tbChannel.videoChannel, testTransport));
EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.rtp_rtcp->SetKeyFrameRequestMethod(
tbChannel.videoChannel, webrtc::kViEKeyFrameRequestPliRtcp));
ViETest::Log("Call started using external transport, video should "
"see video in both windows\n");
AutoTestSleep(KAutoTestSleepTimeMs);
EXPECT_EQ(0, ViE.base->StopReceive(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.base->StopSend(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.network->DeregisterSendTransport(
tbChannel.videoChannel));
char myIpAddress[64];
memset(myIpAddress, 0, 64);
unsigned short rtpPort = 1234;
memcpy(myIpAddress, "127.0.0.1", sizeof("127.0.0.1"));
EXPECT_EQ(0, ViE.network->SetLocalReceiver(
tbChannel.videoChannel, rtpPort, rtpPort + 1, myIpAddress));
EXPECT_EQ(0, ViE.network->SetSendDestination(
tbChannel.videoChannel, myIpAddress, rtpPort,
rtpPort + 1, rtpPort));
EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
ViETest::Log("Changed to WebRTC SocketTransport, you should still see "
"video in both windows\n");
AutoTestSleep(KAutoTestSleepTimeMs);
EXPECT_EQ(0, ViE.network->SetSourceFilter(
tbChannel.videoChannel, rtpPort + 10, rtpPort + 11, myIpAddress));
ViETest::Log("Added UDP port filter for incorrect ports, you should "
"not see video in Window2");
AutoTestSleep(2000);
EXPECT_EQ(0, ViE.network->SetSourceFilter(
tbChannel.videoChannel, rtpPort, rtpPort + 1, "123.1.1.0"));
ViETest::Log("Added IP filter for incorrect IP address, you should not "
"see video in Window2");
AutoTestSleep(2000);
EXPECT_EQ(0, ViE.network->SetSourceFilter(
tbChannel.videoChannel, rtpPort, rtpPort + 1, myIpAddress));
ViETest::Log("Added IP filter for this computer, you should see video "
"in Window2 again\n");
AutoTestSleep(KAutoTestSleepTimeMs);
tbCapture.Disconnect(tbChannel.videoChannel);
}
}
void ViEAutoTest::ViENetworkExtendedTest()
{
//***************************************************************
// Begin create/initialize WebRTC Video Engine for testing
//***************************************************************
TbInterfaces ViE("ViENetworkExtendedTest"); // Create VIE
TbCaptureDevice tbCapture(ViE);
EXPECT_EQ(0, ViE.render->AddRenderer(
tbCapture.captureId, _window1, 0, 0.0, 0.0, 1.0, 1.0));
EXPECT_EQ(0, ViE.render->StartRender(tbCapture.captureId));
{
//
// ToS
//
// Create a video channel
TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecVP8);
tbCapture.ConnectTo(tbChannel.videoChannel);
const char* remoteIp = "192.168.200.1";
int DSCP = 0;
bool useSetSockOpt = false;
webrtc::VideoCodec videoCodec;
EXPECT_EQ(0, ViE.codec->GetSendCodec(
tbChannel.videoChannel, videoCodec));
videoCodec.maxFramerate = 5;
EXPECT_EQ(0, ViE.codec->SetSendCodec(
tbChannel.videoChannel, videoCodec));
//***************************************************************
// Engine ready. Begin testing class
//***************************************************************
char myIpAddress[64];
memset(myIpAddress, 0, 64);
unsigned short rtpPort = 9000;
EXPECT_EQ(0, ViE.network->GetLocalIP(myIpAddress, false));
EXPECT_EQ(0, ViE.network->SetLocalReceiver(
tbChannel.videoChannel, rtpPort, rtpPort + 1, myIpAddress));
EXPECT_EQ(0, ViE.network->SetSendDestination(
tbChannel.videoChannel, remoteIp, rtpPort, rtpPort + 1, rtpPort));
// ToS
int tos_result = ViE.network->SetSendToS(tbChannel.videoChannel, 2);
EXPECT_EQ(0, tos_result);
if (tos_result != 0)
{
ViETest::Log("ViESetSendToS error!.");
ViETest::Log("You must be admin to run these tests.");
ViETest::Log("On Win7 and late Vista, you need to right click the "
"exe and choose");
ViETest::Log("\"Run as administrator\"\n");
getchar();
}
EXPECT_EQ(0, ViE.network->GetSendToS(
tbChannel.videoChannel, DSCP, useSetSockOpt)); // No ToS set
EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
ViETest::Log("Use Wireshark to capture the outgoing video stream and "
"verify ToS settings\n");
ViETest::Log(" DSCP set to 0x%x\n", DSCP);
AutoTestSleep(1000);
EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 63));
EXPECT_EQ(0, ViE.network->GetSendToS(
tbChannel.videoChannel, DSCP, useSetSockOpt)); // No ToS set
ViETest::Log(" DSCP set to 0x%x\n", DSCP);
AutoTestSleep(1000);
EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 0));
EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 2, true));
EXPECT_EQ(0, ViE.network->GetSendToS(
tbChannel.videoChannel, DSCP, useSetSockOpt)); // No ToS set
ViETest::Log(" DSCP set to 0x%x\n", DSCP);
AutoTestSleep(1000);
EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 63, true));
EXPECT_EQ(0, ViE.network->GetSendToS(
tbChannel.videoChannel, DSCP, useSetSockOpt)); // No ToS set
ViETest::Log(" DSCP set to 0x%x\n", DSCP);
AutoTestSleep(1000);
tbCapture.Disconnect(tbChannel.videoChannel);
}
//***************************************************************
// Testing finished. Tear down Video Engine
//***************************************************************
}
void ViEAutoTest::ViENetworkAPITest()
{
//***************************************************************
// Begin create/initialize WebRTC Video Engine for testing
//***************************************************************
TbInterfaces ViE("ViENetworkAPITest"); // Create VIE
{
// Create a video channel
TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecVP8);
//***************************************************************
// Engine ready. Begin testing class
//***************************************************************
//
// External transport
//
TbExternalTransport testTransport(*ViE.network);
EXPECT_EQ(0, ViE.network->RegisterSendTransport(
tbChannel.videoChannel, testTransport));
EXPECT_NE(0, ViE.network->RegisterSendTransport(
tbChannel.videoChannel, testTransport));
unsigned char packet[1500];
packet[0] = 0x80; // V=2, P=0, X=0, CC=0
packet[1] = 0x78; // M=0, PT = 120 (VP8)
EXPECT_NE(0, ViE.network->ReceivedRTPPacket(
tbChannel.videoChannel, packet, 1500));
EXPECT_NE(0, ViE.network->ReceivedRTCPPacket(
tbChannel.videoChannel, packet, 1500));
EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.network->ReceivedRTPPacket(
tbChannel.videoChannel, packet, 1500));
EXPECT_EQ(0, ViE.network->ReceivedRTCPPacket(
tbChannel.videoChannel, packet, 1500));
EXPECT_NE(0, ViE.network->ReceivedRTPPacket(
tbChannel.videoChannel, packet, 11));
EXPECT_NE(0, ViE.network->ReceivedRTPPacket(
tbChannel.videoChannel, packet, 11));
EXPECT_EQ(0, ViE.network->ReceivedRTPPacket(
tbChannel.videoChannel, packet, 3000));
EXPECT_EQ(0, ViE.network->ReceivedRTPPacket(
tbChannel.videoChannel, packet, 3000));
EXPECT_EQ(0, ViE.base->StopReceive(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
EXPECT_NE(0, ViE.network->DeregisterSendTransport(
tbChannel.videoChannel)); // Sending
EXPECT_EQ(0, ViE.base->StopSend(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.network->DeregisterSendTransport(
tbChannel.videoChannel));
EXPECT_NE(0, ViE.network->DeregisterSendTransport(
tbChannel.videoChannel)); // Already deregistered
//
// Local receiver
//
// TODO (perkj) change when B 4239431 is fixed.
/*error = ViE.ptrViENetwork->SetLocalReceiver(tbChannel.videoChannel,
1234, 1234, "127.0.0.1");
numberOfErrors += ViETest::TestError(error == 0,
"ERROR: %s at line %d",
__FUNCTION__, __LINE__);*/
EXPECT_EQ(0, ViE.network->SetLocalReceiver(
tbChannel.videoChannel, 1234, 1235, "127.0.0.1"));
EXPECT_EQ(0, ViE.network->SetLocalReceiver(
tbChannel.videoChannel, 1234, 1235, "127.0.0.1"));
EXPECT_EQ(0, ViE.network->SetLocalReceiver(
tbChannel.videoChannel, 1236, 1237, "127.0.0.1"));
unsigned short rtpPort = 0;
unsigned short rtcpPort = 0;
char ipAddress[64];
memset(ipAddress, 0, 64);
EXPECT_EQ(0, ViE.network->GetLocalReceiver(
tbChannel.videoChannel, rtpPort, rtcpPort, ipAddress));
EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
EXPECT_NE(0, ViE.network->SetLocalReceiver(
tbChannel.videoChannel, 1234, 1235, "127.0.0.1"));
EXPECT_EQ(0, ViE.network->GetLocalReceiver(
tbChannel.videoChannel, rtpPort, rtcpPort, ipAddress));
EXPECT_EQ(0, ViE.base->StopReceive(tbChannel.videoChannel));
//
// Send destination
//
EXPECT_EQ(0, ViE.network->SetSendDestination(
tbChannel.videoChannel, "127.0.0.1", 1234, 1235, 1234, 1235));
EXPECT_EQ(0, ViE.network->SetSendDestination(
tbChannel.videoChannel, "127.0.0.1", 1236, 1237, 1234, 1235));
unsigned short sourceRtpPort = 0;
unsigned short sourceRtcpPort = 0;
EXPECT_EQ(0, ViE.network->GetSendDestination(
tbChannel.videoChannel, ipAddress, rtpPort, rtcpPort,
sourceRtpPort, sourceRtcpPort));
EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
// Not allowed while sending
EXPECT_NE(0, ViE.network->SetSendDestination(
tbChannel.videoChannel, "127.0.0.1", 1234, 1235, 1234, 1235));
EXPECT_EQ(kViENetworkAlreadySending, ViE.base->LastError());
EXPECT_EQ(0, ViE.base->StopSend(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.network->SetSendDestination(
tbChannel.videoChannel, "127.0.0.1", 1234, 1235, 1234, 1235));
EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.network->GetSendDestination(
tbChannel.videoChannel, ipAddress, rtpPort, rtcpPort,
sourceRtpPort, sourceRtcpPort));
EXPECT_EQ(0, ViE.base->StopSend(tbChannel.videoChannel));
//
// Address information
//
// GetSourceInfo: Tested in functional test
EXPECT_EQ(0, ViE.network->GetLocalIP(ipAddress, false));
// TODO(unknown): IPv6
//
// Filter
//
EXPECT_NE(0, ViE.network->GetSourceFilter(
tbChannel.videoChannel, rtpPort, rtcpPort, ipAddress));
EXPECT_EQ(0, ViE.network->SetSourceFilter(
tbChannel.videoChannel, 1234, 1235, "10.10.10.10"));
EXPECT_EQ(0, ViE.network->SetSourceFilter(
tbChannel.videoChannel, 1236, 1237, "127.0.0.1"));
EXPECT_EQ(0, ViE.network->GetSourceFilter(
tbChannel.videoChannel, rtpPort, rtcpPort, ipAddress));
EXPECT_EQ(0, ViE.network->SetSourceFilter(
tbChannel.videoChannel, 0, 0, NULL));
EXPECT_NE(0, ViE.network->GetSourceFilter(
tbChannel.videoChannel, rtpPort, rtcpPort, ipAddress));
}
{
TbVideoChannel tbChannel(ViE); // Create a video channel
EXPECT_EQ(0, ViE.network->SetLocalReceiver(
tbChannel.videoChannel, 1234));
int DSCP = 0;
bool useSetSockOpt = false;
// SetSockOpt should work without a locally bind socket
EXPECT_EQ(0, ViE.network->GetSendToS(
tbChannel.videoChannel, DSCP, useSetSockOpt)); // No ToS set
EXPECT_EQ(0, DSCP);
// Invalid input
EXPECT_NE(0, ViE.network->SetSendToS(tbChannel.videoChannel, -1, true));
// Invalid input
EXPECT_NE(0, ViE.network->SetSendToS(tbChannel.videoChannel, 64, true));
// Valid
EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 20, true));
EXPECT_EQ(0, ViE.network->GetSendToS(
tbChannel.videoChannel, DSCP, useSetSockOpt));
EXPECT_EQ(20, DSCP);
EXPECT_TRUE(useSetSockOpt);
// Disable
EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 0, true));
EXPECT_EQ(0, ViE.network->GetSendToS(
tbChannel.videoChannel, DSCP, useSetSockOpt));
EXPECT_EQ(0, DSCP);
char myIpAddress[64];
memset(myIpAddress, 0, 64);
// Get local ip to be able to set ToS withtou setSockOpt
EXPECT_EQ(0, ViE.network->GetLocalIP(myIpAddress, false));
EXPECT_EQ(0, ViE.network->SetLocalReceiver(
tbChannel.videoChannel, 1234, 1235, myIpAddress));
// Invalid input
EXPECT_NE(0, ViE.network->SetSendToS(
tbChannel.videoChannel, -1, false));
EXPECT_NE(0, ViE.network->SetSendToS(
tbChannel.videoChannel, 64, false)); // Invalid input
EXPECT_EQ(0, ViE.network->GetSendToS(
tbChannel.videoChannel, DSCP, useSetSockOpt)); // No ToS set
EXPECT_EQ(0, DSCP);
int tos_result = ViE.network->SetSendToS(
tbChannel.videoChannel, 20, false); // Valid
EXPECT_EQ(0, tos_result);
if (tos_result != 0)
{
ViETest::Log("ViESetSendToS error!.");
ViETest::Log("You must be admin to run these tests.");
ViETest::Log("On Win7 and late Vista, you need to right click the "
"exe and choose");
ViETest::Log("\"Run as administrator\"\n");
getchar();
}
EXPECT_EQ(0, ViE.network->GetSendToS(
tbChannel.videoChannel, DSCP, useSetSockOpt));
EXPECT_EQ(20, DSCP);
#ifdef _WIN32
EXPECT_FALSE(useSetSockOpt);
#else // useSetSockOpt is true on Linux and Mac
EXPECT_TRUE(useSetSockOpt);
#endif
EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 0, false));
EXPECT_EQ(0, ViE.network->GetSendToS(
tbChannel.videoChannel, DSCP, useSetSockOpt));
EXPECT_EQ(0, DSCP);
}
{
// From qos.h. (*) -> supported by ViE
//
// #define SERVICETYPE_NOTRAFFIC 0x00000000
// #define SERVICETYPE_BESTEFFORT 0x00000001 (*)
// #define SERVICETYPE_CONTROLLEDLOAD 0x00000002 (*)
// #define SERVICETYPE_GUARANTEED 0x00000003 (*)
// #define SERVICETYPE_NETWORK_UNAVAILABLE 0x00000004
// #define SERVICETYPE_GENERAL_INFORMATION 0x00000005
// #define SERVICETYPE_NOCHANGE 0x00000006
// #define SERVICETYPE_NONCONFORMING 0x00000009
// #define SERVICETYPE_NETWORK_CONTROL 0x0000000A
// #define SERVICETYPE_QUALITATIVE 0x0000000D (*)
//
// #define SERVICE_BESTEFFORT 0x80010000
// #define SERVICE_CONTROLLEDLOAD 0x80020000
// #define SERVICE_GUARANTEED 0x80040000
// #define SERVICE_QUALITATIVE 0x80200000
TbVideoChannel tbChannel(ViE); // Create a video channel
#if defined(_WIN32)
// No socket
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_BESTEFFORT));
EXPECT_EQ(0, ViE.network->SetLocalReceiver(
tbChannel.videoChannel, 1234));
// Sender not initialized
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_BESTEFFORT));
EXPECT_EQ(0, ViE.network->SetSendDestination(
tbChannel.videoChannel, "127.0.0.1", 12345));
// Try to set all non-supported service types
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_NOTRAFFIC));
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_NETWORK_UNAVAILABLE));
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_GENERAL_INFORMATION));
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_NOCHANGE));
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_NONCONFORMING));
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_NOTRAFFIC));
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_NETWORK_CONTROL));
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICE_BESTEFFORT));
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICE_CONTROLLEDLOAD));
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICE_GUARANTEED));
EXPECT_NE(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICE_QUALITATIVE));
// Loop through valid service settings
bool enabled = false;
int serviceType = 0;
int overrideDSCP = 0;
EXPECT_EQ(0, ViE.network->GetSendGQoS(
tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
EXPECT_FALSE(enabled);
EXPECT_EQ(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_BESTEFFORT));
EXPECT_EQ(0, ViE.network->GetSendGQoS(
tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
EXPECT_TRUE(enabled);
EXPECT_EQ(SERVICETYPE_BESTEFFORT, serviceType);
EXPECT_FALSE(overrideDSCP);
EXPECT_EQ(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_CONTROLLEDLOAD));
EXPECT_EQ(0, ViE.network->GetSendGQoS(
tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
EXPECT_TRUE(enabled);
EXPECT_EQ(SERVICETYPE_CONTROLLEDLOAD, serviceType);
EXPECT_FALSE(overrideDSCP);
EXPECT_EQ(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_GUARANTEED));
EXPECT_EQ(0, ViE.network->GetSendGQoS(
tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
EXPECT_TRUE(enabled);
EXPECT_EQ(SERVICETYPE_GUARANTEED, serviceType);
EXPECT_FALSE(overrideDSCP);
EXPECT_EQ(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, true, SERVICETYPE_QUALITATIVE));
EXPECT_EQ(0, ViE.network->GetSendGQoS(
tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
EXPECT_TRUE(enabled);
EXPECT_EQ(SERVICETYPE_QUALITATIVE, serviceType);
EXPECT_FALSE(overrideDSCP);
EXPECT_EQ(0, ViE.network->SetSendGQoS(
tbChannel.videoChannel, false, SERVICETYPE_QUALITATIVE));
EXPECT_EQ(0, ViE.network->GetSendGQoS(
tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
EXPECT_FALSE(enabled);
#endif
}
{
//
// MTU and packet burst
//
// Create a video channel
TbVideoChannel tbChannel(ViE);
// Invalid input
EXPECT_NE(0, ViE.network->SetMTU(tbChannel.videoChannel, 1600));
// Valid input
EXPECT_EQ(0, ViE.network->SetMTU(tbChannel.videoChannel, 800));
//
// Observer and timeout
//
ViEAutoTestNetworkObserver vieTestObserver;
EXPECT_EQ(0, ViE.network->RegisterObserver(
tbChannel.videoChannel, vieTestObserver));
EXPECT_NE(0, ViE.network->RegisterObserver(
tbChannel.videoChannel, vieTestObserver));
EXPECT_EQ(0, ViE.network->SetPeriodicDeadOrAliveStatus(
tbChannel.videoChannel, true)); // No observer
EXPECT_EQ(0, ViE.network->DeregisterObserver(tbChannel.videoChannel));
EXPECT_NE(0, ViE.network->DeregisterObserver(tbChannel.videoChannel));
EXPECT_NE(0, ViE.network->SetPeriodicDeadOrAliveStatus(
tbChannel.videoChannel, true)); // No observer
// Packet timout notification
EXPECT_EQ(0, ViE.network->SetPacketTimeoutNotification(
tbChannel.videoChannel, true, 10));
}
//***************************************************************
// Testing finished. Tear down Video Engine
//***************************************************************
}