Dnsruby 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. data/EVENTMACHINE +64 -0
  2. data/README +2 -2
  3. data/doc/classes/Dnsruby/Classes.html +10 -10
  4. data/doc/classes/Dnsruby/Classes.src/M000158.html +9 -5
  5. data/doc/classes/Dnsruby/Classes.src/M000159.html +19 -0
  6. data/doc/classes/Dnsruby/Classes.src/M000185.html +23 -0
  7. data/doc/classes/Dnsruby/Classes.src/M000186.html +19 -0
  8. data/doc/classes/Dnsruby/CodeMapper.html +55 -55
  9. data/doc/classes/Dnsruby/CodeMapper.src/M000131.html +4 -19
  10. data/doc/classes/Dnsruby/CodeMapper.src/M000132.html +19 -7
  11. data/doc/classes/Dnsruby/CodeMapper.src/M000133.html +7 -5
  12. data/doc/classes/Dnsruby/CodeMapper.src/M000134.html +5 -5
  13. data/doc/classes/Dnsruby/CodeMapper.src/M000135.html +5 -4
  14. data/doc/classes/Dnsruby/CodeMapper.src/M000136.html +4 -8
  15. data/doc/classes/Dnsruby/CodeMapper.src/M000137.html +5 -5
  16. data/doc/classes/Dnsruby/CodeMapper.src/M000138.html +6 -6
  17. data/doc/classes/Dnsruby/CodeMapper.src/M000139.html +7 -16
  18. data/doc/classes/Dnsruby/CodeMapper.src/M000140.html +17 -5
  19. data/doc/classes/Dnsruby/CodeMapper.src/M000141.html +19 -0
  20. data/doc/classes/Dnsruby/CodeMapper.src/M000158.html +18 -0
  21. data/doc/classes/Dnsruby/CodeMapper.src/M000159.html +33 -0
  22. data/doc/classes/Dnsruby/CodeMapper.src/M000160.html +21 -0
  23. data/doc/classes/Dnsruby/CodeMapper.src/M000161.html +19 -0
  24. data/doc/classes/Dnsruby/CodeMapper.src/M000162.html +19 -0
  25. data/doc/classes/Dnsruby/CodeMapper.src/M000163.html +18 -0
  26. data/doc/classes/Dnsruby/CodeMapper.src/M000164.html +22 -0
  27. data/doc/classes/Dnsruby/CodeMapper.src/M000165.html +22 -0
  28. data/doc/classes/Dnsruby/CodeMapper.src/M000166.html +22 -0
  29. data/doc/classes/Dnsruby/CodeMapper.src/M000167.html +31 -0
  30. data/doc/classes/Dnsruby/CodeMapper.src/M000168.html +19 -0
  31. data/doc/classes/Dnsruby/Config.src/M000106.html +5 -1
  32. data/doc/classes/Dnsruby/Config.src/M000107.html +1 -1
  33. data/doc/classes/Dnsruby/Config.src/M000108.html +4 -1
  34. data/doc/classes/Dnsruby/Config.src/M000125.html +18 -0
  35. data/doc/classes/Dnsruby/Config.src/M000126.html +19 -0
  36. data/doc/classes/Dnsruby/Config.src/M000127.html +19 -0
  37. data/doc/classes/Dnsruby/Config.src/M000128.html +21 -0
  38. data/doc/classes/Dnsruby/Config.src/M000129.html +21 -0
  39. data/doc/classes/Dnsruby/Config.src/M000130.html +38 -0
  40. data/doc/classes/Dnsruby/Config.src/M000131.html +26 -0
  41. data/doc/classes/Dnsruby/Config.src/M000132.html +22 -0
  42. data/doc/classes/Dnsruby/Config.src/M000133.html +27 -0
  43. data/doc/classes/Dnsruby/Config.src/M000134.html +22 -0
  44. data/doc/classes/Dnsruby/Config.src/M000135.html +21 -0
  45. data/doc/classes/Dnsruby/DNS.html +85 -85
  46. data/doc/classes/Dnsruby/DNS.src/M000197.html +10 -4
  47. data/doc/classes/Dnsruby/DNS.src/M000198.html +4 -4
  48. data/doc/classes/Dnsruby/DNS.src/M000199.html +4 -6
  49. data/doc/classes/Dnsruby/DNS.src/M000200.html +6 -5
  50. data/doc/classes/Dnsruby/DNS.src/M000201.html +5 -6
  51. data/doc/classes/Dnsruby/DNS.src/M000202.html +6 -4
  52. data/doc/classes/Dnsruby/DNS.src/M000203.html +4 -5
  53. data/doc/classes/Dnsruby/DNS.src/M000204.html +5 -6
  54. data/doc/classes/Dnsruby/DNS.src/M000205.html +6 -14
  55. data/doc/classes/Dnsruby/DNS.src/M000206.html +14 -5
  56. data/doc/classes/Dnsruby/DNS.src/M000207.html +5 -6
  57. data/doc/classes/Dnsruby/DNS.src/M000208.html +6 -27
  58. data/doc/classes/Dnsruby/DNS.src/M000209.html +26 -17
  59. data/doc/classes/Dnsruby/DNS.src/M000210.html +17 -35
  60. data/doc/classes/Dnsruby/DNS.src/M000211.html +50 -0
  61. data/doc/classes/Dnsruby/DNS.src/M000224.html +24 -0
  62. data/doc/classes/Dnsruby/DNS.src/M000225.html +18 -0
  63. data/doc/classes/Dnsruby/DNS.src/M000226.html +18 -0
  64. data/doc/classes/Dnsruby/DNS.src/M000227.html +20 -0
  65. data/doc/classes/Dnsruby/DNS.src/M000228.html +19 -0
  66. data/doc/classes/Dnsruby/DNS.src/M000229.html +20 -0
  67. data/doc/classes/Dnsruby/DNS.src/M000230.html +18 -0
  68. data/doc/classes/Dnsruby/DNS.src/M000231.html +19 -0
  69. data/doc/classes/Dnsruby/DNS.src/M000232.html +20 -0
  70. data/doc/classes/Dnsruby/DNS.src/M000233.html +28 -0
  71. data/doc/classes/Dnsruby/DNS.src/M000234.html +19 -0
  72. data/doc/classes/Dnsruby/DNS.src/M000235.html +20 -0
  73. data/doc/classes/Dnsruby/DNS.src/M000236.html +41 -0
  74. data/doc/classes/Dnsruby/DNS.src/M000237.html +32 -0
  75. data/doc/classes/Dnsruby/DNS.src/M000238.html +50 -0
  76. data/doc/classes/Dnsruby/EventMachineInterface/EmTcpHandler.html +154 -0
  77. data/doc/classes/Dnsruby/EventMachineInterface/EmTcpHandler.src/M000123.html +20 -0
  78. data/doc/classes/Dnsruby/EventMachineInterface/EmTcpHandler.src/M000124.html +32 -0
  79. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.html +237 -0
  80. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000117.html +18 -0
  81. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000118.html +19 -0
  82. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000119.html +35 -0
  83. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000120.html +30 -0
  84. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000121.html +19 -0
  85. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000122.html +23 -0
  86. data/doc/classes/Dnsruby/EventMachineInterface.html +327 -0
  87. data/doc/classes/Dnsruby/EventMachineInterface.src/M000105.html +32 -0
  88. data/doc/classes/Dnsruby/EventMachineInterface.src/M000106.html +25 -0
  89. data/doc/classes/Dnsruby/EventMachineInterface.src/M000107.html +29 -0
  90. data/doc/classes/Dnsruby/EventMachineInterface.src/M000108.html +21 -0
  91. data/doc/classes/Dnsruby/EventMachineInterface.src/M000109.html +35 -0
  92. data/doc/classes/Dnsruby/EventMachineInterface.src/M000110.html +19 -0
  93. data/doc/classes/Dnsruby/EventMachineInterface.src/M000111.html +23 -0
  94. data/doc/classes/Dnsruby/EventMachineInterface.src/M000112.html +18 -0
  95. data/doc/classes/Dnsruby/EventMachineInterface.src/M000113.html +28 -0
  96. data/doc/classes/Dnsruby/EventMachineInterface.src/M000114.html +41 -0
  97. data/doc/classes/Dnsruby/EventMachineInterface.src/M000115.html +28 -0
  98. data/doc/classes/Dnsruby/EventMachineInterface.src/M000116.html +24 -0
  99. data/doc/classes/Dnsruby/Header.html +62 -62
  100. data/doc/classes/Dnsruby/Header.src/M000169.html +21 -4
  101. data/doc/classes/Dnsruby/Header.src/M000170.html +4 -4
  102. data/doc/classes/Dnsruby/Header.src/M000171.html +4 -7
  103. data/doc/classes/Dnsruby/Header.src/M000172.html +7 -6
  104. data/doc/classes/Dnsruby/Header.src/M000173.html +6 -18
  105. data/doc/classes/Dnsruby/Header.src/M000174.html +18 -12
  106. data/doc/classes/Dnsruby/Header.src/M000175.html +12 -33
  107. data/doc/classes/Dnsruby/Header.src/M000176.html +33 -14
  108. data/doc/classes/Dnsruby/Header.src/M000177.html +14 -4
  109. data/doc/classes/Dnsruby/Header.src/M000178.html +4 -4
  110. data/doc/classes/Dnsruby/Header.src/M000179.html +4 -16
  111. data/doc/classes/Dnsruby/Header.src/M000180.html +30 -0
  112. data/doc/classes/Dnsruby/Header.src/M000196.html +35 -0
  113. data/doc/classes/Dnsruby/Header.src/M000197.html +18 -0
  114. data/doc/classes/Dnsruby/Header.src/M000198.html +18 -0
  115. data/doc/classes/Dnsruby/Header.src/M000199.html +21 -0
  116. data/doc/classes/Dnsruby/Header.src/M000200.html +20 -0
  117. data/doc/classes/Dnsruby/Header.src/M000201.html +32 -0
  118. data/doc/classes/Dnsruby/Header.src/M000202.html +26 -0
  119. data/doc/classes/Dnsruby/Header.src/M000203.html +47 -0
  120. data/doc/classes/Dnsruby/Header.src/M000204.html +28 -0
  121. data/doc/classes/Dnsruby/Header.src/M000205.html +18 -0
  122. data/doc/classes/Dnsruby/Header.src/M000206.html +18 -0
  123. data/doc/classes/Dnsruby/Header.src/M000207.html +30 -0
  124. data/doc/classes/Dnsruby/Hosts.html +47 -47
  125. data/doc/classes/Dnsruby/Hosts.src/M000142.html +6 -35
  126. data/doc/classes/Dnsruby/Hosts.src/M000143.html +35 -5
  127. data/doc/classes/Dnsruby/Hosts.src/M000144.html +5 -6
  128. data/doc/classes/Dnsruby/Hosts.src/M000145.html +6 -7
  129. data/doc/classes/Dnsruby/Hosts.src/M000146.html +7 -5
  130. data/doc/classes/Dnsruby/Hosts.src/M000147.html +5 -6
  131. data/doc/classes/Dnsruby/Hosts.src/M000148.html +6 -7
  132. data/doc/classes/Dnsruby/Hosts.src/M000149.html +21 -0
  133. data/doc/classes/Dnsruby/Hosts.src/M000169.html +20 -0
  134. data/doc/classes/Dnsruby/Hosts.src/M000170.html +49 -0
  135. data/doc/classes/Dnsruby/Hosts.src/M000171.html +19 -0
  136. data/doc/classes/Dnsruby/Hosts.src/M000172.html +20 -0
  137. data/doc/classes/Dnsruby/Hosts.src/M000173.html +21 -0
  138. data/doc/classes/Dnsruby/Hosts.src/M000174.html +19 -0
  139. data/doc/classes/Dnsruby/Hosts.src/M000175.html +20 -0
  140. data/doc/classes/Dnsruby/Hosts.src/M000176.html +21 -0
  141. data/doc/classes/Dnsruby/IPv4.html +43 -43
  142. data/doc/classes/Dnsruby/IPv4.src/M000150.html +17 -6
  143. data/doc/classes/Dnsruby/IPv4.src/M000151.html +7 -4
  144. data/doc/classes/Dnsruby/IPv4.src/M000152.html +4 -4
  145. data/doc/classes/Dnsruby/IPv4.src/M000153.html +4 -5
  146. data/doc/classes/Dnsruby/IPv4.src/M000154.html +5 -4
  147. data/doc/classes/Dnsruby/IPv4.src/M000155.html +4 -4
  148. data/doc/classes/Dnsruby/IPv4.src/M000156.html +4 -4
  149. data/doc/classes/Dnsruby/IPv4.src/M000157.html +18 -0
  150. data/doc/classes/Dnsruby/IPv4.src/M000177.html +32 -0
  151. data/doc/classes/Dnsruby/IPv4.src/M000178.html +21 -0
  152. data/doc/classes/Dnsruby/IPv4.src/M000179.html +18 -0
  153. data/doc/classes/Dnsruby/IPv4.src/M000180.html +18 -0
  154. data/doc/classes/Dnsruby/IPv4.src/M000181.html +19 -0
  155. data/doc/classes/Dnsruby/IPv4.src/M000182.html +18 -0
  156. data/doc/classes/Dnsruby/IPv4.src/M000183.html +18 -0
  157. data/doc/classes/Dnsruby/IPv4.src/M000184.html +18 -0
  158. data/doc/classes/Dnsruby/IPv6.html +43 -43
  159. data/doc/classes/Dnsruby/IPv6.src/M000181.html +45 -6
  160. data/doc/classes/Dnsruby/IPv6.src/M000182.html +6 -7
  161. data/doc/classes/Dnsruby/IPv6.src/M000183.html +8 -4
  162. data/doc/classes/Dnsruby/IPv6.src/M000184.html +4 -7
  163. data/doc/classes/Dnsruby/IPv6.src/M000185.html +7 -4
  164. data/doc/classes/Dnsruby/IPv6.src/M000186.html +4 -4
  165. data/doc/classes/Dnsruby/IPv6.src/M000187.html +4 -4
  166. data/doc/classes/Dnsruby/IPv6.src/M000188.html +18 -0
  167. data/doc/classes/Dnsruby/IPv6.src/M000208.html +60 -0
  168. data/doc/classes/Dnsruby/IPv6.src/M000209.html +21 -0
  169. data/doc/classes/Dnsruby/IPv6.src/M000210.html +22 -0
  170. data/doc/classes/Dnsruby/IPv6.src/M000211.html +18 -0
  171. data/doc/classes/Dnsruby/IPv6.src/M000212.html +21 -0
  172. data/doc/classes/Dnsruby/IPv6.src/M000213.html +18 -0
  173. data/doc/classes/Dnsruby/IPv6.src/M000214.html +18 -0
  174. data/doc/classes/Dnsruby/IPv6.src/M000215.html +18 -0
  175. data/doc/classes/Dnsruby/Message.html +1 -1
  176. data/doc/classes/Dnsruby/Message.src/M000090.html +20 -0
  177. data/doc/classes/Dnsruby/Message.src/M000091.html +21 -0
  178. data/doc/classes/Dnsruby/Message.src/M000092.html +20 -0
  179. data/doc/classes/Dnsruby/Message.src/M000093.html +18 -0
  180. data/doc/classes/Dnsruby/Message.src/M000094.html +54 -0
  181. data/doc/classes/Dnsruby/Message.src/M000095.html +42 -0
  182. data/doc/classes/Dnsruby/Message.src/M000096.html +45 -0
  183. data/doc/classes/Dnsruby/Name/Label.src/M000076.html +22 -0
  184. data/doc/classes/Dnsruby/Name/Label.src/M000077.html +18 -0
  185. data/doc/classes/Dnsruby/Name/Label.src/M000078.html +18 -0
  186. data/doc/classes/Dnsruby/Name/Label.src/M000079.html +18 -0
  187. data/doc/classes/Dnsruby/Name/Label.src/M000080.html +18 -0
  188. data/doc/classes/Dnsruby/Name/Label.src/M000081.html +18 -0
  189. data/doc/classes/Dnsruby/Name/Label.src/M000082.html +18 -0
  190. data/doc/classes/Dnsruby/Name.src/M000067.html +18 -0
  191. data/doc/classes/Dnsruby/Name.src/M000068.html +21 -0
  192. data/doc/classes/Dnsruby/Name.src/M000069.html +19 -0
  193. data/doc/classes/Dnsruby/Name.src/M000071.html +22 -0
  194. data/doc/classes/Dnsruby/Name.src/M000072.html +18 -0
  195. data/doc/classes/Dnsruby/Name.src/M000073.html +20 -0
  196. data/doc/classes/Dnsruby/Question.html +10 -10
  197. data/doc/classes/Dnsruby/Question.src/M000167.html +33 -4
  198. data/doc/classes/Dnsruby/Question.src/M000168.html +18 -0
  199. data/doc/classes/Dnsruby/Question.src/M000194.html +47 -0
  200. data/doc/classes/Dnsruby/Question.src/M000195.html +18 -0
  201. data/doc/classes/Dnsruby/RR/DomainName.src/M000058.html +22 -0
  202. data/doc/classes/Dnsruby/RR/Generic.src/M000048.html +25 -0
  203. data/doc/classes/Dnsruby/RR/IN/A.src/M000025.html +18 -0
  204. data/doc/classes/Dnsruby/RR/IN/A.src/M000026.html +18 -0
  205. data/doc/classes/Dnsruby/RR/IN/A.src/M000027.html +18 -0
  206. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000022.html +29 -0
  207. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000023.html +26 -0
  208. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000024.html +22 -0
  209. data/doc/classes/Dnsruby/RR/IN/WKS.src/M000028.html +20 -0
  210. data/doc/classes/Dnsruby/RR/LOC.src/M000032.html +32 -0
  211. data/doc/classes/Dnsruby/RR/LOC.src/M000033.html +23 -0
  212. data/doc/classes/Dnsruby/RR/LOC.src/M000034.html +25 -0
  213. data/doc/classes/Dnsruby/RR/LOC.src/M000035.html +21 -0
  214. data/doc/classes/Dnsruby/RR/LOC.src/M000036.html +20 -0
  215. data/doc/classes/Dnsruby/RR/LOC.src/M000037.html +23 -0
  216. data/doc/classes/Dnsruby/RR/NSAP.src/M000060.html +19 -0
  217. data/doc/classes/Dnsruby/RR/NSAP.src/M000061.html +19 -0
  218. data/doc/classes/Dnsruby/RR/NSAP.src/M000062.html +22 -0
  219. data/doc/classes/Dnsruby/RR/NSAP.src/M000063.html +31 -0
  220. data/doc/classes/Dnsruby/RR/RP.src/M000057.html +19 -0
  221. data/doc/classes/Dnsruby/RR/SOA.src/M000046.html +24 -0
  222. data/doc/classes/Dnsruby/RR/SOA.src/M000047.html +27 -0
  223. data/doc/classes/Dnsruby/RR/TKEY.src/M000029.html +19 -0
  224. data/doc/classes/Dnsruby/RR/TKEY.src/M000030.html +29 -0
  225. data/doc/classes/Dnsruby/RR/TKEY.src/M000031.html +30 -0
  226. data/doc/classes/Dnsruby/RR/TSIG.src/M000050.html +71 -0
  227. data/doc/classes/Dnsruby/RR/TSIG.src/M000051.html +34 -0
  228. data/doc/classes/Dnsruby/RR/TSIG.src/M000052.html +37 -0
  229. data/doc/classes/Dnsruby/RR/TSIG.src/M000053.html +31 -0
  230. data/doc/classes/Dnsruby/RR/TSIG.src/M000054.html +34 -0
  231. data/doc/classes/Dnsruby/RR/TSIG.src/M000055.html +22 -0
  232. data/doc/classes/Dnsruby/RR/TSIG.src/M000056.html +29 -0
  233. data/doc/classes/Dnsruby/RR/TXT.src/M000041.html +18 -0
  234. data/doc/classes/Dnsruby/RR/TXT.src/M000042.html +18 -0
  235. data/doc/classes/Dnsruby/RR/TXT.src/M000043.html +20 -0
  236. data/doc/classes/Dnsruby/RR/TXT.src/M000044.html +27 -0
  237. data/doc/classes/Dnsruby/RR/TXT.src/M000045.html +25 -0
  238. data/doc/classes/Dnsruby/RR/X25.src/M000038.html +18 -0
  239. data/doc/classes/Dnsruby/RR/X25.src/M000039.html +18 -0
  240. data/doc/classes/Dnsruby/RR/X25.src/M000040.html +22 -0
  241. data/doc/classes/Dnsruby/RR.src/M000015.html +18 -0
  242. data/doc/classes/Dnsruby/RR.src/M000016.html +18 -0
  243. data/doc/classes/Dnsruby/RR.src/M000017.html +22 -0
  244. data/doc/classes/Dnsruby/RR.src/M000018.html +22 -0
  245. data/doc/classes/Dnsruby/RR.src/M000019.html +18 -0
  246. data/doc/classes/Dnsruby/RR.src/M000020.html +22 -0
  247. data/doc/classes/Dnsruby/RR.src/M000021.html +24 -0
  248. data/doc/classes/Dnsruby/RRSet.html +39 -39
  249. data/doc/classes/Dnsruby/RRSet.src/M000160.html +4 -30
  250. data/doc/classes/Dnsruby/RRSet.src/M000161.html +30 -4
  251. data/doc/classes/Dnsruby/RRSet.src/M000162.html +4 -6
  252. data/doc/classes/Dnsruby/RRSet.src/M000163.html +6 -4
  253. data/doc/classes/Dnsruby/RRSet.src/M000164.html +4 -4
  254. data/doc/classes/Dnsruby/RRSet.src/M000165.html +4 -4
  255. data/doc/classes/Dnsruby/RRSet.src/M000166.html +18 -0
  256. data/doc/classes/Dnsruby/RRSet.src/M000187.html +18 -0
  257. data/doc/classes/Dnsruby/RRSet.src/M000188.html +44 -0
  258. data/doc/classes/Dnsruby/RRSet.src/M000189.html +18 -0
  259. data/doc/classes/Dnsruby/RRSet.src/M000190.html +20 -0
  260. data/doc/classes/Dnsruby/RRSet.src/M000191.html +18 -0
  261. data/doc/classes/Dnsruby/RRSet.src/M000192.html +18 -0
  262. data/doc/classes/Dnsruby/RRSet.src/M000193.html +18 -0
  263. data/doc/classes/Dnsruby/Resolv.src/M000109.html +1 -1
  264. data/doc/classes/Dnsruby/Resolv.src/M000110.html +1 -1
  265. data/doc/classes/Dnsruby/Resolv.src/M000111.html +1 -1
  266. data/doc/classes/Dnsruby/Resolv.src/M000112.html +1 -1
  267. data/doc/classes/Dnsruby/Resolv.src/M000113.html +1 -1
  268. data/doc/classes/Dnsruby/Resolv.src/M000114.html +1 -1
  269. data/doc/classes/Dnsruby/Resolv.src/M000115.html +1 -1
  270. data/doc/classes/Dnsruby/Resolv.src/M000116.html +1 -1
  271. data/doc/classes/Dnsruby/Resolv.src/M000117.html +1 -1
  272. data/doc/classes/Dnsruby/Resolv.src/M000118.html +1 -1
  273. data/doc/classes/Dnsruby/Resolv.src/M000119.html +1 -1
  274. data/doc/classes/Dnsruby/Resolv.src/M000120.html +1 -1
  275. data/doc/classes/Dnsruby/Resolv.src/M000121.html +1 -1
  276. data/doc/classes/Dnsruby/Resolv.src/M000136.html +18 -0
  277. data/doc/classes/Dnsruby/Resolv.src/M000137.html +18 -0
  278. data/doc/classes/Dnsruby/Resolv.src/M000138.html +18 -0
  279. data/doc/classes/Dnsruby/Resolv.src/M000139.html +18 -0
  280. data/doc/classes/Dnsruby/Resolv.src/M000140.html +18 -0
  281. data/doc/classes/Dnsruby/Resolv.src/M000141.html +18 -0
  282. data/doc/classes/Dnsruby/Resolv.src/M000142.html +18 -0
  283. data/doc/classes/Dnsruby/Resolv.src/M000143.html +19 -0
  284. data/doc/classes/Dnsruby/Resolv.src/M000144.html +20 -0
  285. data/doc/classes/Dnsruby/Resolv.src/M000145.html +29 -0
  286. data/doc/classes/Dnsruby/Resolv.src/M000146.html +19 -0
  287. data/doc/classes/Dnsruby/Resolv.src/M000147.html +20 -0
  288. data/doc/classes/Dnsruby/Resolv.src/M000148.html +25 -0
  289. data/doc/classes/Dnsruby/Resolver.html +238 -123
  290. data/doc/classes/Dnsruby/Resolver.src/M000212.html +7 -23
  291. data/doc/classes/Dnsruby/Resolver.src/M000213.html +11 -48
  292. data/doc/classes/Dnsruby/Resolver.src/M000214.html +13 -8
  293. data/doc/classes/Dnsruby/Resolver.src/M000215.html +4 -32
  294. data/doc/classes/Dnsruby/Resolver.src/M000216.html +33 -6
  295. data/doc/classes/Dnsruby/Resolver.src/M000217.html +6 -7
  296. data/doc/classes/Dnsruby/Resolver.src/M000218.html +8 -4
  297. data/doc/classes/Dnsruby/Resolver.src/M000219.html +4 -6
  298. data/doc/classes/Dnsruby/Resolver.src/M000220.html +6 -5
  299. data/doc/classes/Dnsruby/Resolver.src/M000221.html +4 -4
  300. data/doc/classes/Dnsruby/Resolver.src/M000222.html +4 -4
  301. data/doc/classes/Dnsruby/Resolver.src/M000223.html +4 -4
  302. data/doc/classes/Dnsruby/Resolver.src/M000224.html +4 -4
  303. data/doc/classes/Dnsruby/Resolver.src/M000225.html +4 -4
  304. data/doc/classes/Dnsruby/Resolver.src/M000226.html +4 -4
  305. data/doc/classes/Dnsruby/Resolver.src/M000227.html +4 -4
  306. data/doc/classes/Dnsruby/Resolver.src/M000228.html +4 -4
  307. data/doc/classes/Dnsruby/Resolver.src/M000229.html +4 -4
  308. data/doc/classes/Dnsruby/Resolver.src/M000230.html +4 -4
  309. data/doc/classes/Dnsruby/Resolver.src/M000231.html +19 -0
  310. data/doc/classes/Dnsruby/Resolver.src/M000232.html +26 -0
  311. data/doc/classes/Dnsruby/Resolver.src/M000233.html +18 -0
  312. data/doc/classes/Dnsruby/Resolver.src/M000234.html +23 -0
  313. data/doc/classes/Dnsruby/Resolver.src/M000235.html +18 -0
  314. data/doc/classes/Dnsruby/Resolver.src/M000236.html +42 -0
  315. data/doc/classes/Dnsruby/Resolver.src/M000239.html +21 -0
  316. data/doc/classes/Dnsruby/Resolver.src/M000240.html +27 -0
  317. data/doc/classes/Dnsruby/Resolver.src/M000241.html +28 -0
  318. data/doc/classes/Dnsruby/Resolver.src/M000242.html +18 -0
  319. data/doc/classes/Dnsruby/Resolver.src/M000243.html +48 -0
  320. data/doc/classes/Dnsruby/Resolver.src/M000244.html +21 -0
  321. data/doc/classes/Dnsruby/Resolver.src/M000245.html +22 -0
  322. data/doc/classes/Dnsruby/Resolver.src/M000246.html +18 -0
  323. data/doc/classes/Dnsruby/Resolver.src/M000247.html +20 -0
  324. data/doc/classes/Dnsruby/Resolver.src/M000248.html +19 -0
  325. data/doc/classes/Dnsruby/Resolver.src/M000249.html +19 -0
  326. data/doc/classes/Dnsruby/Resolver.src/M000250.html +19 -0
  327. data/doc/classes/Dnsruby/Resolver.src/M000251.html +19 -0
  328. data/doc/classes/Dnsruby/Resolver.src/M000252.html +19 -0
  329. data/doc/classes/Dnsruby/Resolver.src/M000253.html +19 -0
  330. data/doc/classes/Dnsruby/Resolver.src/M000254.html +19 -0
  331. data/doc/classes/Dnsruby/Resolver.src/M000255.html +19 -0
  332. data/doc/classes/Dnsruby/Resolver.src/M000256.html +19 -0
  333. data/doc/classes/Dnsruby/Resolver.src/M000257.html +19 -0
  334. data/doc/classes/Dnsruby/Resolver.src/M000258.html +19 -0
  335. data/doc/classes/Dnsruby/Resolver.src/M000259.html +26 -0
  336. data/doc/classes/Dnsruby/Resolver.src/M000260.html +18 -0
  337. data/doc/classes/Dnsruby/Resolver.src/M000261.html +23 -0
  338. data/doc/classes/Dnsruby/Resolver.src/M000262.html +18 -0
  339. data/doc/classes/Dnsruby/Resolver.src/M000263.html +42 -0
  340. data/doc/classes/Dnsruby/SelectInterface.html +236 -0
  341. data/doc/classes/Dnsruby/SelectInterface.src/M000001.html +19 -0
  342. data/doc/classes/Dnsruby/SelectInterface.src/M000002.html +18 -0
  343. data/doc/classes/Dnsruby/SelectInterface.src/M000003.html +18 -0
  344. data/doc/classes/Dnsruby/SelectInterface.src/M000004.html +18 -0
  345. data/doc/classes/Dnsruby/SelectInterface.src/M000005.html +21 -0
  346. data/doc/classes/Dnsruby/SelectInterface.src/M000006.html +19 -0
  347. data/doc/classes/Dnsruby/SelectInterface.src/M000007.html +18 -0
  348. data/doc/classes/Dnsruby/SingleResolver.html +55 -33
  349. data/doc/classes/Dnsruby/SingleResolver.src/M000128.html +24 -51
  350. data/doc/classes/Dnsruby/SingleResolver.src/M000129.html +11 -6
  351. data/doc/classes/Dnsruby/SingleResolver.src/M000130.html +21 -0
  352. data/doc/classes/Dnsruby/SingleResolver.src/M000149.html +18 -0
  353. data/doc/classes/Dnsruby/SingleResolver.src/M000150.html +19 -0
  354. data/doc/classes/Dnsruby/SingleResolver.src/M000151.html +49 -0
  355. data/doc/classes/Dnsruby/SingleResolver.src/M000152.html +18 -0
  356. data/doc/classes/Dnsruby/SingleResolver.src/M000153.html +21 -0
  357. data/doc/classes/Dnsruby/SingleResolver.src/M000154.html +25 -0
  358. data/doc/classes/Dnsruby/SingleResolver.src/M000155.html +51 -0
  359. data/doc/classes/Dnsruby/SingleResolver.src/M000156.html +26 -0
  360. data/doc/classes/Dnsruby/SingleResolver.src/M000157.html +21 -0
  361. data/doc/classes/Dnsruby/TheLog.html +17 -17
  362. data/doc/classes/Dnsruby/TheLog.src/M000189.html +4 -4
  363. data/doc/classes/Dnsruby/TheLog.src/M000190.html +4 -4
  364. data/doc/classes/Dnsruby/TheLog.src/M000191.html +20 -0
  365. data/doc/classes/Dnsruby/TheLog.src/M000216.html +20 -0
  366. data/doc/classes/Dnsruby/TheLog.src/M000217.html +20 -0
  367. data/doc/classes/Dnsruby/TheLog.src/M000218.html +20 -0
  368. data/doc/classes/Dnsruby/Update.html +31 -31
  369. data/doc/classes/Dnsruby/Update.src/M000192.html +17 -22
  370. data/doc/classes/Dnsruby/Update.src/M000193.html +11 -6
  371. data/doc/classes/Dnsruby/Update.src/M000194.html +15 -24
  372. data/doc/classes/Dnsruby/Update.src/M000195.html +26 -19
  373. data/doc/classes/Dnsruby/Update.src/M000196.html +34 -0
  374. data/doc/classes/Dnsruby/Update.src/M000219.html +32 -0
  375. data/doc/classes/Dnsruby/Update.src/M000220.html +37 -0
  376. data/doc/classes/Dnsruby/Update.src/M000221.html +32 -0
  377. data/doc/classes/Dnsruby/Update.src/M000222.html +41 -0
  378. data/doc/classes/Dnsruby/Update.src/M000223.html +34 -0
  379. data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000104.html +19 -0
  380. data/doc/classes/Dnsruby/ZoneTransfer.src/M000102.html +22 -0
  381. data/doc/classes/Dnsruby/ZoneTransfer.src/M000103.html +35 -0
  382. data/doc/classes/Dnsruby.html +12 -0
  383. data/doc/created.rid +1 -1
  384. data/doc/files/lib/Dnsruby/Config_rb.html +1 -1
  385. data/doc/files/lib/Dnsruby/Resolver_rb.html +2 -1
  386. data/doc/files/lib/Dnsruby/SelectInterface_rb.html +108 -0
  387. data/doc/files/lib/Dnsruby/SingleResolver_rb.html +1 -1
  388. data/doc/files/lib/Dnsruby/event_machine_interface_rb.html +108 -0
  389. data/doc/files/lib/Dnsruby/message_rb.html +1 -1
  390. data/doc/files/lib/Dnsruby/select_thread_rb.html +1 -1
  391. data/doc/files/lib/Dnsruby/zone_transfer_rb.html +1 -1
  392. data/doc/files/lib/dnsruby_rb.html +1 -1
  393. data/doc/fr_file_index.html +1 -0
  394. data/doc/fr_method_index.html +130 -125
  395. data/lib/Dnsruby/Config.rb +8 -1
  396. data/lib/Dnsruby/Resolver.rb +496 -217
  397. data/lib/Dnsruby/SingleResolver.rb +105 -10
  398. data/lib/Dnsruby/event_machine_interface.rb +265 -0
  399. data/lib/Dnsruby/message.rb +1 -1
  400. data/lib/Dnsruby/select_thread.rb +26 -60
  401. data/lib/Dnsruby/zone_transfer.rb +3 -1
  402. data/lib/dnsruby.rb +8 -0
  403. data/test/tc_em_deferrable.rb +47 -0
  404. data/test/tc_event_machine_deferrable.rb +85 -0
  405. data/test/tc_event_machine_res.rb +174 -0
  406. data/test/tc_event_machine_single_res.rb +101 -0
  407. data/test/tc_event_machine_soak.rb +98 -0
  408. data/test/tc_inet6.rb +170 -0
  409. data/test/tc_resolver.rb +71 -63
  410. data/test/tc_single_resolver.rb +71 -53
  411. data/test/tc_soak.rb +12 -113
  412. data/test/tc_soak_base.rb +136 -0
  413. data/test/ts_online.rb +14 -6
  414. metadata +277 -2
