Go to the documentation of this file.
12 #include "gtest/gtest.h"
13 #include "gmock/gmock.h"
18 #if defined(HAVE_USER_NAMESPACE) && defined(HAVE_UTS_NAMESPACE)
19 #define HAVE_CONTAINER
33 typedef unsigned char byte;
153 std::set<int>
fds()
const;
189 std::set<int>
fds()
const;
223 mockserver->SetReplyData(
data);
226 mockserver->SetReply(reply);
229 mockserver->SetReplyQID(qid);
239 HostEnt(
const struct hostent* hostent);
289 using AddrInfo = std::unique_ptr<ares_addrinfo, AddrInfoDeleter>;
309 struct hostent *hostent);
311 unsigned char *abuf,
int alen);
354 static int setenv(
const char *
name,
const char *
value,
int overwrite)
369 buf_size = strlen(
name) + strlen(
value) + 1 + 1 ;
370 buffer = (
char *)malloc(buf_size);
377 static int unsetenv(
const char *
name)
379 return setenv(
name, NULL, 1);
400 unsetenv(
name_.c_str());
410 #ifdef HAVE_CONTAINER
414 typedef std::vector<std::pair<std::string, std::string>> NameContentList;
416 class ContainerFilesystem {
419 ~ContainerFilesystem();
426 std::list<std::string> dirs_;
427 std::vector<std::unique_ptr<TransientFile>>
files_;
430 int RunInContainer(ContainerFilesystem* fs,
const std::string& hostname,
433 #define ICLASS_NAME(casename, testname) Contained##casename##_##testname
434 #define CONTAINED_TEST_F(casename, testname, hostname, domainname, files) \
435 class ICLASS_NAME(casename, testname) : public casename { \
437 ICLASS_NAME(casename, testname)() {} \
438 static int InnerTestBody(); \
440 TEST_F(ICLASS_NAME(casename, testname), _) { \
441 ContainerFilesystem chroot(files, ".."); \
442 VoidToIntFn fn(ICLASS_NAME(casename, testname)::InnerTestBody); \
443 EXPECT_EQ(0, RunInContainer(&chroot, hostname, domainname, fn)); \
445 int ICLASS_NAME(casename, testname)::InnerTestBody()
470 #define VCLASS_NAME(casename, testname) Virt##casename##_##testname
471 #define VIRT_NONVIRT_TEST_F(casename, testname) \
472 class VCLASS_NAME(casename, testname) : public casename { \
474 VCLASS_NAME(casename, testname)() {} \
475 void InnerTestBody(); \
477 GTEST_TEST_(casename, testname, VCLASS_NAME(casename, testname), \
478 ::testing::internal::GetTypeId<casename>()) { \
481 GTEST_TEST_(casename, testname##_virtualized, \
482 VCLASS_NAME(casename, testname), \
483 ::testing::internal::GetTypeId<casename>()) { \
484 VirtualizeIO vio(channel_); \
487 void VCLASS_NAME(casename, testname)::InnerTestBody()
ACTION_P2(SetReplyData, mockserver, data)
const std::vector< int > both_families
static const ares_socket_functions default_functions
std::set< int > fds() const
static void afree(void *ptr)
std::unique_ptr< ares_addrinfo, AddrInfoDeleter > AddrInfo
void SetReplyData(const std::vector< byte > &reply)
static void SetAllocFail(int nth)
const std::vector< int > ipv6_family
const std::vector< std::pair< int, bool > > both_families_both_modes
static void SetAllocSizeFail(size_t size)
std::vector< std::unique_ptr< NiceMockServer > > NiceMockServers
CARES_EXTERN int ares_init(ares_channel *channelptr)
const char * filename() const
std::map< std::string, std::unique_ptr< std::string > > files_
#define ARES_LIB_INIT_ALL
void ProcessRequest(int fd, struct sockaddr_storage *addr, int addrlen, int qid, const std::string &name, int rrtype)
std::vector< int > families
MockChannelOptsTest(int count, int family, bool force_tcp, struct ares_options *givenopts, int optmask)
TempFile(const std::string &contents)
CARES_EXTERN int ares_library_init_mem(int flags, void *(*amalloc)(size_t size), void(*afree)(void *ptr), void *(*arealloc)(void *ptr, size_t size))
wrapped_grpc_channel * channel
CARES_EXTERN void ares_cancel(ares_channel channel)
void operator()(ares_addrinfo *ptr)
def c_str(s, encoding='ascii')
RefCountedPtr< grpc_tls_certificate_provider > root
#define EXPECT_NE(val1, val2)
std::vector< byte > reply_
def EnsureDirExists(path)
testing::NiceMock< MockServer > NiceMockServer
static NiceMockServers BuildServers(int count, int family, int base_port)
void SearchCallback(void *data, int status, int timeouts, unsigned char *abuf, int alen)
std::vector< byte > data() const
std::string TempNam(const char *dir, const char *prefix)
std::ostream & operator<<(std::ostream &os, const HostResult &result)
std::vector< byte > data_
EnvValue(const char *name, const char *value)
static unsigned long long fails_
std::vector< std::string > aliases_
void HostCallback(void *data, int status, int timeouts, struct hostent *hostent)
void SetReply(const DNSPacket *reply)
static bool ShouldAllocFail(size_t size)
CARES_EXTERN void ares_freeaddrinfo(struct ares_addrinfo *ai)
std::vector< std::pair< int, bool > > families_modes
const std::vector< int > ipv4_family
CARES_EXTERN void ares_library_cleanup(void)
void NameInfoCallback(void *data, int status, int timeouts, char *node, char *service)
CARES_EXTERN void ares_destroy(ares_channel channel)
TransientDir(const std::string &dirname)
MockServer(int family, int port)
const std::vector< std::pair< int, bool > > ipv4_family_both_modes
static void * arealloc(void *ptr, size_t size)
static const char prefix[]
static const ParamType & GetParam()
~DefaultChannelModeTest()
VirtualizeIO(ares_channel)
MOCK_METHOD2(OnRequest, void(const std::string &name, int rrtype))
std::set< int > NoExtraFDs()
void ProcessWork(ares_channel channel, std::function< std::set< int >()> get_extrafds, std::function< void(int)> process_extra)
static void * amalloc(size_t size)
static std::map< size_t, int > size_fails_
CARES_EXTERN int ares_init_options(ares_channel *channelptr, struct ares_options *options, int optmask)
void SetReplyQID(int qid)
std::set< int > fds() const
__attribute__((deprecated("Please use GRPCProtoMethod."))) @interface ProtoMethod NSString * service
std::vector< std::string > addrs_
void AddrInfoCallback(void *data, int status, int timeouts, struct ares_addrinfo *ai)
std::vector< std::string > GetNameServers(ares_channel channel)
TransientFile(const std::string &filename, const std::string &contents)
const std::vector< std::pair< int, bool > > ipv6_family_both_modes
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:43