Dnsruby 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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