data/test/tc_resolver.rb CHANGED
@@ -25,6 +25,8 @@ include Dnsruby
25
25
  class TestResolver < Test::Unit::TestCase
26
26
  include Dnsruby
27
27
  Thread::abort_on_exception = true
28
+ PORT = 42138
29
+ @@port = PORT
28
30
  def setup
29
31
  Dnsruby::Config.reset
30
32
  end
@@ -62,10 +64,10 @@ class TestResolver < Test::Unit::TestCase
62
64
  assert(error==nil)
63
65
  end
64
66
 
65
- # @TODO@ Implement!!
66
- # def test_many_threaded_clients
67
- # assert(false, "IMPLEMENT!")
68
- # end
67
+ # @TODO@ Implement!!
68
+ # def test_many_threaded_clients
69
+ # assert(false, "IMPLEMENT!")
70
+ # end
69
71
 
70
72
  def test_reverse_lookup
71
73
  m = Message.new("210.251.121.214", Types.PTR)
@@ -81,7 +83,7 @@ class TestResolver < Test::Unit::TestCase
81
83
  assert(answer.domainname.to_s=~/ruby-lang/)
82
84
  end
83
85
  end
84
- assert(!no_pointer)
86
+ assert(!no_pointer)
85
87
  end
86
88
 
