Coverage Report

Created: 2024-09-19 09:45

/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