clang-format

pull/715/head
Brad House 1 year ago
parent e5585105cd
commit fe04c6cadd
  1. 50
      include/ares.h
  2. 18
      include/ares_dns_record.h
  3. 10
      src/lib/ares__htable.c
  4. 3
      src/lib/ares__htable.h
  5. 9
      src/lib/ares__htable_asvp.c
  6. 23
      src/lib/ares__htable_asvp.h
  7. 9
      src/lib/ares__socket.c
  8. 12
      src/lib/ares_dns_parse.c
  9. 8
      src/lib/ares_getnameinfo.c
  10. 6
      src/lib/ares_options.c
  11. 8
      src/lib/ares_private.h
  12. 10
      src/lib/ares_process.c
  13. 1
      src/lib/ares_send.c
  14. 4
      src/tools/adig.c
  15. 78
      test/ares-test.h

@ -109,9 +109,9 @@ extern "C" {
# endif
#else
# if defined(__GNUC__) && __GNUC__ >= 4
# define CARES_EXTERN __attribute__ ((visibility ("default")))
# define CARES_EXTERN __attribute__((visibility("default")))
# elif defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 900
# define CARES_EXTERN __attribute__ ((visibility ("default")))
# define CARES_EXTERN __attribute__((visibility("default")))
# elif defined(__SUNPRO_C)
# define CARES_EXTERN _global
# else
@ -175,15 +175,15 @@ typedef enum {
/*! Default (best choice) event system */
ARES_EVSYS_DEFAULT = 0,
/*! Win32 IOCP/AFD_POLL event system */
ARES_EVSYS_WIN32 = 1,
ARES_EVSYS_WIN32 = 1,
/*! Linux epoll */
ARES_EVSYS_EPOLL = 2,
ARES_EVSYS_EPOLL = 2,
/*! BSD/MacOS kqueue */
ARES_EVSYS_KQUEUE = 3,
ARES_EVSYS_KQUEUE = 3,
/*! POSIX poll() */
ARES_EVSYS_POLL = 4,
ARES_EVSYS_POLL = 4,
/*! last fallback on Unix-like systems, select() */
ARES_EVSYS_SELECT = 5
ARES_EVSYS_SELECT = 5
} ares_evsys_t;
/* Flag values */
@ -333,7 +333,7 @@ struct ares_options {
int udp_max_queries;
int maxtimeout; /* in milliseconds */
unsigned int qcache_max_ttl; /* Maximum TTL for query cache, 0=disabled */
ares_evsys_t evsys;
ares_evsys_t evsys;
};
struct hostent;
@ -747,31 +747,31 @@ struct ares_addr_port_node {
CARES_EXTERN int ares_set_servers(ares_channel_t *channel,
const struct ares_addr_node *servers);
CARES_EXTERN int
ares_set_servers_ports(ares_channel_t *channel,
const struct ares_addr_port_node *servers);
ares_set_servers_ports(ares_channel_t *channel,
const struct ares_addr_port_node *servers);
/* Incoming string format: host[:port][,host[:port]]... */
CARES_EXTERN int ares_set_servers_csv(ares_channel_t *channel,
const char *servers);
CARES_EXTERN int ares_set_servers_ports_csv(ares_channel_t *channel,
const char *servers);
CARES_EXTERN char *ares_get_servers_csv(ares_channel_t *channel);
CARES_EXTERN int ares_set_servers_csv(ares_channel_t *channel,
const char *servers);
CARES_EXTERN int ares_set_servers_ports_csv(ares_channel_t *channel,
const char *servers);
CARES_EXTERN char *ares_get_servers_csv(ares_channel_t *channel);
CARES_EXTERN int ares_get_servers(ares_channel_t *channel,
struct ares_addr_node **servers);
CARES_EXTERN int ares_get_servers_ports(ares_channel_t *channel,
struct ares_addr_port_node **servers);
CARES_EXTERN int ares_get_servers(ares_channel_t *channel,
struct ares_addr_node **servers);
CARES_EXTERN int ares_get_servers_ports(ares_channel_t *channel,
struct ares_addr_port_node **servers);
CARES_EXTERN const char *ares_inet_ntop(int af, const void *src, char *dst,
ares_socklen_t size);
CARES_EXTERN const char *ares_inet_ntop(int af, const void *src, char *dst,
ares_socklen_t size);
CARES_EXTERN int ares_inet_pton(int af, const char *src, void *dst);
CARES_EXTERN int ares_inet_pton(int af, const char *src, void *dst);
/*! Whether or not the c-ares library was built with threadsafety
*
* \return ARES_TRUE if built with threadsafety, ARES_FALSE if not
*/
CARES_EXTERN ares_bool_t ares_threadsafety(void);
CARES_EXTERN ares_bool_t ares_threadsafety(void);
/*! Block until notified that there are no longer any queries in queue, or
@ -784,7 +784,7 @@ CARES_EXTERN ares_bool_t ares_threadsafety(void);
* if requested timeout expires, ARES_SUCCESS when queue is empty.
*/
CARES_EXTERN ares_status_t ares_queue_wait_empty(ares_channel_t *channel,
int timeout_ms);
int timeout_ms);
/*! Retrieve the total number of active queries pending answers from servers.
@ -794,7 +794,7 @@ CARES_EXTERN ares_status_t ares_queue_wait_empty(ares_channel_t *channel,
* \param[in] channel Initialized ares channel
* \return Number of active queries to servers
*/
CARES_EXTERN size_t ares_queue_active_queries(ares_channel_t *channel);
CARES_EXTERN size_t ares_queue_active_queries(ares_channel_t *channel);
#ifdef __cplusplus
}