87
89
  def test_bad_host
@@ -95,13 +97,13 @@ class TestResolver < Test::Unit::TestCase
95
97
  assert(id==q)
96
98
  assert(m == nil)
97
99
  print err.class
98
- assert(err.kind_of?(OtherResolvError))
100
+ assert(err.kind_of?(OtherResolvError) || err.kind_of?(IOError), "OtherResolvError or IOError expected : got #{err.class}")
99
101
  end
100
102
 
101
103
  def test_nxdomain
102
104
  res=Resolver.new
103
105
  q = Queue.new
104
- res.send_async(Message.new("dklfjhdFHFHDVVUIEWRFDSAJKVCNASDLFJHN.com", Types.A), 1, q)
106
+ res.send_async(Message.new("dklfjhdFHFHDVVUIEWRFDSAJKVCNASDLFJHN.com", Types.A), q, 1)
105
107
  id, m, err = q.pop
106
108
  assert(id==1)
107
109
  assert(m.header.rcode == RCode.NXDOMAIN)
@@ -109,69 +111,75 @@ class TestResolver < Test::Unit::TestCase
109
111
  end
110
112
 
111
113
  def test_timeouts
112
- #@TODO@ test timeout behaviour for different retry, retrans, total timeout etc.
114
+ #test timeout behaviour for different retry, retrans, total timeout etc.
113
115
  #Problem here is that many sockets will be created for queries which time out.
