blob: 2791d0e0704de0b4468661f5d3eac76f42b896e7 [file] [log] [blame]
stefan@webrtc.org07b45a52012-02-02 08:37:48 +00001/*
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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef MODULES_RTP_RTCP_MOCKS_MOCK_RTP_RTCP_H_
12#define MODULES_RTP_RTCP_MOCKS_MOCK_RTP_RTCP_H_
stefan@webrtc.org9354cc92012-06-07 08:10:14 +000013
Erik Språng9c771c22019-06-17 16:31:53 +020014#include <memory>
danilchapb8b6fbb2015-12-10 05:05:27 -080015#include <set>
Steve Anton296a0ce2018-03-22 15:17:27 -070016#include <string>
danilchapb8b6fbb2015-12-10 05:05:27 -080017#include <utility>
18#include <vector>
19
Danil Chapovalovd264df52018-06-14 12:59:38 +020020#include "absl/types/optional.h"
Erik Språngeeaa8f92018-05-17 12:35:56 +020021#include "api/video/video_bitrate_allocation.h"
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020022#include "modules/include/module.h"
23#include "modules/rtp_rtcp/include/rtp_rtcp.h"
24#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
25#include "modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
Erik Språng9c771c22019-06-17 16:31:53 +020026#include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020027#include "rtc_base/checks.h"
28#include "test/gmock.h"
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +000029
30namespace webrtc {
31
32class MockRtpRtcp : public RtpRtcp {
33 public:
Danil Chapovalovdd7e2842018-03-09 15:37:03 +000034 MockRtpRtcp();
35 ~MockRtpRtcp();
36
stefan@webrtc.orga5cb98c2013-05-29 12:12:51 +000037 MOCK_METHOD2(IncomingRtcpPacket,
nisse479d3d72017-09-13 07:53:37 -070038 void(const uint8_t* incoming_packet, size_t packet_length));
Sergey Ulanovec4f0682016-07-28 15:19:10 -070039 MOCK_METHOD1(SetRemoteSSRC, void(uint32_t ssrc));
nisse284542b2017-01-10 08:58:32 -080040 MOCK_METHOD1(SetMaxRtpPacketSize, void(size_t size));
nisse284542b2017-01-10 08:58:32 -080041 MOCK_CONST_METHOD0(MaxRtpPacketSize, size_t());
Niels Möller5fe95102019-03-04 16:49:25 +010042 MOCK_METHOD2(RegisterSendPayloadFrequency,
43 void(int payload_type, int frequency));
Sergey Ulanovec4f0682016-07-28 15:19:10 -070044 MOCK_METHOD1(DeRegisterSendPayload, int32_t(int8_t payload_type));
Johannes Kron9190b822018-10-29 11:22:05 +010045 MOCK_METHOD1(SetExtmapAllowMixed, void(bool extmap_allow_mixed));
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +000046 MOCK_METHOD2(RegisterSendRtpHeaderExtension,
Sergey Ulanovec4f0682016-07-28 15:19:10 -070047 int32_t(RTPExtensionType type, uint8_t id));
Danil Chapovalov585d1aa2018-09-14 18:29:32 +020048 MOCK_METHOD2(RegisterRtpHeaderExtension,
49 bool(const std::string& uri, int id));
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +000050 MOCK_METHOD1(DeregisterSendRtpHeaderExtension,
Sergey Ulanovec4f0682016-07-28 15:19:10 -070051 int32_t(RTPExtensionType type));
stefan53b6cc32017-02-03 08:13:57 -080052 MOCK_CONST_METHOD0(HasBweExtensions, bool());
Sergey Ulanovec4f0682016-07-28 15:19:10 -070053 MOCK_CONST_METHOD0(StartTimestamp, uint32_t());
54 MOCK_METHOD1(SetStartTimestamp, void(uint32_t timestamp));
Per83d09102016-04-15 14:59:13 +020055 MOCK_CONST_METHOD0(SequenceNumber, uint16_t());
Sergey Ulanovec4f0682016-07-28 15:19:10 -070056 MOCK_METHOD1(SetSequenceNumber, void(uint16_t seq));
Per83d09102016-04-15 14:59:13 +020057 MOCK_METHOD1(SetRtpState, void(const RtpState& rtp_state));
58 MOCK_METHOD1(SetRtxState, void(const RtpState& rtp_state));
59 MOCK_CONST_METHOD0(GetRtpState, RtpState());
60 MOCK_CONST_METHOD0(GetRtxState, RtpState());
Sergey Ulanovec4f0682016-07-28 15:19:10 -070061 MOCK_CONST_METHOD0(SSRC, uint32_t());
62 MOCK_METHOD1(SetSSRC, void(uint32_t ssrc));
Amit Hilbuch77938e62018-12-21 09:23:38 -080063 MOCK_METHOD1(SetRid, void(const std::string& rid));
Steve Anton296a0ce2018-03-22 15:17:27 -070064 MOCK_METHOD1(SetMid, void(const std::string& mid));
Sergey Ulanovec4f0682016-07-28 15:19:10 -070065 MOCK_CONST_METHOD1(CSRCs, int32_t(uint32_t csrcs[kRtpCsrcSize]));
pbos@webrtc.org9334ac22014-11-24 08:25:50 +000066 MOCK_METHOD1(SetCsrcs, void(const std::vector<uint32_t>& csrcs));
Sergey Ulanovec4f0682016-07-28 15:19:10 -070067 MOCK_METHOD1(SetCSRCStatus, int32_t(bool include));
pbos@webrtc.org0b0c2412015-01-13 14:15:15 +000068 MOCK_METHOD1(SetRtxSendStatus, void(int modes));
69 MOCK_CONST_METHOD0(RtxSendStatus, int());
Sergey Ulanovec4f0682016-07-28 15:19:10 -070070 MOCK_METHOD1(SetRtxSsrc, void(uint32_t));
Shao Changbine62202f2015-04-21 20:24:50 +080071 MOCK_METHOD2(SetRtxSendPayloadType, void(int, int));
Danil Chapovalovd264df52018-06-14 12:59:38 +020072 MOCK_CONST_METHOD0(FlexfecSsrc, absl::optional<uint32_t>());
Shao Changbine62202f2015-04-21 20:24:50 +080073 MOCK_CONST_METHOD0(RtxSendPayloadType, std::pair<int, int>());
Sergey Ulanovec4f0682016-07-28 15:19:10 -070074 MOCK_METHOD1(SetSendingStatus, int32_t(bool sending));
75 MOCK_CONST_METHOD0(Sending, bool());
76 MOCK_METHOD1(SetSendingMediaStatus, void(bool sending));
77 MOCK_CONST_METHOD0(SendingMedia, bool());
Sebastian Jansson1bca65b2018-10-10 09:58:08 +020078 MOCK_METHOD1(SetAsPartOfAllocation, void(bool));
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +000079 MOCK_CONST_METHOD4(BitrateSent,
Sergey Ulanovec4f0682016-07-28 15:19:10 -070080 void(uint32_t* total_rate,
81 uint32_t* video_rate,
82 uint32_t* fec_rate,
83 uint32_t* nack_rate));
stefan@webrtc.org439be292012-02-16 14:45:37 +000084 MOCK_CONST_METHOD1(EstimatedReceiveBandwidth,
Sergey Ulanovec4f0682016-07-28 15:19:10 -070085 int(uint32_t* available_bandwidth));
Niels Möller5fe95102019-03-04 16:49:25 +010086 MOCK_METHOD4(OnSendingRtpFrame, bool(uint32_t, int64_t, int, bool));
philipela1ed0b32016-06-01 06:31:17 -070087 MOCK_METHOD5(TimeToSendPacket,
Erik Språngd2879622019-05-10 08:29:01 -070088 RtpPacketSendResult(uint32_t ssrc,
89 uint16_t sequence_number,
90 int64_t capture_time_ms,
91 bool retransmission,
92 const PacedPacketInfo& pacing_info));
Erik Språng9c771c22019-06-17 16:31:53 +020093 MOCK_METHOD2(TrySendPacket,
94 bool(RtpPacketToSend* packet,
95 const PacedPacketInfo& pacing_info));
philipelc7bf32a2017-02-17 03:59:43 -080096 MOCK_METHOD2(TimeToSendPadding,
97 size_t(size_t bytes, const PacedPacketInfo& pacing_info));
pbos@webrtc.orgece38902014-11-14 11:52:04 +000098 MOCK_METHOD2(RegisterRtcpObservers,
Sergey Ulanovec4f0682016-07-28 15:19:10 -070099 void(RtcpIntraFrameObserver* intra_frame_callback,
100 RtcpBandwidthObserver* bandwidth_callback));
pbosda903ea2015-10-02 02:36:56 -0700101 MOCK_CONST_METHOD0(RTCP, RtcpMode());
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700102 MOCK_METHOD1(SetRTCPStatus, void(RtcpMode method));
103 MOCK_METHOD1(SetCNAME, int32_t(const char cname[RTCP_CNAME_SIZE]));
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +0000104 MOCK_CONST_METHOD2(RemoteCNAME,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700105 int32_t(uint32_t remote_ssrc,
106 char cname[RTCP_CNAME_SIZE]));
stefan@webrtc.org7c3523c2012-09-11 07:00:42 +0000107 MOCK_CONST_METHOD5(RemoteNTP,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700108 int32_t(uint32_t* received_ntp_secs,
109 uint32_t* received_ntp_frac,
110 uint32_t* rtcp_arrival_time_secs,
111 uint32_t* rtcp_arrival_time_frac,
112 uint32_t* rtcp_timestamp));
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +0000113 MOCK_METHOD2(AddMixedCNAME,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700114 int32_t(uint32_t ssrc, const char cname[RTCP_CNAME_SIZE]));
115 MOCK_METHOD1(RemoveMixedCNAME, int32_t(uint32_t ssrc));
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +0000116 MOCK_CONST_METHOD5(RTT,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700117 int32_t(uint32_t remote_ssrc,
118 int64_t* rtt,
119 int64_t* avg_rtt,
120 int64_t* min_rtt,
121 int64_t* max_rtt));
Niels Möller5fe95102019-03-04 16:49:25 +0100122 MOCK_CONST_METHOD0(ExpectedRetransmissionTimeMs, int64_t());
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700123 MOCK_METHOD1(SendRTCP, int32_t(RTCPPacketType packet_type));
Erik Språng242e22b2015-05-11 10:17:43 +0200124 MOCK_METHOD1(SendCompoundRTCP,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700125 int32_t(const std::set<RTCPPacketType>& packet_types));
wu@webrtc.org822fbd82013-08-15 23:38:54 +0000126 MOCK_CONST_METHOD2(DataCountersRTP,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700127 int32_t(size_t* bytes_sent, uint32_t* packets_sent));
asapersson@webrtc.org97d04892014-12-09 09:47:53 +0000128 MOCK_CONST_METHOD2(GetSendStreamDataCounters,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700129 void(StreamDataCounters*, StreamDataCounters*));
perkj@webrtc.orgce5990c2012-01-11 13:00:08 +0000130 MOCK_CONST_METHOD1(RemoteRTCPStat,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700131 int32_t(std::vector<RTCPReportBlock>* receive_blocks));
Henrik Boström6e436d12019-05-27 12:19:33 +0200132 MOCK_CONST_METHOD0(GetLatestReportBlockData, std::vector<ReportBlockData>());
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +0000133 MOCK_METHOD4(SetRTCPApplicationSpecificData,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700134 int32_t(uint8_t sub_type,
135 uint32_t name,
danilchap6db6cdc2015-12-15 02:54:47 -0800136 const uint8_t* data,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700137 uint16_t length));
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700138 MOCK_METHOD1(SetRtcpXrRrtrStatus, void(bool enable));
139 MOCK_CONST_METHOD0(RtcpXrRrtrStatus, bool());
Danil Chapovalov1de4b622017-12-13 13:35:10 +0100140 MOCK_METHOD2(SetRemb, void(int64_t bitrate, std::vector<uint32_t> ssrcs));
Danil Chapovalov51e21aa2017-10-10 17:46:26 +0200141 MOCK_METHOD0(UnsetRemb, void());
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700142 MOCK_CONST_METHOD0(TMMBR, bool());
143 MOCK_METHOD1(SetTMMBRStatus, void(bool enable));
144 MOCK_METHOD1(OnBandwidthEstimateUpdate, void(uint16_t bandwidth_kbit));
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700145 MOCK_METHOD2(SendNACK, int32_t(const uint16_t* nack_list, uint16_t size));
philipel83f831a2016-03-12 03:30:23 -0800146 MOCK_METHOD1(SendNack, void(const std::vector<uint16_t>& sequence_numbers));
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +0000147 MOCK_METHOD2(SetStorePacketsStatus,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700148 void(bool enable, uint16_t number_to_store));
wu@webrtc.org822fbd82013-08-15 23:38:54 +0000149 MOCK_CONST_METHOD0(StorePackets, bool());
pbos@webrtc.orgce4e9a32014-12-18 13:50:16 +0000150 MOCK_METHOD1(RegisterRtcpStatisticsCallback, void(RtcpStatisticsCallback*));
151 MOCK_METHOD0(GetRtcpStatisticsCallback, RtcpStatisticsCallback*());
Henrik Boström87e3f9d2019-05-27 10:44:24 +0200152 MOCK_METHOD1(SetReportBlockDataObserver, void(ReportBlockDataObserver*));
sprang233bd872015-09-08 13:25:16 -0700153 MOCK_METHOD1(SendFeedbackPacket, bool(const rtcp::TransportFeedback& packet));
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700154 MOCK_METHOD1(SetTargetSendBitrate, void(uint32_t bitrate_bps));
Elad Alone86af2c2019-06-03 14:37:50 +0200155 MOCK_METHOD4(SendLossNotification,
Elad Alon7d6a4c02019-02-25 13:00:51 +0100156 int32_t(uint16_t last_decoded_seq_num,
157 uint16_t last_received_seq_num,
Elad Alone86af2c2019-06-03 14:37:50 +0200158 bool decodability_flag,
159 bool buffering_allowed));
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700160 MOCK_METHOD0(Process, void());
sprang@webrtc.orgebad7652013-12-05 14:29:02 +0000161 MOCK_METHOD1(RegisterSendChannelRtpStatisticsCallback,
Sergey Ulanovec4f0682016-07-28 15:19:10 -0700162 void(StreamDataCountersCallback*));
sprang@webrtc.orgebad7652013-12-05 14:29:02 +0000163 MOCK_CONST_METHOD0(GetSendChannelRtpStatisticsCallback,
Erik Språng490d76c2019-05-07 09:29:15 -0700164 StreamDataCountersCallback*());
Erik Språng566124a2018-04-23 12:32:22 +0200165 MOCK_METHOD1(SetVideoBitrateAllocation, void(const VideoBitrateAllocation&));
Niels Möller5fe95102019-03-04 16:49:25 +0100166 MOCK_METHOD0(RtpSender, RTPSender*());
167 MOCK_CONST_METHOD0(RtpSender, const RTPSender*());
168
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +0000169 // Members.
170 unsigned int remote_ssrc_;
tommi994ebb42017-03-17 04:01:30 -0700171
172 private:
173 // Mocking this method is currently not required and having a default
174 // implementation like MOCK_METHOD0(TimeUntilNextProcess, int64_t())
175 // can be dangerous since it can cause a tight loop on a process thread.
176 virtual int64_t TimeUntilNextProcess() { return 0xffffffff; }
mflodman@webrtc.org84dc3d12011-12-22 10:26:13 +0000177};
178
179} // namespace webrtc
stefan@webrtc.org9354cc92012-06-07 08:10:14 +0000180
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200181#endif // MODULES_RTP_RTCP_MOCKS_MOCK_RTP_RTCP_H_