BIND 10 trac2155_2, updated. a8a40b6805377c49a9671bd93cb510bfef946a87 [2155] update for structured statistics items
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Oct 10 05:17:12 UTC 2012
The branch, trac2155_2 has been updated
via a8a40b6805377c49a9671bd93cb510bfef946a87 (commit)
via 55ca986dc44bb8059712619dadb64c359356e00a (commit)
from c1d90c602c39b7b49e7c8ab802956118f8846cd7 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a8a40b6805377c49a9671bd93cb510bfef946a87
Author: Yoshitaka Aharen <aharen at jprs.co.jp>
Date: Fri Oct 5 21:55:35 2012 +0900
[2155] update for structured statistics items
commit 55ca986dc44bb8059712619dadb64c359356e00a
Author: Yoshitaka Aharen <aharen at jprs.co.jp>
Date: Fri Oct 5 21:28:48 2012 +0900
[2154] removed socket statistics items, restruct counter items
Removed socket statistics items.
Restruct counter items from flat counters to structured counters.
Conflicts:
src/bin/auth/tests/statistics_unittest.cc
-----------------------------------------------------------------------
Summary of changes:
src/bin/auth/statistics.cc | 14 +-
src/bin/auth/statistics_items.h | 361 ++++++++++++-----------------
src/bin/auth/tests/auth_srv_unittest.cc | 17 +-
src/bin/auth/tests/statistics_unittest.cc | 41 +---
4 files changed, 174 insertions(+), 259 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/bin/auth/statistics.cc b/src/bin/auth/statistics.cc
index e1b12a4..a179a77 100644
--- a/src/bin/auth/statistics.cc
+++ b/src/bin/auth/statistics.cc
@@ -61,8 +61,6 @@ public:
private:
// counter for query/response
Counter server_qr_counter_;
- // counter for socket
- Counter socket_counter_;
// set of counters for zones
CounterDictionary zone_qr_counters_;
// validator
@@ -71,9 +69,7 @@ private:
CountersImpl::CountersImpl() :
// size of server_qr_counter_, zone_qr_counters_: QR_COUNTER_TYPES
- // size of server_socket_counter_: SOCKET_COUNTER_TYPES
server_qr_counter_(QR_COUNTER_TYPES),
- socket_counter_(SOCKET_COUNTER_TYPES),
zone_qr_counters_(QR_COUNTER_TYPES),
validator_()
{}
@@ -229,16 +225,18 @@ CountersImpl::getStatistics() const {
for (int i = QR_OPCODE_QUERY; i <= QR_OPCODE_OTHER; ++i) {
const Counter::Type counter = server_qr_counter_.get(i);
if (counter != 0) {
- statistics_string << ", \"" << QRCounterItemName[i] << "\": "
- << counter;
+ statistics_string << ", \"" << "opcode." <<
+ QRCounterOpcode[i - QR_OPCODE_QUERY].name <<
+ "\": " << counter;
}
}
// Insert non 0 Rcode counters.
for (int i = QR_RCODE_NOERROR; i <= QR_RCODE_OTHER; ++i) {
const Counter::Type counter = server_qr_counter_.get(i);
if (counter != 0) {
- statistics_string << ", \"" << QRCounterItemName[i] << "\": "
- << counter;
+ statistics_string << ", \"" << "rcode." <<
+ QRCounterRcode[i - QR_RCODE_NOERROR].name <<
+ "\": " << counter;
}
}
statistics_string << "}";
diff --git a/src/bin/auth/statistics_items.h b/src/bin/auth/statistics_items.h
index 9404576..eb5d249 100644
--- a/src/bin/auth/statistics_items.h
+++ b/src/bin/auth/statistics_items.h
@@ -20,105 +20,10 @@
namespace {
-// enum for socket statistics
-enum SocketCounterType {
- // Socket statistics
- SOCKET_IPV4_UDP_BINDFAIL, ///< IPv4 UDP sockets bind failures
- SOCKET_IPV4_UDP_CLOSE, ///< IPv4 UDP sockets closed
- SOCKET_IPV4_UDP_CONN, ///< IPv4 UDP connections established successfully
- SOCKET_IPV4_UDP_CONNFAIL, ///< IPv4 UDP sockets connection failures
- SOCKET_IPV4_UDP_OPEN, ///< IPv4 UDP sockets opened successfully
- SOCKET_IPV4_UDP_OPENFAIL, ///< IPv4 UDP sockets open failures
- SOCKET_IPV4_UDP_RECVERR, ///< IPv4 UDP sockets receive errors
- SOCKET_IPV4_UDP_SENDERR, ///< IPv4 UDP sockets send errors
- SOCKET_IPV4_TCP_ACCEPT, ///< IPv4 TCP incoming connections successfully accepted
- SOCKET_IPV4_TCP_ACCEPTFAIL, ///< IPv4 TCP incoming accept failures
- SOCKET_IPV4_TCP_BINDFAIL, ///< IPv4 TCP sockets bind failures
- SOCKET_IPV4_TCP_CLOSE, ///< IPv4 TCP sockets closed
- SOCKET_IPV4_TCP_CONN, ///< IPv4 TCP connections established successfully
- SOCKET_IPV4_TCP_CONNFAIL, ///< IPv4 TCP sockets connection failures
- SOCKET_IPV4_TCP_OPEN, ///< IPv4 TCP sockets opened successfully
- SOCKET_IPV4_TCP_OPENFAIL, ///< IPv4 TCP sockets open failures
- SOCKET_IPV4_TCP_RECVERR, ///< IPv4 TCP sockets receive errors
- SOCKET_IPV4_TCP_SENDERR, ///< IPv4 TCP sockets send errors
- SOCKET_IPV6_UDP_BINDFAIL, ///< IPv6 UDP sockets bind failures
- SOCKET_IPV6_UDP_CLOSE, ///< IPv6 UDP sockets closed
- SOCKET_IPV6_UDP_CONN, ///< IPv6 UDP connections established successfully
- SOCKET_IPV6_UDP_CONNFAIL, ///< IPv6 UDP sockets connection failures
- SOCKET_IPV6_UDP_OPEN, ///< IPv6 UDP sockets opened successfully
- SOCKET_IPV6_UDP_OPENFAIL, ///< IPv6 UDP sockets open failures
- SOCKET_IPV6_UDP_RECVERR, ///< IPv6 UDP sockets receive errors
- SOCKET_IPV6_UDP_SENDERR, ///< IPv6 UDP sockets send errors
- SOCKET_IPV6_TCP_ACCEPT, ///< IPv6 TCP incoming connections successfully accepted
- SOCKET_IPV6_TCP_ACCEPTFAIL, ///< IPv6 TCP incoming accept failures
- SOCKET_IPV6_TCP_BINDFAIL, ///< IPv6 TCP sockets bind failures
- SOCKET_IPV6_TCP_CLOSE, ///< IPv6 TCP sockets closed
- SOCKET_IPV6_TCP_CONN, ///< IPv6 TCP connections established successfully
- SOCKET_IPV6_TCP_CONNFAIL, ///< IPv6 TCP sockets connection failures
- SOCKET_IPV6_TCP_OPEN, ///< IPv6 TCP sockets opened successfully
- SOCKET_IPV6_TCP_OPENFAIL, ///< IPv6 TCP sockets open failures
- SOCKET_IPV6_TCP_RECVERR, ///< IPv6 TCP sockets receive errors
- SOCKET_IPV6_TCP_SENDERR, ///< IPv6 TCP sockets send errors
- SOCKET_UNIXDOMAIN_ACCEPT, ///< Unix Domain sockets incoming connections successfully accepted
- SOCKET_UNIXDOMAIN_ACCEPTFAIL, ///< Unix Domain sockets incoming accept failures
- SOCKET_UNIXDOMAIN_BINDFAIL, ///< Unix Domain sockets bind failures
- SOCKET_UNIXDOMAIN_CLOSE, ///< Unix Domain sockets closed
- SOCKET_UNIXDOMAIN_CONN, ///< Unix Domain connections established successfully
- SOCKET_UNIXDOMAIN_CONNFAIL, ///< Unix Domain sockets connection failures
- SOCKET_UNIXDOMAIN_OPEN, ///< Unix Domain sockets opened successfully
- SOCKET_UNIXDOMAIN_OPENFAIL, ///< Unix Domain sockets open failures
- SOCKET_UNIXDOMAIN_RECVERR, ///< Unix Domain sockets receive errors
- SOCKET_UNIXDOMAIN_SENDERR, ///< Unix Domain sockets send errors
- SOCKET_COUNTER_TYPES ///< The number of defined counters
-};
-// item names for socket statistics
-const char* const SocketCounterItemName[SOCKET_COUNTER_TYPES] = {
- "ipv4.udp.bindfail",
- "ipv4.udp.close",
- "ipv4.udp.conn",
- "ipv4.udp.connfail",
- "ipv4.udp.open",
- "ipv4.udp.openfail",
- "ipv4.udp.recverr",
- "ipv4.udp.senderr",
- "ipv4.tcp.accept",
- "ipv4.tcp.acceptfail",
- "ipv4.tcp.bindfail",
- "ipv4.tcp.close",
- "ipv4.tcp.conn",
- "ipv4.tcp.connfail",
- "ipv4.tcp.open",
- "ipv4.tcp.openfail",
- "ipv4.tcp.recverr",
- "ipv4.tcp.senderr",
- "ipv6.udp.bindfail",
- "ipv6.udp.close",
- "ipv6.udp.conn",
- "ipv6.udp.connfail",
- "ipv6.udp.open",
- "ipv6.udp.openfail",
- "ipv6.udp.recverr",
- "ipv6.udp.senderr",
- "ipv6.tcp.accept",
- "ipv6.tcp.acceptfail",
- "ipv6.tcp.bindfail",
- "ipv6.tcp.close",
- "ipv6.tcp.conn",
- "ipv6.tcp.connfail",
- "ipv6.tcp.open",
- "ipv6.tcp.openfail",
- "ipv6.tcp.recverr",
- "ipv6.tcp.senderr",
- "unixdomain.accept",
- "unixdomain.acceptfail",
- "unixdomain.bindfail",
- "unixdomain.close",
- "unixdomain.conn",
- "unixdomain.connfail",
- "unixdomain.open",
- "unixdomain.openfail",
- "unixdomain.recverr",
- "unixdomain.senderr"
+struct CounterTypeTree {
+ const char* const name;
+ const struct CounterTypeTree* const sub_tree;
+ const int counter_id;
};
// enum for query/response counters
@@ -248,125 +153,147 @@ enum QRCounterType {
// End of counter types
QR_COUNTER_TYPES ///< The number of defined counters
};
+
// item names for query/response counters
-const char* const QRCounterItemName[QR_COUNTER_TYPES] = {
- "request.v4",
- "request.v6",
- "request.edns0",
- "request.badednsver",
- "request.tsig",
- "request.sig0",
- "request.badsig",
- "request.udp",
- "request.tcp",
- "request.dnssec_ok",
- "opcode.query",
- "opcode.iquery",
- "opcode.status",
- "opcode.notify",
- "opcode.update",
- "opcode.other",
- "qtype.a",
- "qtype.ns",
- "qtype.md",
- "qtype.mf",
- "qtype.cname",
- "qtype.soa",
- "qtype.mb",
- "qtype.mg",
- "qtype.mr",
- "qtype.null",
- "qtype.wks",
- "qtype.ptr",
- "qtype.hinfo",
- "qtype.minfo",
- "qtype.mx",
- "qtype.txt",
- "qtype.rp",
- "qtype.afsdb",
- "qtype.x25",
- "qtype.isdn",
- "qtype.rt",
- "qtype.nsap",
- "qtype.nsap-ptr",
- "qtype.sig",
- "qtype.key",
- "qtype.px",
- "qtype.gpos",
- "qtype.aaaa",
- "qtype.loc",
- "qtype.nxt",
- "qtype.eid",
- "qtype.nimloc",
- "qtype.srv",
- "qtype.atma",
- "qtype.naptr",
- "qtype.kx",
- "qtype.cert",
- "qtype.a6",
- "qtype.dname",
- "qtype.sink",
- "qtype.opt",
- "qtype.apl",
- "qtype.ds",
- "qtype.sshfp",
- "qtype.ipseckey",
- "qtype.rrsig",
- "qtype.nsec",
- "qtype.dnskey",
- "qtype.dhcid",
- "qtype.nsec3",
- "qtype.nsec3param",
- "qtype.hip",
- "qtype.ninfo",
- "qtype.rkey",
- "qtype.talink",
- "qtype.spf",
- "qtype.uinfo",
- "qtype.uid",
- "qtype.gid",
- "qtype.unspec",
- "qtype.tkey",
- "qtype.tsig",
- "qtype.ixfr",
- "qtype.axfr",
- "qtype.mailb",
- "qtype.maila",
- "qtype.uri",
- "qtype.caa",
- "qtype.ta",
- "qtype.dlv",
- "qtype.other",
- "response",
- "response.truncated",
- "response.edns0",
- "response.tsig",
- "response.sig0",
- "qrysuccess",
- "qryauthans",
- "qrynoauthans",
- "qryreferral",
- "qrynxrrset",
- "authqryrej",
- "rcode.noerror",
- "rcode.formerr",
- "rcode.servfail",
- "rcode.nxdomain",
- "rcode.notimp",
- "rcode.refused",
- "rcode.yxdomain",
- "rcode.yxrrset",
- "rcode.nxrrset",
- "rcode.notauth",
- "rcode.notzone",
- "rcode.badsigvers",
- "rcode.badkey",
- "rcode.badtime",
- "rcode.badmode",
- "rcode.badname",
- "rcode.badalg",
- "rcode.badtrunc",
- "rcode.other"
+const struct CounterTypeTree QRCounterRequest[] = {
+ { "v4", NULL, QR_REQUEST_IPV4 },
+ { "v6", NULL, QR_REQUEST_IPV6 },
+ { "edns0", NULL, QR_REQUEST_EDNS0 },
+ { "badednsver", NULL, QR_REQUEST_BADEDNSVER },
+ { "tsig", NULL, QR_REQUEST_TSIG },
+ { "sig0", NULL, QR_REQUEST_SIG0 },
+ { "badsig", NULL, QR_REQUEST_BADSIG },
+ { "udp", NULL, QR_REQUEST_UDP },
+ { "tcp", NULL, QR_REQUEST_TCP },
+ { "dnssec_ok", NULL, QR_REQUEST_DNSSEC_OK },
+ { NULL, NULL, -1 }
+};
+const struct CounterTypeTree QRCounterOpcode[] = {
+ { "query", NULL, QR_OPCODE_QUERY },
+ { "iquery", NULL, QR_OPCODE_IQUERY },
+ { "status", NULL, QR_OPCODE_STATUS },
+ { "notify", NULL, QR_OPCODE_NOTIFY },
+ { "update", NULL, QR_OPCODE_UPDATE },
+ { "other", NULL, QR_OPCODE_OTHER },
+ { NULL, NULL, -1 }
+};
+const struct CounterTypeTree QRCounterQtype[] = {
+ { "a", NULL, QR_QTYPE_A, },
+ { "ns", NULL, QR_QTYPE_NS },
+ { "md", NULL, QR_QTYPE_MD },
+ { "mf", NULL, QR_QTYPE_MF },
+ { "cname", NULL, QR_QTYPE_CNAME },
+ { "soa", NULL, QR_QTYPE_SOA },
+ { "mb", NULL, QR_QTYPE_MB },
+ { "mg", NULL, QR_QTYPE_MG },
+ { "mr", NULL, QR_QTYPE_MR },
+ { "null", NULL, QR_QTYPE_NULL },
+ { "wks", NULL, QR_QTYPE_WKS },
+ { "ptr", NULL, QR_QTYPE_PTR },
+ { "hinfo", NULL, QR_QTYPE_HINFO },
+ { "minfo", NULL, QR_QTYPE_MINFO },
+ { "mx", NULL, QR_QTYPE_MX },
+ { "txt", NULL, QR_QTYPE_TXT },
+ { "rp", NULL, QR_QTYPE_RP },
+ { "afsdb", NULL, QR_QTYPE_AFSDB },
+ { "x25", NULL, QR_QTYPE_X25 },
+ { "isdn", NULL, QR_QTYPE_ISDN },
+ { "rt", NULL, QR_QTYPE_RT },
+ { "nsap", NULL, QR_QTYPE_NSAP },
+ { "nsap-ptr", NULL, QR_QTYPE_NSAP_PTR },
+ { "sig", NULL, QR_QTYPE_SIG },
+ { "key", NULL, QR_QTYPE_KEY },
+ { "px", NULL, QR_QTYPE_PX },
+ { "gpos", NULL, QR_QTYPE_GPOS },
+ { "aaaa", NULL, QR_QTYPE_AAAA },
+ { "loc", NULL, QR_QTYPE_LOC },
+ { "nxt", NULL, QR_QTYPE_NXT },
+ { "eid", NULL, QR_QTYPE_EID },
+ { "nimloc", NULL, QR_QTYPE_NIMLOC },
+ { "srv", NULL, QR_QTYPE_SRV },
+ { "atma", NULL, QR_QTYPE_ATMA },
+ { "naptr", NULL, QR_QTYPE_NAPTR },
+ { "kx", NULL, QR_QTYPE_KX },
+ { "cert", NULL, QR_QTYPE_CERT },
+ { "a6", NULL, QR_QTYPE_A6 },
+ { "dname", NULL, QR_QTYPE_DNAME },
+ { "sink", NULL, QR_QTYPE_SINK },
+ { "opt", NULL, QR_QTYPE_OPT },
+ { "apl", NULL, QR_QTYPE_APL },
+ { "ds", NULL, QR_QTYPE_DS },
+ { "sshfp", NULL, QR_QTYPE_SSHFP },
+ { "ipseckey", NULL, QR_QTYPE_IPSECKEY },
+ { "rrsig", NULL, QR_QTYPE_RRSIG },
+ { "nsec", NULL, QR_QTYPE_NSEC },
+ { "dnskey", NULL, QR_QTYPE_DNSKEY },
+ { "dhcid", NULL, QR_QTYPE_DHCID },
+ { "nsec3", NULL, QR_QTYPE_NSEC3 },
+ { "nsec3param", NULL, QR_QTYPE_NSEC3PARAM },
+ { "hip", NULL, QR_QTYPE_HIP },
+ { "ninfo", NULL, QR_QTYPE_NINFO },
+ { "rkey", NULL, QR_QTYPE_RKEY },
+ { "talink", NULL, QR_QTYPE_TALINK },
+ { "spf", NULL, QR_QTYPE_SPF },
+ { "uinfo", NULL, QR_QTYPE_UINFO },
+ { "uid", NULL, QR_QTYPE_UID },
+ { "gid", NULL, QR_QTYPE_GID },
+ { "unspec", NULL, QR_QTYPE_UNSPEC },
+ { "tkey", NULL, QR_QTYPE_TKEY },
+ { "tsig", NULL, QR_QTYPE_TSIG },
+ { "ixfr", NULL, QR_QTYPE_IXFR },
+ { "axfr", NULL, QR_QTYPE_AXFR },
+ { "mailb", NULL, QR_QTYPE_MAILB },
+ { "maila", NULL, QR_QTYPE_MAILA },
+ { "uri", NULL, QR_QTYPE_URI },
+ { "caa", NULL, QR_QTYPE_CAA },
+ { "ta", NULL, QR_QTYPE_TA },
+ { "dlv", NULL, QR_QTYPE_DLV },
+ { "other", NULL, QR_QTYPE_OTHER },
+ { NULL, NULL, -1 }
+};
+const struct CounterTypeTree QRCounterResponse[] = {
+ { "truncated", NULL, QR_RESPONSE_TRUNCATED },
+ { "edns0", NULL, QR_RESPONSE_EDNS0 },
+ { "tsig", NULL, QR_RESPONSE_TSIG },
+ { "sig0", NULL, QR_RESPONSE_SIG0 },
+ { NULL, NULL, -1 }
+};
+const struct CounterTypeTree QRCounterRcode[] = {
+ { "noerror", NULL, QR_RCODE_NOERROR },
+ { "formerr", NULL, QR_RCODE_FORMERR },
+ { "servfail", NULL, QR_RCODE_SERVFAIL },
+ { "nxdomain", NULL, QR_RCODE_NXDOMAIN },
+ { "notimp", NULL, QR_RCODE_NOTIMP },
+ { "refused", NULL, QR_RCODE_REFUSED },
+ { "yxdomain", NULL, QR_RCODE_YXDOMAIN },
+ { "yxrrset", NULL, QR_RCODE_YXRRSET },
+ { "nxrrset", NULL, QR_RCODE_NXRRSET },
+ { "notauth", NULL, QR_RCODE_NOTAUTH },
+ { "notzone", NULL, QR_RCODE_NOTZONE },
+ { "badsigvers", NULL, QR_RCODE_BADSIGVERS },
+ { "badkey", NULL, QR_RCODE_BADKEY },
+ { "badtime", NULL, QR_RCODE_BADTIME },
+ { "badmode", NULL, QR_RCODE_BADMODE },
+ { "badname", NULL, QR_RCODE_BADNAME },
+ { "badalg", NULL, QR_RCODE_BADALG },
+ { "badtrunc", NULL, QR_RCODE_BADTRUNC },
+ { "other", NULL, QR_RCODE_OTHER },
+ { NULL, NULL, -1 }
+};
+const struct CounterTypeTree QRCounterTree[] = {
+ { "request", QRCounterRequest, -1 },
+ { "opcode", QRCounterOpcode, -1 },
+ { "qtype", QRCounterQtype, -1 },
+ { "responses", NULL, QR_RESPONSE },
+ { "response", QRCounterResponse, -1 },
+ { "qrysuccess", NULL, QR_QRYSUCCESS },
+ { "qryauthans", NULL, QR_QRYAUTHANS },
+ { "qrynoauthans", NULL, QR_QRYNOAUTHANS },
+ { "qryreferral", NULL, QR_QRYREFERRAL },
+ { "qrynxrrset", NULL, QR_QRYNXRRSET },
+ { "authqryrej", NULL, QR_QRYREJECT },
+ { "rcode", QRCounterRcode, -1 },
+ { NULL, NULL, -1 }
};
const int QROpCodeToQRCounterType[16] = {
diff --git a/src/bin/auth/tests/auth_srv_unittest.cc b/src/bin/auth/tests/auth_srv_unittest.cc
index e59db6d..4b673fb 100644
--- a/src/bin/auth/tests/auth_srv_unittest.cc
+++ b/src/bin/auth/tests/auth_srv_unittest.cc
@@ -1183,7 +1183,10 @@ TEST_F(AuthSrvTest, queryCounterOpcodes) {
for (int i = 0; i < 6; ++i) {
// The counter should be initialized to 0.
expectCounterItem(server.getStatistics(),
- QRCounterItemName[QROpCodeToQRCounterType[i]], 0);
+ std::string("opcode.") +
+ QRCounterOpcode[QROpCodeToQRCounterType[i] -
+ QR_OPCODE_QUERY].name,
+ 0);
// For each possible opcode, create a request message and send it
UnitTestUtil::createRequestMessage(request_message, Opcode(i),
@@ -1202,7 +1205,9 @@ TEST_F(AuthSrvTest, queryCounterOpcodes) {
// Confirm the counter.
expectCounterItem(server.getStatistics(),
- QRCounterItemName[QROpCodeToQRCounterType[i]],
+ std::string("opcode.") +
+ QRCounterOpcode[QROpCodeToQRCounterType[i] -
+ QR_OPCODE_QUERY].name,
i + 1);
}
// Check for 6..15
@@ -1212,7 +1217,9 @@ TEST_F(AuthSrvTest, queryCounterOpcodes) {
for (int i = 6; i < 16; ++i) {
// The counter should be initialized to 0.
expectCounterItem(server.getStatistics(),
- QRCounterItemName[QROpCodeToQRCounterType[i]],
+ std::string("opcode.") +
+ QRCounterOpcode[QROpCodeToQRCounterType[i] -
+ QR_OPCODE_QUERY].name,
expected);
// For each possible opcode, create a request message and send it
@@ -1232,7 +1239,9 @@ TEST_F(AuthSrvTest, queryCounterOpcodes) {
// Confirm the counter.
expectCounterItem(server.getStatistics(),
- QRCounterItemName[QROpCodeToQRCounterType[i]],
+ std::string("opcode.") +
+ QRCounterOpcode[QROpCodeToQRCounterType[i] -
+ QR_OPCODE_QUERY].name,
expected);
}
}
diff --git a/src/bin/auth/tests/statistics_unittest.cc b/src/bin/auth/tests/statistics_unittest.cc
index a845aaa..ec6ad84 100644
--- a/src/bin/auth/tests/statistics_unittest.cc
+++ b/src/bin/auth/tests/statistics_unittest.cc
@@ -103,40 +103,21 @@ TEST_F(CountersTest, incrementNormalQuery) {
checkCountersAllZeroExcept(counters.getStatistics(), expect_nonzero);
}
-TEST_F(CountersTest, getStatistics) {
- std::map<std::string, ConstElementPtr> stats_map =
- counters.getStatistics()->mapValue();
- for (std::map<std::string, ConstElementPtr>::const_iterator
- i = stats_map.begin(), e = stats_map.end();
- i != e;
- ++i)
- {
- // item type check
- EXPECT_NO_THROW(i->second->intValue())
- << "Item " << i->first << " is not IntElement";
+int
+countTreeElements(const struct CounterTypeTree* tree) {
+ int count = 0;
+ for (int i = 0; tree[i].name != NULL; ++i) {
+ if (tree[i].sub_tree == NULL) {
+ ++count;
+ } else {
+ count += countTreeElements(tree[i].sub_tree);
+ }
}
+ return count;
}
TEST(StatisticsItemsTest, QRItemNamesCheck) {
- // check the number of elements in the array
- EXPECT_EQ(sizeof(QRCounterItemName) / sizeof(QRCounterItemName[0]),
- QR_COUNTER_TYPES);
- // check the name of the first enum element
- EXPECT_EQ(QRCounterItemName[QR_REQUEST_IPV4], "request.v4");
- // check the name of the last enum element
- EXPECT_EQ(QRCounterItemName[QR_RCODE_OTHER], "rcode.other");
-}
-
-TEST(StatisticsItemsTest, SocketItemNamesCheck) {
- // check the number of elements in the array
- EXPECT_EQ(sizeof(SocketCounterItemName) / sizeof(SocketCounterItemName[0]),
- SOCKET_COUNTER_TYPES);
- // check the name of the first enum element
- EXPECT_EQ(SocketCounterItemName[SOCKET_IPV4_UDP_BINDFAIL],
- "ipv4.udp.bindfail");
- // check the name of the last enum element
- EXPECT_EQ(SocketCounterItemName[SOCKET_UNIXDOMAIN_SENDERR],
- "unixdomain.senderr");
+ EXPECT_EQ(QR_COUNTER_TYPES, countTreeElements(QRCounterTree));
}
}
More information about the bind10-changes
mailing list