@ -386,12 +386,18 @@ typedef enum {
/*! Data type for flags to ares_dns_parse() */
typedef enum {
ARES_DNS_PARSE_AN_BASE_RAW = 1 << 0, /*!< Parse Answers from RFC 1035 that allow name compression as RAW */
ARES_DNS_PARSE_NS_BASE_RAW = 1 << 1, /*!< Parse Authority from RFC 1035 that allow name compression as RAW */
ARES_DNS_PARSE_AR_BASE_RAW = 1 << 2, /*!< Parse Additional from RFC 1035 that allow name compression as RAW */
ARES_DNS_PARSE_AN_EXT_RAW = 1 << 3, /*!< Parse Answers from later RFCs (no name compression) RAW */
ARES_DNS_PARSE_NS_EXT_RAW = 1 << 4, /*!< Parse Authority from later RFCs (no name compression) as RAW */
ARES_DNS_PARSE_AR_EXT_RAW = 1 << 5, /*!< Parse Additional from later RFCs (no name compression) as RAW */
/*! Parse Answers from RFC 1035 that allow name compression as RAW */
ARES_DNS_PARSE_AN_BASE_RAW = 1 << 0,
/*! Parse Authority from RFC 1035 that allow name compression as RAW */
ARES_DNS_PARSE_NS_BASE_RAW = 1 << 1,
/*! Parse Additional from RFC 1035 that allow name compression as RAW */
ARES_DNS_PARSE_AR_BASE_RAW = 1 << 2,
/*! Parse Answers from later RFCs (no name compression) RAW */
ARES_DNS_PARSE_AN_EXT_RAW = 1 << 3,
/*! Parse Authority from later RFCs (no name compression) as RAW */
ARES_DNS_PARSE_NS_EXT_RAW = 1 << 4,
/*< Parse Additional from later RFCs (no name compression) as RAW */
ARES_DNS_PARSE_AR_EXT_RAW = 1 << 5
} ares_dns_parse_flags_t;
/*! String representation of DNS Record Type

@ -135,23 +135,24 @@ fail:
return NULL;
}
const void **ares__htable_all_buckets(const ares__htable_t *htable, size_t *num)
{
const void **out = NULL;
size_t cnt = 0;
size_t i;
if (htable == NULL || num == NULL)
if (htable == NULL || num == NULL) {
return NULL;
}
*num = 0;
out = ares_malloc_zero(sizeof(*out) * htable->num_keys);
if (out == NULL)
if (out == NULL) {
return NULL;
}
for (i=0; i<htable->size; i++) {
for (i = 0; i < htable->size; i++) {
ares__llist_node_t *node;
for (node = ares__llist_node_first(htable->buckets[i]); node != NULL;
node = ares__llist_node_next(node)) {
@ -163,7 +164,6 @@ const void **ares__htable_all_buckets(const ares__htable_t *htable, size_t *num)
return out;
}
/*! Grabs the Hashtable index from the key and length. The h index is
* the hash of the function reduced to the size of the bucket list.
* We are doing "hash & (size - 1)" since we are guaranteeing a power of

@ -120,7 +120,8 @@ size_t ares__htable_num_keys(const ares__htable_t *htable);
* will be a dangling pointer. It is expected wrappers will make
* such values safe by duplicating them.
*/
const void **ares__htable_all_buckets(const ares__htable_t *htable, size_t *num);
const void **ares__htable_all_buckets(const ares__htable_t *htable,
size_t *num);
/*! Insert bucket into hashtable
*

@ -112,15 +112,17 @@ fail:
return NULL;
}
ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable, size_t *num)
ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
size_t *num)
{
const void **buckets = NULL;
size_t cnt = 0;
ares_socket_t *out = NULL;
size_t i;
if (htable == NULL || num == NULL)
if (htable == NULL || num == NULL) {
return NULL;
}
*num = 0;
@ -135,7 +137,7 @@ ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable, size_t
return NULL;
}
for (i=0; i<cnt; i++) {
for (i = 0; i < cnt; i++) {
out[i] = ((const ares__htable_asvp_bucket_t *)buckets[i])->key;
}
@ -144,7 +146,6 @@ ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable, size_t
return out;
}
ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable,
ares_socket_t key, void *val)
{

@ -65,7 +65,7 @@ void ares__htable_asvp_destroy(ares__htable_asvp_t *htable);
* NULL it is expected the caller will clean up any user
* supplied values.
*/
ares__htable_asvp_t *
ares__htable_asvp_t *
ares__htable_asvp_create(ares__htable_asvp_val_free_t val_free);
/*! Retrieve an array of keys from the hashtable.
@ -74,7 +74,8 @@ ares__htable_asvp_t *
* \param[out] num_keys Count of returned keys
* \return Array of keys in the hashtable. Must be free'd with ares_free().
*/
ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable, size_t *num);
ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
size_t *num);
/*! Insert key/value into hash table
@ -84,8 +85,8 @@ ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable, size_t
* \param[in] val value to store (takes ownership). May be NULL.
* \return ARES_TRUE on success, ARES_FALSE on out of memory or misuse
*/
ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable,
ares_socket_t key, void *val);
ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable,
ares_socket_t key, void *val);
/*! Retrieve value from hashtable based on key
*
@ -94,8 +95,8 @@ ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable,
* \param[out] val Optional. Pointer to store value.
* \return ARES_TRUE on success, ARES_FALSE on failure
*/
ares_bool_t ares__htable_asvp_get(const ares__htable_asvp_t *htable,
ares_socket_t key, void **val);
ares_bool_t ares__htable_asvp_get(const ares__htable_asvp_t *htable,
ares_socket_t key, void **val);
/*! Retrieve value from hashtable directly as return value. Caveat to this
* function over ares__htable_asvp_get() is that if a NULL value is stored
@ -105,8 +106,8 @@ ares_bool_t ares__htable_asvp_get(const ares__htable_asvp_t *htable,
* \param[in] key key to use to search
* \return value associated with key in hashtable or NULL
*/
void *ares__htable_asvp_get_direct(const ares__htable_asvp_t *htable,
ares_socket_t key);
void *ares__htable_asvp_get_direct(const ares__htable_asvp_t *htable,
ares_socket_t key);
/*! Remove a value from the hashtable by key
*
@ -114,15 +115,15 @@ void *ares__htable_asvp_get_direct(const ares__htable_asvp_t *htable,
* \param[in] key key to use to search
* \return ARES_TRUE if found, ARES_FALSE if not found
*/
ares_bool_t ares__htable_asvp_remove(ares__htable_asvp_t *htable,
ares_socket_t key);
ares_bool_t ares__htable_asvp_remove(ares__htable_asvp_t *htable,
ares_socket_t key);
/*! Retrieve the number of keys stored in the hash table
*
* \param[in] htable Initialized hash table
* \return count
*/
size_t ares__htable_asvp_num_keys(const ares__htable_asvp_t *htable);
size_t ares__htable_asvp_num_keys(const ares__htable_asvp_t *htable);
/*! @} */

