X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Fcommon%2Fdns_resolve.cc;fp=src%2Fceph%2Fsrc%2Ftest%2Fcommon%2Fdns_resolve.cc;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=2b2ca92854c3be9e2e1164e0e7f793887ac9d6b6;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/test/common/dns_resolve.cc b/src/ceph/src/test/common/dns_resolve.cc deleted file mode 100644 index 2b2ca92..0000000 --- a/src/ceph/src/test/common/dns_resolve.cc +++ /dev/null @@ -1,254 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2016 SUSE LINUX GmbH - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ -#include "common/dns_resolve.h" -#include "test/common/dns_messages.h" - -#include "common/debug.h" -#include "gmock/gmock.h" - - -#include - -#define TEST_DEBUG 20 - -#define dout_subsys ceph_subsys_ - - -using ::testing::Return; -using ::testing::_; -using ::testing::SetArrayArgument; -using ::testing::DoAll; -using ::testing::StrEq; - -class DNSResolverTest : public ::testing::Test { - protected: - void SetUp() override { - g_ceph_context->_conf->subsys.set_log_level(dout_subsys, TEST_DEBUG); - } - - void TearDown() override { - DNSResolver::get_instance(nullptr); - } -}; - -TEST_F(DNSResolverTest, resolve_ip_addr) { - MockResolvHWrapper *resolvH = new MockResolvHWrapper(); - - int lena = sizeof(ns_query_msg_mon_a_payload); -#ifdef HAVE_RES_NQUERY - EXPECT_CALL(*resolvH, res_nquery(_,StrEq("mon.a.ceph.com"), C_IN, T_A,_,_)) - .WillOnce(DoAll(SetArrayArgument<4>(ns_query_msg_mon_a_payload, - ns_query_msg_mon_a_payload+lena), Return(lena))); -#else - EXPECT_CALL(*resolvH, res_query(StrEq("mon.a.ceph.com"), C_IN, T_A,_,_)) - .WillOnce(DoAll(SetArrayArgument<3>(ns_query_msg_mon_a_payload, - ns_query_msg_mon_a_payload+lena), Return(lena))); -#endif - - entity_addr_t addr; - DNSResolver::get_instance(resolvH)->resolve_ip_addr(g_ceph_context, - "mon.a.ceph.com", &addr); - - std::ostringstream os; - os << addr; - ASSERT_EQ(os.str(), "192.168.1.11:0/0"); -} - -TEST_F(DNSResolverTest, resolve_ip_addr_fail) { - MockResolvHWrapper *resolvH = new MockResolvHWrapper(); - -#ifdef HAVE_RES_NQUERY - EXPECT_CALL(*resolvH, res_nquery(_,StrEq("not_exists.com"), C_IN, T_A,_,_)) - .WillOnce(Return(0)); -#else - EXPECT_CALL(*resolvH, res_query(StrEq("not_exists.com"), C_IN, T_A,_,_)) - .WillOnce(Return(0)); -#endif - - entity_addr_t addr; - int ret = DNSResolver::get_instance(resolvH)->resolve_ip_addr(g_ceph_context, - "not_exists.com", &addr); - - ASSERT_EQ(ret, -1); - std::ostringstream os; - os << addr; - ASSERT_EQ(os.str(), "-"); -} - - -TEST_F(DNSResolverTest, resolve_srv_hosts_empty_domain) { - MockResolvHWrapper *resolvH = new MockResolvHWrapper(); - - - int len = sizeof(ns_search_msg_ok_payload); - int lena = sizeof(ns_query_msg_mon_a_payload); - int lenb = sizeof(ns_query_msg_mon_b_payload); - int lenc = sizeof(ns_query_msg_mon_c_payload); - - using ::testing::InSequence; - { - InSequence s; - -#ifdef HAVE_RES_NQUERY - EXPECT_CALL(*resolvH, res_nsearch(_, StrEq("_cephmon._tcp"), C_IN, T_SRV, _, _)) - .WillOnce(DoAll(SetArrayArgument<4>(ns_search_msg_ok_payload, - ns_search_msg_ok_payload+len), Return(len))); - - EXPECT_CALL(*resolvH, res_nquery(_,StrEq("mon.a.ceph.com"), C_IN, T_A,_,_)) - .WillOnce(DoAll(SetArrayArgument<4>(ns_query_msg_mon_a_payload, - ns_query_msg_mon_a_payload+lena), Return(lena))); - - EXPECT_CALL(*resolvH, res_nquery(_, StrEq("mon.c.ceph.com"), C_IN, T_A,_,_)) - .WillOnce(DoAll(SetArrayArgument<4>(ns_query_msg_mon_c_payload, - ns_query_msg_mon_c_payload+lenc), Return(lenc))); - - EXPECT_CALL(*resolvH, res_nquery(_,StrEq("mon.b.ceph.com"), C_IN, T_A, _,_)) - .WillOnce(DoAll(SetArrayArgument<4>(ns_query_msg_mon_b_payload, - ns_query_msg_mon_b_payload+lenb), Return(lenb))); -#else - EXPECT_CALL(*resolvH, res_search(StrEq("_cephmon._tcp"), C_IN, T_SRV, _, _)) - .WillOnce(DoAll(SetArrayArgument<3>(ns_search_msg_ok_payload, - ns_search_msg_ok_payload+len), Return(len))); - - EXPECT_CALL(*resolvH, res_query(StrEq("mon.a.ceph.com"), C_IN, T_A,_,_)) - .WillOnce(DoAll(SetArrayArgument<3>(ns_query_msg_mon_a_payload, - ns_query_msg_mon_a_payload+lena), Return(lena))); - - EXPECT_CALL(*resolvH, res_query(StrEq("mon.c.ceph.com"), C_IN, T_A,_,_)) - .WillOnce(DoAll(SetArrayArgument<3>(ns_query_msg_mon_c_payload, - ns_query_msg_mon_c_payload+lenc), Return(lenc))); - - EXPECT_CALL(*resolvH, res_query(StrEq("mon.b.ceph.com"), C_IN, T_A, _,_)) - .WillOnce(DoAll(SetArrayArgument<3>(ns_query_msg_mon_b_payload, - ns_query_msg_mon_b_payload+lenb), Return(lenb))); -#endif - } - - map records; - DNSResolver::get_instance(resolvH)->resolve_srv_hosts(g_ceph_context, "cephmon", - DNSResolver::SRV_Protocol::TCP, &records); - - ASSERT_EQ(records.size(), (unsigned int)3); - auto it = records.find("mon.a"); - ASSERT_NE(it, records.end()); - std::ostringstream os; - os << it->second.addr; - ASSERT_EQ(os.str(), "192.168.1.11:6789/0"); - os.str(""); - it = records.find("mon.b"); - ASSERT_NE(it, records.end()); - os << it->second.addr; - ASSERT_EQ(os.str(), "192.168.1.12:6789/0"); - os.str(""); - it = records.find("mon.c"); - ASSERT_NE(it, records.end()); - os << it->second.addr; - ASSERT_EQ(os.str(), "192.168.1.13:6789/0"); -} - -TEST_F(DNSResolverTest, resolve_srv_hosts_full_domain) { - MockResolvHWrapper *resolvH = new MockResolvHWrapper(); - - - int len = sizeof(ns_search_msg_ok_payload); - int lena = sizeof(ns_query_msg_mon_a_payload); - int lenb = sizeof(ns_query_msg_mon_b_payload); - int lenc = sizeof(ns_query_msg_mon_c_payload); - - using ::testing::InSequence; - { - InSequence s; - -#ifdef HAVE_RES_NQUERY - EXPECT_CALL(*resolvH, res_nsearch(_, StrEq("_cephmon._tcp.ceph.com"), C_IN, T_SRV, _, _)) - .WillOnce(DoAll(SetArrayArgument<4>(ns_search_msg_ok_payload, - ns_search_msg_ok_payload+len), Return(len))); - - EXPECT_CALL(*resolvH, res_nquery(_,StrEq("mon.a.ceph.com"), C_IN, T_A,_,_)) - .WillOnce(DoAll(SetArrayArgument<4>(ns_query_msg_mon_a_payload, - ns_query_msg_mon_a_payload+lena), Return(lena))); - - EXPECT_CALL(*resolvH, res_nquery(_, StrEq("mon.c.ceph.com"), C_IN, T_A,_,_)) - .WillOnce(DoAll(SetArrayArgument<4>(ns_query_msg_mon_c_payload, - ns_query_msg_mon_c_payload+lenc), Return(lenc))); - - EXPECT_CALL(*resolvH, res_nquery(_,StrEq("mon.b.ceph.com"), C_IN, T_A, _,_)) - .WillOnce(DoAll(SetArrayArgument<4>(ns_query_msg_mon_b_payload, - ns_query_msg_mon_b_payload+lenb), Return(lenb))); -#else - EXPECT_CALL(*resolvH, res_search(StrEq("_cephmon._tcp.ceph.com"), C_IN, T_SRV, _, _)) - .WillOnce(DoAll(SetArrayArgument<3>(ns_search_msg_ok_payload, - ns_search_msg_ok_payload+len), Return(len))); - - EXPECT_CALL(*resolvH, res_query(StrEq("mon.a.ceph.com"), C_IN, T_A,_,_)) - .WillOnce(DoAll(SetArrayArgument<3>(ns_query_msg_mon_a_payload, - ns_query_msg_mon_a_payload+lena), Return(lena))); - - EXPECT_CALL(*resolvH, res_query(StrEq("mon.c.ceph.com"), C_IN, T_A,_,_)) - .WillOnce(DoAll(SetArrayArgument<3>(ns_query_msg_mon_c_payload, - ns_query_msg_mon_c_payload+lenc), Return(lenc))); - - EXPECT_CALL(*resolvH, res_query(StrEq("mon.b.ceph.com"), C_IN, T_A, _,_)) - .WillOnce(DoAll(SetArrayArgument<3>(ns_query_msg_mon_b_payload, - ns_query_msg_mon_b_payload+lenb), Return(lenb))); -#endif - } - - map records; - DNSResolver::get_instance(resolvH)->resolve_srv_hosts(g_ceph_context, "cephmon", - DNSResolver::SRV_Protocol::TCP, "ceph.com", &records); - - ASSERT_EQ(records.size(), (unsigned int)3); - auto it = records.find("mon.a"); - ASSERT_NE(it, records.end()); - std::ostringstream os; - os << it->second.addr; - ASSERT_EQ(os.str(), "192.168.1.11:6789/0"); - os.str(""); - it = records.find("mon.b"); - ASSERT_NE(it, records.end()); - os << it->second.addr; - ASSERT_EQ(os.str(), "192.168.1.12:6789/0"); - os.str(""); - it = records.find("mon.c"); - ASSERT_NE(it, records.end()); - os << it->second.addr; - ASSERT_EQ(os.str(), "192.168.1.13:6789/0"); -} - -TEST_F(DNSResolverTest, resolve_srv_hosts_fail) { - MockResolvHWrapper *resolvH = new MockResolvHWrapper(); - - - using ::testing::InSequence; - { - InSequence s; - -#ifdef HAVE_RES_NQUERY - EXPECT_CALL(*resolvH, res_nsearch(_, StrEq("_noservice._tcp"), C_IN, T_SRV, _, _)) - .WillOnce(Return(0)); -#else - EXPECT_CALL(*resolvH, res_search(StrEq("_noservice._tcp"), C_IN, T_SRV, _, _)) - .WillOnce(Return(0)); -#endif - } - - map records; - int ret = DNSResolver::get_instance(resolvH)->resolve_srv_hosts( - g_ceph_context, "noservice", DNSResolver::SRV_Protocol::TCP, "", &records); - - ASSERT_EQ(0, ret); - ASSERT_TRUE(records.empty()); -} -