From: Yoshitaka Aharen Date: Fri, 5 Oct 2012 12:28:48 +0000 (+0900) Subject: [2154] removed socket statistics items, restruct counter items X-Git-Tag: bind10-1.1.0beta1-release~85^2~5^2~141 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=05d4686ef8b343fc4ca4ea0bfd6c62fe4b73ef84;p=thirdparty%2Fkea.git [2154] removed socket statistics items, restruct counter items Removed socket statistics items. Restruct counter items from flat counters to structured counters. --- diff --git a/src/bin/auth/statistics_items.h b/src/bin/auth/statistics_items.h index 9404576bbe..eb5d249548 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/statistics_unittest.cc b/src/bin/auth/tests/statistics_unittest.cc index 907e02d5e9..1269611a82 100644 --- a/src/bin/auth/tests/statistics_unittest.cc +++ b/src/bin/auth/tests/statistics_unittest.cc @@ -126,26 +126,21 @@ TEST_F(CountersTest, getStatistics) { } } -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"); +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, 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"); +TEST(StatisticsItemsTest, QRItemNamesCheck) { + EXPECT_EQ(QR_COUNTER_TYPES, countTreeElements(QRCounterTree)); } }