Coverage Report

Created: 2024-09-19 09:45

/proc/self/cwd/test/mocks/api/mocks.h
Line
Count
Source
1
#pragma once
2
3
#include <memory>
4
#include <string>
5
6
#include "envoy/api/api.h"
7
#include "envoy/api/os_sys_calls.h"
8
#include "envoy/config/bootstrap/v3/bootstrap.pb.h"
9
#include "envoy/event/dispatcher.h"
10
#include "envoy/event/timer.h"
11
12
#include "source/common/api/os_sys_calls_impl.h"
13
14
#if defined(__linux__)
15
#include "source/common/api/os_sys_calls_impl_linux.h"
16
#endif
17
18
#include "test/mocks/common.h"
19
#include "test/mocks/filesystem/mocks.h"
20
#include "test/mocks/stats/mocks.h"
21
#include "test/test_common/test_time.h"
22
23
#include "gmock/gmock.h"
24
25
namespace Envoy {
26
namespace Api {
27
28
class MockApi : public Api {
29
public:
30
  MockApi();
31
  ~MockApi() override;
32
33
  // Api::Api
34
  Event::DispatcherPtr allocateDispatcher(const std::string& name) override;
35
  Event::DispatcherPtr
36
  allocateDispatcher(const std::string& name,
37
                     const Event::ScaledRangeTimerManagerFactory& scaled_timer_factory) override;
38
  Event::DispatcherPtr allocateDispatcher(const std::string& name,
39
                                          Buffer::WatermarkFactoryPtr&& watermark_factory) override;
40
19
  TimeSource& timeSource() override { return time_system_; }
41
42
  MOCK_METHOD(Event::Dispatcher*, allocateDispatcher_, (const std::string&, Event::TimeSystem&));
43
  MOCK_METHOD(Event::Dispatcher*, allocateDispatcher_,
44
              (const std::string&,
45
               const Event::ScaledRangeTimerManagerFactory& scaled_timer_factory,
46
               Buffer::WatermarkFactoryPtr&& watermark_factory, Event::TimeSystem&));
47
  MOCK_METHOD(Filesystem::Instance&, fileSystem, ());
48
  MOCK_METHOD(Thread::ThreadFactory&, threadFactory, ());
49
  MOCK_METHOD(Stats::Scope&, rootScope, ());
50
  MOCK_METHOD(Random::RandomGenerator&, randomGenerator, ());
51
  MOCK_METHOD(const envoy::config::bootstrap::v3::Bootstrap&, bootstrap, (), (const));
52
  MOCK_METHOD(ProcessContextOptRef, processContext, ());
53
  MOCK_METHOD(Stats::CustomStatNamespaces&, customStatNamespaces, ());
54
55
  testing::NiceMock<Filesystem::MockInstance> file_system_;
56
  Event::GlobalTimeSystem time_system_;
57
  testing::NiceMock<Stats::MockIsolatedStatsStore> stats_store_;
58
  testing::NiceMock<Random::MockRandomGenerator> random_;
59
  envoy::config::bootstrap::v3::Bootstrap empty_bootstrap_;
60
};
61
62
class MockOsSysCalls : public OsSysCallsImpl {
63
public:
64
  MockOsSysCalls();
65
  ~MockOsSysCalls() override;
66
67
  // Api::OsSysCalls
68
  SysCallIntResult setsockopt(os_fd_t sockfd, int level, int optname, const void* optval,
69
                              socklen_t optlen) override;
70
  SysCallIntResult getsockopt(os_fd_t sockfd, int level, int optname, void* optval,
71
                              socklen_t* optlen) override;
72
73
  MOCK_METHOD(SysCallSocketResult, accept, (os_fd_t sockfd, sockaddr* addr, socklen_t* addrlen));
74
  MOCK_METHOD(SysCallIntResult, bind, (os_fd_t sockfd, const sockaddr* addr, socklen_t addrlen));
75
  MOCK_METHOD(SysCallIntResult, ioctl, (os_fd_t sockfd, unsigned long int request, void* argp));
76
  MOCK_METHOD(SysCallIntResult, ioctl,
77
              (os_fd_t sockfd, unsigned long control_code, void* in_buffer,
78
               unsigned long in_buffer_len, void* out_buffer, unsigned long out_buffer_len,
79
               unsigned long* bytes_returned));
80
  MOCK_METHOD(SysCallIntResult, close, (os_fd_t));
81
  MOCK_METHOD(SysCallSizeResult, writev, (os_fd_t, const iovec*, int));
82
  MOCK_METHOD(SysCallSizeResult, sendmsg, (os_fd_t fd, const msghdr* msg, int flags));
83
  MOCK_METHOD(SysCallSizeResult, readv, (os_fd_t, const iovec*, int));
84
  MOCK_METHOD(SysCallSizeResult, pwrite,
85
              (os_fd_t fd, const void* buffer, size_t length, off_t offset), (const));
86
  MOCK_METHOD(SysCallSizeResult, pread, (os_fd_t fd, void* buffer, size_t length, off_t offset),
87
              (const));
88
  MOCK_METHOD(SysCallSizeResult, send, (os_fd_t socket, void* buffer, size_t length, int flags));
89
  MOCK_METHOD(SysCallSizeResult, recv, (os_fd_t socket, void* buffer, size_t length, int flags));
90
  MOCK_METHOD(SysCallSizeResult, recvmsg, (os_fd_t socket, msghdr* msg, int flags));
91
  MOCK_METHOD(SysCallIntResult, recvmmsg,
92
              (os_fd_t socket, struct mmsghdr* msgvec, unsigned int vlen, int flags,
93
               struct timespec* timeout));
94
  MOCK_METHOD(SysCallIntResult, ftruncate, (int fd, off_t length));
95
  MOCK_METHOD(SysCallPtrResult, mmap,
96
              (void* addr, size_t length, int prot, int flags, int fd, off_t offset));
97
  MOCK_METHOD(SysCallIntResult, stat, (const char* name, struct stat* stat));
98
  MOCK_METHOD(SysCallIntResult, fstat, (os_fd_t fd, struct stat* stat));
99
  MOCK_METHOD(SysCallIntResult, chmod, (const std::string& name, mode_t mode));
100
  MOCK_METHOD(int, setsockopt_,
101
              (os_fd_t sockfd, int level, int optname, const void* optval, socklen_t optlen));
102
  MOCK_METHOD(int, getsockopt_,
103
              (os_fd_t sockfd, int level, int optname, void* optval, socklen_t* optlen));
104
  MOCK_METHOD(SysCallSocketResult, socket, (int domain, int type, int protocol));
105
  MOCK_METHOD(SysCallIntResult, gethostname, (char* name, size_t length));
106
  MOCK_METHOD(SysCallIntResult, getsockname, (os_fd_t sockfd, sockaddr* name, socklen_t* namelen));
107
  MOCK_METHOD(SysCallIntResult, getpeername, (os_fd_t sockfd, sockaddr* name, socklen_t* namelen));
108
  MOCK_METHOD(SysCallIntResult, setsocketblocking, (os_fd_t sockfd, bool block));
109
  MOCK_METHOD(SysCallIntResult, connect, (os_fd_t sockfd, const sockaddr* addr, socklen_t addrlen));
110
  MOCK_METHOD(SysCallIntResult, open, (const char* pathname, int flags), (const));
111
  MOCK_METHOD(SysCallIntResult, open, (const char* pathname, int flags, mode_t mode), (const));
112
  MOCK_METHOD(SysCallIntResult, unlink, (const char* pathname), (const));
113
  MOCK_METHOD(SysCallIntResult, linkat,
114
              (os_fd_t olddirfd, const char* oldpath, os_fd_t newdirfd, const char* newpath,
115
               int flags),
116
              (const));
117
  MOCK_METHOD(SysCallIntResult, mkstemp, (char* tmplate), (const));
118
  MOCK_METHOD(bool, supportsAllPosixFileOperations, (), (const));
119
  MOCK_METHOD(SysCallIntResult, shutdown, (os_fd_t sockfd, int how));
120
  MOCK_METHOD(SysCallIntResult, socketpair, (int domain, int type, int protocol, os_fd_t sv[2]));
121
  MOCK_METHOD(SysCallIntResult, listen, (os_fd_t sockfd, int backlog));
122
  MOCK_METHOD(SysCallSocketResult, duplicate, (os_fd_t sockfd));
123
  MOCK_METHOD(SysCallSizeResult, write, (os_fd_t sockfd, const void* buffer, size_t length));
124
  MOCK_METHOD(SysCallBoolResult, socketTcpInfo, (os_fd_t sockfd, EnvoyTcpInfo* tcp_info));
125
  MOCK_METHOD(bool, supportsMmsg, (), (const));
126
  MOCK_METHOD(bool, supportsUdpGro, (), (const));
127
  MOCK_METHOD(bool, supportsIpTransparent, (Network::Address::IpVersion version), (const));
128
  MOCK_METHOD(bool, supportsMptcp, (), (const));
129
  MOCK_METHOD(bool, supportsGetifaddrs, (), (const));
130
  MOCK_METHOD(SysCallIntResult, getifaddrs, (InterfaceAddressVector & interfaces));
131
  MOCK_METHOD(SysCallIntResult, getaddrinfo,
132
              (const char* node, const char* service, const addrinfo* hints, addrinfo** res));
133
  MOCK_METHOD(void, freeaddrinfo, (addrinfo * res));
134
135
  // Map from (sockfd,level,optname) to boolean socket option.
136
  using SockOptKey = std::tuple<os_fd_t, int, int>;
137
  std::map<SockOptKey, bool> boolsockopts_;
138
};
139
140
#if defined(__linux__)
141
class MockLinuxOsSysCalls : public LinuxOsSysCallsImpl {
142
public:
143
  // Api::LinuxOsSysCalls
144
  MOCK_METHOD(SysCallIntResult, sched_getaffinity, (pid_t pid, size_t cpusetsize, cpu_set_t* mask));
145
};
146
#endif
147
148
} // namespace Api
149
} // namespace Envoy