/proc/self/cwd/test/mocks/tcp/mocks.h
Line | Count | Source (jump to first uncovered line) |
1 | | #pragma once |
2 | | |
3 | | #include "envoy/tcp/conn_pool.h" |
4 | | |
5 | | #include "test/mocks/common.h" |
6 | | #include "test/mocks/network/mocks.h" |
7 | | #include "test/mocks/upstream/host.h" |
8 | | #include "test/test_common/printers.h" |
9 | | |
10 | | #include "gmock/gmock.h" |
11 | | |
12 | | using testing::NiceMock; |
13 | | |
14 | | namespace Envoy { |
15 | | namespace Tcp { |
16 | | namespace ConnectionPool { |
17 | | |
18 | | class MockCallbacks : public Callbacks { |
19 | | MOCK_METHOD(void, onPoolFailure, |
20 | | (PoolFailureReason reason, absl::string_view details, |
21 | | Upstream::HostDescriptionConstSharedPtr host)); |
22 | | MOCK_METHOD(void, onPoolReady, |
23 | | (ConnectionDataPtr && conn, Upstream::HostDescriptionConstSharedPtr host)); |
24 | | }; |
25 | | |
26 | | class MockUpstreamCallbacks : public UpstreamCallbacks { |
27 | | public: |
28 | | MockUpstreamCallbacks(); |
29 | | ~MockUpstreamCallbacks() override; |
30 | | |
31 | | // Tcp::ConnectionPool::UpstreamCallbacks |
32 | | MOCK_METHOD(void, onUpstreamData, (Buffer::Instance & data, bool end_stream)); |
33 | | MOCK_METHOD(void, onEvent, (Network::ConnectionEvent event)); |
34 | | MOCK_METHOD(void, onAboveWriteBufferHighWatermark, ()); |
35 | | MOCK_METHOD(void, onBelowWriteBufferLowWatermark, ()); |
36 | | }; |
37 | | |
38 | | class MockConnectionData : public ConnectionData { |
39 | | public: |
40 | | MockConnectionData(); |
41 | | ~MockConnectionData() override; |
42 | | |
43 | | // Tcp::ConnectionPool::ConnectionData |
44 | | MOCK_METHOD(Network::ClientConnection&, connection, ()); |
45 | | MOCK_METHOD(void, addUpstreamCallbacks, (ConnectionPool::UpstreamCallbacks&)); |
46 | 0 | void setConnectionState(ConnectionStatePtr&& state) override { setConnectionState_(state); } |
47 | | MOCK_METHOD(ConnectionPool::ConnectionState*, connectionState, ()); |
48 | | |
49 | | MOCK_METHOD(void, setConnectionState_, (ConnectionPool::ConnectionStatePtr & state)); |
50 | | |
51 | | // If set, invoked in ~MockConnectionData, which indicates that the connection pool |
52 | | // caller has released a connection. |
53 | | std::function<void()> release_callback_; |
54 | | }; |
55 | | |
56 | | class MockInstance : public Instance { |
57 | | public: |
58 | | MockInstance(); |
59 | | ~MockInstance() override; |
60 | | |
61 | | // Tcp::ConnectionPool::Instance |
62 | | MOCK_METHOD(void, addIdleCallback, (IdleCb cb)); |
63 | | MOCK_METHOD(bool, isIdle, (), (const)); |
64 | | MOCK_METHOD(void, drainConnections, (Envoy::ConnectionPool::DrainBehavior drain_behavior)); |
65 | | MOCK_METHOD(void, closeConnections, ()); |
66 | | MOCK_METHOD(Cancellable*, newConnection, (Tcp::ConnectionPool::Callbacks & callbacks)); |
67 | | MOCK_METHOD(bool, maybePreconnect, (float), ()); |
68 | | MOCK_METHOD(Upstream::HostDescriptionConstSharedPtr, host, (), (const)); |
69 | | |
70 | | Envoy::ConnectionPool::MockCancellable* newConnectionImpl(Callbacks& cb); |
71 | | void poolFailure(PoolFailureReason reason, bool host_null = false); |
72 | | void poolReady(Network::MockClientConnection& conn); |
73 | | |
74 | | // Invoked when connection_data_, having been assigned via poolReady is released. |
75 | | MOCK_METHOD(void, released, (Network::MockClientConnection&)); |
76 | | |
77 | | std::list<NiceMock<Envoy::ConnectionPool::MockCancellable>> handles_; |
78 | | std::list<Callbacks*> callbacks_; |
79 | | IdleCb idle_cb_; |
80 | | |
81 | | std::shared_ptr<NiceMock<Upstream::MockHostDescription>> host_{ |
82 | | new NiceMock<Upstream::MockHostDescription>()}; |
83 | | std::unique_ptr<NiceMock<MockConnectionData>> connection_data_{ |
84 | | new NiceMock<MockConnectionData>()}; |
85 | | }; |
86 | | |
87 | | } // namespace ConnectionPool |
88 | | |
89 | | namespace AsyncClient { |
90 | | |
91 | | class MockAsyncTcpClientCallbacks : public AsyncTcpClientCallbacks { |
92 | | public: |
93 | | MockAsyncTcpClientCallbacks() = default; |
94 | | ~MockAsyncTcpClientCallbacks() override = default; |
95 | | |
96 | | MOCK_METHOD(void, onData, (Buffer::Instance & data, bool end_stream)); |
97 | | MOCK_METHOD(void, onEvent, (Network::ConnectionEvent event)); |
98 | | MOCK_METHOD(void, onAboveWriteBufferHighWatermark, ()); |
99 | | MOCK_METHOD(void, onBelowWriteBufferLowWatermark, ()); |
100 | | }; |
101 | | |
102 | | class MockAsyncTcpClient : public AsyncTcpClient { |
103 | | public: |
104 | | MockAsyncTcpClient() = default; |
105 | | ~MockAsyncTcpClient() override = default; |
106 | | |
107 | | MOCK_METHOD(bool, connect, ()); |
108 | | MOCK_METHOD(void, close, (Network::ConnectionCloseType type)); |
109 | | MOCK_METHOD(Network::DetectedCloseType, detectedCloseType, (), (const)); |
110 | | MOCK_METHOD(void, write, (Buffer::Instance & data, bool end_stream)); |
111 | | MOCK_METHOD(void, readDisable, (bool disable)); |
112 | | MOCK_METHOD(void, setAsyncTcpClientCallbacks, (AsyncTcpClientCallbacks & callbacks)); |
113 | | MOCK_METHOD(Event::Dispatcher&, dispatcher, ()); |
114 | | MOCK_METHOD(bool, connected, ()); |
115 | | MOCK_METHOD(OptRef<StreamInfo::StreamInfo>, getStreamInfo, ()); |
116 | | }; |
117 | | |
118 | | } // namespace AsyncClient |
119 | | } // namespace Tcp |
120 | | } // namespace Envoy |