/proc/self/cwd/test/mocks/network/mocks.h
Line | Count | Source (jump to first uncovered line) |
1 | | #pragma once |
2 | | |
3 | | #include <algorithm> |
4 | | #include <cstdint> |
5 | | #include <list> |
6 | | #include <ostream> |
7 | | #include <string> |
8 | | #include <vector> |
9 | | |
10 | | #include "envoy/config/core/v3/address.pb.h" |
11 | | #include "envoy/config/core/v3/base.pb.h" |
12 | | #include "envoy/config/listener/v3/udp_listener_config.pb.h" |
13 | | #include "envoy/network/connection.h" |
14 | | #include "envoy/network/drain_decision.h" |
15 | | #include "envoy/network/filter.h" |
16 | | #include "envoy/network/resolver.h" |
17 | | #include "envoy/network/socket.h" |
18 | | #include "envoy/network/transport_socket.h" |
19 | | #include "envoy/stats/scope.h" |
20 | | |
21 | | #include "source/common/network/dns_resolver/dns_factory_util.h" |
22 | | #include "source/common/network/filter_manager_impl.h" |
23 | | #include "source/common/network/socket_interface.h" |
24 | | #include "source/common/network/socket_interface_impl.h" |
25 | | #include "source/common/stats/isolated_store_impl.h" |
26 | | #include "source/common/stream_info/filter_state_impl.h" |
27 | | |
28 | | #include "test/mocks/event/mocks.h" |
29 | | #include "test/mocks/network/connection.h" |
30 | | #include "test/mocks/network/io_handle.h" |
31 | | #include "test/mocks/stream_info/mocks.h" |
32 | | #include "test/test_common/printers.h" |
33 | | |
34 | | #include "gmock/gmock.h" |
35 | | |
36 | | namespace Envoy { |
37 | | namespace Network { |
38 | | |
39 | | class MockActiveDnsQuery : public ActiveDnsQuery { |
40 | | public: |
41 | | MockActiveDnsQuery(); |
42 | | ~MockActiveDnsQuery() override; |
43 | | |
44 | | // Network::ActiveDnsQuery |
45 | | MOCK_METHOD(void, cancel, (CancelReason reason)); |
46 | | }; |
47 | | |
48 | | class MockFilterManager : public FilterManager { |
49 | | public: |
50 | | MOCK_METHOD(void, addWriteFilter, (WriteFilterSharedPtr filter)); |
51 | | MOCK_METHOD(void, addFilter, (FilterSharedPtr filter)); |
52 | | MOCK_METHOD(void, addReadFilter, (ReadFilterSharedPtr filter)); |
53 | | MOCK_METHOD(void, removeReadFilter, (ReadFilterSharedPtr filter)); |
54 | | MOCK_METHOD(bool, initializeReadFilters, ()); |
55 | | }; |
56 | | |
57 | | class MockDnsResolver : public DnsResolver { |
58 | | public: |
59 | | MockDnsResolver(); |
60 | | ~MockDnsResolver() override; |
61 | | |
62 | | // Network::DnsResolver |
63 | | MOCK_METHOD(ActiveDnsQuery*, resolve, |
64 | | (const std::string& dns_name, DnsLookupFamily dns_lookup_family, ResolveCb callback)); |
65 | | MOCK_METHOD(void, resetNetworking, ()); |
66 | | |
67 | | testing::NiceMock<MockActiveDnsQuery> active_query_; |
68 | | }; |
69 | | |
70 | | class MockDnsResolverFactory : public DnsResolverFactory { |
71 | | public: |
72 | 1 | MockDnsResolverFactory() = default; |
73 | 1 | ~MockDnsResolverFactory() override = default; |
74 | | |
75 | | MOCK_METHOD(absl::StatusOr<DnsResolverSharedPtr>, createDnsResolver, |
76 | | (Event::Dispatcher & dispatcher, Api::Api& api, |
77 | | const envoy::config::core::v3::TypedExtensionConfig& typed_dns_resolver_config), |
78 | | (const, override)); |
79 | 6 | std::string name() const override { return std::string(CaresDnsResolver); }; |
80 | 2 | ProtobufTypes::MessagePtr createEmptyConfigProto() override { |
81 | 2 | return ProtobufTypes::MessagePtr{ |
82 | 2 | new envoy::extensions::network::dns_resolver::cares::v3::CaresDnsResolverConfig()}; |
83 | 2 | } |
84 | | }; |
85 | | |
86 | | class MockAddressResolver : public Address::Resolver { |
87 | | public: |
88 | | MockAddressResolver(); |
89 | | ~MockAddressResolver() override; |
90 | | |
91 | | MOCK_METHOD(absl::StatusOr<Address::InstanceConstSharedPtr>, resolve, |
92 | | (const envoy::config::core::v3::SocketAddress&)); |
93 | | MOCK_METHOD(std::string, name, (), (const)); |
94 | | }; |
95 | | |
96 | | class MockReadFilterCallbacks : public ReadFilterCallbacks { |
97 | | public: |
98 | | MockReadFilterCallbacks(); |
99 | | ~MockReadFilterCallbacks() override; |
100 | | |
101 | | MOCK_METHOD(Connection&, connection, ()); |
102 | | MOCK_METHOD(const Socket&, socket, ()); |
103 | | MOCK_METHOD(void, continueReading, ()); |
104 | | MOCK_METHOD(void, injectReadDataToFilterChain, (Buffer::Instance & data, bool end_stream)); |
105 | | MOCK_METHOD(Upstream::HostDescriptionConstSharedPtr, upstreamHost, ()); |
106 | | MOCK_METHOD(void, upstreamHost, (Upstream::HostDescriptionConstSharedPtr host)); |
107 | | MOCK_METHOD(bool, startUpstreamSecureTransport, ()); |
108 | | |
109 | | testing::NiceMock<MockConnection> connection_; |
110 | | Upstream::HostDescriptionConstSharedPtr host_; |
111 | | }; |
112 | | |
113 | | class MockReadFilter : public ReadFilter { |
114 | | public: |
115 | | MockReadFilter(); |
116 | | ~MockReadFilter() override; |
117 | | |
118 | | MOCK_METHOD(FilterStatus, onData, (Buffer::Instance & data, bool end_stream)); |
119 | | MOCK_METHOD(FilterStatus, onNewConnection, ()); |
120 | | MOCK_METHOD(void, initializeReadFilterCallbacks, (ReadFilterCallbacks & callbacks)); |
121 | | MOCK_METHOD(bool, startUpstreamSecureTransport, ()); |
122 | | |
123 | | ReadFilterCallbacks* callbacks_{}; |
124 | | }; |
125 | | |
126 | | class MockWriteFilterCallbacks : public WriteFilterCallbacks { |
127 | | public: |
128 | | MockWriteFilterCallbacks(); |
129 | | ~MockWriteFilterCallbacks() override; |
130 | | |
131 | | MOCK_METHOD(Connection&, connection, ()); |
132 | | MOCK_METHOD(const Socket&, socket, ()); |
133 | | MOCK_METHOD(void, injectWriteDataToFilterChain, (Buffer::Instance & data, bool end_stream)); |
134 | | |
135 | | testing::NiceMock<MockConnection> connection_; |
136 | | }; |
137 | | |
138 | | class MockWriteFilter : public WriteFilter { |
139 | | public: |
140 | | MockWriteFilter(); |
141 | | ~MockWriteFilter() override; |
142 | | |
143 | | MOCK_METHOD(FilterStatus, onWrite, (Buffer::Instance & data, bool end_stream)); |
144 | | MOCK_METHOD(void, initializeWriteFilterCallbacks, (WriteFilterCallbacks & callbacks)); |
145 | | |
146 | | WriteFilterCallbacks* write_callbacks_{}; |
147 | | }; |
148 | | |
149 | | class MockFilter : public Filter { |
150 | | public: |
151 | | MockFilter(); |
152 | | ~MockFilter() override; |
153 | | |
154 | | MOCK_METHOD(FilterStatus, onData, (Buffer::Instance & data, bool end_stream)); |
155 | | MOCK_METHOD(FilterStatus, onNewConnection, ()); |
156 | | MOCK_METHOD(FilterStatus, onWrite, (Buffer::Instance & data, bool end_stream)); |
157 | | MOCK_METHOD(void, initializeReadFilterCallbacks, (ReadFilterCallbacks & callbacks)); |
158 | | MOCK_METHOD(void, initializeWriteFilterCallbacks, (WriteFilterCallbacks & callbacks)); |
159 | | |
160 | | ReadFilterCallbacks* callbacks_{}; |
161 | | WriteFilterCallbacks* write_callbacks_{}; |
162 | | }; |
163 | | |
164 | | class MockTcpListenerCallbacks : public TcpListenerCallbacks { |
165 | | public: |
166 | | MockTcpListenerCallbacks(); |
167 | | ~MockTcpListenerCallbacks() override; |
168 | | |
169 | 0 | void onAccept(ConnectionSocketPtr&& socket) override { onAccept_(socket); } |
170 | | |
171 | | MOCK_METHOD(void, onAccept_, (ConnectionSocketPtr & socket)); |
172 | | MOCK_METHOD(void, onReject, (RejectCause), (override)); |
173 | | MOCK_METHOD(void, recordConnectionsAcceptedOnSocketEvent, (uint32_t), (override)); |
174 | | }; |
175 | | |
176 | | class MockUdpListenerCallbacks : public UdpListenerCallbacks { |
177 | | public: |
178 | | MockUdpListenerCallbacks(); |
179 | | ~MockUdpListenerCallbacks() override; |
180 | | |
181 | | MOCK_METHOD(void, onData, (UdpRecvData && data)); |
182 | | MOCK_METHOD(void, onDatagramsDropped, (uint32_t dropped)); |
183 | | MOCK_METHOD(void, onReadReady, ()); |
184 | | MOCK_METHOD(void, onWriteReady, (const Socket& socket)); |
185 | | MOCK_METHOD(void, onReceiveError, (Api::IoError::IoErrorCode err)); |
186 | | MOCK_METHOD(Network::UdpPacketWriter&, udpPacketWriter, ()); |
187 | | MOCK_METHOD(uint32_t, workerIndex, (), (const)); |
188 | | MOCK_METHOD(void, onDataWorker, (Network::UdpRecvData && data)); |
189 | | MOCK_METHOD(void, post, (Network::UdpRecvData && data)); |
190 | | MOCK_METHOD(size_t, numPacketsExpectedPerEventLoop, (), (const)); |
191 | | MOCK_METHOD(const IoHandle::UdpSaveCmsgConfig&, udpSaveCmsgConfig, (), (const)); |
192 | | }; |
193 | | |
194 | | class MockDrainDecision : public DrainDecision { |
195 | | public: |
196 | | MockDrainDecision(); |
197 | | ~MockDrainDecision() override; |
198 | | |
199 | | MOCK_METHOD(bool, drainClose, (), (const)); |
200 | | MOCK_METHOD(Common::CallbackHandlePtr, addOnDrainCloseCb, (DrainCloseCb cb), (const, override)); |
201 | | }; |
202 | | |
203 | | class MockListenerFilter : public ListenerFilter { |
204 | | public: |
205 | 0 | MockListenerFilter(size_t max_read_bytes = 0) : listener_filter_max_read_bytes_(max_read_bytes) {} |
206 | | ~MockListenerFilter() override; |
207 | | |
208 | 0 | size_t maxReadBytes() const override { return listener_filter_max_read_bytes_; } |
209 | | |
210 | | MOCK_METHOD(void, destroy_, ()); |
211 | | MOCK_METHOD(Network::FilterStatus, onAccept, (ListenerFilterCallbacks&)); |
212 | | MOCK_METHOD(Network::FilterStatus, onData, (Network::ListenerFilterBuffer&)); |
213 | | |
214 | | size_t listener_filter_max_read_bytes_{0}; |
215 | | }; |
216 | | |
217 | | class MockListenerFilterManager : public ListenerFilterManager { |
218 | | public: |
219 | | MockListenerFilterManager(); |
220 | | ~MockListenerFilterManager() override; |
221 | | |
222 | | void addAcceptFilter(const Network::ListenerFilterMatcherSharedPtr& listener_filter_matcher, |
223 | 0 | ListenerFilterPtr&& filter) override { |
224 | 0 | addAcceptFilter_(listener_filter_matcher, filter); |
225 | 0 | } |
226 | | |
227 | | MOCK_METHOD(void, addAcceptFilter_, |
228 | | (const Network::ListenerFilterMatcherSharedPtr&, Network::ListenerFilterPtr&)); |
229 | | }; |
230 | | |
231 | | #ifdef ENVOY_ENABLE_QUIC |
232 | | |
233 | | } // namespace Network |
234 | | } // namespace Envoy |
235 | | |
236 | | #include "quiche/quic/platform/api/quic_socket_address.h" |
237 | | |
238 | | namespace Envoy { |
239 | | namespace Network { |
240 | | |
241 | | class MockQuicListenerFilter : public QuicListenerFilter { |
242 | | public: |
243 | | MOCK_METHOD(Network::FilterStatus, onAccept, (ListenerFilterCallbacks&)); |
244 | | MOCK_METHOD(bool, shouldAdvertiseServerPreferredAddress, (const quic::QuicSocketAddress&), |
245 | | (const)); |
246 | | MOCK_METHOD(Network::FilterStatus, onPeerAddressChanged, |
247 | | (const quic::QuicSocketAddress&, Network::Connection&)); |
248 | | }; |
249 | | |
250 | | class MockQuicListenerFilterManager : public QuicListenerFilterManager { |
251 | | public: |
252 | | MOCK_METHOD(void, addFilter, |
253 | | (const Network::ListenerFilterMatcherSharedPtr&, QuicListenerFilterPtr&&)); |
254 | | MOCK_METHOD(bool, shouldAdvertiseServerPreferredAddress, (const quic::QuicSocketAddress&), |
255 | | (const)); |
256 | | |
257 | | MOCK_METHOD(void, onPeerAddressChanged, (const quic::QuicSocketAddress&, Connection&)); |
258 | | MOCK_METHOD(void, onFirstPacketReceived, (const quic::QuicReceivedPacket&)); |
259 | | }; |
260 | | |
261 | | #endif |
262 | | |
263 | | class MockFilterChain : public DrainableFilterChain { |
264 | | public: |
265 | | MockFilterChain(); |
266 | | ~MockFilterChain() override; |
267 | | |
268 | | // Network::DrainableFilterChain |
269 | | MOCK_METHOD(const DownstreamTransportSocketFactory&, transportSocketFactory, (), (const)); |
270 | | MOCK_METHOD(std::chrono::milliseconds, transportSocketConnectTimeout, (), (const)); |
271 | | MOCK_METHOD(const NetworkFilterFactoriesList&, networkFilterFactories, (), (const)); |
272 | | MOCK_METHOD(void, startDraining, ()); |
273 | | MOCK_METHOD(absl::string_view, name, (), (const)); |
274 | | }; |
275 | | |
276 | | class MockFilterChainInfo : public FilterChainInfo { |
277 | | public: |
278 | | MockFilterChainInfo(); |
279 | | |
280 | | // Network::FilterChainInfo |
281 | | MOCK_METHOD(absl::string_view, name, (), (const)); |
282 | | |
283 | | std::string filter_chain_name_{"mock"}; |
284 | | }; |
285 | | |
286 | | class MockFilterChainManager : public FilterChainManager { |
287 | | public: |
288 | | MockFilterChainManager(); |
289 | | ~MockFilterChainManager() override; |
290 | | |
291 | | // Network::FilterChainManager |
292 | | MOCK_METHOD(const FilterChain*, findFilterChain, |
293 | | (const ConnectionSocket& socket, const StreamInfo::StreamInfo& info), (const)); |
294 | | }; |
295 | | |
296 | | class MockFilterChainFactory : public FilterChainFactory { |
297 | | public: |
298 | | MockFilterChainFactory(); |
299 | | ~MockFilterChainFactory() override; |
300 | | |
301 | | MOCK_METHOD(bool, createNetworkFilterChain, |
302 | | (Connection & connection, const NetworkFilterFactoriesList& filter_factories)); |
303 | | MOCK_METHOD(bool, createListenerFilterChain, (ListenerFilterManager & listener)); |
304 | | MOCK_METHOD(void, createUdpListenerFilterChain, |
305 | | (UdpListenerFilterManager & listener, UdpReadFilterCallbacks& callbacks)); |
306 | | MOCK_METHOD(bool, createQuicListenerFilterChain, (QuicListenerFilterManager & listener)); |
307 | | }; |
308 | | |
309 | | class MockListenSocket : public Socket { |
310 | | public: |
311 | | MockListenSocket(); |
312 | 1 | ~MockListenSocket() override = default; |
313 | | |
314 | 0 | void addOption(const Socket::OptionConstSharedPtr& option) override { addOption_(option); } |
315 | 0 | void addOptions(const Socket::OptionsSharedPtr& options) override { addOptions_(options); } |
316 | | |
317 | 1 | ConnectionInfoSetter& connectionInfoProvider() override { return *connection_info_provider_; } |
318 | 0 | const ConnectionInfoProvider& connectionInfoProvider() const override { |
319 | 0 | return *connection_info_provider_; |
320 | 0 | } |
321 | 0 | ConnectionInfoProviderSharedPtr connectionInfoProviderSharedPtr() const override { |
322 | 0 | return connection_info_provider_; |
323 | 0 | } |
324 | | MOCK_METHOD(IoHandle&, ioHandle, ()); |
325 | | MOCK_METHOD(SocketPtr, duplicate, ()); |
326 | | MOCK_METHOD(const IoHandle&, ioHandle, (), (const)); |
327 | | MOCK_METHOD(Socket::Type, socketType, (), (const)); |
328 | | MOCK_METHOD(Address::Type, addressType, (), (const)); |
329 | | MOCK_METHOD(absl::optional<Address::IpVersion>, ipVersion, (), (const)); |
330 | | MOCK_METHOD(void, close, ()); |
331 | | MOCK_METHOD(bool, isOpen, (), (const)); |
332 | | MOCK_METHOD(void, addOption_, (const Socket::OptionConstSharedPtr& option)); |
333 | | MOCK_METHOD(void, addOptions_, (const Socket::OptionsSharedPtr& options)); |
334 | | MOCK_METHOD(const OptionsSharedPtr&, options, (), (const)); |
335 | | MOCK_METHOD(IoHandlePtr, socket, (Socket::Type, Address::Type, Address::IpVersion), (const)); |
336 | | MOCK_METHOD(IoHandlePtr, socketForAddrPtr, (Socket::Type, const Address::InstanceConstSharedPtr), |
337 | | (const)); |
338 | | MOCK_METHOD(Api::SysCallIntResult, bind, (const Address::InstanceConstSharedPtr)); |
339 | | MOCK_METHOD(Api::SysCallIntResult, connect, (const Address::InstanceConstSharedPtr)); |
340 | | MOCK_METHOD(Api::SysCallIntResult, listen, (int)); |
341 | | MOCK_METHOD(Api::SysCallIntResult, setSocketOption, (int, int, const void*, socklen_t)); |
342 | | MOCK_METHOD(Api::SysCallIntResult, getSocketOption, (int, int, void*, socklen_t*), (const)); |
343 | | MOCK_METHOD(Api::SysCallIntResult, ioctl, |
344 | | (unsigned long, void*, unsigned long, void*, unsigned long, unsigned long*)); |
345 | | MOCK_METHOD(Api::SysCallIntResult, setBlockingForTest, (bool)); |
346 | | |
347 | | std::unique_ptr<MockIoHandle> io_handle_; |
348 | | Network::ConnectionInfoSetterSharedPtr connection_info_provider_; |
349 | | OptionsSharedPtr options_; |
350 | | bool socket_is_open_ = true; |
351 | | }; |
352 | | |
353 | | class MockSocketOption : public Socket::Option { |
354 | | public: |
355 | | MockSocketOption(); |
356 | | ~MockSocketOption() override; |
357 | | |
358 | | MOCK_METHOD(bool, setOption, (Socket&, envoy::config::core::v3::SocketOption::SocketState state), |
359 | | (const)); |
360 | | MOCK_METHOD(void, hashKey, (std::vector<uint8_t>&), (const)); |
361 | | MOCK_METHOD(absl::optional<Socket::Option::Details>, getOptionDetails, |
362 | | (const Socket&, envoy::config::core::v3::SocketOption::SocketState state), (const)); |
363 | | MOCK_METHOD(bool, isSupported, (), (const)); |
364 | | }; |
365 | | |
366 | | class MockConnectionSocket : public ConnectionSocket { |
367 | | public: |
368 | | MockConnectionSocket(); |
369 | | ~MockConnectionSocket() override; |
370 | | |
371 | 0 | void addOption(const Socket::OptionConstSharedPtr& option) override { addOption_(option); } |
372 | 1.09k | void addOptions(const Socket::OptionsSharedPtr& options) override { addOptions_(options); } |
373 | | |
374 | 10.8k | ConnectionInfoSetter& connectionInfoProvider() override { return *connection_info_provider_; } |
375 | 0 | const ConnectionInfoProvider& connectionInfoProvider() const override { |
376 | 0 | return *connection_info_provider_; |
377 | 0 | } |
378 | 0 | ConnectionInfoProviderSharedPtr connectionInfoProviderSharedPtr() const override { |
379 | 0 | return connection_info_provider_; |
380 | 0 | } |
381 | | MOCK_METHOD(void, setDetectedTransportProtocol, (absl::string_view)); |
382 | | MOCK_METHOD(absl::string_view, detectedTransportProtocol, (), (const)); |
383 | | MOCK_METHOD(void, setRequestedApplicationProtocols, (const std::vector<absl::string_view>&)); |
384 | | MOCK_METHOD(const std::vector<std::string>&, requestedApplicationProtocols, (), (const)); |
385 | | MOCK_METHOD(void, setRequestedServerName, (absl::string_view)); |
386 | | MOCK_METHOD(absl::string_view, requestedServerName, (), (const)); |
387 | | MOCK_METHOD(void, setJA3Hash, (absl::string_view)); |
388 | | MOCK_METHOD(absl::string_view, ja3Hash, (), (const)); |
389 | | MOCK_METHOD(void, addOption_, (const Socket::OptionConstSharedPtr&)); |
390 | | MOCK_METHOD(void, addOptions_, (const Socket::OptionsSharedPtr&)); |
391 | | MOCK_METHOD(const Network::ConnectionSocket::OptionsSharedPtr&, options, (), (const)); |
392 | | MOCK_METHOD(SocketPtr, duplicate, ()); |
393 | | MOCK_METHOD(IoHandle&, ioHandle, ()); |
394 | | MOCK_METHOD(const IoHandle&, ioHandle, (), (const)); |
395 | | MOCK_METHOD(Socket::Type, socketType, (), (const)); |
396 | | MOCK_METHOD(Address::Type, addressType, (), (const)); |
397 | | MOCK_METHOD(absl::optional<Address::IpVersion>, ipVersion, (), (const)); |
398 | | MOCK_METHOD(void, close, ()); |
399 | | MOCK_METHOD(bool, isOpen, (), (const)); |
400 | | MOCK_METHOD(IoHandlePtr, socket, (Socket::Type, Address::Type, Address::IpVersion), (const)); |
401 | | MOCK_METHOD(IoHandlePtr, socketForAddrPtr, (Socket::Type, const Address::InstanceConstSharedPtr), |
402 | | (const)); |
403 | | MOCK_METHOD(Api::SysCallIntResult, bind, (const Address::InstanceConstSharedPtr)); |
404 | | MOCK_METHOD(Api::SysCallIntResult, connect, (const Address::InstanceConstSharedPtr)); |
405 | | MOCK_METHOD(Api::SysCallIntResult, listen, (int)); |
406 | | MOCK_METHOD(Api::SysCallIntResult, setSocketOption, (int, int, const void*, socklen_t)); |
407 | | MOCK_METHOD(Api::SysCallIntResult, getSocketOption, (int, int, void*, socklen_t*), (const)); |
408 | | MOCK_METHOD(Api::SysCallIntResult, ioctl, |
409 | | (unsigned long, void*, unsigned long, void*, unsigned long, unsigned long*)); |
410 | | MOCK_METHOD(Api::SysCallIntResult, setBlockingForTest, (bool)); |
411 | | MOCK_METHOD(absl::optional<std::chrono::milliseconds>, lastRoundTripTime, ()); |
412 | | MOCK_METHOD(absl::optional<uint64_t>, congestionWindowInBytes, (), (const)); |
413 | | MOCK_METHOD(void, dumpState, (std::ostream&, int), (const)); |
414 | | MOCK_METHOD(ExecutionContext*, executionContext, (), (const)); |
415 | | |
416 | | IoHandlePtr io_handle_; |
417 | | std::shared_ptr<Network::ConnectionInfoSetterImpl> connection_info_provider_; |
418 | | }; |
419 | | |
420 | | class MockListenerFilterCallbacks : public ListenerFilterCallbacks { |
421 | | public: |
422 | | MockListenerFilterCallbacks(); |
423 | | ~MockListenerFilterCallbacks() override; |
424 | | |
425 | | MOCK_METHOD(ConnectionSocket&, socket, ()); |
426 | | MOCK_METHOD(Event::Dispatcher&, dispatcher, ()); |
427 | | MOCK_METHOD(void, continueFilterChain, (bool)); |
428 | | MOCK_METHOD(void, setDynamicMetadata, (const std::string&, const ProtobufWkt::Struct&)); |
429 | | MOCK_METHOD(void, setDynamicTypedMetadata, (const std::string&, const ProtobufWkt::Any& value)); |
430 | | MOCK_METHOD(envoy::config::core::v3::Metadata&, dynamicMetadata, ()); |
431 | | MOCK_METHOD(const envoy::config::core::v3::Metadata&, dynamicMetadata, (), (const)); |
432 | | MOCK_METHOD(StreamInfo::FilterState&, filterState, (), ()); |
433 | | MOCK_METHOD(void, useOriginalDst, (bool)); |
434 | | |
435 | | StreamInfo::FilterStateImpl filter_state_; |
436 | | NiceMock<MockConnectionSocket> socket_; |
437 | | }; |
438 | | |
439 | | class MockListenSocketFactory : public ListenSocketFactory { |
440 | | public: |
441 | 3 | MockListenSocketFactory() = default; |
442 | | |
443 | | MOCK_METHOD(Network::Socket::Type, socketType, (), (const)); |
444 | | MOCK_METHOD(const Network::Address::InstanceConstSharedPtr&, localAddress, (), (const)); |
445 | | MOCK_METHOD(Network::SocketSharedPtr, getListenSocket, (uint32_t)); |
446 | | MOCK_METHOD(bool, reusePort, (), (const)); |
447 | | MOCK_METHOD(Network::ListenSocketFactoryPtr, clone, (), (const)); |
448 | | MOCK_METHOD(void, closeAllSockets, ()); |
449 | | MOCK_METHOD(absl::Status, doFinalPreWorkerInit, ()); |
450 | | }; |
451 | | |
452 | | class MockUdpPacketWriterFactory : public UdpPacketWriterFactory { |
453 | | public: |
454 | | MockUdpPacketWriterFactory() = default; |
455 | | |
456 | | MOCK_METHOD(Network::UdpPacketWriterPtr, createUdpPacketWriter, |
457 | | (Network::IoHandle&, Stats::Scope&), ()); |
458 | | }; |
459 | | |
460 | | class MockUdpListenerConfig : public UdpListenerConfig { |
461 | | public: |
462 | | MockUdpListenerConfig(uint32_t concurrency = 1); |
463 | | ~MockUdpListenerConfig() override; |
464 | | |
465 | | MOCK_METHOD(ActiveUdpListenerFactory&, listenerFactory, ()); |
466 | | MOCK_METHOD(UdpPacketWriterFactory&, packetWriterFactory, ()); |
467 | | MOCK_METHOD(UdpListenerWorkerRouter&, listenerWorkerRouter, (const Network::Address::Instance&)); |
468 | | MOCK_METHOD(const envoy::config::listener::v3::UdpListenerConfig&, config, ()); |
469 | | |
470 | | UdpListenerWorkerRouterPtr udp_listener_worker_router_; |
471 | | envoy::config::listener::v3::UdpListenerConfig config_; |
472 | | }; |
473 | | |
474 | | class MockListenerInfo : public ListenerInfo { |
475 | | public: |
476 | | MOCK_METHOD(const envoy::config::core::v3::Metadata&, metadata, (), (const)); |
477 | | MOCK_METHOD(const Envoy::Config::TypedMetadata&, typedMetadata, (), (const)); |
478 | | MOCK_METHOD(envoy::config::core::v3::TrafficDirection, direction, (), (const)); |
479 | | MOCK_METHOD(bool, isQuic, (), (const)); |
480 | | MOCK_METHOD(bool, shouldBypassOverloadManager, (), (const)); |
481 | | }; |
482 | | |
483 | | class MockListenerConfig : public ListenerConfig { |
484 | | public: |
485 | | MockListenerConfig(); |
486 | | ~MockListenerConfig() override; |
487 | | |
488 | | MOCK_METHOD(FilterChainManager&, filterChainManager, ()); |
489 | | MOCK_METHOD(FilterChainFactory&, filterChainFactory, ()); |
490 | | MOCK_METHOD(std::vector<ListenSocketFactoryPtr>&, listenSocketFactories, ()); |
491 | | MOCK_METHOD(bool, bindToPort, (), (const)); |
492 | | MOCK_METHOD(bool, handOffRestoredDestinationConnections, (), (const)); |
493 | | MOCK_METHOD(uint32_t, perConnectionBufferLimitBytes, (), (const)); |
494 | | MOCK_METHOD(std::chrono::milliseconds, listenerFiltersTimeout, (), (const)); |
495 | | MOCK_METHOD(bool, continueOnListenerFiltersTimeout, (), (const)); |
496 | | MOCK_METHOD(Stats::Scope&, listenerScope, ()); |
497 | | MOCK_METHOD(uint64_t, listenerTag, (), (const)); |
498 | | MOCK_METHOD(const std::string&, name, (), (const)); |
499 | | MOCK_METHOD(Network::UdpListenerConfigOptRef, udpListenerConfig, ()); |
500 | | MOCK_METHOD(InternalListenerConfigOptRef, internalListenerConfig, ()); |
501 | | MOCK_METHOD(ConnectionBalancer&, connectionBalancer, (const Network::Address::Instance&)); |
502 | | MOCK_METHOD(ResourceLimit&, openConnections, ()); |
503 | | MOCK_METHOD(uint32_t, tcpBacklogSize, (), (const)); |
504 | | MOCK_METHOD(uint32_t, maxConnectionsToAcceptPerSocketEvent, (), (const)); |
505 | | MOCK_METHOD(Init::Manager&, initManager, ()); |
506 | | MOCK_METHOD(bool, ignoreGlobalConnLimit, (), (const)); |
507 | | MOCK_METHOD(bool, shouldBypassOverloadManager, (), (const)); |
508 | | |
509 | 0 | const std::vector<AccessLog::InstanceSharedPtr>& accessLogs() const override { |
510 | 0 | return empty_access_logs_; |
511 | 0 | } |
512 | | |
513 | 0 | const ListenerInfoConstSharedPtr& listenerInfo() const override { return listener_info_; } |
514 | | |
515 | | testing::NiceMock<MockFilterChainFactory> filter_chain_factory_; |
516 | | std::vector<ListenSocketFactoryPtr> socket_factories_; |
517 | | SocketSharedPtr socket_; |
518 | | ListenerInfoConstSharedPtr listener_info_; |
519 | | Stats::IsolatedStoreImpl store_; |
520 | | std::string name_; |
521 | | const std::vector<AccessLog::InstanceSharedPtr> empty_access_logs_; |
522 | | }; |
523 | | |
524 | | class MockListener : public Listener { |
525 | | public: |
526 | | MockListener(); |
527 | | ~MockListener() override; |
528 | | |
529 | | MOCK_METHOD(void, onDestroy, ()); |
530 | | MOCK_METHOD(void, enable, ()); |
531 | | MOCK_METHOD(void, disable, ()); |
532 | | MOCK_METHOD(void, setRejectFraction, (UnitFloat)); |
533 | | MOCK_METHOD(void, configureLoadShedPoints, (Server::LoadShedPointProvider&)); |
534 | | MOCK_METHOD(bool, shouldBypassOverloadManager, (), (const)); |
535 | | }; |
536 | | |
537 | | class MockConnectionHandler : public virtual ConnectionHandler { |
538 | | public: |
539 | | MockConnectionHandler(); |
540 | | ~MockConnectionHandler() override; |
541 | | |
542 | | MOCK_METHOD(uint64_t, numConnections, (), (const)); |
543 | | MOCK_METHOD(void, incNumConnections, ()); |
544 | | MOCK_METHOD(void, decNumConnections, ()); |
545 | | MOCK_METHOD(void, addListener, |
546 | | (absl::optional<uint64_t> overridden_listener, ListenerConfig& config, |
547 | | Runtime::Loader& runtime, Random::RandomGenerator& random)); |
548 | | MOCK_METHOD(void, removeListeners, (uint64_t listener_tag)); |
549 | | MOCK_METHOD(void, removeFilterChains, |
550 | | (uint64_t listener_tag, const std::list<const Network::FilterChain*>& filter_chains, |
551 | | std::function<void()> completion)); |
552 | | MOCK_METHOD(void, stopListeners, |
553 | | (uint64_t listener_tag, const Network::ExtraShutdownListenerOptions& options)); |
554 | | MOCK_METHOD(void, stopListeners, ()); |
555 | | MOCK_METHOD(void, disableListeners, ()); |
556 | | MOCK_METHOD(void, enableListeners, ()); |
557 | | MOCK_METHOD(void, setListenerRejectFraction, (UnitFloat), (override)); |
558 | | MOCK_METHOD(const std::string&, statPrefix, (), (const)); |
559 | | |
560 | | uint64_t num_handler_connections_{}; |
561 | | }; |
562 | | |
563 | | class MockUdpListenerWorkerRouter : public UdpListenerWorkerRouter { |
564 | | public: |
565 | | ~MockUdpListenerWorkerRouter() override; |
566 | | |
567 | | MOCK_METHOD(void, registerWorkerForListener, (UdpListenerCallbacks & listener)); |
568 | | MOCK_METHOD(void, unregisterWorkerForListener, (UdpListenerCallbacks & listener)); |
569 | | MOCK_METHOD(void, deliver, (uint32_t dest_worker_index, UdpRecvData&& data)); |
570 | | }; |
571 | | |
572 | | class MockIp : public Address::Ip { |
573 | | public: |
574 | | MockIp(); |
575 | | ~MockIp() override; |
576 | | |
577 | | MOCK_METHOD(const std::string&, addressAsString, (), (const)); |
578 | | MOCK_METHOD(bool, isAnyAddress, (), (const)); |
579 | | MOCK_METHOD(bool, isUnicastAddress, (), (const)); |
580 | | MOCK_METHOD(const Address::Ipv4*, ipv4, (), (const)); |
581 | | MOCK_METHOD(const Address::Ipv6*, ipv6, (), (const)); |
582 | | MOCK_METHOD(uint32_t, port, (), (const)); |
583 | | MOCK_METHOD(Address::IpVersion, version, (), (const)); |
584 | | MOCK_METHOD(bool, v6only, (), (const)); |
585 | | }; |
586 | | |
587 | | class MockResolvedAddress : public Address::Instance { |
588 | | public: |
589 | | MockResolvedAddress(const std::string& logical, const std::string& physical); |
590 | | ~MockResolvedAddress() override; |
591 | | |
592 | 0 | bool operator==(const Address::Instance& other) const override { |
593 | 0 | return asString() == other.asString(); |
594 | 0 | } |
595 | | |
596 | | MOCK_METHOD(Api::SysCallIntResult, bind, (os_fd_t), (const)); |
597 | | MOCK_METHOD(Api::SysCallIntResult, connect, (os_fd_t), (const)); |
598 | | MOCK_METHOD(const Address::Ip*, ip, (), (const)); |
599 | | MOCK_METHOD(const Address::Pipe*, pipe, (), (const)); |
600 | | MOCK_METHOD(Address::EnvoyInternalAddress*, envoyInternalAddress, (), (const)); |
601 | | MOCK_METHOD(IoHandlePtr, socket, (Socket::Type), (const)); |
602 | | MOCK_METHOD(Address::Type, type, (), (const)); |
603 | | MOCK_METHOD(const sockaddr*, sockAddr, (), (const)); |
604 | | MOCK_METHOD(socklen_t, sockAddrLen, (), (const)); |
605 | | MOCK_METHOD(absl::string_view, addressType, (), (const)); |
606 | | |
607 | 0 | const std::string& asString() const override { return physical_; } |
608 | 0 | absl::string_view asStringView() const override { return physical_; } |
609 | 0 | const std::string& logicalName() const override { return logical_; } |
610 | 0 | const Network::SocketInterface& socketInterface() const override { |
611 | 0 | return SocketInterfaceSingleton::get(); |
612 | 0 | } |
613 | | |
614 | | const std::string logical_; |
615 | | const std::string physical_; |
616 | | }; |
617 | | |
618 | | class MockTransportSocketCallbacks : public TransportSocketCallbacks { |
619 | | public: |
620 | | MockTransportSocketCallbacks(); |
621 | | ~MockTransportSocketCallbacks() override; |
622 | | |
623 | | MOCK_METHOD(IoHandle&, ioHandle, ()); |
624 | | MOCK_METHOD(const IoHandle&, ioHandle, (), (const)); |
625 | | MOCK_METHOD(Connection&, connection, ()); |
626 | | MOCK_METHOD(bool, shouldDrainReadBuffer, ()); |
627 | | MOCK_METHOD(void, setTransportSocketIsReadable, ()); |
628 | | MOCK_METHOD(void, raiseEvent, (ConnectionEvent)); |
629 | | MOCK_METHOD(void, flushWriteBuffer, ()); |
630 | | |
631 | | testing::NiceMock<MockConnection> connection_; |
632 | | }; |
633 | | |
634 | | class MockUdpPacketWriter : public UdpPacketWriter { |
635 | | public: |
636 | | MockUdpPacketWriter(); |
637 | | ~MockUdpPacketWriter() override; |
638 | | |
639 | | MOCK_METHOD(Api::IoCallUint64Result, writePacket, |
640 | | (const Buffer::Instance& buffer, const Address::Ip* local_ip, |
641 | | const Address::Instance& peer_address)); |
642 | | MOCK_METHOD(bool, isWriteBlocked, (), (const)); |
643 | | MOCK_METHOD(void, setWritable, ()); |
644 | | MOCK_METHOD(uint64_t, getMaxPacketSize, (const Address::Instance& peer_address), (const)); |
645 | | MOCK_METHOD(bool, isBatchMode, (), (const)); |
646 | | MOCK_METHOD(Network::UdpPacketWriterBuffer, getNextWriteLocation, |
647 | | (const Address::Ip* local_ip, const Address::Instance& peer_address)); |
648 | | MOCK_METHOD(Api::IoCallUint64Result, flush, ()); |
649 | | }; |
650 | | |
651 | | class MockUdpListener : public UdpListener { |
652 | | public: |
653 | | MockUdpListener(); |
654 | | ~MockUdpListener() override; |
655 | | |
656 | | MOCK_METHOD(void, onDestroy, ()); |
657 | | MOCK_METHOD(void, enable, ()); |
658 | | MOCK_METHOD(void, disable, ()); |
659 | | MOCK_METHOD(void, setRejectFraction, (UnitFloat), (override)); |
660 | | MOCK_METHOD(void, configureLoadShedPoints, (Server::LoadShedPointProvider&)); |
661 | | MOCK_METHOD(Event::Dispatcher&, dispatcher, ()); |
662 | | MOCK_METHOD(Address::InstanceConstSharedPtr&, localAddress, (), (const)); |
663 | | MOCK_METHOD(Api::IoCallUint64Result, send, (const UdpSendData&)); |
664 | | MOCK_METHOD(Api::IoCallUint64Result, flush, ()); |
665 | | MOCK_METHOD(void, activateRead, ()); |
666 | | MOCK_METHOD(bool, shouldBypassOverloadManager, (), (const)); |
667 | | |
668 | | Event::MockDispatcher dispatcher_; |
669 | | }; |
670 | | |
671 | | class MockUdpReadFilterCallbacks : public UdpReadFilterCallbacks { |
672 | | public: |
673 | | MockUdpReadFilterCallbacks(); |
674 | | ~MockUdpReadFilterCallbacks() override; |
675 | | |
676 | | MOCK_METHOD(UdpListener&, udpListener, ()); |
677 | | |
678 | | testing::NiceMock<MockUdpListener> udp_listener_; |
679 | | }; |
680 | | |
681 | | class MockUdpListenerReadFilter : public UdpListenerReadFilter { |
682 | | public: |
683 | | MockUdpListenerReadFilter(UdpReadFilterCallbacks& callbacks); |
684 | | ~MockUdpListenerReadFilter() override; |
685 | | |
686 | | MOCK_METHOD(Network::FilterStatus, onData, (UdpRecvData&)); |
687 | | MOCK_METHOD(Network::FilterStatus, onReceiveError, (Api::IoError::IoErrorCode)); |
688 | | }; |
689 | | |
690 | | class MockUdpListenerFilterManager : public UdpListenerFilterManager { |
691 | | public: |
692 | | MockUdpListenerFilterManager(); |
693 | | ~MockUdpListenerFilterManager() override; |
694 | | |
695 | 0 | void addReadFilter(UdpListenerReadFilterPtr&& filter) override { addReadFilter_(filter); } |
696 | | |
697 | | MOCK_METHOD(void, addReadFilter_, (Network::UdpListenerReadFilterPtr&)); |
698 | | }; |
699 | | |
700 | | class MockConnectionBalancer : public ConnectionBalancer { |
701 | | public: |
702 | | MockConnectionBalancer(); |
703 | | ~MockConnectionBalancer() override; |
704 | | |
705 | | MOCK_METHOD(void, registerHandler, (BalancedConnectionHandler & handler)); |
706 | | MOCK_METHOD(void, unregisterHandler, (BalancedConnectionHandler & handler)); |
707 | | MOCK_METHOD(BalancedConnectionHandler&, pickTargetHandler, |
708 | | (BalancedConnectionHandler & current_handler)); |
709 | | }; |
710 | | |
711 | | class MockListenerFilterMatcher : public ListenerFilterMatcher { |
712 | | public: |
713 | | MockListenerFilterMatcher(); |
714 | | ~MockListenerFilterMatcher() override; |
715 | | MOCK_METHOD(bool, matches, (Network::ListenerFilterCallbacks & cb), (const)); |
716 | | }; |
717 | | |
718 | | class MockUdpPacketProcessor : public UdpPacketProcessor { |
719 | | public: |
720 | | MOCK_METHOD(void, processPacket, |
721 | | (Address::InstanceConstSharedPtr local_address, |
722 | | Address::InstanceConstSharedPtr peer_address, Buffer::InstancePtr buffer, |
723 | | MonotonicTime receive_time, uint8_t tos, Buffer::RawSlice saved_cmsg)); |
724 | | MOCK_METHOD(void, onDatagramsDropped, (uint32_t dropped)); |
725 | | MOCK_METHOD(uint64_t, maxDatagramSize, (), (const)); |
726 | | MOCK_METHOD(size_t, numPacketsExpectedPerEventLoop, (), (const)); |
727 | | MOCK_METHOD(const IoHandle::UdpSaveCmsgConfig&, saveCmsgConfig, (), (const)); |
728 | | }; |
729 | | |
730 | | class MockSocketInterface : public SocketInterfaceImpl { |
731 | | public: |
732 | | explicit MockSocketInterface(const std::vector<Address::IpVersion>& versions) |
733 | 0 | : versions_(versions.begin(), versions.end()) {} |
734 | | MOCK_METHOD(IoHandlePtr, socket, |
735 | | (Socket::Type, Address::Type, Address::IpVersion, bool, const SocketCreationOptions&), |
736 | | (const)); |
737 | | MOCK_METHOD(IoHandlePtr, socket, |
738 | | (Socket::Type, const Address::InstanceConstSharedPtr, const SocketCreationOptions&), |
739 | | (const)); |
740 | 0 | bool ipFamilySupported(int domain) override { |
741 | 0 | const auto to_version = domain == AF_INET ? Address::IpVersion::v4 : Address::IpVersion::v6; |
742 | 0 | return std::any_of(versions_.begin(), versions_.end(), |
743 | 0 | [to_version](auto version) { return to_version == version; }); |
744 | 0 | } |
745 | | const std::vector<Address::IpVersion> versions_; |
746 | | }; |
747 | | |
748 | | } // namespace Network |
749 | | } // namespace Envoy |