• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2014 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 #ifndef WEBRTC_TEST_COMMON_CALL_TEST_H_
11 #define WEBRTC_TEST_COMMON_CALL_TEST_H_
12 
13 #include <vector>
14 
15 #include "webrtc/call.h"
16 #include "webrtc/system_wrappers/interface/scoped_vector.h"
17 #include "webrtc/test/fake_decoder.h"
18 #include "webrtc/test/fake_encoder.h"
19 #include "webrtc/test/frame_generator_capturer.h"
20 #include "webrtc/test/rtp_rtcp_observer.h"
21 
22 namespace webrtc {
23 namespace test {
24 
25 class BaseTest;
26 
27 class CallTest : public ::testing::Test {
28  public:
29   CallTest();
30   ~CallTest();
31 
32   static const size_t kNumSsrcs = 3;
33 
34   static const unsigned int kDefaultTimeoutMs;
35   static const unsigned int kLongTimeoutMs;
36   static const uint8_t kSendPayloadType;
37   static const uint8_t kSendRtxPayloadType;
38   static const uint8_t kFakeSendPayloadType;
39   static const uint8_t kRedPayloadType;
40   static const uint8_t kUlpfecPayloadType;
41   static const uint32_t kSendRtxSsrcs[kNumSsrcs];
42   static const uint32_t kSendSsrcs[kNumSsrcs];
43   static const uint32_t kReceiverLocalSsrc;
44   static const int kNackRtpHistoryMs;
45 
46  protected:
47   void RunBaseTest(BaseTest* test);
48 
49   void CreateCalls(const Call::Config& sender_config,
50                    const Call::Config& receiver_config);
51   void CreateSenderCall(const Call::Config& config);
52   void CreateReceiverCall(const Call::Config& config);
53 
54   void CreateSendConfig(size_t num_streams);
55   void CreateMatchingReceiveConfigs();
56 
57   void CreateFrameGeneratorCapturer();
58 
59   void CreateStreams();
60   void Start();
61   void Stop();
62   void DestroyStreams();
63 
64   Clock* const clock_;
65 
66   scoped_ptr<Call> sender_call_;
67   VideoSendStream::Config send_config_;
68   VideoEncoderConfig encoder_config_;
69   VideoSendStream* send_stream_;
70 
71   scoped_ptr<Call> receiver_call_;
72   std::vector<VideoReceiveStream::Config> receive_configs_;
73   std::vector<VideoReceiveStream*> receive_streams_;
74 
75   scoped_ptr<test::FrameGeneratorCapturer> frame_generator_capturer_;
76   test::FakeEncoder fake_encoder_;
77   ScopedVector<test::FakeDecoder> fake_decoders_;
78 };
79 
80 class BaseTest : public RtpRtcpObserver {
81  public:
82   explicit BaseTest(unsigned int timeout_ms);
83   BaseTest(unsigned int timeout_ms, const FakeNetworkPipe::Config& config);
84   virtual ~BaseTest();
85 
86   virtual void PerformTest() = 0;
87   virtual bool ShouldCreateReceivers() const = 0;
88 
89   virtual size_t GetNumStreams() const;
90 
91   virtual Call::Config GetSenderCallConfig();
92   virtual Call::Config GetReceiverCallConfig();
93   virtual void OnCallsCreated(Call* sender_call, Call* receiver_call);
94 
95   virtual void ModifyConfigs(
96       VideoSendStream::Config* send_config,
97       std::vector<VideoReceiveStream::Config>* receive_configs,
98       VideoEncoderConfig* encoder_config);
99   virtual void OnStreamsCreated(
100       VideoSendStream* send_stream,
101       const std::vector<VideoReceiveStream*>& receive_streams);
102 
103   virtual void OnFrameGeneratorCapturerCreated(
104       FrameGeneratorCapturer* frame_generator_capturer);
105 };
106 
107 class SendTest : public BaseTest {
108  public:
109   explicit SendTest(unsigned int timeout_ms);
110   SendTest(unsigned int timeout_ms, const FakeNetworkPipe::Config& config);
111 
112   virtual bool ShouldCreateReceivers() const OVERRIDE;
113 };
114 
115 class EndToEndTest : public BaseTest {
116  public:
117   explicit EndToEndTest(unsigned int timeout_ms);
118   EndToEndTest(unsigned int timeout_ms, const FakeNetworkPipe::Config& config);
119 
120   virtual bool ShouldCreateReceivers() const OVERRIDE;
121 };
122 
123 }  // namespace test
124 }  // namespace webrtc
125 
126 #endif  // WEBRTC_TEST_COMMON_CALL_TEST_H_
127