summaryrefslogtreecommitdiff
path: root/test/ares-test.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/ares-test.h')
-rw-r--r--test/ares-test.h121
1 files changed, 6 insertions, 115 deletions
diff --git a/test/ares-test.h b/test/ares-test.h
index e92bf3b..a00e53a 100644
--- a/test/ares-test.h
+++ b/test/ares-test.h
@@ -2,13 +2,13 @@
#ifndef ARES_TEST_H
#define ARES_TEST_H
+#include "ares.h"
+
#include "dns-proto.h"
+
// Include ares internal file for DNS protocol constants
#include "nameser.h"
-#include "ares_setup.h"
-#include "ares.h"
-
#include "gtest/gtest.h"
#include "gmock/gmock.h"
@@ -36,17 +36,6 @@ namespace test {
extern bool verbose;
extern int mock_port;
-extern const std::vector<int> both_families;
-extern const std::vector<int> ipv4_family;
-extern const std::vector<int> ipv6_family;
-
-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;
-
-// Which parameters to use in tests
-extern std::vector<int> families;
-extern std::vector<std::pair<int, bool>> families_modes;
// Process all pending work on ares-owned file descriptors, plus
// optionally the given set-of-FDs + work function.
@@ -136,7 +125,7 @@ class DefaultChannelModeTest
// Mock DNS server to allow responses to be scripted by tests.
class MockServer {
public:
- MockServer(int family, int port);
+ MockServer(int family, int port, int tcpport = 0);
~MockServer();
// Mock method indicating the processing of a particular <name, RRtype>
@@ -279,30 +268,6 @@ struct NameInfoResult {
};
std::ostream& operator<<(std::ostream& os, const NameInfoResult& result);
-struct AddrInfoDeleter {
- void operator() (ares_addrinfo *ptr) {
- if (ptr) ares_freeaddrinfo(ptr);
- }
-};
-
-// C++ wrapper for struct ares_addrinfo.
-using AddrInfo = std::unique_ptr<ares_addrinfo, AddrInfoDeleter>;
-
-std::ostream& operator<<(std::ostream& os, const AddrInfo& result);
-
-// Structure that describes the result of an ares_addrinfo_callback invocation.
-struct AddrInfoResult {
- AddrInfoResult() : done_(false), status_(-1), timeouts_(0) {}
- // Whether the callback has been invoked.
- bool done_;
- // Explicitly provided result information.
- int status_;
- int timeouts_;
- // Contents of the ares_addrinfo structure, if provided.
- AddrInfo ai_;
-};
-std::ostream& operator<<(std::ostream& os, const AddrInfoResult& result);
-
// Standard implementation of ares callbacks that fill out the corresponding
// structures.
void HostCallback(void *data, int status, int timeouts,
@@ -311,8 +276,6 @@ void SearchCallback(void *data, int status, int timeouts,
unsigned char *abuf, int alen);
void NameInfoCallback(void *data, int status, int timeouts,
char *node, char *service);
-void AddrInfoCallback(void *data, int status, int timeouts,
- struct ares_addrinfo *res);
// Retrieve the name servers used by a channel.
std::vector<std::string> GetNameServers(ares_channel channel);
@@ -348,40 +311,7 @@ class TempFile : public TransientFile {
const char* filename() const { return filename_.c_str(); }
};
-#ifdef _WIN32
-extern "C" {
-
-static int setenv(const char *name, const char *value, int overwrite)
-{
- char *buffer;
- size_t buf_size;
-
- if (name == NULL)
- return -1;
-
- if (value == NULL)
- value = ""; /* For unset */
-
- if (!overwrite && getenv(name) != NULL) {
- return -1;
- }
-
- buf_size = strlen(name) + strlen(value) + 1 /* = */ + 1 /* NULL */;
- buffer = (char *)malloc(buf_size);
- _snprintf(buffer, buf_size, "%s=%s", name, value);
- _putenv(buffer);
- free(buffer);
- return 0;
-}
-
-static int unsetenv(const char *name)
-{
- return setenv(name, NULL, 1);
-}
-
-} /* extern "C" */
-#endif
-
+#ifndef WIN32
// RAII class for a temporary environment variable value.
class EnvValue {
public:
@@ -405,6 +335,7 @@ class EnvValue {
bool restore_;
std::string original_;
};
+#endif
#ifdef HAVE_CONTAINER
@@ -446,46 +377,6 @@ int RunInContainer(ContainerFilesystem* fs, const std::string& hostname,
#endif
-/* Assigns virtual IO functions to a channel. These functions simply call
- * the actual system functions.
- */
-class VirtualizeIO {
-public:
- VirtualizeIO(ares_channel);
- ~VirtualizeIO();
-
- static const ares_socket_functions default_functions;
-private:
- ares_channel channel_;
-};
-
-/*
- * Slightly white-box macro to generate two runs for a given test case:
- * One with no modifications, and one with all IO functions set to use
- * the virtual io structure.
- * Since no magic socket setup or anything is done in the latter case
- * this should probably only be used for test with very vanilla IO
- * requirements.
- */
-#define VCLASS_NAME(casename, testname) Virt##casename##_##testname
-#define VIRT_NONVIRT_TEST_F(casename, testname) \
- class VCLASS_NAME(casename, testname) : public casename { \
- public: \
- VCLASS_NAME(casename, testname)() {} \
- void InnerTestBody(); \
- }; \
- GTEST_TEST_(casename, testname, VCLASS_NAME(casename, testname), \
- ::testing::internal::GetTypeId<casename>()) { \
- InnerTestBody(); \
- } \
- GTEST_TEST_(casename, testname##_virtualized, \
- VCLASS_NAME(casename, testname), \
- ::testing::internal::GetTypeId<casename>()) { \
- VirtualizeIO vio(channel_); \
- InnerTestBody(); \
- } \
- void VCLASS_NAME(casename, testname)::InnerTestBody()
-
} // namespace test
} // namespace ares