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
@@ -0,0 +1,47 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'eventmachine'
6
+ require 'Dnsruby'
7
+ #begin
8
+ # require 'test/tc_single_resolver'
9
+ #rescue Exception
10
+ # require 'tc_single_resolver'
11
+ #end
12
+
13
+ class EmDeferrableTest < Test::Unit::TestCase
14
+ Dnsruby::Resolver.use_eventmachine(true)
15
+ def setup
16
+ #Dnsruby::TheLog.level=Logger::DEBUG
17
+ Dnsruby::Resolver.use_eventmachine(true)
18
+ end
19
+ def teardown
20
+ Dnsruby::Resolver.use_eventmachine(false)
21
+ end
22
+
23
+ def test_deferrable_success
24
+ Dnsruby::TheLog.level=Logger::DEBUG
25
+ res = Dnsruby::SingleResolver.new
26
+ Dnsruby::Resolver.use_eventmachine
27
+ q = Queue.new
28
+ id = 1
29
+ done = false
30
+ EM.run {
31
+ df = res.send_async(Dnsruby::Message.new("nominet.org.uk"), id, q) #@TODO@ Shouldn't need ID and queue
32
+ df.callback {|id, msg| puts "callback: #{id}, #{msg}"; done = true; EM.stop}
33
+ df.errback {|id, msg, err| puts "errback: #{id}, #{msg}, #{err}"; done = true; EM.stop}
34
+ }
35
+ # while (!done)
36
+ # sleep 0.1
37
+ # end
38
+ # # id+=1
39
+ # # df2 = res.send_async(Dnsruby::Message.new("example.com"), id, q)
40
+ # # df2.callback {|obj| puts "callback" + obj}
41
+ # # df2.errback {|obj| puts "errback" + obj}
42
+ end
43
+
44
+ def test_deferrable_timeout
45
+ flunk("IMPLEMENT!")
46
+ end
47
+ end
@@ -0,0 +1,85 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'eventmachine'
6
+ require 'Dnsruby'
7
+
8
+ class EventMachineTestDeferrable < Test::Unit::TestCase
9
+ Dnsruby::Resolver.use_eventmachine(true)
10
+ def setup
11
+ # Dnsruby::TheLog.level=Logger::DEBUG
12
+ Dnsruby::Resolver.use_eventmachine(true)
13
+ Dnsruby::Resolver.start_eventmachine_loop(true)
14
+ end
15
+ def teardown
16
+ Dnsruby::Resolver.use_eventmachine(false)
17
+ Dnsruby::Resolver.start_eventmachine_loop(true)
18
+ end
19
+
20
+ def test_deferrable_success
21
+ res = Dnsruby::SingleResolver.new
22
+ Dnsruby::Resolver.use_eventmachine
23
+ Dnsruby::Resolver.start_eventmachine_loop(false)
24
+ EM.run {
25
+ df = res.send_async(Dnsruby::Message.new("nominet.org.uk"))
26
+ df.callback {|msg| EM.stop}
27
+ df.errback {|msg, err|
28
+ EM.stop
29
+ assert(false)}
30
+ }
31
+ Dnsruby::Resolver.start_eventmachine_loop(true)
32
+ end
33
+
34
+ def test_deferrable_timeout
35
+ res = Dnsruby::SingleResolver.new("10.0.1.128")
36
+ Dnsruby::Resolver.use_eventmachine
37
+ res.packet_timeout=2
38
+ Dnsruby::Resolver.start_eventmachine_loop(false)
39
+ EM.run {
40
+ df = res.send_async(Dnsruby::Message.new("nominet.org.uk"))
41
+ df.callback {|msg| EM.stop; assert(false)}
42
+ df.errback {|msg, err|
43
+ EM.stop
44
+ }
45
+ }
46
+ Dnsruby::Resolver.start_eventmachine_loop(true)
47
+ end
48
+
49
+ def test_deferrable_success
50
+ sleep(0.1) # Give the Event loop a chance to close down from previous test
51
+ Dnsruby::Resolver.use_eventmachine
52
+ Dnsruby::Resolver.start_eventmachine_loop(false)
53
+ res = Dnsruby::Resolver.new
54
+ q = Queue.new
55
+ id = 1
56
+ EM.run {
57
+ df = res.send_async(Dnsruby::Message.new("nominet.org.uk"))
58
+ df.callback {|msg| done = true; EM.stop}
59
+ df.errback {|msg, err|
60
+ puts "errback: #{msg}, #{err}"
61
+ done = true
62
+ EM.stop
63
+ assert(false)}
64
+ }
65
+ Dnsruby::Resolver.start_eventmachine_loop(true)
66
+ end
67
+
68
+ def test_deferrable_timeout
69
+ sleep(0.1) # Give the Event loop a chance to close down from previous test
70
+ Dnsruby::Resolver.start_eventmachine_loop(false)
71
+ Dnsruby::Resolver.use_eventmachine
72
+ res = Dnsruby::Resolver.new("10.0.1.128")
73
+ res.query_timeout=2
74
+ q = Queue.new
75
+ id = 1
76
+ EM.run {
77
+ df = res.send_async(Dnsruby::Message.new("nominet.org.uk"))
78
+ df.callback {|msg| EM.stop; assert(false)}
79
+ df.errback {|msg, err|
80
+ EM.stop
81
+ }
82
+ }
83
+ Dnsruby::Resolver.start_eventmachine_loop(true)
84
+ end
85
+ end
@@ -0,0 +1,174 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'eventmachine'
6
+ require 'Dnsruby'
7
+
8
+ class EventMachineTestResolver < Test::Unit::TestCase
9
+ include Dnsruby
10
+ Dnsruby::Resolver.use_eventmachine(true)
11
+ Thread::abort_on_exception = true
12
+ def setup
13
+ Dnsruby::Config.reset
14
+ # Dnsruby::TheLog.level=Logger::DEBUG
15
+ Dnsruby::Resolver.use_eventmachine(true)
16
+ Dnsruby::Resolver.start_eventmachine_loop(true)
17
+ end
18
+ def teardown
19
+ Dnsruby::Resolver.use_eventmachine(false)
20
+ Dnsruby::Resolver.start_eventmachine_loop(true)
21
+ end
22
+
23
+ def test_send_message
24
+ res = Resolver.new
25
+ ret = res.send_message(Message.new("example.com", Types.A))
26
+ assert(ret.kind_of?(Message))
27
+ end
28
+
29
+ def test_query
30
+ res = Resolver.new
31
+ ret = res.query("example.com")
32
+ assert(ret.kind_of?(Message))
33
+ end
34
+
35
+ def test_query_async
36
+ res = Resolver.new
37
+ q = Queue.new
38
+ res.send_async(Message.new("example.com", Types.A),q,q)
39
+ id, ret, error = q.pop
40
+ assert_equal(id, q, "Id wrong!")
41
+ assert(ret.kind_of?(Message), "Ret wrong!")
42
+ assert(error==nil)
43
+ end
44
+
45
+ def test_query_one_duff_server_one_good
46
+ res = Resolver.new({:nameserver => ["localhost", "128.8.10.90"]})
47
+ res.retry_delay=1
48
+ q = Queue.new
49
+ res.send_async(Message.new("example.com", Types.A),q,q)
50
+ id, ret, error = q.pop
51
+ assert_equal(id, q, "Id wrong!")
52
+ assert(ret.kind_of?(Message), "Ret wrong! (#{ret.class}")
53
+ assert(error==nil)
54
+ end
55
+
56
+ def test_reverse_lookup
57
+ m = Message.new("210.251.121.214", Types.PTR)
58
+ r = Resolver.new
59
+ q=Queue.new
60
+ r.send_async(m,q,q)
61
+ id,ret, error=q.pop
62
+ assert(ret.kind_of?(Message))
63
+ no_pointer=true
64
+ ret.each_answer do |answer|
65
+ if (answer.type==Types.PTR)
66
+ no_pointer=false
67
+ assert(answer.domainname.to_s=~/ruby-lang/)
68
+ end
69
+ end
70
+ assert(!no_pointer)
71
+ end
72
+
73
+ def test_nxdomain
74
+ res=Resolver.new
75
+ q = Queue.new
76
+ res.send_async(Message.new("dklfjhdFHFHDVVUIEWRFDSAJKVCNASDLFJHN.com", Types.A), q, 1)
77
+ id, m, err = q.pop
78
+ assert(id==1)
79
+ assert(m.header.rcode == RCode.NXDOMAIN)
80
+ assert(err.kind_of?(NXDomain))
81
+ end
82
+
83
+ def test_timeouts
84
+ #test timeout behaviour for different retry, retrans, total timeout etc.
85
+ #Problem here is that many sockets will be created for queries which time out.
86
+ # Run a query which will not respond, and check that the timeout works
87
+ start=stop=0
88
+ retry_times = 3
89
+ retry_delay=1
90
+ packet_timeout=2
91
+ # Work out what time should be, then time it to check
92
+ expected = ((2**(retry_times-1))*retry_delay) + packet_timeout
93
+ begin
94
+ res = Resolver.new("10.0.1.128")
95
+ res.packet_timeout=packet_timeout
96
+ res.retry_times=retry_times
97
+ res.retry_delay=retry_delay
98
+ start=Time.now
99
+ m = res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
100
+ fail
101
+ rescue ResolvTimeout
102
+ stop=Time.now
103
+ time = stop-start
104
+ assert(time <= expected *1.1 && time >= expected *0.9, "Wrong time taken, expected #{expected}, took #{time}")
105
+ end
106
+ end
107
+
108
+ def test_query_timeout
109
+ res = Resolver.new({:nameserver => "10.0.1.128"})
110
+ start=stop=0
111
+ retry_times = retry_delay = packet_timeout= 10
112
+ query_timeout=2
113
+ begin
114
+ res.packet_timeout=packet_timeout
115
+ res.retry_times=retry_times
116
+ res.retry_delay=retry_delay
117
+ res.query_timeout=query_timeout
118
+ # Work out what time should be, then time it to check
119
+ expected = query_timeout
120
+ start=Time.now
121
+ m = res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
122
+ fail
123
+ rescue ResolvTimeout
124
+ stop=Time.now
125
+ time = stop-start
126
+ assert(time <= expected *1.1 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
127
+ end
128
+ end
129
+
130
+ def test_queue_query_timeout
131
+ res = Resolver.new({:nameserver => "10.0.1.128"})
132
+ bad = SingleResolver.new("localhost")
133
+ res.add_resolver(bad)
134
+ expected = 2
135
+ res.query_timeout=expected
136
+ q = Queue.new
137
+ start = Time.now
138
+ m = res.send_async(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A), q, q)
139
+ id,ret,err = q.pop
140
+ stop = Time.now
141
+ assert(id=q)
142
+ assert(ret==nil)
143
+ assert(err.class == ResolvTimeout, "#{err.class}, #{err}")
144
+ time = stop-start
145
+ assert(time <= expected *1.1 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
146
+ end
147
+
148
+
149
+
150
+ def test_tcp
151
+ res = Dnsruby::Resolver.new
152
+ res.use_tcp = true
153
+ Dnsruby::Resolver.use_eventmachine
154
+ q = Queue.new
155
+ id = 1
156
+ res.send_async(Dnsruby::Message.new("nominet.org.uk"), q, id)
157
+ id+=1
158
+ res.send_async(Dnsruby::Message.new("example.com"), q, id)
159
+ id.times do |i|
160
+ itemid = q.pop[0]
161
+ assert(itemid <= id)
162
+ assert(itemid >= 0)
163
+ end
164
+ end
165
+
166
+ def test_truncated_response
167
+ res = Dnsruby::Resolver.new('ns0.validation-test-servers.nominet.org.uk')
168
+ res.packet_timeout = 10
169
+ m = res.query("overflow.dnsruby.validation-test-servers.nominet.org.uk", 'txt')
170
+ assert(m.header.ancount == 61, "61 answer records expected, got #{m.header.ancount}")
171
+ assert(!m.header.tc, "Message was truncated!")
172
+ end
173
+
174
+ end
@@ -0,0 +1,101 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'eventmachine'
6
+ require 'Dnsruby'
7
+
8
+ class EventMachineTestSingleResolver < Test::Unit::TestCase
9
+ Dnsruby::Resolver.use_eventmachine(true)
10
+ def setup
11
+ # Dnsruby::TheLog.level=Logger::DEBUG
12
+ Dnsruby::Resolver.use_eventmachine(true)
13
+ Dnsruby::Resolver.start_eventmachine_loop(true)
14
+ end
15
+ def teardown
16
+ Dnsruby::Resolver.use_eventmachine(false)
17
+ Dnsruby::Resolver.start_eventmachine_loop(true)
18
+ end
19
+ def test_udp
20
+ res = Dnsruby::SingleResolver.new
21
+ Dnsruby::Resolver.use_eventmachine(true)
22
+ Dnsruby::Resolver.start_eventmachine_loop(true)
23
+ q = Queue.new
24
+ id = 1
25
+ res.send_async(Dnsruby::Message.new("nominet.org.uk"), q, id)
26
+ id+=1
27
+ res.send_async(Dnsruby::Message.new("example.com"), q, id)
28
+ id.times do |i|
29
+ item = q.pop
30
+ assert(item[1].class==Dnsruby::Message)
31
+ assert(item[0] <= id)
32
+ assert(item[0] >= 0)
33
+ end
34
+ Dnsruby::TheLog.level=Logger::ERROR
35
+ end
36
+
37
+ def test_tcp
38
+ res = Dnsruby::SingleResolver.new
39
+ res.use_tcp = true
40
+ Dnsruby::Resolver.use_eventmachine
41
+ q = Queue.new
42
+ id = 1
43
+ res.send_async(Dnsruby::Message.new("nominet.org.uk"), q, id)
44
+ id+=1
45
+ res.send_async(Dnsruby::Message.new("example.com"), q, id)
46
+ id.times do |i|
47
+ itemid, response, error = q.pop
48
+ assert(itemid <= id)
49
+ assert(itemid >= 0)
50
+ assert(error==nil)
51
+ end
52
+ #@TODO@ How do we check that TCP was actually used? Do we need a test server for this?
53
+ #Or will the truncated test catch this? (Query retried over TCP to fetch all records)
54
+ end
55
+
56
+ def test_tcp_queue_timeout
57
+ res = Dnsruby::SingleResolver.new("10.0.1.128")
58
+ Dnsruby::Resolver.use_eventmachine(true)
59
+ res.packet_timeout=2
60
+ res.use_tcp=true
61
+ q = Queue.new
62
+ msg = Dnsruby::Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk")
63
+ res.send_async(msg, q, 1)
64
+ start=Time.now
65
+ id,ret,error = q.pop
66
+ end_time = Time.now
67
+ assert(id==1)
68
+ assert(ret==nil)
69
+ assert(error.class == Dnsruby::ResolvTimeout)
70
+ p "Difference = #{end_time-start}"
71
+ assert(end_time - start >= 1.9)
72
+ assert(end_time - start <= 2.2)
73
+ end
74
+
75
+ def test_udp_queue_timeout
76
+ res = Dnsruby::SingleResolver.new("10.0.1.128")
77
+ Dnsruby::Resolver.use_eventmachine(true)
78
+ res.packet_timeout=2
79
+ q = Queue.new
80
+ start=Time.now
81
+ msg = Dnsruby::Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk")
82
+ res.send_async(msg, q, 1)
83
+ id,ret,error = q.pop
84
+ end_time = Time.now
85
+ assert(id==1)
86
+ assert(ret==nil)
87
+ p "Difference = #{end_time-start}"
88
+ assert(error.class == Dnsruby::ResolvTimeout)
89
+ assert(end_time - start >= 1.9)
90
+ assert(end_time - start <= 2.2)
91
+ end
92
+
93
+ def test_truncated_response
94
+ res = Dnsruby::SingleResolver.new
95
+ res.packet_timeout = 10
96
+ res.server=('ns0.validation-test-servers.nominet.org.uk')
97
+ m = res.query("overflow.dnsruby.validation-test-servers.nominet.org.uk", 'txt')
98
+ assert(m.header.ancount == 61, "61 answer records expected, got #{m.header.ancount}")
99
+ assert(!m.header.tc, "Message was truncated!")
100
+ end
101
+ end
@@ -0,0 +1,98 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'eventmachine'
4
+ require 'Dnsruby'
5
+ begin
6
+ require 'test/tc_soak_base'
7
+ rescue Exception
8
+ require 'tc_soak_base'
9
+ end
10
+
11
+ class TestEventMachineSoak < Test::Unit::TestCase
12
+ def setup
13
+ # Dnsruby::TheLog.level=Logger::DEBUG
14
+ Dnsruby::Resolver.use_eventmachine(true)
15
+ end
16
+ def teardown
17
+ Dnsruby::Resolver.use_eventmachine(false)
18
+ end
19
+ def test_single_res
20
+ # TestSoakBase.test_continuous_queries_asynch_single_res
21
+ end
22
+ def test_single_deferrable
23
+ sleep(0.1)
24
+ @@dfs = {}
25
+ @@num_sent = 0
26
+ #Dnsruby::TheLog.level=Logger::DEBUG
27
+ res = Dnsruby::SingleResolver.new
28
+ Dnsruby::Resolver.use_eventmachine
29
+ Dnsruby::Resolver.start_eventmachine_loop(false)
30
+ q = Queue.new
31
+ id = 1
32
+ done = false
33
+ EM.run {
34
+ 100.times do |i|
35
+ send_next_deferrable(res)
36
+ end
37
+ }
38
+ Dnsruby::Resolver.start_eventmachine_loop(true)
39
+ end
40
+
41
+ def test_sequential
42
+ #Dnsruby::TheLog.level=Logger::DEBUG
43
+ Dnsruby::Resolver.use_eventmachine(true)
44
+ Dnsruby::Resolver.start_eventmachine_loop(true)
45
+ res = Dnsruby::SingleResolver.new
46
+ res.packet_timeout = 2
47
+ q = Queue.new
48
+ 240.times do |i|
49
+ puts i
50
+ res.send_async(Dnsruby::Message.new("example#{i}.com"), q, i)
51
+ end
52
+ 240.times do |i|
53
+ puts "Receiving #{i}"
54
+ id, msg, error = q.pop
55
+ if (error != nil)
56
+ puts ("Error : #{error}")
57
+ end
58
+ end
59
+ end
60
+
61
+ def test_resolver_deferrable
62
+ sleep(0.1)
63
+ @@dfs = {}
64
+ @@num_sent = 0
65
+ #Dnsruby::TheLog.level=Logger::DEBUG
66
+ res = Dnsruby::Resolver.new
67
+ Dnsruby::Resolver.use_eventmachine
68
+ Dnsruby::Resolver.start_eventmachine_loop(false)
69
+ q = Queue.new
70
+ id = 1
71
+ done = false
72
+ EM.run {
73
+ 50.times do |i|
74
+ send_next_deferrable(res)
75
+ end
76
+ }
77
+ Dnsruby::Resolver.start_eventmachine_loop(true)
78
+ end
79
+
80
+ def send_next_deferrable(res)
81
+ if (@@num_sent>2000)
82
+ EM.stop
83
+ return
84
+ end
85
+ id = @@num_sent
86
+ @@num_sent+=1
87
+ @@dfs[id] = res.send_async(Dnsruby::Message.new("example.com"))
88
+ @@dfs[id].callback {|msg| puts "callback: #{id}"
89
+ @@dfs.delete(id)
90
+ send_next_deferrable(res)
91
+ }
92
+ @@dfs[id].errback {|msg, err|
93
+ @@dfs.delete(id)
94
+ puts "errback: #{id}, #{err}"
95
+ send_next_deferrable(res)
96
+ }
97
+ end
98
+ end
data/test/tc_inet6.rb ADDED
@@ -0,0 +1,170 @@
1
+ #--
2
+ #Copyright 2007 Nominet UK
3
+ #
4
+ #Licensed under the Apache License, Version 2.0 (the "License");
5
+ #you may not use this file except in compliance with the License.
6
+ #You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ #Unless required by applicable law or agreed to in writing, software
11
+ #distributed under the License is distributed on an "AS IS" BASIS,
12
+ #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ #See the License for the specific language governing permissions and
14
+ #limitations under the License.
15
+ #++
16
+ require 'rubygems'
17
+ require 'test/unit'
18
+ require 'Net/DNS'
19
+ require 'socket'
20
+ class TestInet6 < Test::Unit::TestCase
21
+ def ip6ok?
22
+ if (@checkedip6)
23
+ if !@ip6ok
24
+ return false
25
+ end
26
+ end
27
+ @checkedip6 = true
28
+ @ip6ok = true
29
+ # First use the local resolver to query for the AAAA record of a
30
+ # well known nameserver, than use v6 transport to get to that record.
31
+ puts ""
32
+ puts ""
33
+ puts "\tTesting for global IPv6 connectivity...\n"
34
+ puts "\t\t preparing..."
35
+
36
+ tstsock = UDPSocket.new()
37
+ begin
38
+ tstsock.bind("::1", 8765)
39
+ rescue Exception
40
+ # raise RuntimeError, "\n\n\t\tFailed to bind to ::1\n\t\t#{$!}\n\n\t\tWe assume there is no IPv6 connectivity and skip the tests\n\n"
41
+ puts "\n\n\t\tFailed to bind to ::1\n\t\t#{$!}\n\n\t\tWe assume there is no IPv6 connectivity and skip the tests\n\n"
42
+ @ip6ok=false
43
+ return false
44
+ ensure
45
+ tstsock.close
46
+ end
47
+ return true
48
+ end
49
+
50
+ def test_inet6
51
+ if (!ip6ok?)
52
+ return
53
+ end
54
+ res=Net::DNS::Resolver.new
55
+ # res.debug(1)
56
+ nsanswer=res.send("ripe.net",'NS','IN')
57
+ assert_instance_of(Net::DNS::RR::NS, (nsanswer.answer)[0], "Preparing for v6 transport, got NS records for ripe.net")
58
+
59
+ # foreach ns (nsanswer.answer){
60
+ nsanswer.answer.each do |ns|
61
+ next if ns.nsdname !~ /ripe\.net/ # User ripe.net only
62
+ a_answer=res.send(ns.nsdname, 'A','IN')
63
+ next if (a_answer.header.ancount == 0)
64
+ assert_instance_of(Net::DNS::RR::A, (a_answer.answer)[0], "Preparing for v4 transport, got A records for " + ns.nsdname)
65
+ a_address=(a_answer.answer)[0].address
66
+
67
+
68
+ puts("\n\t\t Will try to connect to " + ns.nsdname + " (#{a_address})")
69
+ break
70
+ end
71
+
72
+
73
+ aaaa_address=""
74
+ # foreach ns (nsanswer.answer){
75
+ nsanswer.answer.each do |ns|
76
+ next if ns.nsdname !~ /ripe\.net/ # User ripe.net only
77
+ aaaa_answer=res.send(ns.nsdname,'AAAA','IN')
78
+ next if (aaaa_answer.header.ancount == 0)
79
+ assert_equal((aaaa_answer.answer)[0].type,"AAAA", "Preparing for v6 transport, got AAAA records for " + ns.nsdname)
80
+ aaaa_address=(aaaa_answer.answer)[0].address
81
+
82
+
83
+ puts("\n\t\t Will try to connect to #{ns.nsdname} (#{aaaa_address})")
84
+ break
85
+ end
86
+
87
+ res.nameservers=(aaaa_address)
88
+ # res.print
89
+ answer=res.send("ripe.net",'SOA','IN')
90
+ if(res.errorstring =~ /Send error: /)
91
+ puts "\n\t\t Connection failed: " + res.errorstring
92
+ puts "\n\t\t It seems you do not have global IPv6 connectivity' \n"
93
+ puts "\t\t This is not an error in Net::DNS \n"
94
+
95
+ puts "\t\t You can confirm this by trying 'ping6 " + aaaa_address + "' \n\n"
96
+ end
97
+
98
+
99
+
100
+ # answer.print
101
+ assert_equal((answer.answer)[0].type, "SOA","Query over udp6 succeeded")
102
+
103
+ res.usevc(1)
104
+ res.force_v4(1)
105
+ # res.print
106
+ # res.debug(1)
107
+ answer=res.send("ripe.net",'SOA','IN')
108
+ assert_equal(res.errorstring,"no nameservers","Correct errorstring when forcing v4")
109
+
110
+
111
+ res.force_v4(0)
112
+ answer=res.send("ripe.net",'NS','IN')
113
+ if (answer)
114
+ assert_equal((answer.answer)[0].type, "NS","Query over tcp6 succeeded")
115
+ else
116
+ puts "You can safely ignore the following message:"
117
+ puts(res.errorstring) if (res.errorstring != "connection failed(IPv6 socket failure)")
118
+ puts("configuring " + aaaa_address + " " + a_address + " as nameservers")
119
+ res.nameservers(aaaa_address,a_address)
120
+ answer = nil
121
+ # res.print
122
+ answer=res.send("ripe.net",'NS','IN')
123
+ assert_equal((answer.answer)[0].type, "NS","Fallback to V4 succeeded")
124
+
125
+
126
+ end
127
+
128
+ end
129
+
130
+
131
+
132
+
133
+ def test_axfr
134
+ if (!ip6ok?)
135
+ return
136
+ end
137
+ #
138
+ # Now test AXFR functionality.
139
+ #
140
+ #
141
+ # First use the local resolver to query for the AAAA record of a
142
+
143
+ aaaa_address=""
144
+ res2=Net::DNS::Resolver.new
145
+ # res2.debug(1)
146
+ nsanswer=res2.send("net-dns.org",'NS','IN')
147
+ assert_equal((nsanswer.answer)[0].type, "NS","Preparing for v6 transport, got NS records for net-dns.org")
148
+ # foreach ns (nsanswer.answer){
149
+ nsanswer.answer.each do |ns|
150
+ # next if ns.nsdname !~ /ripe\.net/ # User rupe.net only
151
+ aaaa_answer=res2.send(ns.nsdname,'AAAA','IN')
152
+ next if (aaaa_answer.header.ancount == 0)
153
+ assert_equal((aaaa_answer.answer)[0].type,"AAAA", "Preparing for v6 transport, got AAAA records for " + ns.nsdname)
154
+ aaaa_address=(aaaa_answer.answer)[0].address
155
+
156
+ puts("\n\t\t Trying to connect to " + ns.nsdname + " (#{aaaa_address})")
157
+ break
158
+ end
159
+
160
+ res2.nameservers=(aaaa_address)
161
+ # res2.print
162
+
163
+ socket=res2.axfr_start('example.com')
164
+
165
+ assert_instance_of(Socket, socket,"axfr_start returns IPv6 Socket")
166
+ (rr,err)=res2.axfr_next
167
+ assert_equal(res2.errorstring,'Response code from server: NOTAUTH',"Transfer is not authorized (but our connection worked)")
168
+
169
+ end
170
+ end