@ -450,8 +450,9 @@ ares_ssize_t ares__socket_write(ares_channel_t *channel, ares_socket_t s,
void ares_set_socket_callback(ares_channel_t *channel,
ares_sock_create_callback cb, void *data)
{
if (channel == NULL)
if (channel == NULL) {
return;
}
channel->sock_create_cb = cb;
channel->sock_create_cb_data = data;
}
@ -460,8 +461,9 @@ void ares_set_socket_configure_callback(ares_channel_t *channel,
ares_sock_config_callback cb,
void *data)
{
if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD)
if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
return;
}
channel->sock_config_cb = cb;
channel->sock_config_cb_data = data;
}
@ -470,8 +472,9 @@ void ares_set_socket_functions(ares_channel_t *channel,
const struct ares_socket_functions *funcs,
void *data)
{
if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD)
if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
return;
}
channel->sock_funcs = funcs;
channel->sock_func_cb_data = data;
}

@ -1067,13 +1067,19 @@ static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags,
}
namecomp = ares_dns_rec_type_allow_name_compression(type);
if (sect == ARES_SECTION_ANSWER && (flags & (namecomp ? ARES_DNS_PARSE_AN_BASE_RAW : ARES_DNS_PARSE_AN_EXT_RAW))) {
if (sect == ARES_SECTION_ANSWER &&
(flags &
(namecomp ? ARES_DNS_PARSE_AN_BASE_RAW : ARES_DNS_PARSE_AN_EXT_RAW))) {
type = ARES_REC_TYPE_RAW_RR;
}
if (sect == ARES_SECTION_AUTHORITY && (flags & (namecomp ? ARES_DNS_PARSE_NS_BASE_RAW : ARES_DNS_PARSE_NS_EXT_RAW))) {
if (sect == ARES_SECTION_AUTHORITY &&
(flags &
(namecomp ? ARES_DNS_PARSE_NS_BASE_RAW : ARES_DNS_PARSE_NS_EXT_RAW))) {
type = ARES_REC_TYPE_RAW_RR;
}
if (sect == ARES_SECTION_ADDITIONAL && (flags & (namecomp ? ARES_DNS_PARSE_AR_BASE_RAW : ARES_DNS_PARSE_AR_EXT_RAW))) {
if (sect == ARES_SECTION_ADDITIONAL &&
(flags &
(namecomp ? ARES_DNS_PARSE_AR_BASE_RAW : ARES_DNS_PARSE_AR_EXT_RAW))) {
type = ARES_REC_TYPE_RAW_RR;
}

@ -86,10 +86,10 @@ static void append_scopeid(const struct sockaddr_in6 *addr6,
#endif
static char *ares_striendstr(const char *s1, const char *s2);
static void ares_getnameinfo_int(ares_channel_t *channel,
const struct sockaddr *sa,
ares_socklen_t salen, int flags_int,
ares_nameinfo_callback callback, void *arg)
static void ares_getnameinfo_int(ares_channel_t *channel,
const struct sockaddr *sa,
ares_socklen_t salen, int flags_int,
ares_nameinfo_callback callback, void *arg)
{
const struct sockaddr_in *addr = NULL;
const struct sockaddr_in6 *addr6 = NULL;

@ -275,10 +275,12 @@ ares_status_t ares__init_by_options(ares_channel_t *channel,
/* Event Thread requires threading support and is incompatible with socket
* state callbacks */
if (optmask & ARES_OPT_EVENT_THREAD) {
if (!ares_threadsafety())
if (!ares_threadsafety()) {
return ARES_ENOTIMP;
if (optmask & ARES_OPT_SOCK_STATE_CB)
}
if (optmask & ARES_OPT_SOCK_STATE_CB) {
return ARES_EFORMERR;
}
channel->evsys = options->evsys;
}

@ -138,7 +138,9 @@ typedef struct ares_rand_state ares_rand_state;
#endif
/********* EDNS defines section ******/
#define EDNSPACKETSZ 1232 /* Reasonable UDP payload size, as agreed by operators https://www.dnsflagday.net/2020/#faq */
#define EDNSPACKETSZ \
1232 /* Reasonable UDP payload size, as agreed by operators \
https://www.dnsflagday.net/2020/#faq */
#define MAXENDSSZ 4096 /* Maximum (local) limit for edns packet size */
#define EDNSFIXEDSZ 11 /* Size of EDNS header */
@ -540,7 +542,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
*
* \param[in] channel Initialized ares channel object
*/
void ares_queue_notify_empty(ares_channel_t *channel);
void ares_queue_notify_empty(ares_channel_t *channel);
#define ARES_SWAP_BYTE(a, b) \
@ -594,7 +596,7 @@ void ares__channel_unlock(ares_channel_t *channel);
struct ares_event_thread;
typedef struct ares_event_thread ares_event_thread_t;
void ares_event_thread_destroy(ares_channel_t *channel);
void ares_event_thread_destroy(ares_channel_t *channel);
ares_status_t ares_event_thread_init(ares_channel_t *channel);

@ -67,11 +67,11 @@ static ares_bool_t same_questions(const ares_dns_record_t *qrec,
const ares_dns_record_t *arec);
static ares_bool_t same_address(const struct sockaddr *sa,
const struct ares_addr *aa);
static void end_query(ares_channel_t *channel, struct query *query,
ares_status_t status, const unsigned char *abuf,
size_t alen);
static void end_query(ares_channel_t *channel, struct query *query,
ares_status_t status, const unsigned char *abuf,
size_t alen);
static void server_increment_failures(struct server_state *server)
static void server_increment_failures(struct server_state *server)
{
ares__slist_node_t *node;
const ares_channel_t *channel = server->channel;
@ -761,7 +761,7 @@ static void handle_conn_error(struct server_connection *conn,
ares_status_t ares__requeue_query(struct query *query, struct timeval *now)
{
ares_channel_t *channel = query->channel;
size_t max_tries = ares__slist_len(channel->servers) * channel->tries;
size_t max_tries = ares__slist_len(channel->servers) * channel->tries;
query->try_count++;

@ -164,7 +164,6 @@ void ares_send(ares_channel_t *channel, const unsigned char *qbuf, int qlen,
ares__channel_unlock(channel);
}
size_t ares_queue_active_queries(ares_channel_t *channel)
{
size_t len;

@ -745,9 +745,9 @@ static void callback(void *arg, int status, int timeouts, unsigned char *abuf,
/* We got a "Server status" */
if (status >= ARES_SUCCESS && status <= ARES_EREFUSED) {
printf(";; Got answer:");
printf(";; Got answer:");
} else {
printf(";;");
printf(";;");
}
if (status != ARES_SUCCESS) {

78
test/ares-test.h vendored

@ -29,7 +29,7 @@
#include "ares_setup.h"
#ifdef HAVE_CONFIG_H
#include "ares_config.h"
# include "ares_config.h"
#endif
#include "dns-proto.h"
@ -70,9 +70,12 @@ extern const std::vector<std::pair<int, bool>> both_families_both_modes;
extern const std::vector<std::pair<int, bool>> ipv4_family_both_modes;
extern const std::vector<std::pair<int, bool>> ipv6_family_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int, bool>> all_evsys_ipv4_family_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int, bool>> all_evsys_ipv6_family_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int, bool>> all_evsys_both_families_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int, bool>>
all_evsys_ipv4_family_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int, bool>>
all_evsys_ipv6_family_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int, bool>>
all_evsys_both_families_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int>> all_evsys_ipv4_family;
extern const std::vector<std::tuple<ares_evsys_t, int>> all_evsys_ipv6_family;
@ -93,13 +96,12 @@ void ProcessWork(ares_channel_t *cha
unsigned int cancel_ms = 0);
std::set<ares_socket_t> NoExtraFDs();
const char *af_tostr(int af);
const char *mode_tostr(bool mode);
std::string PrintFamilyMode(const testing::TestParamInfo<std::pair<int, bool>> &info);
const char *af_tostr(int af);
const char *mode_tostr(bool mode);
std::string
PrintFamilyMode(const testing::TestParamInfo<std::pair<int, bool>> &info);
std::string PrintFamily(const testing::TestParamInfo<int> &info);
// Test fixture that ensures library initialization, and allows
// memory allocations to be failed.
class LibraryTest : public ::testing::Test {
@ -345,17 +347,20 @@ public:
}
};
class MockEventThreadOptsTest : public MockChannelOptsTest {
public:
MockEventThreadOptsTest(int count, ares_evsys_t evsys, int family, bool force_tcp,
struct ares_options *givenopts, int optmask)
: MockChannelOptsTest(count, family, force_tcp, FillOptionsET(&evopts_, givenopts, evsys), optmask | ARES_OPT_EVENT_THREAD)
MockEventThreadOptsTest(int count, ares_evsys_t evsys, int family,
bool force_tcp, struct ares_options *givenopts,
int optmask)
: MockChannelOptsTest(count, family, force_tcp,
FillOptionsET(&evopts_, givenopts, evsys),
optmask | ARES_OPT_EVENT_THREAD)
{
cancel_ms_ = 0;
isup = true;
thread = std::thread(&MockEventThreadOptsTest::ProcessThread, this);
isup = true;
thread = std::thread(&MockEventThreadOptsTest::ProcessThread, this);
}
~MockEventThreadOptsTest()
{
mutex.lock();
@ -364,7 +369,10 @@ public:
thread.join();
}
static struct ares_options *FillOptionsET(struct ares_options *opts, struct ares_options *givenopts, ares_evsys_t evsys) {
static struct ares_options *FillOptionsET(struct ares_options *opts,
struct ares_options *givenopts,
ares_evsys_t evsys)
{
if (givenopts) {
memcpy(opts, givenopts, sizeof(*opts));
} else {
@ -374,7 +382,8 @@ public:
return opts;
}
void Process(unsigned int cancel_ms = 0) {
void Process(unsigned int cancel_ms = 0)
{
mutex.lock();
cancel_ms_ = cancel_ms;
mutex.unlock();
@ -382,12 +391,12 @@ public:
}
private:
void ProcessThread();
void ProcessThread();
struct ares_options evopts_;
unsigned int cancel_ms_;
bool isup;
std::mutex mutex;
std::thread thread;
unsigned int cancel_ms_;
bool isup;
std::mutex mutex;
std::thread thread;
};
class MockEventThreadTest
@ -395,30 +404,35 @@ class MockEventThreadTest
public ::testing::WithParamInterface<std::tuple<ares_evsys_t, int, bool>> {
public:
MockEventThreadTest()
: MockEventThreadOptsTest(1, std::get<0>(GetParam()), std::get<1>(GetParam()), std::get<2>(GetParam()), nullptr, 0)
: MockEventThreadOptsTest(1, std::get<0>(GetParam()),
std::get<1>(GetParam()), std::get<2>(GetParam()),
nullptr, 0)
{
}
};
class MockUDPEventThreadTest : public MockEventThreadOptsTest,
public ::testing::WithParamInterface<std::tuple<ares_evsys_t,int>> {
class MockUDPEventThreadTest
: public MockEventThreadOptsTest,
public ::testing::WithParamInterface<std::tuple<ares_evsys_t, int>> {
public:
MockUDPEventThreadTest() : MockEventThreadOptsTest(1, std::get<0>(GetParam()), std::get<1>(GetParam()), false, nullptr, 0)
MockUDPEventThreadTest()
: MockEventThreadOptsTest(1, std::get<0>(GetParam()),
std::get<1>(GetParam()), false, nullptr, 0)
{
}
};
class MockTCPEventThreadTest : public MockEventThreadOptsTest,
public ::testing::WithParamInterface<std::tuple<ares_evsys_t,int>> {
class MockTCPEventThreadTest
: public MockEventThreadOptsTest,
public ::testing::WithParamInterface<std::tuple<ares_evsys_t, int>> {
public:
MockTCPEventThreadTest() : MockEventThreadOptsTest(1, std::get<0>(GetParam()), std::get<1>(GetParam()), true, nullptr, 0)
MockTCPEventThreadTest()
: MockEventThreadOptsTest(1, std::get<0>(GetParam()),
std::get<1>(GetParam()), true, nullptr, 0)
{
}
};
// gMock action to set the reply for a mock server.
ACTION_P2(SetReplyData, mockserver, data)
{

Loading…
Cancel
Save