Coverage Report

Created: 2024-09-19 09:45

/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