1/*
2 *  Copyright (c) 2012 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//
12// vie_autotest_network.cc
13//
14
15#include "webrtc/engine_configurations.h"
16#include "webrtc/video_engine/test/auto_test/interface/vie_autotest.h"
17#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h"
18
19#include "webrtc/video_engine/test/libvietest/include/tb_capture_device.h"
20#include "webrtc/video_engine/test/libvietest/include/tb_external_transport.h"
21#include "webrtc/video_engine/test/libvietest/include/tb_interfaces.h"
22#include "webrtc/video_engine/test/libvietest/include/tb_video_channel.h"
23
24#if defined(_WIN32)
25#include <qos.h>
26#endif
27
28void ViEAutoTest::ViENetworkStandardTest()
29{
30    TbInterfaces ViE("ViENetworkStandardTest"); // Create VIE
31    TbCaptureDevice tbCapture(ViE);
32    {
33        // Create a video channel
34        TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecVP8);
35        tbCapture.ConnectTo(tbChannel.videoChannel);
36
37        RenderCaptureDeviceAndOutputStream(&ViE, &tbChannel, &tbCapture);
38
39        // ***************************************************************
40        // Engine ready. Begin testing class
41        // ***************************************************************
42
43        //
44        // Transport
45        //
46        TbExternalTransport testTransport(*ViE.network, tbChannel.videoChannel,
47                                          NULL);
48        EXPECT_EQ(0, ViE.network->RegisterSendTransport(
49            tbChannel.videoChannel, testTransport));
50        EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
51        EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
52        EXPECT_EQ(0, ViE.rtp_rtcp->SetKeyFrameRequestMethod(
53            tbChannel.videoChannel, webrtc::kViEKeyFrameRequestPliRtcp));
54
55        ViETest::Log("Call started using external transport, video should "
56            "see video in both windows\n");
57        AutoTestSleep(kAutoTestSleepTimeMs);
58
59        EXPECT_EQ(0, ViE.base->StopReceive(tbChannel.videoChannel));
60        EXPECT_EQ(0, ViE.base->StopSend(tbChannel.videoChannel));
61        EXPECT_EQ(0, ViE.network->DeregisterSendTransport(
62            tbChannel.videoChannel));
63
64        char myIpAddress[64];
65        memset(myIpAddress, 0, 64);
66        unsigned short rtpPort = 1234;
67        memcpy(myIpAddress, "127.0.0.1", sizeof("127.0.0.1"));
68        EXPECT_EQ(0, ViE.network->SetLocalReceiver(
69            tbChannel.videoChannel, rtpPort, rtpPort + 1, myIpAddress));
70        EXPECT_EQ(0, ViE.network->SetSendDestination(
71            tbChannel.videoChannel, myIpAddress, rtpPort,
72            rtpPort + 1, rtpPort));
73        EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
74        EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
75
76        ViETest::Log("Changed to WebRTC SocketTransport, you should still see "
77                     "video in both windows\n");
78        AutoTestSleep(kAutoTestSleepTimeMs);
79
80        EXPECT_EQ(0, ViE.network->SetSourceFilter(
81            tbChannel.videoChannel, rtpPort + 10, rtpPort + 11, myIpAddress));
82        ViETest::Log("Added UDP port filter for incorrect ports, you should "
83                     "not see video in Window2");
84        AutoTestSleep(2000);
85        EXPECT_EQ(0, ViE.network->SetSourceFilter(
86            tbChannel.videoChannel, rtpPort, rtpPort + 1, "123.1.1.0"));
87        ViETest::Log("Added IP filter for incorrect IP address, you should not "
88                     "see video in Window2");
89        AutoTestSleep(2000);
90        EXPECT_EQ(0, ViE.network->SetSourceFilter(
91            tbChannel.videoChannel, rtpPort, rtpPort + 1, myIpAddress));
92        ViETest::Log("Added IP filter for this computer, you should see video "
93                     "in Window2 again\n");
94        AutoTestSleep(kAutoTestSleepTimeMs);
95
96        tbCapture.Disconnect(tbChannel.videoChannel);
97    }
98}
99
100void ViEAutoTest::ViENetworkExtendedTest()
101{
102    //***************************************************************
103    //	Begin create/initialize WebRTC Video Engine for testing
104    //***************************************************************
105
106    TbInterfaces ViE("ViENetworkExtendedTest"); // Create VIE
107    TbCaptureDevice tbCapture(ViE);
108    EXPECT_EQ(0, ViE.render->AddRenderer(
109        tbCapture.captureId, _window1, 0, 0.0, 0.0, 1.0, 1.0));
110    EXPECT_EQ(0, ViE.render->StartRender(tbCapture.captureId));
111
112    {
113        //
114        // ToS
115        //
116        // Create a video channel
117        TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecVP8);
118        tbCapture.ConnectTo(tbChannel.videoChannel);
119        const char* remoteIp = "192.168.200.1";
120        int DSCP = 0;
121        bool useSetSockOpt = false;
122
123        webrtc::VideoCodec videoCodec;
124        EXPECT_EQ(0, ViE.codec->GetSendCodec(
125            tbChannel.videoChannel, videoCodec));
126        videoCodec.maxFramerate = 5;
127        EXPECT_EQ(0, ViE.codec->SetSendCodec(
128            tbChannel.videoChannel, videoCodec));
129
130        //***************************************************************
131        //	Engine ready. Begin testing class
132        //***************************************************************
133
134        char myIpAddress[64];
135        memset(myIpAddress, 0, 64);
136        unsigned short rtpPort = 9000;
137        EXPECT_EQ(0, ViE.network->GetLocalIP(myIpAddress, false));
138        EXPECT_EQ(0, ViE.network->SetLocalReceiver(
139            tbChannel.videoChannel, rtpPort, rtpPort + 1, myIpAddress));
140        EXPECT_EQ(0, ViE.network->SetSendDestination(
141            tbChannel.videoChannel, remoteIp, rtpPort, rtpPort + 1, rtpPort));
142
143        // ToS
144        int tos_result = ViE.network->SetSendToS(tbChannel.videoChannel, 2);
145        EXPECT_EQ(0, tos_result);
146        if (tos_result != 0)
147        {
148            ViETest::Log("ViESetSendToS error!.");
149            ViETest::Log("You must be admin to run these tests.");
150            ViETest::Log("On Win7 and late Vista, you need to right click the "
151                         "exe and choose");
152            ViETest::Log("\"Run as administrator\"\n");
153            getchar();
154        }
155        EXPECT_EQ(0, ViE.network->GetSendToS(
156            tbChannel.videoChannel, DSCP, useSetSockOpt));  // No ToS set
157
158        EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
159        EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
160
161        ViETest::Log("Use Wireshark to capture the outgoing video stream and "
162                     "verify ToS settings\n");
163        ViETest::Log(" DSCP set to 0x%x\n", DSCP);
164        AutoTestSleep(1000);
165
166        EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 63));
167        EXPECT_EQ(0, ViE.network->GetSendToS(
168            tbChannel.videoChannel, DSCP, useSetSockOpt));  // No ToS set
169        ViETest::Log(" DSCP set to 0x%x\n", DSCP);
170        AutoTestSleep(1000);
171
172        EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 0));
173        EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 2, true));
174        EXPECT_EQ(0, ViE.network->GetSendToS(
175            tbChannel.videoChannel, DSCP, useSetSockOpt));  // No ToS set
176        ViETest::Log(" DSCP set to 0x%x\n", DSCP);
177        AutoTestSleep(1000);
178
179        EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 63, true));
180        EXPECT_EQ(0, ViE.network->GetSendToS(
181            tbChannel.videoChannel, DSCP, useSetSockOpt));  // No ToS set
182        ViETest::Log(" DSCP set to 0x%x\n", DSCP);
183        AutoTestSleep(1000);
184
185        tbCapture.Disconnect(tbChannel.videoChannel);
186    }
187
188    //***************************************************************
189    //	Testing finished. Tear down Video Engine
190    //***************************************************************
191}
192
193void ViEAutoTest::ViENetworkAPITest()
194{
195    //***************************************************************
196    //	Begin create/initialize WebRTC Video Engine for testing
197    //***************************************************************
198
199    TbInterfaces ViE("ViENetworkAPITest"); // Create VIE
200    {
201        // Create a video channel
202        TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecI420);
203
204        //***************************************************************
205        //	Engine ready. Begin testing class
206        //***************************************************************
207
208        //
209        // External transport
210        //
211        TbExternalTransport testTransport(*ViE.network, tbChannel.videoChannel,
212                                          NULL);
213        EXPECT_EQ(0, ViE.network->RegisterSendTransport(
214            tbChannel.videoChannel, testTransport));
215        EXPECT_NE(0, ViE.network->RegisterSendTransport(
216            tbChannel.videoChannel, testTransport));
217
218        // Create a empty RTP packet.
219        unsigned char packet[3000];
220        memset(packet, 0, sizeof(packet));
221        packet[0] = 0x80; // V=2, P=0, X=0, CC=0
222        packet[1] = 0x7C; // M=0, PT = 124 (I420)
223
224        // Create a empty RTCP app packet.
225        unsigned char rtcpacket[3000];
226        memset(rtcpacket,0, sizeof(rtcpacket));
227        rtcpacket[0] = 0x80; // V=2, P=0, X=0, CC=0
228        rtcpacket[1] = 0xCC; // M=0, PT = 204 (RTCP app)
229        rtcpacket[2] = 0x0;
230        rtcpacket[3] = 0x03; // 3 Octets long.
231
232        EXPECT_NE(0, ViE.network->ReceivedRTPPacket(
233            tbChannel.videoChannel, packet, 1500));
234        EXPECT_NE(0, ViE.network->ReceivedRTCPPacket(
235            tbChannel.videoChannel, rtcpacket, 1500));
236        EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
237        EXPECT_EQ(0, ViE.network->ReceivedRTPPacket(
238            tbChannel.videoChannel, packet, 1500));
239        EXPECT_EQ(0, ViE.network->ReceivedRTCPPacket(
240            tbChannel.videoChannel, rtcpacket, 1500));
241        EXPECT_NE(0, ViE.network->ReceivedRTPPacket(
242            tbChannel.videoChannel, packet, 11));
243        EXPECT_NE(0, ViE.network->ReceivedRTPPacket(
244            tbChannel.videoChannel, packet, 11));
245        EXPECT_EQ(0, ViE.network->ReceivedRTPPacket(
246            tbChannel.videoChannel, packet, 3000));
247        EXPECT_EQ(0, ViE.network->ReceivedRTPPacket(
248            tbChannel.videoChannel, packet, 3000));
249        EXPECT_EQ(0, ViE.base->StopReceive(tbChannel.videoChannel));
250        EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
251        EXPECT_NE(0, ViE.network->DeregisterSendTransport(
252            tbChannel.videoChannel));  // Sending
253        EXPECT_EQ(0, ViE.base->StopSend(tbChannel.videoChannel));
254        EXPECT_EQ(0, ViE.network->DeregisterSendTransport(
255            tbChannel.videoChannel));
256        EXPECT_NE(0, ViE.network->DeregisterSendTransport(
257            tbChannel.videoChannel));  // Already deregistered
258
259        //
260        // Local receiver
261        //
262        EXPECT_EQ(0, ViE.network->SetLocalReceiver(
263            tbChannel.videoChannel, 1234, 1235, "127.0.0.1"));
264        EXPECT_EQ(0, ViE.network->SetLocalReceiver(
265            tbChannel.videoChannel, 1234, 1235, "127.0.0.1"));
266        EXPECT_EQ(0, ViE.network->SetLocalReceiver(
267            tbChannel.videoChannel, 1236, 1237, "127.0.0.1"));
268
269        unsigned short rtpPort = 0;
270        unsigned short rtcpPort = 0;
271        char ipAddress[64];
272        memset(ipAddress, 0, 64);
273        EXPECT_EQ(0, ViE.network->GetLocalReceiver(
274            tbChannel.videoChannel, rtpPort, rtcpPort, ipAddress));
275        EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
276        EXPECT_NE(0, ViE.network->SetLocalReceiver(
277            tbChannel.videoChannel, 1234, 1235, "127.0.0.1"));
278        EXPECT_EQ(0, ViE.network->GetLocalReceiver(
279            tbChannel.videoChannel, rtpPort, rtcpPort, ipAddress));
280        EXPECT_EQ(0, ViE.base->StopReceive(tbChannel.videoChannel));
281
282        //
283        // Send destination
284        //
285        EXPECT_EQ(0, ViE.network->SetSendDestination(
286            tbChannel.videoChannel, "127.0.0.1", 1234, 1235, 1234, 1235));
287        EXPECT_EQ(0, ViE.network->SetSendDestination(
288            tbChannel.videoChannel, "127.0.0.1", 1236, 1237, 1234, 1235));
289
290        unsigned short sourceRtpPort = 0;
291        unsigned short sourceRtcpPort = 0;
292        EXPECT_EQ(0, ViE.network->GetSendDestination(
293            tbChannel.videoChannel, ipAddress, rtpPort, rtcpPort,
294            sourceRtpPort, sourceRtcpPort));
295        EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
296
297        // Not allowed while sending
298        EXPECT_NE(0, ViE.network->SetSendDestination(
299            tbChannel.videoChannel, "127.0.0.1", 1234, 1235, 1234, 1235));
300        EXPECT_EQ(kViENetworkAlreadySending, ViE.base->LastError());
301
302        EXPECT_EQ(0, ViE.base->StopSend(tbChannel.videoChannel));
303        EXPECT_EQ(0, ViE.network->SetSendDestination(
304            tbChannel.videoChannel, "127.0.0.1", 1234, 1235, 1234, 1235));
305        EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
306        EXPECT_EQ(0, ViE.network->GetSendDestination(
307            tbChannel.videoChannel, ipAddress, rtpPort, rtcpPort,
308            sourceRtpPort, sourceRtcpPort));
309        EXPECT_EQ(0, ViE.base->StopSend(tbChannel.videoChannel));
310
311        //
312        // Address information
313        //
314
315        // GetSourceInfo: Tested in functional test
316        EXPECT_EQ(0, ViE.network->GetLocalIP(ipAddress, false));
317
318        // TODO(unknown): IPv6
319
320        //
321        // Filter
322        //
323        EXPECT_NE(0, ViE.network->GetSourceFilter(
324            tbChannel.videoChannel, rtpPort, rtcpPort, ipAddress));
325        EXPECT_EQ(0, ViE.network->SetSourceFilter(
326            tbChannel.videoChannel, 1234, 1235, "10.10.10.10"));
327        EXPECT_EQ(0, ViE.network->SetSourceFilter(
328            tbChannel.videoChannel, 1236, 1237, "127.0.0.1"));
329        EXPECT_EQ(0, ViE.network->GetSourceFilter(
330            tbChannel.videoChannel, rtpPort, rtcpPort, ipAddress));
331        EXPECT_EQ(0, ViE.network->SetSourceFilter(
332            tbChannel.videoChannel, 0, 0, NULL));
333        EXPECT_NE(0, ViE.network->GetSourceFilter(
334            tbChannel.videoChannel, rtpPort, rtcpPort, ipAddress));
335    }
336    {
337        TbVideoChannel tbChannel(ViE);  // Create a video channel
338        EXPECT_EQ(0, ViE.network->SetLocalReceiver(
339            tbChannel.videoChannel, 1234));
340
341        int DSCP = 0;
342        bool useSetSockOpt = false;
343        // SetSockOpt should work without a locally bind socket
344        EXPECT_EQ(0, ViE.network->GetSendToS(
345            tbChannel.videoChannel, DSCP, useSetSockOpt));  // No ToS set
346        EXPECT_EQ(0, DSCP);
347
348        // Invalid input
349        EXPECT_NE(0, ViE.network->SetSendToS(tbChannel.videoChannel, -1, true));
350
351        // Invalid input
352        EXPECT_NE(0, ViE.network->SetSendToS(tbChannel.videoChannel, 64, true));
353
354        // Valid
355        EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 20, true));
356        EXPECT_EQ(0, ViE.network->GetSendToS(
357            tbChannel.videoChannel, DSCP, useSetSockOpt));
358
359        EXPECT_EQ(20, DSCP);
360        EXPECT_TRUE(useSetSockOpt);
361
362        // Disable
363        EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 0, true));
364        EXPECT_EQ(0, ViE.network->GetSendToS(
365            tbChannel.videoChannel, DSCP, useSetSockOpt));
366        EXPECT_EQ(0, DSCP);
367
368        char myIpAddress[64];
369        memset(myIpAddress, 0, 64);
370        // Get local ip to be able to set ToS withtou setSockOpt
371        EXPECT_EQ(0, ViE.network->GetLocalIP(myIpAddress, false));
372        EXPECT_EQ(0, ViE.network->SetLocalReceiver(
373            tbChannel.videoChannel, 1234, 1235, myIpAddress));
374
375        // Invalid input
376        EXPECT_NE(0, ViE.network->SetSendToS(
377            tbChannel.videoChannel, -1, false));
378        EXPECT_NE(0, ViE.network->SetSendToS(
379            tbChannel.videoChannel, 64, false));  // Invalid input
380        EXPECT_EQ(0, ViE.network->GetSendToS(
381            tbChannel.videoChannel, DSCP, useSetSockOpt));  // No ToS set
382        EXPECT_EQ(0, DSCP);
383        int tos_result = ViE.network->SetSendToS(
384            tbChannel.videoChannel, 20, false);  // Valid
385        EXPECT_EQ(0, tos_result);
386        if (tos_result != 0)
387        {
388            ViETest::Log("ViESetSendToS error!.");
389            ViETest::Log("You must be admin to run these tests.");
390            ViETest::Log("On Win7 and late Vista, you need to right click the "
391                         "exe and choose");
392            ViETest::Log("\"Run as administrator\"\n");
393            getchar();
394        }
395        EXPECT_EQ(0, ViE.network->GetSendToS(
396            tbChannel.videoChannel, DSCP, useSetSockOpt));
397        EXPECT_EQ(20, DSCP);
398#ifdef _WIN32
399        EXPECT_FALSE(useSetSockOpt);
400#else // useSetSockOpt is true on Linux and Mac
401        EXPECT_TRUE(useSetSockOpt);
402#endif
403        EXPECT_EQ(0, ViE.network->SetSendToS(tbChannel.videoChannel, 0, false));
404        EXPECT_EQ(0, ViE.network->GetSendToS(
405            tbChannel.videoChannel, DSCP, useSetSockOpt));
406        EXPECT_EQ(0, DSCP);
407    }
408    {
409        // From qos.h. (*) -> supported by ViE
410        //
411        //  #define SERVICETYPE_NOTRAFFIC               0x00000000
412        //  #define SERVICETYPE_BESTEFFORT              0x00000001 (*)
413        //  #define SERVICETYPE_CONTROLLEDLOAD          0x00000002 (*)
414        //  #define SERVICETYPE_GUARANTEED              0x00000003 (*)
415        //  #define SERVICETYPE_NETWORK_UNAVAILABLE     0x00000004
416        //  #define SERVICETYPE_GENERAL_INFORMATION     0x00000005
417        //  #define SERVICETYPE_NOCHANGE                0x00000006
418        //  #define SERVICETYPE_NONCONFORMING           0x00000009
419        //  #define SERVICETYPE_NETWORK_CONTROL         0x0000000A
420        //  #define SERVICETYPE_QUALITATIVE             0x0000000D (*)
421        //
422        //  #define SERVICE_BESTEFFORT                  0x80010000
423        //  #define SERVICE_CONTROLLEDLOAD              0x80020000
424        //  #define SERVICE_GUARANTEED                  0x80040000
425        //  #define SERVICE_QUALITATIVE                 0x80200000
426
427        TbVideoChannel tbChannel(ViE);  // Create a video channel
428
429
430#if defined(_WIN32)
431        // These tests are disabled since they currently fail on Windows.
432        // Exact reason is unkown.
433        // See https://code.google.com/p/webrtc/issues/detail?id=1266.
434        // TODO(mflodman): remove these APIs?
435
436        //// No socket
437        //EXPECT_NE(0, ViE.network->SetSendGQoS(
438        //    tbChannel.videoChannel, true, SERVICETYPE_BESTEFFORT));
439
440        //EXPECT_EQ(0, ViE.network->SetLocalReceiver(
441        //    tbChannel.videoChannel, 1234));
442
443        //// Sender not initialized
444        //EXPECT_NE(0, ViE.network->SetSendGQoS(
445        //    tbChannel.videoChannel, true, SERVICETYPE_BESTEFFORT));
446        //EXPECT_EQ(0, ViE.network->SetSendDestination(
447        //    tbChannel.videoChannel, "127.0.0.1", 12345));
448
449        //// Try to set all non-supported service types
450        //EXPECT_NE(0, ViE.network->SetSendGQoS(
451        //    tbChannel.videoChannel, true, SERVICETYPE_NOTRAFFIC));
452        //EXPECT_NE(0, ViE.network->SetSendGQoS(
453        //    tbChannel.videoChannel, true, SERVICETYPE_NETWORK_UNAVAILABLE));
454        //EXPECT_NE(0, ViE.network->SetSendGQoS(
455        //    tbChannel.videoChannel, true, SERVICETYPE_GENERAL_INFORMATION));
456        //EXPECT_NE(0, ViE.network->SetSendGQoS(
457        //    tbChannel.videoChannel, true, SERVICETYPE_NOCHANGE));
458        //EXPECT_NE(0, ViE.network->SetSendGQoS(
459        //    tbChannel.videoChannel, true, SERVICETYPE_NONCONFORMING));
460        //EXPECT_NE(0, ViE.network->SetSendGQoS(
461        //    tbChannel.videoChannel, true, SERVICETYPE_NOTRAFFIC));
462        //EXPECT_NE(0, ViE.network->SetSendGQoS(
463        //    tbChannel.videoChannel, true, SERVICETYPE_NETWORK_CONTROL));
464        //EXPECT_NE(0, ViE.network->SetSendGQoS(
465        //    tbChannel.videoChannel, true, SERVICE_BESTEFFORT));
466        //EXPECT_NE(0, ViE.network->SetSendGQoS(
467        //    tbChannel.videoChannel, true, SERVICE_CONTROLLEDLOAD));
468        //EXPECT_NE(0, ViE.network->SetSendGQoS(
469        //    tbChannel.videoChannel, true, SERVICE_GUARANTEED));
470        //EXPECT_NE(0, ViE.network->SetSendGQoS(
471        //    tbChannel.videoChannel, true, SERVICE_QUALITATIVE));
472
473        //// Loop through valid service settings
474        //bool enabled = false;
475        //int serviceType = 0;
476        //int overrideDSCP = 0;
477
478        //EXPECT_EQ(0, ViE.network->GetSendGQoS(
479        //    tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
480        //EXPECT_FALSE(enabled);
481        //EXPECT_EQ(0, ViE.network->SetSendGQoS(
482        //    tbChannel.videoChannel, true, SERVICETYPE_BESTEFFORT));
483        //EXPECT_EQ(0, ViE.network->GetSendGQoS(
484        //    tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
485        //EXPECT_TRUE(enabled);
486        //EXPECT_EQ(SERVICETYPE_BESTEFFORT, serviceType);
487        //EXPECT_FALSE(overrideDSCP);
488
489        //EXPECT_EQ(0, ViE.network->SetSendGQoS(
490        //    tbChannel.videoChannel, true, SERVICETYPE_CONTROLLEDLOAD));
491        //EXPECT_EQ(0, ViE.network->GetSendGQoS(
492        //    tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
493        //EXPECT_TRUE(enabled);
494        //EXPECT_EQ(SERVICETYPE_CONTROLLEDLOAD, serviceType);
495        //EXPECT_FALSE(overrideDSCP);
496
497        //EXPECT_EQ(0, ViE.network->SetSendGQoS(
498        //    tbChannel.videoChannel, true, SERVICETYPE_GUARANTEED));
499        //EXPECT_EQ(0, ViE.network->GetSendGQoS(
500        //    tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
501        //EXPECT_TRUE(enabled);
502        //EXPECT_EQ(SERVICETYPE_GUARANTEED, serviceType);
503        //EXPECT_FALSE(overrideDSCP);
504
505        //EXPECT_EQ(0, ViE.network->SetSendGQoS(
506        //    tbChannel.videoChannel, true, SERVICETYPE_QUALITATIVE));
507        //EXPECT_EQ(0, ViE.network->GetSendGQoS(
508        //    tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
509        //EXPECT_TRUE(enabled);
510        //EXPECT_EQ(SERVICETYPE_QUALITATIVE, serviceType);
511        //EXPECT_FALSE(overrideDSCP);
512
513        //EXPECT_EQ(0, ViE.network->SetSendGQoS(
514        //    tbChannel.videoChannel, false, SERVICETYPE_QUALITATIVE));
515        //EXPECT_EQ(0, ViE.network->GetSendGQoS(
516        //    tbChannel.videoChannel, enabled, serviceType, overrideDSCP));
517        //EXPECT_FALSE(enabled);
518#endif
519    }
520    {
521        //
522        // MTU and packet burst
523        //
524        // Create a video channel
525        TbVideoChannel tbChannel(ViE);
526        // Invalid input
527        EXPECT_NE(0, ViE.network->SetMTU(tbChannel.videoChannel, 1600));
528        // Valid input
529        EXPECT_EQ(0, ViE.network->SetMTU(tbChannel.videoChannel, 800));
530    }
531
532    //***************************************************************
533    //	Testing finished. Tear down Video Engine
534    //***************************************************************
535}
536