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/io/async/EventBase.h>
12 #include <folly/portability/GMock.h>
13 #include "quic/QuicException.h"
14 
15 #include <quic/state/QuicTransportStatsCallback.h>
16 
17 namespace quic {
18 
19 class MockQuicStats : public QuicTransportStatsCallback {
20  public:
21   MOCK_METHOD0(onPacketReceived, void());
22   MOCK_METHOD0(onDuplicatedPacketReceived, void());
23   MOCK_METHOD0(onOutOfOrderPacketReceived, void());
24   MOCK_METHOD0(onPacketProcessed, void());
25   MOCK_METHOD0(onPacketSent, void());
26   MOCK_METHOD0(onPacketRetransmission, void());
27   MOCK_METHOD0(onPacketLoss, void());
28   MOCK_METHOD0(onPacketSpuriousLoss, void());
29   MOCK_METHOD0(onPersistentCongestion, void());
30   MOCK_METHOD1(onPacketDropped, void(PacketDropReason));
31   MOCK_METHOD0(onPacketForwarded, void());
32   MOCK_METHOD0(onForwardedPacketReceived, void());
33   MOCK_METHOD0(onForwardedPacketProcessed, void());
34   MOCK_METHOD1(onClientInitialReceived, void(QuicVersion));
35   MOCK_METHOD0(onConnectionRateLimited, void());
36   MOCK_METHOD0(onNewConnection, void());
37   MOCK_METHOD1(onConnectionClose, void(folly::Optional<QuicErrorCode>));
38   MOCK_METHOD0(onNewQuicStream, void());
39   MOCK_METHOD0(onQuicStreamClosed, void());
40   MOCK_METHOD1(onQuicStreamReset, void(QuicErrorCode));
41   MOCK_METHOD0(onConnFlowControlUpdate, void());
42   MOCK_METHOD0(onConnFlowControlBlocked, void());
43   MOCK_METHOD0(onStatelessReset, void());
44   MOCK_METHOD0(onStreamFlowControlUpdate, void());
45   MOCK_METHOD0(onStreamFlowControlBlocked, void());
46   MOCK_METHOD0(onCwndBlocked, void());
47   MOCK_METHOD1(onNewCongestionController, void(CongestionControlType));
48   MOCK_METHOD0(onPTO, void());
49   MOCK_METHOD1(onRead, void(size_t));
50   MOCK_METHOD1(onWrite, void(size_t));
51   MOCK_METHOD1(onUDPSocketWriteError, void(SocketErrorType));
52   MOCK_METHOD0(onConnectionD6DStarted, void());
53   MOCK_METHOD0(onConnectionPMTURaised, void());
54   MOCK_METHOD0(onConnectionPMTUBlackholeDetected, void());
55   MOCK_METHOD0(onConnectionPMTUUpperBoundDetected, void());
56   MOCK_METHOD1(onTransportKnobApplied, void(TransportKnobType));
57   MOCK_METHOD1(onTransportKnobError, void(TransportKnobType));
58   MOCK_METHOD0(onServerUnfinishedHandshake, void());
59   MOCK_METHOD0(onZeroRttBuffered, void());
60   MOCK_METHOD0(onZeroRttBufferedPruned, void());
61   MOCK_METHOD0(onZeroRttAccepted, void());
62   MOCK_METHOD0(onZeroRttRejected, void());
63 };
64 
65 class MockQuicStatsFactory : public QuicTransportStatsCallbackFactory {
66  public:
67   ~MockQuicStatsFactory() override = default;
68 
69   MOCK_METHOD0(make, std::unique_ptr<QuicTransportStatsCallback>());
70 };
71 } // namespace quic
72