|
@@ -291,7 +291,7 @@ class TestXfroutSessionBase(unittest.TestCase):
|
|
|
# the XfroutSession object. We check the condition here.
|
|
|
self.assertEqual(0, self.xfrsess._server.transfer_counter)
|
|
|
# clear statistics counters
|
|
|
- Counter.clear_counters()
|
|
|
+ self.xfrsess._counter.clear_counters()
|
|
|
|
|
|
class TestXfroutSession(TestXfroutSessionBase):
|
|
|
def test_quota_error(self):
|
|
@@ -380,7 +380,8 @@ class TestXfroutSession(TestXfroutSessionBase):
|
|
|
]))
|
|
|
# check the 'xfrrej' counter initially
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_xfrrej, TEST_ZONE_NAME_STR)
|
|
|
+ self.xfrsess._counter.get, 'zones',
|
|
|
+ TEST_ZONE_NAME_STR, 'xfrrej')
|
|
|
# Localhost (the default in this test) is accepted
|
|
|
rcode, msg = self.xfrsess._parse_query_message(self.mdata)
|
|
|
self.assertEqual(rcode.to_text(), "NOERROR")
|
|
@@ -395,7 +396,8 @@ class TestXfroutSession(TestXfroutSessionBase):
|
|
|
rcode, msg = self.xfrsess._parse_query_message(self.mdata)
|
|
|
self.assertEqual(rcode.to_text(), "REFUSED")
|
|
|
# check the 'xfrrej' counter after incrementing
|
|
|
- self.assertEqual(Counter.get_xfrrej(TEST_ZONE_NAME_STR), 1)
|
|
|
+ self.assertEqual(self.xfrsess._counter.get(
|
|
|
+ 'zones', TEST_ZONE_NAME_STR, 'xfrrej'), 1)
|
|
|
|
|
|
# TSIG signed request
|
|
|
request_data = self.create_request_data(with_tsig=True)
|
|
@@ -425,7 +427,8 @@ class TestXfroutSession(TestXfroutSessionBase):
|
|
|
[rcode, msg] = self.xfrsess._parse_query_message(request_data)
|
|
|
self.assertEqual(rcode.to_text(), "REFUSED")
|
|
|
# check the 'xfrrej' counter after incrementing
|
|
|
- self.assertEqual(Counter.get_xfrrej(TEST_ZONE_NAME_STR), 2)
|
|
|
+ self.assertEqual(self.xfrsess._counter.get(
|
|
|
+ 'zones', TEST_ZONE_NAME_STR, 'xfrrej'), 2)
|
|
|
|
|
|
# ACL using TSIG: no TSIG; should be rejected
|
|
|
acl_setter(isc.acl.dns.REQUEST_LOADER.load([
|
|
@@ -434,7 +437,8 @@ class TestXfroutSession(TestXfroutSessionBase):
|
|
|
[rcode, msg] = self.xfrsess._parse_query_message(self.mdata)
|
|
|
self.assertEqual(rcode.to_text(), "REFUSED")
|
|
|
# check the 'xfrrej' counter after incrementing
|
|
|
- self.assertEqual(Counter.get_xfrrej(TEST_ZONE_NAME_STR), 3)
|
|
|
+ self.assertEqual(self.xfrsess._counter.get(
|
|
|
+ 'zones', TEST_ZONE_NAME_STR, 'xfrrej'), 3)
|
|
|
|
|
|
#
|
|
|
# ACL using IP + TSIG: both should match
|
|
@@ -455,21 +459,24 @@ class TestXfroutSession(TestXfroutSessionBase):
|
|
|
[rcode, msg] = self.xfrsess._parse_query_message(request_data)
|
|
|
self.assertEqual(rcode.to_text(), "REFUSED")
|
|
|
# check the 'xfrrej' counter after incrementing
|
|
|
- self.assertEqual(Counter.get_xfrrej(TEST_ZONE_NAME_STR), 4)
|
|
|
+ self.assertEqual(self.xfrsess._counter.get(
|
|
|
+ 'zones', TEST_ZONE_NAME_STR, 'xfrrej'), 4)
|
|
|
# Address matches, but TSIG doesn't (not included)
|
|
|
self.xfrsess._remote = (socket.AF_INET, socket.SOCK_STREAM,
|
|
|
('192.0.2.1', 12345))
|
|
|
[rcode, msg] = self.xfrsess._parse_query_message(self.mdata)
|
|
|
self.assertEqual(rcode.to_text(), "REFUSED")
|
|
|
# check the 'xfrrej' counter after incrementing
|
|
|
- self.assertEqual(Counter.get_xfrrej(TEST_ZONE_NAME_STR), 5)
|
|
|
+ self.assertEqual(self.xfrsess._counter.get(
|
|
|
+ 'zones', TEST_ZONE_NAME_STR, 'xfrrej'), 5)
|
|
|
# Neither address nor TSIG matches
|
|
|
self.xfrsess._remote = (socket.AF_INET, socket.SOCK_STREAM,
|
|
|
('192.0.2.2', 12345))
|
|
|
[rcode, msg] = self.xfrsess._parse_query_message(self.mdata)
|
|
|
self.assertEqual(rcode.to_text(), "REFUSED")
|
|
|
# check the 'xfrrej' counter after incrementing
|
|
|
- self.assertEqual(Counter.get_xfrrej(TEST_ZONE_NAME_STR), 6)
|
|
|
+ self.assertEqual(self.xfrsess._counter.get(
|
|
|
+ 'zones', TEST_ZONE_NAME_STR, 'xfrrej'), 6)
|
|
|
|
|
|
def test_transfer_acl(self):
|
|
|
# ACL checks only with the default ACL
|
|
@@ -853,9 +860,11 @@ class TestXfroutSession(TestXfroutSessionBase):
|
|
|
|
|
|
self.xfrsess._reply_xfrout_query = myreply
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_unixsocket_senderr)
|
|
|
+ self.xfrsess._counter.get,
|
|
|
+ 'socket', 'unixdomain', 'senderr')
|
|
|
self.xfrsess.dns_xfrout_start(self.sock, self.mdata)
|
|
|
- self.assertEqual(Counter.get_unixsocket_senderr(), 1)
|
|
|
+ self.assertEqual(self.xfrsess._counter.get(
|
|
|
+ 'socket', 'unixdomain', 'senderr'), 1)
|
|
|
|
|
|
def test_dns_xfrout_start_noerror(self):
|
|
|
def noerror(msg, name, rrclass):
|
|
@@ -866,12 +875,13 @@ class TestXfroutSession(TestXfroutSessionBase):
|
|
|
self.sock.send(b"success")
|
|
|
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_xfrreqdone, TEST_ZONE_NAME_STR)
|
|
|
+ self.xfrsess._counter.get,
|
|
|
+ 'zones', TEST_ZONE_NAME_STR, 'xfrreqdone')
|
|
|
self.xfrsess._reply_xfrout_query = myreply
|
|
|
self.xfrsess.dns_xfrout_start(self.sock, self.mdata)
|
|
|
self.assertEqual(self.sock.readsent(), b"success")
|
|
|
- self.assertGreater(\
|
|
|
- Counter.get_xfrreqdone(TEST_ZONE_NAME_STR), 0)
|
|
|
+ self.assertGreater(self.xfrsess._counter.get(
|
|
|
+ 'zones', TEST_ZONE_NAME_STR, 'xfrreqdone'), 0)
|
|
|
|
|
|
def test_reply_xfrout_query_axfr(self):
|
|
|
self.xfrsess._soa = self.soa_rrset
|
|
@@ -1128,7 +1138,7 @@ class TestXfroutSessionWithSQLite3(TestXfroutSessionBase):
|
|
|
|
|
|
def test_axfr_normal_session(self):
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_axfr_running)
|
|
|
+ self.xfrsess._counter.get, 'axfr_running')
|
|
|
XfroutSession._handle(self.xfrsess)
|
|
|
response = self.sock.read_msg(Message.PRESERVE_ORDER);
|
|
|
self.assertEqual(Rcode.NOERROR(), response.get_rcode())
|
|
@@ -1136,8 +1146,8 @@ class TestXfroutSessionWithSQLite3(TestXfroutSessionBase):
|
|
|
self.assertEqual(self.xfrsess._request_type, RRType.AXFR())
|
|
|
self.assertNotEqual(self.xfrsess._request_type, RRType.IXFR())
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_ixfr_running)
|
|
|
- self.assertEqual(Counter.get_axfr_running(), 0)
|
|
|
+ self.xfrsess._counter.get, 'ixfr_running')
|
|
|
+ self.assertEqual(self.xfrsess._counter.get('axfr_running'), 0)
|
|
|
|
|
|
def test_ixfr_to_axfr(self):
|
|
|
self.xfrsess._request_data = \
|
|
@@ -1157,9 +1167,9 @@ class TestXfroutSessionWithSQLite3(TestXfroutSessionBase):
|
|
|
self.xfrsess._request_data = \
|
|
|
self.create_request_data(ixfr=IXFR_OK_VERSION)
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_axfr_running)
|
|
|
+ self.xfrsess._counter.get, 'axfr_running')
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_ixfr_running)
|
|
|
+ self.xfrsess._counter.get, 'ixfr_running')
|
|
|
XfroutSession._handle(self.xfrsess)
|
|
|
response = self.sock.read_msg(Message.PRESERVE_ORDER)
|
|
|
actual_records = response.get_section(Message.SECTION_ANSWER)
|
|
@@ -1178,8 +1188,8 @@ class TestXfroutSessionWithSQLite3(TestXfroutSessionBase):
|
|
|
self.assertNotEqual(self.xfrsess._request_type, RRType.AXFR())
|
|
|
self.assertEqual(self.xfrsess._request_type, RRType.IXFR())
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_axfr_running)
|
|
|
- self.assertEqual(Counter.get_ixfr_running(), 0)
|
|
|
+ self.xfrsess._counter.get, 'axfr_running')
|
|
|
+ self.assertEqual(self.xfrsess._counter.get('ixfr_running'), 0)
|
|
|
|
|
|
def ixfr_soa_only_common_checks(self, request_serial):
|
|
|
self.xfrsess._request_data = \
|
|
@@ -1208,6 +1218,7 @@ class MyUnixSockServer(UnixSockServer):
|
|
|
self._cc = MyCCSession()
|
|
|
self.update_config_data(self._cc.get_full_config())
|
|
|
self._counters = {}
|
|
|
+ self._counter = xfrout.Counter(xfrout.SPECFILE_LOCATION)
|
|
|
|
|
|
class TestUnixSockServer(unittest.TestCase):
|
|
|
def setUp(self):
|
|
@@ -1568,45 +1579,57 @@ class TestUnixSockServerForCounter(unittest.TestCase):
|
|
|
super,
|
|
|
self.orig_process_request,
|
|
|
self.orig_select )
|
|
|
- Counter.clear_counters()
|
|
|
+ self.unix._counter.clear_counters()
|
|
|
|
|
|
def test_open(self):
|
|
|
# open
|
|
|
- self.assertEqual(Counter.get_unixsocket_open(), 1)
|
|
|
+ self.assertEqual(
|
|
|
+ self.unix._counter.get('socket', 'unixdomain', 'open'), 1)
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_unixsocket_openfail)
|
|
|
+ self.unix._counter.get,
|
|
|
+ 'socket', 'unixdomain', 'openfail')
|
|
|
xfrout.ThreadingUnixStreamServer = DummySocketserverException
|
|
|
self.unix = UnixSockServer(None, None, None, None, None)
|
|
|
- self.assertEqual(Counter.get_unixsocket_open(), 1)
|
|
|
- self.assertEqual(Counter.get_unixsocket_openfail(), 1)
|
|
|
+ self.assertEqual(
|
|
|
+ self.unix._counter.get('socket', 'unixdomain', 'open'), 1)
|
|
|
+ self.assertEqual(
|
|
|
+ self.unix._counter.get('socket', 'unixdomain', 'openfail'), 1)
|
|
|
|
|
|
def test_close(self):
|
|
|
# close
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_unixsocket_close)
|
|
|
+ self.unix._counter.get,
|
|
|
+ 'socket','unixdomain', 'close')
|
|
|
self.unix.shutdown()
|
|
|
- self.assertEqual(Counter.get_unixsocket_close(), 1)
|
|
|
+ self.assertEqual(
|
|
|
+ self.unix._counter.get('socket', 'unixdomain', 'close'), 1)
|
|
|
|
|
|
def test_bindfail(self):
|
|
|
# bindfail
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_unixsocket_bindfail)
|
|
|
+ self.unix._counter.get,
|
|
|
+ 'socket', 'unixdomain', 'bindfail')
|
|
|
self.assertRaises(Exception, self.unix.server_bind)
|
|
|
- self.assertEqual(Counter.get_unixsocket_bindfail(), 1)
|
|
|
+ self.assertEqual(
|
|
|
+ self.unix._counter.get('socket', 'unixdomain', 'bindfail'), 1)
|
|
|
|
|
|
def test_accept(self):
|
|
|
# accept
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_unixsocket_accept)
|
|
|
+ self.unix._counter.get,
|
|
|
+ 'socket', 'unixdomain', 'accept')
|
|
|
self.unix.get_request()
|
|
|
- self.assertEqual(Counter.get_unixsocket_accept(), 1)
|
|
|
+ self.assertEqual(
|
|
|
+ self.unix._counter.get('socket', 'unixdomain', 'accept'), 1)
|
|
|
# acceptfail
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_unixsocket_acceptfail)
|
|
|
+ self.unix._counter.get,
|
|
|
+ 'socket', 'unixdomain', 'acceptfail')
|
|
|
xfrout.super = lambda : DummyClassException()
|
|
|
self.unix = UnixSockServer(None, None, None, None, None)
|
|
|
self.assertRaises(Exception, self.unix.get_request)
|
|
|
- self.assertEqual(Counter.get_unixsocket_acceptfail(), 1)
|
|
|
+ self.assertEqual(
|
|
|
+ self.unix._counter.get('socket', 'unixdomain', 'acceptfail'), 1)
|
|
|
|
|
|
def test_senderr(self):
|
|
|
# do inside of above TestXfroutSession
|
|
@@ -1615,12 +1638,14 @@ class TestUnixSockServerForCounter(unittest.TestCase):
|
|
|
def test_recverr(self):
|
|
|
# recverr
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError,
|
|
|
- Counter.get_unixsocket_recverr)
|
|
|
+ self.unix._counter.get,
|
|
|
+ 'socket', 'unixdomain', 'recverr')
|
|
|
def raise_socketerror(x,y):
|
|
|
raise socket.error
|
|
|
self.unix.process_request = raise_socketerror
|
|
|
self.unix._select_loop(None)
|
|
|
- self.assertEqual(Counter.get_unixsocket_recverr(), 1)
|
|
|
+ self.assertEqual(self.unix._counter.get(
|
|
|
+ 'socket', 'unixdomain', 'recverr'), 1)
|
|
|
|
|
|
class TestInitialization(unittest.TestCase):
|
|
|
def setEnv(self, name, value):
|
|
@@ -1670,6 +1695,7 @@ class MyXfroutServer(XfroutServer):
|
|
|
self._wait_for_threads = lambda : None
|
|
|
self._cc.get_module_spec = lambda:\
|
|
|
isc.config.module_spec_from_file(xfrout.SPECFILE_LOCATION)
|
|
|
+ self._counter = xfrout.Counter(xfrout.SPECFILE_LOCATION)
|
|
|
|
|
|
class TestXfroutServer(unittest.TestCase):
|
|
|
def setUp(self):
|