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