/src/protocols/ntp/test_ntp.cc

https://bitbucket.org/camp0/aiengine · C++ · 220 lines · 145 code · 52 blank · 23 comment · 87 complexity · 0594462be8c2f8c513043b6e7d3b3905 MD5 · raw file

  1. /*
  2. * AIEngine a new generation network intrusion detection system.
  3. *
  4. * Copyright (C) 2013-2022 Luis Campo Giralte
  5. *
  6. * This library is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Library General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 2 of the License, or (at your option) any later version.
  10. *
  11. * This library is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Library General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Library General Public
  17. * License along with this library; if not, write to the
  18. * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
  19. * Boston, MA 02110-1301, USA.
  20. *
  21. * Written by Luis Campo Giralte <luis.camp0.2009@gmail.com>
  22. *
  23. */
  24. #include "test_ntp.h"
  25. #define BOOST_TEST_DYN_LINK
  26. #ifdef STAND_ALONE_TEST
  27. #define BOOST_TEST_MODULE ntptest
  28. #endif
  29. #include <boost/test/unit_test.hpp>
  30. using namespace aiengine;
  31. BOOST_FIXTURE_TEST_SUITE(ntp_test_suite, StackNTPtest)
  32. BOOST_AUTO_TEST_CASE (test01)
  33. {
  34. Packet packet;
  35. BOOST_CHECK(ntp->getTotalPackets() == 0);
  36. BOOST_CHECK(ntp->getTotalValidPackets() == 0);
  37. BOOST_CHECK(ntp->getTotalBytes() == 0);
  38. BOOST_CHECK(ntp->getTotalInvalidPackets() == 0);
  39. BOOST_CHECK(ntp->processPacket(packet) == true);
  40. CounterMap c = ntp->getCounters();
  41. }
  42. BOOST_AUTO_TEST_CASE (test02)
  43. {
  44. Packet packet("../ntp/packets/packet01.pcap");
  45. inject(packet);
  46. BOOST_CHECK(ip->getTotalPackets() == 1);
  47. BOOST_CHECK(ip->getTotalValidPackets() == 1);
  48. BOOST_CHECK(ip->getTotalBytes() == 96);
  49. BOOST_CHECK(ip->getTotalInvalidPackets() == 0);
  50. BOOST_CHECK(ntp->getTotalPackets() == 1);
  51. BOOST_CHECK(ntp->getTotalValidPackets() == 1);
  52. BOOST_CHECK(ntp->getTotalBytes() == 68);
  53. BOOST_CHECK(ntp->getTotalInvalidPackets() == 0);
  54. BOOST_CHECK(ntp->getVersion() == 2);
  55. BOOST_CHECK(ntp->getMode() == NTP_MODE_CLIENT);
  56. }
  57. BOOST_AUTO_TEST_CASE (test03)
  58. {
  59. Packet packet("../ntp/packets/packet02.pcap");
  60. inject(packet);
  61. BOOST_CHECK(ip->getTotalPackets() == 1);
  62. BOOST_CHECK(ip->getTotalValidPackets() == 1);
  63. BOOST_CHECK(ip->getTotalBytes() == 96);
  64. BOOST_CHECK(ip->getTotalInvalidPackets() == 0);
  65. BOOST_CHECK(ntp->getTotalPackets() == 1);
  66. BOOST_CHECK(ntp->getTotalValidPackets() == 1);
  67. BOOST_CHECK(ntp->getTotalBytes() == 68);
  68. BOOST_CHECK(ntp->getTotalInvalidPackets() == 0);
  69. BOOST_CHECK(ntp->getVersion() == 3);
  70. BOOST_CHECK(ntp->getMode() == NTP_MODE_SERVER);
  71. Json j;
  72. ntp->statistics(j, 5);
  73. BOOST_CHECK(j["servers"] == 1);
  74. ntp->resetCounters();
  75. ntp->statistics(j, 5);
  76. BOOST_CHECK(j["servers"] == 0);
  77. }
  78. BOOST_AUTO_TEST_CASE (test04)
  79. {
  80. Packet packet("../ntp/packets/packet03.pcap");
  81. inject(packet);
  82. BOOST_CHECK(ip->getTotalPackets() == 1);
  83. BOOST_CHECK(ip->getTotalValidPackets() == 1);
  84. BOOST_CHECK(ip->getTotalBytes() == 76);
  85. BOOST_CHECK(ip->getTotalInvalidPackets() == 0);
  86. BOOST_CHECK(ntp->getTotalPackets() == 1);
  87. BOOST_CHECK(ntp->getTotalValidPackets() == 1);
  88. BOOST_CHECK(ntp->getTotalBytes() == 48);
  89. BOOST_CHECK(ntp->getTotalInvalidPackets() == 0);
  90. BOOST_CHECK(ntp->getVersion() == 4);
  91. BOOST_CHECK(ntp->getMode() == NTP_MODE_CLIENT);
  92. }
  93. BOOST_AUTO_TEST_CASE (test05)
  94. {
  95. Packet packet("../ntp/packets/packet04.pcap");
  96. inject(packet);
  97. BOOST_CHECK(ip->getTotalPackets() == 1);
  98. BOOST_CHECK(ip->getTotalValidPackets() == 1);
  99. BOOST_CHECK(ip->getTotalBytes() == 76);
  100. BOOST_CHECK(ip->getTotalInvalidPackets() == 0);
  101. BOOST_CHECK(ntp->getTotalPackets() == 1);
  102. BOOST_CHECK(ntp->getTotalValidPackets() == 1);
  103. BOOST_CHECK(ntp->getTotalBytes() == 48);
  104. BOOST_CHECK(ntp->getTotalInvalidPackets() == 0);
  105. BOOST_CHECK(ntp->getVersion() == 3);
  106. BOOST_CHECK(ntp->getMode() == NTP_MODE_SYM_ACT);
  107. }
  108. BOOST_AUTO_TEST_CASE (test06)
  109. {
  110. Packet packet("../ntp/packets/packet05.pcap");
  111. inject(packet);
  112. BOOST_CHECK(ip->getTotalPackets() == 1);
  113. BOOST_CHECK(ip->getTotalValidPackets() == 1);
  114. BOOST_CHECK(ip->getTotalBytes() == 76);
  115. BOOST_CHECK(ip->getTotalInvalidPackets() == 0);
  116. BOOST_CHECK(ntp->getTotalPackets() == 1);
  117. BOOST_CHECK(ntp->getTotalValidPackets() == 1);
  118. BOOST_CHECK(ntp->getTotalBytes() == 48);
  119. BOOST_CHECK(ntp->getTotalInvalidPackets() == 0);
  120. BOOST_CHECK(ntp->getVersion() == 3);
  121. BOOST_CHECK(ntp->getMode() == NTP_MODE_SYM_PAS);
  122. }
  123. BOOST_AUTO_TEST_CASE (test07)
  124. {
  125. Packet packet("../ntp/packets/packet06.pcap");
  126. inject(packet);
  127. BOOST_CHECK(ip->getTotalPackets() == 1);
  128. BOOST_CHECK(ip->getTotalValidPackets() == 1);
  129. BOOST_CHECK(ip->getTotalBytes() == 468);
  130. BOOST_CHECK(ip->getTotalInvalidPackets() == 0);
  131. BOOST_CHECK(ntp->getTotalPackets() == 1);
  132. BOOST_CHECK(ntp->getTotalValidPackets() == 1);
  133. BOOST_CHECK(ntp->getTotalBytes() == 440);
  134. BOOST_CHECK(ntp->getTotalInvalidPackets() == 0);
  135. BOOST_CHECK(ntp->getVersion() == 2);
  136. BOOST_CHECK(ntp->getMode() == NTP_MODE_RES2);
  137. }
  138. BOOST_AUTO_TEST_CASE (test08) // ntp broadcast
  139. {
  140. Packet packet("../ntp/packets/packet07.pcap");
  141. inject(packet);
  142. BOOST_CHECK(ip->getTotalPackets() == 1);
  143. BOOST_CHECK(ip->getTotalValidPackets() == 1);
  144. BOOST_CHECK(ip->getTotalBytes() == 76);
  145. BOOST_CHECK(ip->getTotalInvalidPackets() == 0);
  146. BOOST_CHECK(ntp->getTotalPackets() == 1);
  147. BOOST_CHECK(ntp->getTotalValidPackets() == 1);
  148. BOOST_CHECK(ntp->getTotalBytes() == 48);
  149. BOOST_CHECK(ntp->getTotalInvalidPackets() == 0);
  150. BOOST_CHECK(ntp->getVersion() == 3);
  151. BOOST_CHECK(ntp->getMode() == NTP_MODE_BROADCAST);
  152. }
  153. BOOST_AUTO_TEST_CASE (test09) // reserved unspec
  154. {
  155. Packet packet("../ntp/packets/packet08.pcap");
  156. inject(packet);
  157. BOOST_CHECK(ip->getTotalPackets() == 1);
  158. BOOST_CHECK(ip->getTotalValidPackets() == 1);
  159. BOOST_CHECK(ip->getTotalBytes() == 76);
  160. BOOST_CHECK(ip->getTotalInvalidPackets() == 0);
  161. BOOST_CHECK(ntp->getTotalPackets() == 1);
  162. BOOST_CHECK(ntp->getTotalValidPackets() == 1);
  163. BOOST_CHECK(ntp->getTotalBytes() == 48);
  164. BOOST_CHECK(ntp->getTotalInvalidPackets() == 0);
  165. BOOST_CHECK(ntp->getVersion() == 3);
  166. BOOST_CHECK(ntp->getMode() == NTP_MODE_UNSPEC);
  167. }
  168. BOOST_AUTO_TEST_SUITE_END()