114
116
  # Run a query which will not respond, and check that the timeout works
115
- start=stop=0
116
- retry_times = 3
117
- retry_delay=1
118
- packet_timeout=2
119
- # Work out what time should be, then time it to check
120
- expected = ((2**(retry_times-1))*retry_delay) + packet_timeout
121
- begin
122
- res = Resolver.new({:nameserver => "10.0.1.128"})
123
- # res = Resolver.new({:nameserver => "213.248.199.17"})
124
- res.packet_timeout=packet_timeout
125
- res.retry_times=retry_times
126
- res.retry_delay=retry_delay
127
- start=Time.now
128
- m = res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
129
- fail
130
- rescue ResolvTimeout
131
- stop=Time.now
132
- time = stop-start
133
- assert(time <= expected *1.2 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
134
- end
117
+ if (!RUBY_PLATFORM=~/darwin/)
118
+ start=stop=0
119
+ retry_times = 3
120
+ retry_delay=1
121
+ packet_timeout=2
122
+ # Work out what time should be, then time it to check
123
+ expected = ((2**(retry_times-1))*retry_delay) + packet_timeout
124
+ begin
125
+ res = Resolver.new({:nameserver => "10.0.1.128"})
126
+ # res = Resolver.new({:nameserver => "213.248.199.17"})
127
+ res.packet_timeout=packet_timeout
128
+ res.retry_times=retry_times
129
+ res.retry_delay=retry_delay
130
+ start=Time.now
131
+ m = res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
132
+ fail
133
+ rescue ResolvTimeout
134
+ stop=Time.now
135
+ time = stop-start
136
+ assert(time <= expected *1.2 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
137
+ end
138
+ end
135
139
  end
136
140
 
137
141
  def test_packet_timeout
138
- res = Resolver.new({:nameserver => "10.0.1.128"})
139
- start=stop=0
140
- retry_times = retry_delay = packet_timeout= 10
141
- query_timeout=1
142
- begin
143
- res.packet_timeout=packet_timeout
144
- res.retry_times=retry_times
145
- res.retry_delay=retry_delay
146
- res.query_timeout=query_timeout
147
- # Work out what time should be, then time it to check
148
- expected = query_timeout
149
- start=Time.now
150
- m = res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
151
- fail
152
- rescue ResolvTimeout
153
- stop=Time.now
154
- time = stop-start
155
- assert(time <= expected *1.1 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
156
- end
142
+ if (!RUBY_PLATFORM=~/darwin/)
143
+ res = Resolver.new({:nameserver => "10.0.1.128"})
144
+ start=stop=0
145
+ retry_times = retry_delay = packet_timeout= 10
146
+ query_timeout=1
147
+ begin
148
+ res.packet_timeout=packet_timeout
149
+ res.retry_times=retry_times
150
+ res.retry_delay=retry_delay
151
+ res.query_timeout=query_timeout
152
+ # Work out what time should be, then time it to check
153
+ expected = query_timeout
154
+ start=Time.now
155
+ m = res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
156
+ fail
157
+ rescue ResolvTimeout
158
+ stop=Time.now
159
+ time = stop-start
160
+ assert(time <= expected *1.1 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
161
+ end #
162
+ end
157
163
  end
158
164
 
159
165
  def test_queue_packet_timeout
160
- res = Resolver.new({:nameserver => "10.0.1.128"})
161
- bad = SingleResolver.new("localhost")
162
- res.add_resolver(bad)
163
- expected = 1
164
- res.query_timeout=expected
165
- q = Queue.new
166
- start = Time.now
167
- m = res.send_async(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A), q, q)
168
- id,ret,err = q.pop
169
- stop = Time.now
170
- assert(id=q)
171
- assert(ret==nil)
172
- assert(err.class == ResolvTimeout, "#{err.class}, #{err}")
173
- time = stop-start
174
- assert(time <= expected *1.2 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
166
+ if (!RUBY_PLATFORM=~/darwin/)
167
+ res = Resolver.new({:nameserver => "10.0.1.128"})
168
+ bad = SingleResolver.new("localhost")
169
+ res.add_resolver(bad)
170
+ expected = 1
171
+ res.query_timeout=expected
172
+ q = Queue.new
173
+ start = Time.now
174
+ m = res.send_async(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A), q, q)
175
+ id,ret,err = q.pop
176
+ stop = Time.now
177
+ assert(id=q)
178
+ assert(ret==nil)
179
+ assert(err.class == ResolvTimeout, "#{err.class}, #{err}")
180
+ time = stop-start
181
+ assert(time <= expected *1.2 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
182
+ end
175
183
  end
176
-
184
+
177
185
  end
@@ -20,33 +20,34 @@ include Dnsruby
20
20
  class TestSingleResolver < Test::Unit::TestCase
21
21
  # @todo@ Test udppacketsize
22
22
  Thread::abort_on_exception = true
23
+ # Dnsruby::TheLog.level=Logger::DEBUG
23
24
 
24
25
  def setup
25
26
  Dnsruby::Config.reset
26
27
  end
27
28
 
28
29
  Rrs = [
29
- {
30
- :type => Types.A,
31
- :name => 'a.t.dnsruby.validation-test-servers.nominet.org.uk',
32
- :address => '10.0.1.128'
33
- },
34
- {
35
- :type => Types::MX,
36
- :name => 'mx.t.dnsruby.validation-test-servers.nominet.org.uk',
37
- :exchange => 'a.t.dnsruby.validation-test-servers.nominet.org.uk',
38
- :preference => 10
39
- },
40
- {
41
- :type => 'CNAME',
42
- :name => 'cname.t.dnsruby.validation-test-servers.nominet.org.uk',
43
- :domainname => 'a.t.dnsruby.validation-test-servers.nominet.org.uk'
44
- },
45
- {
46
- :type => Types.TXT,
47
- :name => 'txt.t.dnsruby.validation-test-servers.nominet.org.uk',
48
- :strings => ['Net-DNS']
49
- }
30
+ {
31
+ :type => Types.A,
32
+ :name => 'a.t.dnsruby.validation-test-servers.nominet.org.uk',
33
+ :address => '10.0.1.128'
34
+ },
35
+ {
36
+ :type => Types::MX,
37
+ :name => 'mx.t.dnsruby.validation-test-servers.nominet.org.uk',
38
+ :exchange => 'a.t.dnsruby.validation-test-servers.nominet.org.uk',
39
+ :preference => 10
40
+ },
41
+ {
42
+ :type => 'CNAME',
43
+ :name => 'cname.t.dnsruby.validation-test-servers.nominet.org.uk',
44
+ :domainname => 'a.t.dnsruby.validation-test-servers.nominet.org.uk'
45
+ },
46
+ {
47
+ :type => Types.TXT,
48
+ :name => 'txt.t.dnsruby.validation-test-servers.nominet.org.uk',
49
+ :strings => ['Net-DNS']
50
+ }
50
51
  ]
51
52
 
52
53
  def test_simple
@@ -55,26 +56,34 @@ class TestSingleResolver < Test::Unit::TestCase
55
56
  end
56
57
 
57
58
  def test_timeout
58
- # Run a query which will not respond, and check that the timeout works
59
- begin
60
- res = SingleResolver.new("10.0.1.128")
61
- res.packet_timeout=1
62
- m = res.query("a.t.dnsruby.validation-test-servers.nominet.org.uk")
63
- fail
64
- rescue ResolvTimeout
59
+ if (!RUBY_PLATFORM=~/darwin/)
60
+ # Run a query which will not respond, and check that the timeout works
61
+ begin
62
+ res = SingleResolver.new("10.0.1.128")
63
+ res.port = port
64
+ res.packet_timeout=1
65
+ m = res.query("a.t.dnsruby.validation-test-servers.nominet.org.uk")
66
+ fail
67
+ rescue ResolvTimeout
68
+ end
65
69
  end
66
70
  end
67
71
 
68
72
  def test_queue_timeout
69
- res = SingleResolver.new("10.0.1.128")
70
- res.packet_timeout=1
71
- q = Queue.new
72
- msg = Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk")
73
- m = res.send_async(msg, msg, q)
74
- id,ret, error = q.pop
75
- assert(id=msg)
76
- assert(ret==nil)
77
- assert(error.class == ResolvTimeout)
73
+ port = 46129
74
+ if (!RUBY_PLATFORM=~/darwin/)
75
+ res = SingleResolver.new("10.0.1.128")
76
+ res.port = port
77
+ res.packet_timeout=1
78
+ q = Queue.new
79
+ msg = Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk")
80
+ res.send_async(msg, q, msg)
81
+ id,ret, error = q.pop
82
+ assert(id==msg)
83
+ assert(ret==nil)
84
+ p error
85
+ assert(error.class == ResolvTimeout)
86
+ end
78
87
  end
79
88
 
80
89
  def test_queries
@@ -117,22 +126,22 @@ class TestSingleResolver < Test::Unit::TestCase
117
126
  end
118
127
  end # do
119
128
  end # test_queries
120
-
121
- # @TODO@ Although the test_thread_stopped test runs in isolation, it won't run as part
122
- # of the whole test suite (ts_dnsruby.rb). Commented out until I can figure out how to
123
- # get Test::Unit to run this one sequentially...
124
- # def test_thread_stopped
125
- # res=SingleResolver.new
126
- # # Send a query, and check select_thread running.
127
- # m = res.query("example.com")
128
- # assert(Dnsruby::SelectThread.instance.select_thread_alive?)
129
- # # Wait a second, and check select_thread stopped.
130
- # sleep(2)
131
- # assert(!Dnsruby::SelectThread.instance.select_thread_alive?)
132
- # # Send another query, and check select_thread running.
133
- # m = res.query("example.com")
134
- # assert(Dnsruby::SelectThread.instance.select_thread_alive?)
135
- # end
129
+
130
+ # @TODO@ Although the test_thread_stopped test runs in isolation, it won't run as part
131
+ # of the whole test suite (ts_dnsruby.rb). Commented out until I can figure out how to
132
+ # get Test::Unit to run this one sequentially...
133
+ # def test_thread_stopped
134
+ # res=SingleResolver.new
135
+ # # Send a query, and check select_thread running.
136
+ # m = res.query("example.com")
137
+ # assert(Dnsruby::SelectThread.instance.select_thread_alive?)
138
+ # # Wait a second, and check select_thread stopped.
139
+ # sleep(2)
140
+ # assert(!Dnsruby::SelectThread.instance.select_thread_alive?)
141
+ # # Send another query, and check select_thread running.
142
+ # m = res.query("example.com")
143
+ # assert(Dnsruby::SelectThread.instance.select_thread_alive?)
144
+ # end
136
145
 
137
146
  def test_persistent_socket
138
147
  #@TODO@ Really need a test server for this one!
@@ -150,4 +159,13 @@ class TestSingleResolver < Test::Unit::TestCase
150
159
  ip = res.server
151
160
  assert_equal(ip, '10.0.1.128', 'nameserver() looks up cname.')
152
161
  end
162
+
163
+ def test_truncated_response
164
+ res = SingleResolver.new
165
+ res.server=('ns0.validation-test-servers.nominet.org.uk')
166
+ res.packet_timeout = 15
167
+ m = res.query("overflow.dnsruby.validation-test-servers.nominet.org.uk", 'txt')
168
+ assert(m.header.ancount == 61, "61 answer records expected, got #{m.header.ancount}")
169
+ assert(!m.header.tc, "Message was truncated!")
170
+ end
153
171
  end
data/test/tc_soak.rb CHANGED
@@ -18,16 +18,21 @@ require 'test/unit'
18
18
  require 'Dnsruby'
19
19
  begin
20
20
  require 'test/tc_single_resolver'
21
- rescue Exception
21
+ rescue LoadError
22
22
  require 'tc_single_resolver'
23
23
  end
24
+ begin
25
+ require 'test/tc_soak_base'
26
+ rescue LoadError
27
+ require 'tc_soak_base'
28
+ end
24
29
  include Dnsruby
25
30
  # This class tries to soak test the Dnsruby library.
26
31
  # It can't do this very well, owing to the small number of sockets allowed to be open simultaneously.
27
32
  # @TODO@ Future versions of dnsruby will allow random streaming over a fixed number of (cycling) random sockets,
28
33
  # so this test can be beefed up considerably at that point.
29
34
  # @todo@ A test DNS server running on localhost is really needed here
30
- class TestSingleResolverSoak < TestSingleResolver
35
+ class TestSingleResolverSoak < Test::Unit::TestCase
31
36
 
32
37
  # def test_many_queries_single_socket
33
38
  # @todo@ Implement this test?
@@ -58,14 +63,14 @@ class TestSingleResolverSoak < TestSingleResolver
58
63
  # We run four queries per iteration, so we're limited to 64 runs.
59
64
  63.times do |i|
60
65
  rr_count = 0
61
- Rrs.each do |data|
66
+ TestSoakBase::Rrs.each do |data|
62
67
  rr_count+=1
63
68
  res = resolvers[res_pos]
64
69
  res_pos=+1
65
70
  if (res_pos >= num_resolvers)
66
71
  res_pos = 0
67
72
  end
68
- res.send_async(Message.new(data[:name], data[:type]), [i,rr_count], q)
73
+ res.send_async(Message.new(data[:name], data[:type]), q, [i,rr_count])
69
74
  # p "Sent #{i}, #{rr_count}, Queue #{q}"
70
75
  query_count+=1
71
76
  end
@@ -107,7 +112,7 @@ class TestSingleResolverSoak < TestSingleResolver
107
112
  num_times.times do |i|
108
113
  threads[i] = Thread.new{
109
114
  4.times do |j|
110
- Rrs.each do |data|
115
+ TestSoakBase::Rrs.each do |data|
111
116
  mutex.synchronize do
112
117
  query_count+=1
113
118
  end
@@ -167,12 +172,12 @@ class TestSingleResolverSoak < TestSingleResolver
167
172
  res = SingleResolver.new
168
173
  res.packet_timeout=4
169
174
  4.times do |j|
170
- Rrs.each do |data|
175
+ TestSoakBase::Rrs.each do |data|
171
176
  mutex.synchronize do
172
177
  query_count+=1
173
178
  end
174
179
  q = Queue.new
175
- res.send_async(Message.new(data[:name], data[:type]), [i,j], q)
180
+ res.send_async(Message.new(data[:name], data[:type]), q, [i,j])
176
181
  id, packet, error = q.pop
177
182
  if (error.class == ResolvTimeout)
178
183
  # p "TIMEOUT for Thread #{i}, reply #{j}, type #{data[:type]}"
@@ -200,111 +205,5 @@ class TestSingleResolverSoak < TestSingleResolver
200
205
  assert(timed_out < query_count * 0.1, "#{timed_out} of #{query_count} timed out!")
201
206
  end
202
207
 
203
- def test_continuous_queries_asynch_single_res
204
- # Have two threads looping, with one sending, and one receiving queries.
205
- # Never exceed more than 250 concurrent queries, but make sure they're always running.
206
- num_loops = 2000
207
- num_sent = 0
208
- q = Queue.new
209
- timed_out = 0
210
- mutex = Mutex.new
211
- start = Time.now
212
- num_in_progress = 0
213
- sender = Thread.new{
214
- res = SingleResolver.new
215
- res.packet_timeout=5
216
- # On windows, MAX_FILES is 256. This means that we have to limit
217
- # this test while we're not using single sockets.
218
- # We run four queries per iteration, so we're limited to 64 runs.
219
- num_loops.times do |i|
220
- rr_count = 0
221
- Rrs.each do |data|
222
- rr_count+=1
223
- while (mutex.synchronize{num_in_progress> 250}) do
224
- sleep(0.01)
225
- end
226
- res.send_async(Message.new(data[:name], data[:type]), [i,rr_count], q)
227
- num_sent+=1
228
- mutex.synchronize {
229
- num_in_progress+=1
230
- }
231
- end
232
- end
233
-
234
- }
235
- receiver = Thread.new{
236
- (num_loops*4).times do |i|
237
- id,ret, error = q.pop
238
- mutex.synchronize {
239
- num_in_progress-=1
240
- }
241
- if (error.class == ResolvTimeout)
242
- timed_out+=1
243
- # p "Number #{i} timed out!"
244
- elsif (ret.class != Message)
245
- TheLog.debug("tc_single_resolver : Query #{i} ERROR RETURNED : #{error.class}, #{error}")
246
- end
247
- end
248
- }
249
- sender.join
250
- receiver.join
251
- assert(num_in_progress==0)
252
- stop=Time.now
253
- time_taken=stop-start
254
- p "Query count : #{num_sent}, #{timed_out} timed out. #{time_taken} time taken"
255
- assert(timed_out < num_sent * 0.1, "#{timed_out} of #{num_sent} timed out!")
256
- end
257
-
258
- def test_continuous_queries_asynch_resolver
259
- # Have two threads looping, with one sending, and one receiving queries.
260
- # Never exceed more than 250 concurrent queries, but make sure they're always running.
261
- num_loops = 1000
262
- num_sent = 0
263
- q = Queue.new
264
- timed_out = 0
265
- mutex = Mutex.new
266
- start = Time.now
267
- num_in_progress = 0
268
- sender = Thread.new{
269
- res = Resolver.new
270
- # On windows, MAX_FILES is 256. This means that we have to limit
271
- # this test while we're not using single sockets.
272
- # We run four queries per iteration, so we're limited to 64 runs.
273
- num_loops.times do |i|
274
- while (mutex.synchronize{num_in_progress> 50}) do # One query has several sockets in Resolver
275
- sleep(0.01)
276
- end
277
- res.send_async(Message.new("example.com", Types.A), [i,1], q)
278
- num_sent+=1
279
- mutex.synchronize {
280
- num_in_progress+=1
281
- }
282
- end
283
- }
284
- error_count=0
285
- receiver = Thread.new{
286
- (num_loops).times do |i|
287
- id,ret, error = q.pop
288
- mutex.synchronize {
289
- num_in_progress-=1
290
- }
291
- if (error.class == ResolvTimeout)
292
- timed_out+=1
293
- # p "Number #{i} timed out!"
294
- elsif (ret.class != Message)
295
- error_count+=1
296
- TheLog.error("tc_single_resolver : Query #{i} ERROR RETURNED : #{error.class}, #{error}")
297
- end
298
- end
299
- }
300
- sender.join
301
- receiver.join
302
- assert(num_in_progress==0)
303
- stop=Time.now
304
- time_taken=stop-start
305
- p "Query count : #{num_sent}, #{timed_out} timed out, #{error_count} other errors. #{time_taken} time taken"
306
- assert(timed_out < num_sent * 0.1, "#{timed_out} of #{num_sent} timed out!")
307
- assert(error_count == 0)
308
- end
309
208
 
310
209
  end
@@ -0,0 +1,136 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'Dnsruby'
4
+
5
+ class TestSoakBase # < Test::Unit::TestCase
6
+ include Dnsruby
7
+ Rrs = [
8
+ {
9
+ :type => Types.A,
10
+ :name => 'a.t.dnsruby.validation-test-servers.nominet.org.uk',
11
+ :address => '10.0.1.128'
12
+ },
13
+ {
14
+ :type => Types::MX,
15
+ :name => 'mx.t.dnsruby.validation-test-servers.nominet.org.uk',
16
+ :exchange => 'a.t.dnsruby.validation-test-servers.nominet.org.uk',
17
+ :preference => 10
18
+ },
19
+ {
20
+ :type => 'CNAME',
21
+ :name => 'cname.t.dnsruby.validation-test-servers.nominet.org.uk',
22
+ :domainname => 'a.t.dnsruby.validation-test-servers.nominet.org.uk'
23
+ },
24
+ {
25
+ :type => Types.TXT,
26
+ :name => 'txt.t.dnsruby.validation-test-servers.nominet.org.uk',
27
+ :strings => ['Net-DNS']
28
+ }
29
+ ]
30
+
31
+ def TestSoakBase.test_continuous_queries_asynch_single_res
32
+ # Have two threads looping, with one sending, and one receiving queries.
33
+ # Never exceed more than 200 concurrent queries, but make sure they're always running.
34
+ outstanding_limit = 1
35
+ num_loops = 2000
36
+ num_sent = 0
37
+ q = Queue.new
38
+ timed_out = 0
39
+ mutex = Mutex.new
40
+ start = Time.now
41
+ num_in_progress = 0
42
+ sender = Thread.new{
43
+ res = SingleResolver.new
44
+ res.packet_timeout=5
45
+ num_loops.times do |i|
46
+ rr_count = 0
47
+ Rrs.each do |data|
48
+ rr_count+=1
49
+ while (mutex.synchronize{num_in_progress> outstanding_limit}) do
50
+ sleep(0.01)
51
+ end
52
+ res.send_async(Message.new(data[:name], data[:type]), q, [i,rr_count])
53
+ puts num_sent
54
+ num_sent+=1
55
+ mutex.synchronize {
56
+ num_in_progress+=1
57
+ }
58
+ end
59
+ end
60
+
61
+ }
62
+ receiver = Thread.new{
63
+ (num_loops*4).times do |i|
64
+ id,ret, error = q.pop
65
+ mutex.synchronize {
66
+ num_in_progress-=1
67
+ }
68
+ if (error.class == ResolvTimeout)
69
+ timed_out+=1
70
+ # p "Number #{i} timed out!"
71
+ elsif (ret.class != Message)
72
+ TheLog.debug("tc_single_resolver : Query #{i} ERROR RETURNED : #{error.class}, #{error}")
73
+ end
74
+ end
75
+ }
76
+ sender.join
77
+ receiver.join
78
+ assert(num_in_progress==0)
79
+ stop=Time.now
80
+ time_taken=stop-start
81
+ p "Query count : #{num_sent}, #{timed_out} timed out. #{time_taken} time taken"
82
+ assert(timed_out < num_sent * 0.1, "#{timed_out} of #{num_sent} timed out!")
83
+ end
84
+
85
+ def TestSoakBase.test_continuous_queries_asynch_resolver
86
+ # Have two threads looping, with one sending, and one receiving queries.
87
+ # Never exceed more than 250 concurrent queries, but make sure they're always running.
88
+ num_loops = 1000
89
+ num_sent = 0
90
+ q = Queue.new
91
+ timed_out = 0
92
+ mutex = Mutex.new
93
+ start = Time.now
94
+ num_in_progress = 0
95
+ sender = Thread.new{
96
+ res = Resolver.new
97
+ # On windows, MAX_FILES is 256. This means that we have to limit
98
+ # this test while we're not using single sockets.
99
+ # We run four queries per iteration, so we're limited to 64 runs.
100
+ num_loops.times do |i|
101
+ while (mutex.synchronize{num_in_progress> 50}) do # One query has several sockets in Resolver
102
+ sleep(0.01)
103
+ end
104
+ res.send_async(Message.new("example.com", Types.A), q, [i,1])
105
+ num_sent+=1
106
+ mutex.synchronize {
107
+ num_in_progress+=1
108
+ }
109
+ end
110
+ }
111
+ error_count=0
112
+ receiver = Thread.new{
113
+ (num_loops).times do |i|
114
+ id,ret, error = q.pop
115
+ mutex.synchronize {
116
+ num_in_progress-=1
117
+ }
118
+ if (error.class == ResolvTimeout)
119
+ timed_out+=1
120
+ # p "Number #{i} timed out!"
121
+ elsif (ret.class != Message)
122
+ error_count+=1
123
+ TheLog.error("tc_single_resolver : Query #{i} ERROR RETURNED : #{error.class}, #{error}")
124
+ end
125
+ end
126
+ }
127
+ sender.join
128
+ receiver.join
129
+ assert(num_in_progress==0)
130
+ stop=Time.now
131
+ time_taken=stop-start
132
+ p "Query count : #{num_sent}, #{timed_out} timed out, #{error_count} other errors. #{time_taken} time taken"
133
+ assert(timed_out < num_sent * 0.1, "#{timed_out} of #{num_sent} timed out!")
134
+ assert(error_count == 0)
135
+ end
136
+ end