/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 |