|
@@ -373,6 +373,68 @@ class TestStats(unittest.TestCase):
|
|
|
self.assertEqual(self.stats.update_statistics_data(owner='Dummy', foo='bar'),
|
|
|
['unknown module name: Dummy'])
|
|
|
|
|
|
+ def test_update_statistics_data_withpid(self):
|
|
|
+ # one pid of Auth
|
|
|
+ self.stats.update_statistics_data(owner='Auth',
|
|
|
+ pid=9999,
|
|
|
+ **{'queries.tcp':1001})
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data)
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.tcp'], 1001)
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data_bypid)
|
|
|
+ self.assertTrue(9999 in self.stats.statistics_data_bypid['Auth'])
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data_bypid['Auth'][9999])
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9999]['queries.tcp'], 1001)
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid,
|
|
|
+ {'Auth': {9999: {'queries.tcp': 1001}}})
|
|
|
+ # non-existent pid of Auth, but no changes in statistics data
|
|
|
+ self.stats.update_statistics_data(owner='Auth',
|
|
|
+ pid=10000,
|
|
|
+ **{'queries.tcp':2001})
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data)
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.tcp'], 1001)
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data_bypid)
|
|
|
+ self.assertTrue(9999 in self.stats.statistics_data_bypid['Auth'])
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data_bypid['Auth'][9999])
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9999]['queries.tcp'], 1001)
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid,
|
|
|
+ {'Auth': {9999: {'queries.tcp': 1001}}})
|
|
|
+ # kill running Auth, then statistics is reset
|
|
|
+ self.assertEqual(self.base.boss.server.pid_list[0][0], 9999)
|
|
|
+ killed = self.base.boss.server.pid_list.pop(0)
|
|
|
+ self.stats.update_statistics_data()
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data)
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertTrue('queries.udp' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.tcp'], 0)
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.udp'], 0)
|
|
|
+ self.assertFalse('Auth' in self.stats.statistics_data_bypid)
|
|
|
+ # restore statistics data of killed auth
|
|
|
+ self.base.boss.server.pid_list = [ killed ] + self.base.boss.server.pid_list[:]
|
|
|
+ self.stats.update_statistics_data(owner='Auth',
|
|
|
+ pid=9999,
|
|
|
+ **{'queries.tcp':1001})
|
|
|
+ # another pid of Auth
|
|
|
+ self.stats.update_statistics_data(owner='Auth',
|
|
|
+ pid=9998,
|
|
|
+ **{'queries.tcp':1002,
|
|
|
+ 'queries.udp':1003})
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data)
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertTrue('queries.udp' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.tcp'], 2003)
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.udp'], 1003)
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data_bypid)
|
|
|
+ self.assertTrue(9999 in self.stats.statistics_data_bypid['Auth'])
|
|
|
+ self.assertTrue(9998 in self.stats.statistics_data_bypid['Auth'])
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data_bypid['Auth'][9999])
|
|
|
+ self.assertTrue('queries.udp' in self.stats.statistics_data_bypid['Auth'][9998])
|
|
|
+ self.assertTrue('queries.udp' in self.stats.statistics_data_bypid['Auth'][9998])
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9999]['queries.tcp'], 1001)
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9998]['queries.tcp'], 1002)
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9998]['queries.udp'], 1003)
|
|
|
+
|
|
|
def test_commands(self):
|
|
|
# status
|
|
|
self.assertEqual(self.stats.command_status(),
|
|
@@ -710,6 +772,123 @@ class TestStats(unittest.TestCase):
|
|
|
self.assertRaises(stats.StatsError,
|
|
|
self.stats.command_set, owner='Stats', data={ 'dummy' : '_xxxx_yyyy_zzz_' })
|
|
|
|
|
|
+ def test_command_set_withpid(self):
|
|
|
+ # one pid of Auth
|
|
|
+ retval = isc.config.ccsession.parse_answer(
|
|
|
+ self.stats.command_set(owner='Auth',
|
|
|
+ pid=9997,
|
|
|
+ data={ 'queries.tcp' : 1001,
|
|
|
+ 'queries.perzone':
|
|
|
+ [{ 'zonename': 'test1.example',
|
|
|
+ 'queries.tcp': 1 },
|
|
|
+ { 'zonename': 'test2.example',
|
|
|
+ 'queries.tcp': 2,
|
|
|
+ 'queries.udp': 3 }]}))
|
|
|
+ self.assertEqual(retval, (0,None))
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data)
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.tcp'], 1001)
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.perzone'],
|
|
|
+ [{ 'zonename': 'test1.example',
|
|
|
+ 'queries.tcp': 1 },
|
|
|
+ { 'zonename': 'test2.example',
|
|
|
+ 'queries.tcp': 2,
|
|
|
+ 'queries.udp': 3 }])
|
|
|
+ self.assertTrue('Stats' in self.stats.statistics_data)
|
|
|
+ self.assertTrue('last_update_time' in self.stats.statistics_data['Stats'])
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data_bypid)
|
|
|
+ self.assertTrue(9997 in self.stats.statistics_data_bypid['Auth'])
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data_bypid['Auth'][9997])
|
|
|
+ self.assertTrue('queries.perzone' in self.stats.statistics_data_bypid['Auth'][9997])
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9997]['queries.tcp'], 1001)
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9997]['queries.perzone'],
|
|
|
+ [{ 'zonename': 'test1.example',
|
|
|
+ 'queries.tcp': 1 },
|
|
|
+ { 'zonename': 'test2.example',
|
|
|
+ 'queries.tcp': 2,
|
|
|
+ 'queries.udp': 3 }])
|
|
|
+ # non-existent pid of Auth, but no changes in statistics data
|
|
|
+ retval = isc.config.ccsession.parse_answer(
|
|
|
+ self.stats.command_set(owner='Auth',
|
|
|
+ pid=10000,
|
|
|
+ data={ 'queries.tcp' : 2001,
|
|
|
+ 'queries.perzone':
|
|
|
+ [{ 'zonename': 'test1.example',
|
|
|
+ 'queries.tcp': 101 },
|
|
|
+ { 'zonename': 'test2.example',
|
|
|
+ 'queries.tcp': 102,
|
|
|
+ 'queries.udp': 103 }]}))
|
|
|
+ self.assertEqual(retval, (0,None))
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data)
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.tcp'], 1001)
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.perzone'],
|
|
|
+ [{ 'zonename': 'test1.example',
|
|
|
+ 'queries.tcp': 1 },
|
|
|
+ { 'zonename': 'test2.example',
|
|
|
+ 'queries.tcp': 2,
|
|
|
+ 'queries.udp': 3 }])
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data_bypid)
|
|
|
+ self.assertTrue(9997 in self.stats.statistics_data_bypid['Auth'])
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data_bypid['Auth'][9997])
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9997]['queries.tcp'], 1001)
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9997]['queries.perzone'],
|
|
|
+ [{ 'zonename': 'test1.example',
|
|
|
+ 'queries.tcp': 1 },
|
|
|
+ { 'zonename': 'test2.example',
|
|
|
+ 'queries.tcp': 2,
|
|
|
+ 'queries.udp': 3 }])
|
|
|
+ # another pid of Auth
|
|
|
+ retval = isc.config.ccsession.parse_answer(
|
|
|
+ self.stats.command_set(owner='Auth',
|
|
|
+ pid=9996,
|
|
|
+ data={ 'queries.tcp' : 1002,
|
|
|
+ 'queries.udp' : 1003,
|
|
|
+ 'queries.perzone':
|
|
|
+ [{ 'zonename': 'test1.example',
|
|
|
+ 'queries.tcp': 10,
|
|
|
+ 'queries.udp': 11},
|
|
|
+ { 'zonename': 'test2.example',
|
|
|
+ 'queries.tcp': 12,
|
|
|
+ 'queries.udp': 13 }]}))
|
|
|
+ self.assertEqual(retval, (0,None))
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data)
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertTrue('queries.udp' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertTrue('queries.perzone' in self.stats.statistics_data['Auth'])
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.tcp'], 2003)
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.udp'], 1003)
|
|
|
+ self.assertEqual(self.stats.statistics_data['Auth']['queries.perzone'],
|
|
|
+ [{ 'zonename': 'test1.example',
|
|
|
+ 'queries.tcp': 11,
|
|
|
+ 'queries.udp': 11},
|
|
|
+ { 'zonename': 'test2.example',
|
|
|
+ 'queries.tcp': 14,
|
|
|
+ 'queries.udp': 16 }])
|
|
|
+ self.assertTrue('Auth' in self.stats.statistics_data_bypid)
|
|
|
+ self.assertTrue(9997 in self.stats.statistics_data_bypid['Auth'])
|
|
|
+ self.assertTrue(9996 in self.stats.statistics_data_bypid['Auth'])
|
|
|
+ self.assertTrue('queries.tcp' in self.stats.statistics_data_bypid['Auth'][9997])
|
|
|
+ self.assertTrue('queries.udp' in self.stats.statistics_data_bypid['Auth'][9996])
|
|
|
+ self.assertTrue('queries.udp' in self.stats.statistics_data_bypid['Auth'][9996])
|
|
|
+ self.assertTrue('queries.perzone' in self.stats.statistics_data_bypid['Auth'][9996])
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9997]['queries.tcp'], 1001)
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9997]['queries.perzone'],
|
|
|
+ [{ 'zonename': 'test1.example',
|
|
|
+ 'queries.tcp': 1 },
|
|
|
+ { 'zonename': 'test2.example',
|
|
|
+ 'queries.tcp': 2,
|
|
|
+ 'queries.udp': 3 }])
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9996]['queries.tcp'], 1002)
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9996]['queries.udp'], 1003)
|
|
|
+ self.assertEqual(self.stats.statistics_data_bypid['Auth'][9996]['queries.perzone'],
|
|
|
+ [{ 'zonename': 'test1.example',
|
|
|
+ 'queries.tcp': 10,
|
|
|
+ 'queries.udp': 11},
|
|
|
+ { 'zonename': 'test2.example',
|
|
|
+ 'queries.tcp': 12,
|
|
|
+ 'queries.udp': 13 }])
|
|
|
+
|
|
|
class TestOSEnv(unittest.TestCase):
|
|
|
def test_osenv(self):
|
|
|
"""
|