b10-stats_stub_test.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. # Copyright (C) 2010 Internet Systems Consortium.
  2. #
  3. # Permission to use, copy, modify, and distribute this software for any
  4. # purpose with or without fee is hereby granted, provided that the above
  5. # copyright notice and this permission notice appear in all copies.
  6. #
  7. # THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
  8. # DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
  9. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
  10. # INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
  11. # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
  12. # FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
  13. # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
  14. # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. __version__ = "$Revision$"
  16. #
  17. # Tests for the stats stub module
  18. #
  19. import unittest
  20. import time
  21. import os
  22. import imp
  23. import stats_stub
  24. from isc.cc.session import Session
  25. from stats_stub import CCSessionStub, BossModuleStub, AuthModuleStub
  26. from stats import get_datetime
  27. class TestStats(unittest.TestCase):
  28. def setUp(self):
  29. self.session = Session()
  30. self.stub = CCSessionStub(session=self.session, verbose=True)
  31. self.boss = BossModuleStub(session=self.session, verbose=True)
  32. self.auth = AuthModuleStub(session=self.session, verbose=True)
  33. self.env = {'from': self.session.lname, 'group': 'Stats',
  34. 'instance': '*', 'to':'*',
  35. 'type':'send','seq':0}
  36. self.result_ok = {'result': [0]}
  37. def tearDown(self):
  38. self.session.close()
  39. def test_stub(self):
  40. """
  41. Test for send_command of CCSessionStub object
  42. """
  43. env = self.env
  44. result_ok = self.result_ok
  45. self.assertEqual(('status', None, env),
  46. self.stub.send_command('status', None))
  47. self.assertEqual(result_ok, self.session.get_message("Stats", None))
  48. self.assertEqual(('shutdown', None, env),
  49. self.stub.send_command('shutdown', None))
  50. self.assertEqual(result_ok, self.session.get_message("Stats", None))
  51. self.assertEqual(('show', None, env),
  52. self.stub.send_command('show', None))
  53. self.assertEqual(result_ok, self.session.get_message("Stats", None))
  54. self.assertEqual(('set', {'atest': 100.0}, env),
  55. self.stub.send_command('set', {'atest': 100.0}))
  56. self.assertEqual(result_ok, self.session.get_message("Stats", None))
  57. def test_boss_stub(self):
  58. """
  59. Test for send_command of BossModuleStub object
  60. """
  61. env = self.env
  62. result_ok = self.result_ok
  63. self.assertEqual(('set', {"stats_data":
  64. {"bind10.boot_time": get_datetime()}
  65. }, env), self.boss.send_boottime())
  66. self.assertEqual(result_ok, self.session.get_message("Stats", None))
  67. def test_auth_stub(self):
  68. """
  69. Test for send_command of AuthModuleStub object
  70. """
  71. env = self.env
  72. result_ok = self.result_ok
  73. self.assertEqual(
  74. ('set', {"stats_data": {"auth.queries.udp": 1}}, env),
  75. self.auth.send_udp_query_count())
  76. self.assertEqual(result_ok, self.session.get_message("Stats", None))
  77. self.assertEqual(
  78. ('set', {"stats_data": {"auth.queries.tcp": 1}}, env),
  79. self.auth.send_tcp_query_count())
  80. self.assertEqual(result_ok, self.session.get_message("Stats", None))
  81. self.assertEqual(
  82. ('set', {"stats_data": {"auth.queries.udp": 100}}, env),
  83. self.auth.send_udp_query_count(cmd='set', cnt=100))
  84. self.assertEqual(result_ok, self.session.get_message("Stats", None))
  85. self.assertEqual(
  86. ('set', {"stats_data": {"auth.queries.tcp": 99}}, env),
  87. self.auth.send_tcp_query_count(cmd='set', cnt=99))
  88. self.assertEqual(result_ok, self.session.get_message("Stats", None))
  89. def test_func_main(self):
  90. # explicitly make failed
  91. self.session.close()
  92. stats_stub.main(session=self.session)
  93. def test_osenv(self):
  94. """
  95. test for not having environ "B10_FROM_BUILD"
  96. """
  97. if "B10_FROM_BUILD" in os.environ:
  98. path = os.environ["B10_FROM_BUILD"]
  99. os.environ.pop("B10_FROM_BUILD")
  100. imp.reload(stats_stub)
  101. os.environ["B10_FROM_BUILD"] = path
  102. imp.reload(stats_stub)
  103. if __name__ == "__main__":
  104. unittest.main()