From f6a25ad2e38d85584d0d55b491d63338cb1e73cf Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Sat, 30 Jun 2012 09:47:49 -0700 Subject: [PATCH] First pass in merging libtest --- libtest/dns.cc | 97 ++++++++++++++++++++++++++++++++++++++++++++++ libtest/dns.hpp | 44 +++++++++++++++++++++ libtest/include.am | 2 + 3 files changed, 143 insertions(+) create mode 100644 libtest/dns.cc create mode 100644 libtest/dns.hpp diff --git a/libtest/dns.cc b/libtest/dns.cc new file mode 100644 index 00000000..2bf094cb --- /dev/null +++ b/libtest/dns.cc @@ -0,0 +1,97 @@ +/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab: + * + * Data Differential YATL (i.e. libtest) library + * + * Copyright (C) 2012 Data Differential, http://datadifferential.com/ + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * The names of its contributors may not be used to endorse or + * promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include +#include +#include + +namespace libtest { + +bool lookup(const char* host) +{ + assert(host); + bool success= false; + struct addrinfo *addrinfo= NULL; + + int limit= 5; + while (limit--) + { + int ret; + if ((ret= getaddrinfo(host, NULL, NULL, &(addrinfo)))) + { + switch (ret) + { + case EAI_AGAIN: + continue; + + case EAI_NONAME: + default: + break; + } + } + else + { + success= true; + break; + } + } + + freeaddrinfo(addrinfo); + + return success; +} + + +bool check_dns() +{ + if (lookup("exist.gearman.info") == false) + { + return false; + } + + if (lookup("does_not_exist.gearman.info")) // This should fail, if it passes,... + { + return false; + } + + return true; +} + +} // namespace libtest + diff --git a/libtest/dns.hpp b/libtest/dns.hpp new file mode 100644 index 00000000..438a922c --- /dev/null +++ b/libtest/dns.hpp @@ -0,0 +1,44 @@ +/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab: + * + * Data Differential YATL (i.e. libtest) library + * + * Copyright (C) 2012 Data Differential, http://datadifferential.com/ + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * The names of its contributors may not be used to endorse or + * promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#pragma once + +namespace libtest { + +bool check_dns(); +bool lookup(const char*); + +} // namespace libtest diff --git a/libtest/include.am b/libtest/include.am index 157537b4..7f6b6a3f 100644 --- a/libtest/include.am +++ b/libtest/include.am @@ -50,6 +50,7 @@ noinst_HEADERS+= libtest/binaries.h noinst_HEADERS+= libtest/cpu.hpp noinst_HEADERS+= libtest/blobslap_worker.h noinst_HEADERS+= libtest/callbacks.h +noinst_HEADERS+= libtest/dns.hpp noinst_HEADERS+= libtest/cmdline.h noinst_HEADERS+= libtest/collection.h noinst_HEADERS+= libtest/common.h @@ -97,6 +98,7 @@ libtest_libtest_la_LIBADD= libtest_libtest_la_SOURCES= libtest_libtest_la_SOURCES+= libtest/binaries.cc +libtest_libtest_la_SOURCES+= libtest/dns.cc libtest_libtest_la_SOURCES+= libtest/cmdline.cc libtest_libtest_la_SOURCES+= libtest/comparison.cc libtest_libtest_la_SOURCES+= libtest/collection.cc -- 2.30.2