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 #ifndef MODULES_RTP_RTCP_MOCKS_MOCK_RTP_RTCP_H_ 12 #define MODULES_RTP_RTCP_MOCKS_MOCK_RTP_RTCP_H_ 13 14 #include <set> 15 #include <utility> 16 #include <vector> 17 18 #include "api/optional.h" 19 #include "modules/include/module.h" 20 #include "modules/rtp_rtcp/include/rtp_rtcp.h" 21 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" 22 #include "modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h" 23 #include "rtc_base/checks.h" 24 #include "test/gmock.h" 25 26 namespace webrtc { 27 28 class MockRtpData : public RtpData { 29 public: 30 MOCK_METHOD3(OnReceivedPayloadData, 31 int32_t(const uint8_t* payload_data, 32 size_t payload_size, 33 const WebRtcRTPHeader* rtp_header)); 34 }; 35 36 class MockRtpRtcp : public RtpRtcp { 37 public: 38 MOCK_METHOD1(RegisterDefaultModule, int32_t(RtpRtcp* module)); 39 MOCK_METHOD0(DeRegisterDefaultModule, int32_t()); 40 MOCK_METHOD0(DefaultModuleRegistered, bool()); 41 MOCK_METHOD0(NumberChildModules, uint32_t()); 42 MOCK_METHOD1(RegisterSyncModule, int32_t(RtpRtcp* module)); 43 MOCK_METHOD0(DeRegisterSyncModule, int32_t()); 44 MOCK_METHOD2(IncomingRtcpPacket, 45 void(const uint8_t* incoming_packet, size_t packet_length)); 46 MOCK_METHOD1(SetRemoteSSRC, void(uint32_t ssrc)); 47 MOCK_METHOD4(IncomingAudioNTP, 48 int32_t(uint32_t audio_received_ntp_secs, 49 uint32_t audio_received_ntp_frac, 50 uint32_t audio_rtcp_arrival_time_secs, 51 uint32_t audio_rtcp_arrival_time_frac)); 52 MOCK_METHOD0(InitSender, int32_t()); 53 MOCK_METHOD1(RegisterSendTransport, int32_t(Transport* outgoing_transport)); 54 MOCK_METHOD1(SetMaxRtpPacketSize, void(size_t size)); 55 MOCK_METHOD1(SetTransportOverhead, void(int transport_overhead_per_packet)); 56 MOCK_CONST_METHOD0(MaxRtpPacketSize, size_t()); 57 MOCK_METHOD1(RegisterSendPayload, int32_t(const CodecInst& voice_codec)); 58 MOCK_METHOD1(RegisterSendPayload, int32_t(const VideoCodec& video_codec)); 59 MOCK_METHOD2(RegisterVideoSendPayload, 60 void(int payload_type, const char* payload_name)); 61 MOCK_METHOD1(DeRegisterSendPayload, int32_t(int8_t payload_type)); 62 MOCK_METHOD2(RegisterSendRtpHeaderExtension, 63 int32_t(RTPExtensionType type, uint8_t id)); 64 MOCK_METHOD1(DeregisterSendRtpHeaderExtension, 65 int32_t(RTPExtensionType type)); 66 MOCK_CONST_METHOD0(HasBweExtensions, bool()); 67 MOCK_CONST_METHOD0(StartTimestamp, uint32_t()); 68 MOCK_METHOD1(SetStartTimestamp, void(uint32_t timestamp)); 69 MOCK_CONST_METHOD0(SequenceNumber, uint16_t()); 70 MOCK_METHOD1(SetSequenceNumber, void(uint16_t seq)); 71 MOCK_METHOD1(SetRtpState, void(const RtpState& rtp_state)); 72 MOCK_METHOD1(SetRtxState, void(const RtpState& rtp_state)); 73 MOCK_CONST_METHOD0(GetRtpState, RtpState()); 74 MOCK_CONST_METHOD0(GetRtxState, RtpState()); 75 MOCK_CONST_METHOD0(SSRC, uint32_t()); 76 MOCK_METHOD1(SetSSRC, void(uint32_t ssrc)); 77 MOCK_METHOD1(SetRID, int32_t(const char *rid)); 78 MOCK_METHOD1(SetMID, int32_t(const char *mid)); 79 MOCK_CONST_METHOD1(CSRCs, int32_t(uint32_t csrcs[kRtpCsrcSize])); 80 MOCK_METHOD1(SetCsrcs, void(const std::vector<uint32_t>& csrcs)); 81 MOCK_METHOD1(SetCSRCStatus, int32_t(bool include)); 82 MOCK_METHOD1(SetRtxSendStatus, void(int modes)); 83 MOCK_CONST_METHOD0(RtxSendStatus, int()); 84 MOCK_METHOD1(SetRtxSsrc, void(uint32_t)); 85 MOCK_METHOD2(SetRtxSendPayloadType, void(int, int)); 86 MOCK_CONST_METHOD0(FlexfecSsrc, rtc::Optional<uint32_t>()); 87 MOCK_CONST_METHOD0(RtxSendPayloadType, std::pair<int, int>()); 88 MOCK_METHOD1(SetSendingStatus, int32_t(bool sending)); 89 MOCK_CONST_METHOD0(Sending, bool()); 90 MOCK_METHOD1(SetSendingMediaStatus, void(bool sending)); 91 MOCK_CONST_METHOD0(SendingMedia, bool()); 92 MOCK_CONST_METHOD4(BitrateSent, 93 void(uint32_t* total_rate, 94 uint32_t* video_rate, 95 uint32_t* fec_rate, 96 uint32_t* nack_rate)); 97 MOCK_METHOD1(RegisterVideoBitrateObserver, void(BitrateStatisticsObserver*)); 98 MOCK_CONST_METHOD0(GetVideoBitrateObserver, BitrateStatisticsObserver*(void)); 99 MOCK_CONST_METHOD1(EstimatedReceiveBandwidth, 100 int(uint32_t* available_bandwidth)); 101 MOCK_METHOD9(SendOutgoingData, 102 bool(FrameType frame_type, 103 int8_t payload_type, 104 uint32_t timestamp, 105 int64_t capture_time_ms, 106 const uint8_t* payload_data, 107 size_t payload_size, 108 const RTPFragmentationHeader* fragmentation, 109 const RTPVideoHeader* rtp_video_header, 110 uint32_t* frame_id_out)); 111 MOCK_METHOD5(TimeToSendPacket, 112 bool(uint32_t ssrc, 113 uint16_t sequence_number, 114 int64_t capture_time_ms, 115 bool retransmission, 116 const PacedPacketInfo& pacing_info)); 117 MOCK_METHOD2(TimeToSendPadding, 118 size_t(size_t bytes, const PacedPacketInfo& pacing_info)); 119 MOCK_METHOD2(RegisterRtcpObservers, 120 void(RtcpIntraFrameObserver* intra_frame_callback, 121 RtcpBandwidthObserver* bandwidth_callback)); 122 MOCK_CONST_METHOD0(RTCP, RtcpMode()); 123 MOCK_METHOD1(SetRTCPStatus, void(RtcpMode method)); 124 MOCK_METHOD1(SetCNAME, int32_t(const char cname[RTCP_CNAME_SIZE])); 125 MOCK_CONST_METHOD2(RemoteCNAME, 126 int32_t(uint32_t remote_ssrc, 127 char cname[RTCP_CNAME_SIZE])); 128 MOCK_CONST_METHOD5(RemoteNTP, 129 int32_t(uint32_t* received_ntp_secs, 130 uint32_t* received_ntp_frac, 131 uint32_t* rtcp_arrival_time_secs, 132 uint32_t* rtcp_arrival_time_frac, 133 uint32_t* rtcp_timestamp)); 134 MOCK_METHOD2(AddMixedCNAME, 135 int32_t(uint32_t ssrc, const char cname[RTCP_CNAME_SIZE])); 136 MOCK_METHOD1(RemoveMixedCNAME, int32_t(uint32_t ssrc)); 137 MOCK_CONST_METHOD5(RTT, 138 int32_t(uint32_t remote_ssrc, 139 int64_t* rtt, 140 int64_t* avg_rtt, 141 int64_t* min_rtt, 142 int64_t* max_rtt)); 143 MOCK_METHOD1(SendRTCP, int32_t(RTCPPacketType packet_type)); 144 MOCK_METHOD1(SendCompoundRTCP, 145 int32_t(const std::set<RTCPPacketType>& packet_types)); 146 MOCK_CONST_METHOD2(DataCountersRTP, 147 int32_t(size_t* bytes_sent, uint32_t* packets_sent)); 148 MOCK_CONST_METHOD2(GetSendStreamDataCounters, 149 void(StreamDataCounters*, StreamDataCounters*)); 150 MOCK_CONST_METHOD3(GetRtpPacketLossStats, 151 void(bool, uint32_t, struct RtpPacketLossStats*)); 152 MOCK_CONST_METHOD3(RemoteRTCPSenderInfo, 153 void(uint32_t* packet_count, uint32_t* octet_count, 154 NtpTime* ntp_timestamp)); 155 MOCK_CONST_METHOD1(RemoteRTCPStat, 156 int32_t(std::vector<RTCPReportBlock>* receive_blocks)); 157 MOCK_METHOD4(SetRTCPApplicationSpecificData, 158 int32_t(uint8_t sub_type, 159 uint32_t name, 160 const uint8_t* data, 161 uint16_t length)); 162 MOCK_METHOD1(SetRTCPVoIPMetrics, int32_t(const RTCPVoIPMetric* voip_metric)); 163 MOCK_METHOD1(SetRtcpXrRrtrStatus, void(bool enable)); 164 MOCK_CONST_METHOD0(RtcpXrRrtrStatus, bool()); 165 MOCK_METHOD2(SetRemb, 166 void(uint32_t bitrate, const std::vector<uint32_t>& ssrcs)); 167 MOCK_METHOD0(UnsetRemb, void()); 168 MOCK_CONST_METHOD0(TMMBR, bool()); 169 MOCK_METHOD1(SetTMMBRStatus, void(bool enable)); 170 MOCK_METHOD1(OnBandwidthEstimateUpdate, void(uint16_t bandwidth_kbit)); 171 MOCK_CONST_METHOD0(SelectiveRetransmissions, int()); 172 MOCK_METHOD1(SetSelectiveRetransmissions, int(uint8_t settings)); 173 MOCK_METHOD2(SendNACK, int32_t(const uint16_t* nack_list, uint16_t size)); 174 MOCK_METHOD1(SendNack, void(const std::vector<uint16_t>& sequence_numbers)); 175 MOCK_METHOD2(SetStorePacketsStatus, 176 void(bool enable, uint16_t number_to_store)); 177 MOCK_CONST_METHOD0(StorePackets, bool()); 178 MOCK_METHOD1(RegisterRtcpStatisticsCallback, void(RtcpStatisticsCallback*)); 179 MOCK_METHOD0(GetRtcpStatisticsCallback, RtcpStatisticsCallback*()); 180 MOCK_METHOD1(SendFeedbackPacket, bool(const rtcp::TransportFeedback& packet)); 181 MOCK_METHOD3(SendTelephoneEventOutband, 182 int32_t(uint8_t key, uint16_t time_ms, uint8_t level)); 183 MOCK_METHOD1(SetSendREDPayloadType, int32_t(int8_t payload_type)); 184 MOCK_CONST_METHOD1(SendREDPayloadType, int32_t(int8_t* payload_type)); 185 MOCK_METHOD2(SetRTPAudioLevelIndicationStatus, 186 int32_t(bool enable, uint8_t id)); 187 MOCK_METHOD1(SetAudioLevel, int32_t(uint8_t level_dbov)); 188 MOCK_METHOD1(SetTargetSendBitrate, void(uint32_t bitrate_bps)); 189 MOCK_METHOD2(SetUlpfecConfig, 190 void(int red_payload_type, int fec_payload_type)); 191 MOCK_METHOD2(SetFecParameters, 192 bool(const FecProtectionParams& delta_params, 193 const FecProtectionParams& key_params)); 194 MOCK_METHOD1(SetKeyFrameRequestMethod, int32_t(KeyFrameRequestMethod method)); 195 MOCK_METHOD0(RequestKeyFrame, int32_t()); 196 MOCK_METHOD0(Process, void()); 197 MOCK_METHOD1(RegisterSendFrameCountObserver, void(FrameCountObserver*)); 198 MOCK_CONST_METHOD0(GetSendFrameCountObserver, FrameCountObserver*(void)); 199 MOCK_METHOD1(RegisterSendChannelRtpStatisticsCallback, 200 void(StreamDataCountersCallback*)); 201 MOCK_CONST_METHOD0(GetSendChannelRtpStatisticsCallback, 202 StreamDataCountersCallback*(void)); 203 MOCK_METHOD1(SetVideoBitrateAllocation, void(const BitrateAllocation&)); 204 // Members. 205 unsigned int remote_ssrc_; 206 207 private: 208 // Mocking this method is currently not required and having a default 209 // implementation like MOCK_METHOD0(TimeUntilNextProcess, int64_t()) 210 // can be dangerous since it can cause a tight loop on a process thread. TimeUntilNextProcess()211 virtual int64_t TimeUntilNextProcess() { return 0xffffffff; } 212 }; 213 214 } // namespace webrtc 215 216 #endif // MODULES_RTP_RTCP_MOCKS_MOCK_RTP_RTCP_H_ 217