1 /*
2  * Copyright (c) Facebook, Inc. and its affiliates.
3  *
4  * This source code is licensed under the MIT license found in the
5  * LICENSE file in the root directory of this source tree.
6  *
7  */
8 
9 #pragma once
10 
11 #include <folly/portability/GMock.h>
12 #include <quic/QuicConstants.h>
13 #include <quic/state/StateData.h>
14 
15 namespace quic {
16 namespace test {
17 class MockCongestionController : public CongestionController {
18  public:
~MockCongestionController()19   ~MockCongestionController() override {}
20   MOCK_METHOD1(onRemoveBytesFromInflight, void(uint64_t));
21   MOCK_METHOD1(onPacketSent, void(const OutstandingPacket&));
22   MOCK_METHOD2(
23       onPacketAckOrLoss,
24       void(folly::Optional<AckEvent>, folly::Optional<LossEvent>));
25   MOCK_CONST_METHOD0(getWritableBytes, uint64_t());
26   MOCK_CONST_METHOD0(getCongestionWindow, uint64_t());
27   MOCK_METHOD0(onSpuriousLoss, void());
28   MOCK_CONST_METHOD0(type, CongestionControlType());
29   GMOCK_METHOD2_(, , , setAppIdle, void(bool, TimePoint));
30   MOCK_METHOD0(setAppLimited, void());
31   GMOCK_METHOD1_(, noexcept, , setBandwidthUtilizationFactor, void(float));
32   MOCK_CONST_METHOD0(isInBackgroundMode, bool());
33   MOCK_CONST_METHOD0(isAppLimited, bool());
34   MOCK_CONST_METHOD1(getStats, void(CongestionControllerStats&));
35 };
36 
37 class MockPacer : public Pacer {
38  public:
39   MOCK_METHOD3(
40       refreshPacingRate,
41       void(uint64_t, std::chrono::microseconds, TimePoint currentTime));
42   MOCK_METHOD1(setPacingRate, void(uint64_t));
43   MOCK_METHOD1(setMaxPacingRate, void(uint64_t));
44   MOCK_METHOD0(reset, void());
45   MOCK_METHOD2(setRttFactor, void(uint8_t, uint8_t));
46   MOCK_CONST_METHOD1(
47       getTimeUntilNextWrite,
48       std::chrono::microseconds(TimePoint));
49   MOCK_METHOD1(updateAndGetWriteBatchSize, uint64_t(TimePoint));
50   MOCK_CONST_METHOD0(getCachedWriteBatchSize, uint64_t());
51   MOCK_METHOD1(setAppLimited, void(bool));
52   MOCK_METHOD0(onPacketSent, void());
53   MOCK_METHOD0(onPacketsLoss, void());
54 };
55 
56 class MockPendingPathRateLimiter : public PendingPathRateLimiter {
57  public:
MockPendingPathRateLimiter()58   MockPendingPathRateLimiter() : PendingPathRateLimiter(0) {}
59   MOCK_METHOD1(onPacketSent, void(uint64_t));
60   GMOCK_METHOD2_(
61       ,
62       noexcept,
63       ,
64       currentCredit,
65       uint64_t(TimePoint, std::chrono::microseconds));
66 };
67 
68 class MockQuicStreamPrioritiesObserver : public QuicStreamPrioritiesObserver {
69  public:
70   MOCK_METHOD0(onStreamPrioritiesChange, void());
71 };
72 } // namespace test
73 } // namespace quic
74