logstash-output-scalyr 0.1.6 → 0.1.11.beta

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 (357) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -0
  3. data/Gemfile +6 -0
  4. data/README.md +57 -4
  5. data/lib/logstash/outputs/scalyr.rb +284 -107
  6. data/lib/scalyr/common/client.rb +117 -43
  7. data/lib/scalyr/constants.rb +2 -0
  8. data/logstash-output-scalyr.gemspec +2 -1
  9. data/spec/benchmarks/flattening_and_serialization.rb +125 -0
  10. data/spec/benchmarks/metrics_overhead.rb +48 -0
  11. data/spec/logstash/outputs/scalyr_integration_spec.rb +188 -0
  12. data/spec/logstash/outputs/scalyr_spec.rb +141 -71
  13. data/vendor/bundle/jruby/2.5.0/cache/addressable-2.7.0.gem +0 -0
  14. data/vendor/bundle/jruby/2.5.0/cache/connection_pool-2.2.5.gem +0 -0
  15. data/vendor/bundle/jruby/2.5.0/cache/crack-0.4.5.gem +0 -0
  16. data/vendor/bundle/jruby/2.5.0/cache/hashdiff-1.0.1.gem +0 -0
  17. data/vendor/bundle/jruby/2.5.0/cache/net-http-persistent-4.0.1.gem +0 -0
  18. data/vendor/bundle/jruby/2.5.0/cache/public_suffix-4.0.6.gem +0 -0
  19. data/vendor/bundle/jruby/2.5.0/cache/quantile-0.2.1.gem +0 -0
  20. data/vendor/bundle/jruby/2.5.0/cache/rexml-3.2.5.gem +0 -0
  21. data/vendor/bundle/jruby/2.5.0/cache/webmock-3.13.0.gem +0 -0
  22. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/CHANGELOG.md +235 -0
  23. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/Gemfile +32 -0
  24. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/LICENSE.txt +202 -0
  25. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/README.md +121 -0
  26. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/Rakefile +34 -0
  27. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/data/unicode.data +0 -0
  28. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/lib/addressable.rb +4 -0
  29. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/lib/addressable/idna.rb +27 -0
  30. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/lib/addressable/idna/native.rb +61 -0
  31. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/lib/addressable/idna/pure.rb +676 -0
  32. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/lib/addressable/template.rb +1045 -0
  33. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/lib/addressable/uri.rb +2529 -0
  34. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/lib/addressable/version.rb +32 -0
  35. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/spec/addressable/idna_spec.rb +300 -0
  36. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/spec/addressable/net_http_compat_spec.rb +30 -0
  37. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/spec/addressable/rack_mount_compat_spec.rb +106 -0
  38. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/spec/addressable/security_spec.rb +59 -0
  39. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/spec/addressable/template_spec.rb +1451 -0
  40. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/spec/addressable/uri_spec.rb +6603 -0
  41. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/spec/spec_helper.rb +24 -0
  42. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/tasks/clobber.rake +4 -0
  43. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/tasks/gem.rake +93 -0
  44. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/tasks/git.rake +47 -0
  45. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/tasks/metrics.rake +24 -0
  46. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/tasks/rspec.rake +23 -0
  47. data/vendor/bundle/jruby/2.5.0/gems/addressable-2.7.0/tasks/yard.rake +29 -0
  48. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/Changes.md +11 -0
  49. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/Gemfile +0 -2
  50. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/LICENSE +0 -0
  51. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/README.md +29 -5
  52. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/Rakefile +0 -1
  53. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/connection_pool.gemspec +1 -0
  54. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/lib/connection_pool.rb +16 -0
  55. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/lib/connection_pool/timed_stack.rb +9 -5
  56. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/lib/connection_pool/version.rb +1 -1
  57. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/lib/connection_pool/wrapper.rb +17 -3
  58. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/test/helper.rb +0 -0
  59. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/test/test_connection_pool.rb +16 -2
  60. data/vendor/bundle/jruby/2.5.0/gems/{connection_pool-2.2.3 → connection_pool-2.2.5}/test/test_connection_pool_timed_stack.rb +10 -0
  61. data/vendor/bundle/jruby/2.5.0/gems/crack-0.4.5/lib/crack.rb +7 -0
  62. data/vendor/bundle/jruby/2.5.0/gems/crack-0.4.5/lib/crack/json.rb +98 -0
  63. data/vendor/bundle/jruby/2.5.0/gems/crack-0.4.5/lib/crack/util.rb +17 -0
  64. data/vendor/bundle/jruby/2.5.0/gems/crack-0.4.5/lib/crack/version.rb +3 -0
  65. data/vendor/bundle/jruby/2.5.0/gems/crack-0.4.5/lib/crack/xml.rb +238 -0
  66. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/Gemfile +8 -0
  67. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/LICENSE +19 -0
  68. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/README.md +276 -0
  69. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/Rakefile +18 -0
  70. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/changelog.md +100 -0
  71. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/hashdiff.gemspec +39 -0
  72. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/lib/hashdiff.rb +10 -0
  73. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/lib/hashdiff/compare_hashes.rb +69 -0
  74. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/lib/hashdiff/diff.rb +177 -0
  75. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/lib/hashdiff/lcs.rb +66 -0
  76. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/lib/hashdiff/lcs_compare_arrays.rb +32 -0
  77. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/lib/hashdiff/linear_compare_array.rb +159 -0
  78. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/lib/hashdiff/patch.rb +88 -0
  79. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/lib/hashdiff/util.rb +155 -0
  80. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/lib/hashdiff/version.rb +5 -0
  81. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/spec/hashdiff/best_diff_spec.rb +75 -0
  82. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/spec/hashdiff/diff_array_spec.rb +60 -0
  83. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/spec/hashdiff/diff_spec.rb +360 -0
  84. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/spec/hashdiff/lcs_spec.rb +76 -0
  85. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/spec/hashdiff/linear_compare_array_spec.rb +50 -0
  86. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/spec/hashdiff/patch_spec.rb +185 -0
  87. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/spec/hashdiff/readme_spec.rb +15 -0
  88. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/spec/hashdiff/util_spec.rb +116 -0
  89. data/vendor/bundle/jruby/2.5.0/gems/hashdiff-1.0.1/spec/spec_helper.rb +15 -0
  90. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/Gemfile +0 -0
  91. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/History.txt +6 -0
  92. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/Manifest.txt +0 -0
  93. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/README.rdoc +0 -0
  94. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/Rakefile +1 -1
  95. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/lib/net/http/persistent.rb +1 -1
  96. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/lib/net/http/persistent/connection.rb +0 -0
  97. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/lib/net/http/persistent/pool.rb +0 -0
  98. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/lib/net/http/persistent/timed_stack_multi.rb +0 -0
  99. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/test/test_net_http_persistent.rb +0 -0
  100. data/vendor/bundle/jruby/2.5.0/gems/{net-http-persistent-4.0.0 → net-http-persistent-4.0.1}/test/test_net_http_persistent_timed_stack_multi.rb +0 -0
  101. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/2.0-Upgrade.md +52 -0
  102. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/CHANGELOG.md +406 -0
  103. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/Gemfile +15 -0
  104. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/LICENSE.txt +22 -0
  105. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/README.md +207 -0
  106. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/Rakefile +51 -0
  107. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/SECURITY.md +104 -0
  108. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/bin/console +15 -0
  109. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/codecov.yml +12 -0
  110. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/data/list.txt +13380 -0
  111. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix.rb +179 -0
  112. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix/domain.rb +235 -0
  113. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix/errors.rb +41 -0
  114. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix/list.rb +247 -0
  115. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix/rule.rb +350 -0
  116. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix/version.rb +13 -0
  117. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/public_suffix.gemspec +29 -0
  118. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/acceptance_test.rb +131 -0
  119. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/benchmarks/bm_find.rb +66 -0
  120. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/benchmarks/bm_find_all.rb +102 -0
  121. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/benchmarks/bm_names.rb +91 -0
  122. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/benchmarks/bm_select.rb +26 -0
  123. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/benchmarks/bm_select_incremental.rb +25 -0
  124. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/benchmarks/bm_valid.rb +101 -0
  125. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/profilers/domain_profiler.rb +12 -0
  126. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/profilers/find_profiler.rb +12 -0
  127. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/profilers/find_profiler_jp.rb +12 -0
  128. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/profilers/initialization_profiler.rb +11 -0
  129. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/profilers/list_profsize.rb +11 -0
  130. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/profilers/object_binsize.rb +57 -0
  131. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/psl_test.rb +52 -0
  132. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/test_helper.rb +18 -0
  133. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/tests.txt +98 -0
  134. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/unit/domain_test.rb +106 -0
  135. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/unit/errors_test.rb +25 -0
  136. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/unit/list_test.rb +241 -0
  137. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/unit/public_suffix_test.rb +188 -0
  138. data/vendor/bundle/jruby/2.5.0/gems/public_suffix-4.0.6/test/unit/rule_test.rb +222 -0
  139. data/vendor/bundle/jruby/2.5.0/gems/quantile-0.2.1/LICENSE +191 -0
  140. data/vendor/bundle/jruby/2.5.0/gems/quantile-0.2.1/README.md +55 -0
  141. data/vendor/bundle/jruby/2.5.0/gems/quantile-0.2.1/lib/quantile.rb +17 -0
  142. data/vendor/bundle/jruby/2.5.0/gems/quantile-0.2.1/lib/quantile/estimator.rb +186 -0
  143. data/vendor/bundle/jruby/2.5.0/gems/quantile-0.2.1/lib/quantile/quantile.rb +66 -0
  144. data/vendor/bundle/jruby/2.5.0/gems/quantile-0.2.1/lib/quantile/version.rb +16 -0
  145. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/LICENSE.txt +22 -0
  146. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/NEWS.md +178 -0
  147. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/README.md +48 -0
  148. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/context.rdoc +143 -0
  149. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/child.rdoc +87 -0
  150. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/document.rdoc +276 -0
  151. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/element.rdoc +602 -0
  152. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/node.rdoc +97 -0
  153. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/parent.rdoc +267 -0
  154. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/child_toc.rdoc +12 -0
  155. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/document_toc.rdoc +30 -0
  156. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/element_toc.rdoc +55 -0
  157. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/master_toc.rdoc +135 -0
  158. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/node_toc.rdoc +16 -0
  159. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/parent_toc.rdoc +25 -0
  160. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml.rb +3 -0
  161. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/attlistdecl.rb +63 -0
  162. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/attribute.rb +205 -0
  163. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/cdata.rb +68 -0
  164. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/child.rb +97 -0
  165. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/comment.rb +80 -0
  166. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/doctype.rb +311 -0
  167. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/document.rb +451 -0
  168. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/dtd/attlistdecl.rb +11 -0
  169. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/dtd/dtd.rb +47 -0
  170. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/dtd/elementdecl.rb +18 -0
  171. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/dtd/entitydecl.rb +57 -0
  172. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/dtd/notationdecl.rb +40 -0
  173. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/element.rb +2599 -0
  174. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/encoding.rb +51 -0
  175. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/entity.rb +171 -0
  176. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/formatters/default.rb +116 -0
  177. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/formatters/pretty.rb +142 -0
  178. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/formatters/transitive.rb +58 -0
  179. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/functions.rb +447 -0
  180. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/instruction.rb +79 -0
  181. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/light/node.rb +188 -0
  182. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/namespace.rb +59 -0
  183. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/node.rb +76 -0
  184. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/output.rb +30 -0
  185. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/parent.rb +166 -0
  186. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/parseexception.rb +52 -0
  187. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/parsers/baseparser.rb +694 -0
  188. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/parsers/lightparser.rb +59 -0
  189. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/parsers/pullparser.rb +197 -0
  190. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/parsers/sax2parser.rb +273 -0
  191. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/parsers/streamparser.rb +61 -0
  192. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/parsers/treeparser.rb +101 -0
  193. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/parsers/ultralightparser.rb +57 -0
  194. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/parsers/xpathparser.rb +689 -0
  195. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/quickpath.rb +266 -0
  196. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/rexml.rb +37 -0
  197. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/sax2listener.rb +98 -0
  198. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/security.rb +28 -0
  199. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/source.rb +298 -0
  200. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/streamlistener.rb +93 -0
  201. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/text.rb +424 -0
  202. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/undefinednamespaceexception.rb +9 -0
  203. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/validation/relaxng.rb +539 -0
  204. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/validation/validation.rb +144 -0
  205. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/validation/validationexception.rb +10 -0
  206. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/xmldecl.rb +130 -0
  207. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/xmltokens.rb +85 -0
  208. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/xpath.rb +81 -0
  209. data/vendor/bundle/jruby/2.5.0/gems/rexml-3.2.5/lib/rexml/xpath_parser.rb +974 -0
  210. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/CHANGELOG.md +1894 -0
  211. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/Gemfile +9 -0
  212. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/LICENSE +20 -0
  213. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/README.md +1176 -0
  214. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/Rakefile +38 -0
  215. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock.rb +59 -0
  216. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/api.rb +109 -0
  217. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/assertion_failure.rb +11 -0
  218. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/callback_registry.rb +35 -0
  219. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/config.rb +18 -0
  220. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/cucumber.rb +10 -0
  221. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/deprecation.rb +9 -0
  222. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/errors.rb +17 -0
  223. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/async_http_client_adapter.rb +216 -0
  224. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/curb_adapter.rb +351 -0
  225. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +231 -0
  226. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/excon_adapter.rb +165 -0
  227. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/http_lib_adapter.rb +7 -0
  228. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb +19 -0
  229. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/http_rb/client.rb +17 -0
  230. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/http_rb/request.rb +16 -0
  231. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/http_rb/response.rb +64 -0
  232. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/http_rb/streamer.rb +29 -0
  233. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/http_rb/webmock.rb +68 -0
  234. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/http_rb_adapter.rb +37 -0
  235. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/httpclient_adapter.rb +259 -0
  236. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/manticore_adapter.rb +145 -0
  237. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/net_http.rb +385 -0
  238. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/net_http_response.rb +34 -0
  239. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/patron_adapter.rb +130 -0
  240. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +174 -0
  241. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/matchers/any_arg_matcher.rb +13 -0
  242. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/matchers/hash_argument_matcher.rb +21 -0
  243. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/matchers/hash_excluding_matcher.rb +15 -0
  244. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/matchers/hash_including_matcher.rb +17 -0
  245. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/minitest.rb +41 -0
  246. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/rack_response.rb +69 -0
  247. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/request_body_diff.rb +64 -0
  248. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/request_execution_verifier.rb +77 -0
  249. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/request_pattern.rb +405 -0
  250. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/request_registry.rb +35 -0
  251. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/request_signature.rb +54 -0
  252. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/request_signature_snippet.rb +61 -0
  253. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/request_stub.rb +100 -0
  254. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/response.rb +159 -0
  255. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/responses_sequence.rb +40 -0
  256. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/rspec.rb +42 -0
  257. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/rspec/matchers.rb +27 -0
  258. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/rspec/matchers/request_pattern_matcher.rb +78 -0
  259. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/rspec/matchers/webmock_matcher.rb +67 -0
  260. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/stub_registry.rb +82 -0
  261. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/stub_request_snippet.rb +38 -0
  262. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/test_unit.rb +20 -0
  263. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/util/hash_counter.rb +39 -0
  264. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/util/hash_keys_stringifier.rb +25 -0
  265. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/util/hash_validator.rb +17 -0
  266. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/util/headers.rb +64 -0
  267. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/util/json.rb +67 -0
  268. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/util/query_mapper.rb +281 -0
  269. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/util/uri.rb +111 -0
  270. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/util/values_stringifier.rb +20 -0
  271. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/util/version_checker.rb +111 -0
  272. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/version.rb +3 -0
  273. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/lib/webmock/webmock.rb +163 -0
  274. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/minitest/test_helper.rb +34 -0
  275. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/minitest/test_webmock.rb +9 -0
  276. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/minitest/webmock_spec.rb +60 -0
  277. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/async_http_client/async_http_client_spec.rb +375 -0
  278. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/async_http_client/async_http_client_spec_helper.rb +73 -0
  279. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/curb/curb_spec.rb +499 -0
  280. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/curb/curb_spec_helper.rb +147 -0
  281. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/em_http_request/em_http_request_spec.rb +462 -0
  282. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +77 -0
  283. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/excon/excon_spec.rb +77 -0
  284. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/excon/excon_spec_helper.rb +52 -0
  285. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/http_rb/http_rb_spec.rb +93 -0
  286. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/http_rb/http_rb_spec_helper.rb +54 -0
  287. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/httpclient/httpclient_spec.rb +217 -0
  288. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/httpclient/httpclient_spec_helper.rb +57 -0
  289. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/manticore/manticore_spec.rb +107 -0
  290. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/manticore/manticore_spec_helper.rb +35 -0
  291. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/net_http/net_http_shared.rb +153 -0
  292. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/net_http/net_http_spec.rb +369 -0
  293. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/net_http/net_http_spec_helper.rb +64 -0
  294. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/net_http/real_net_http_spec.rb +20 -0
  295. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/patron/patron_spec.rb +125 -0
  296. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/patron/patron_spec_helper.rb +54 -0
  297. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +313 -0
  298. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/shared/callbacks.rb +148 -0
  299. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/shared/complex_cross_concern_behaviors.rb +36 -0
  300. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/shared/enabling_and_disabling_webmock.rb +95 -0
  301. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/shared/precedence_of_stubs.rb +15 -0
  302. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/shared/request_expectations.rb +930 -0
  303. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/shared/returning_declared_responses.rb +409 -0
  304. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/shared/stubbing_requests.rb +678 -0
  305. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +135 -0
  306. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +60 -0
  307. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/acceptance/webmock_shared.rb +41 -0
  308. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/fixtures/test.txt +1 -0
  309. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/quality_spec.rb +84 -0
  310. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/spec_helper.rb +48 -0
  311. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/support/example_curl_output.txt +22 -0
  312. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/support/failures.rb +9 -0
  313. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/support/my_rack_app.rb +53 -0
  314. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/support/network_connection.rb +19 -0
  315. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/support/webmock_server.rb +70 -0
  316. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/api_spec.rb +175 -0
  317. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/errors_spec.rb +129 -0
  318. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/http_lib_adapters/http_lib_adapter_registry_spec.rb +17 -0
  319. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/http_lib_adapters/http_lib_adapter_spec.rb +12 -0
  320. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/matchers/hash_excluding_matcher_spec.rb +61 -0
  321. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/matchers/hash_including_matcher_spec.rb +87 -0
  322. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/rack_response_spec.rb +112 -0
  323. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/request_body_diff_spec.rb +90 -0
  324. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/request_execution_verifier_spec.rb +208 -0
  325. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/request_pattern_spec.rb +736 -0
  326. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/request_registry_spec.rb +95 -0
  327. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/request_signature_snippet_spec.rb +89 -0
  328. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/request_signature_spec.rb +155 -0
  329. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/request_stub_spec.rb +199 -0
  330. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/response_spec.rb +286 -0
  331. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/stub_registry_spec.rb +103 -0
  332. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/stub_request_snippet_spec.rb +115 -0
  333. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/util/hash_counter_spec.rb +39 -0
  334. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/util/hash_keys_stringifier_spec.rb +27 -0
  335. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/util/headers_spec.rb +28 -0
  336. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/util/json_spec.rb +33 -0
  337. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/util/query_mapper_spec.rb +157 -0
  338. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/util/uri_spec.rb +371 -0
  339. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/util/version_checker_spec.rb +65 -0
  340. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/spec/unit/webmock_spec.rb +60 -0
  341. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/test/http_request.rb +24 -0
  342. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/test/shared_test.rb +108 -0
  343. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/test/test_helper.rb +23 -0
  344. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/test/test_webmock.rb +12 -0
  345. data/vendor/bundle/jruby/2.5.0/gems/webmock-3.13.0/webmock.gemspec +54 -0
  346. data/vendor/bundle/jruby/2.5.0/specifications/addressable-2.7.0.gemspec +39 -0
  347. data/vendor/bundle/jruby/2.5.0/specifications/{connection_pool-2.2.3.gemspec → connection_pool-2.2.5.gemspec} +4 -3
  348. data/vendor/bundle/jruby/2.5.0/specifications/crack-0.4.5.gemspec +32 -0
  349. data/vendor/bundle/jruby/2.5.0/specifications/hashdiff-1.0.1.gemspec +46 -0
  350. data/vendor/bundle/jruby/2.5.0/specifications/{net-http-persistent-4.0.0.gemspec → net-http-persistent-4.0.1.gemspec} +4 -5
  351. data/vendor/bundle/jruby/2.5.0/specifications/public_suffix-4.0.6.gemspec +24 -0
  352. data/vendor/bundle/jruby/2.5.0/specifications/quantile-0.2.1.gemspec +20 -0
  353. data/vendor/bundle/jruby/2.5.0/specifications/rexml-3.2.5.gemspec +42 -0
  354. data/vendor/bundle/jruby/2.5.0/specifications/webmock-3.13.0.gemspec +85 -0
  355. metadata +367 -32
  356. data/vendor/bundle/jruby/2.5.0/cache/connection_pool-2.2.3.gem +0 -0
  357. data/vendor/bundle/jruby/2.5.0/cache/net-http-persistent-4.0.0.gem +0 -0
@@ -1,3 +1,5 @@
1
+ require "scalyr/constants"
2
+
1
3
  module Scalyr; module Common; module Client
2
4
 
3
5
  #---------------------------------------------------------------------------------------------------------------------
@@ -52,7 +54,9 @@ end
52
54
  class ClientSession
53
55
 
54
56
  def initialize(logger, add_events_uri, compression_type, compression_level,
55
- ssl_verify_peer, ssl_ca_bundle_path, ssl_verify_depth, append_builtin_cert)
57
+ ssl_verify_peer, ssl_ca_bundle_path, append_builtin_cert,
58
+ record_stats_for_status, flush_quantile_estimates_on_status_send,
59
+ connect_timeout, socket_timeout, request_timeout, pool_max, pool_max_per_route)
56
60
  @logger = logger
57
61
  @add_events_uri = add_events_uri # typically /addEvents
58
62
  @compression_type = compression_type
@@ -60,7 +64,13 @@ class ClientSession
60
64
  @ssl_verify_peer = ssl_verify_peer
61
65
  @ssl_ca_bundle_path = ssl_ca_bundle_path
62
66
  @append_builtin_cert = append_builtin_cert
63
- @ssl_verify_depth = ssl_verify_depth
67
+ @record_stats_for_status = record_stats_for_status
68
+ @flush_quantile_estimates_on_status_send = flush_quantile_estimates_on_status_send
69
+ @connect_timeout = connect_timeout
70
+ @socket_timeout = socket_timeout
71
+ @request_timeout = request_timeout
72
+ @pool_max = pool_max
73
+ @pool_max_per_route = pool_max_per_route
64
74
 
65
75
  # A cert to use by default to avoid issues caused by the OpenSSL library not validating certs according to standard
66
76
  @cert_string = "" \
@@ -106,6 +116,7 @@ class ClientSession
106
116
 
107
117
  # Request statistics are accumulated across multiple threads and must be accessed through a mutex
108
118
  @stats_lock = Mutex.new
119
+ @latency_stats = get_new_latency_stats
109
120
  @stats = {
110
121
  :total_requests_sent => 0, # The total number of RPC requests sent.
111
122
  :total_requests_failed => 0, # The total number of RPC requests that failed.
@@ -115,13 +126,36 @@ class ClientSession
115
126
  :total_request_latency_secs => 0, # The total number of secs spent waiting for a responses (so average latency
116
127
  # can be calculated by dividing this number by @total_requests_sent).
117
128
  # This includes connection establishment time.
118
- :total_connections_created => 0, # The total number of HTTP connections successfully created.
129
+ :total_serialization_duration_secs => 0, # The total duration (in seconds) it took to serialize (JSON dumos) all the request bodies.
130
+ # You can calculate avg compression duration by diving this value with total_requests_sent
131
+ :total_compression_duration_secs => 0, # The total duration (in seconds) it took to compress all the request bodies.
132
+ # You can calculate avg compression duration by diving this value with total_requests_sent
133
+ :compression_type => @compression_type,
134
+ :compression_level => @compression_level,
119
135
  }
136
+ end # def initialize
120
137
 
121
- @http = Net::HTTP::Persistent.new
138
+ def client_config
139
+ # TODO: Eventually expose some more of these as config options, though nothing here really needs tuning normally
140
+ # besides SSL
141
+ c = {
142
+ connect_timeout: @connect_timeout,
143
+ socket_timeout: @socket_timeout,
144
+ request_timeout: @request_timeout,
145
+ follow_redirects: true,
146
+ automatic_retries: 1,
147
+ retry_non_idempotent: false,
148
+ check_connection_timeout: 200,
149
+ pool_max: @pool_max,
150
+ pool_max_per_route: @pool_max_per_route,
151
+ cookies: true,
152
+ keepalive: true,
153
+ ssl: {}
154
+ }
122
155
 
123
156
  # verify peers to prevent potential MITM attacks
124
157
  if @ssl_verify_peer
158
+ c[:ssl][:verify] = :strict
125
159
  @ca_cert = Tempfile.new("ca_cert")
126
160
  if File.file?(@ssl_ca_bundle_path)
127
161
  @ca_cert.write(File.read(@ssl_ca_bundle_path))
@@ -133,75 +167,109 @@ class ClientSession
133
167
  end
134
168
  end
135
169
  @ca_cert.flush
136
- @http.ca_file = @ca_cert.path
137
- @http.verify_mode = OpenSSL::SSL::VERIFY_PEER
138
- @http.verify_depth = @ssl_verify_depth
170
+ c[:ssl][:ca_file] = @ca_cert.path
139
171
  else
140
- @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
172
+ c[:ssl][:verify] = :disable
141
173
  end
142
- end # def initialize
143
174
 
175
+ c
176
+ end
144
177
 
178
+ def client
179
+ @client ||= Manticore::Client.new(client_config)
180
+ end
181
+
182
+ # Convenience method to create a fresh quantile estimator
183
+ def get_new_latency_stats
184
+ return {
185
+ # The total number of HTTP connections successfully created.
186
+ :serialization_duration_secs => Quantile::Estimator.new, # The duration (in seconds) it took to serialize (JSON dumos) all the request bodies.
187
+ :compression_duration_secs => Quantile::Estimator.new, # The duration (in seconds) it took to compress all the request bodies.
188
+ :request_latency_secs => Quantile::Estimator.new, # Secs spent waiting for a responses. This includes connection establishment time.
189
+ :bytes_sent => Quantile::Estimator.new # The number of bytes sent over the network. Batch size with a bit more overhead.
190
+ }
191
+ end
145
192
 
146
- # Get a clone of current statistics hash
193
+ # Get a clone of current statistics hash and calculate percentiles
147
194
  def get_stats
148
- @stats.clone
195
+ @stats_lock.synchronize do
196
+ current_stats = @stats.clone
197
+
198
+ current_stats[:request_latency_p50] = @latency_stats[:request_latency_secs].query(0.5)
199
+ current_stats[:request_latency_p90] = @latency_stats[:request_latency_secs].query(0.9)
200
+ current_stats[:request_latency_p99] = @latency_stats[:request_latency_secs].query(0.99)
201
+ current_stats[:serialization_duration_secs_p50] = @latency_stats[:serialization_duration_secs].query(0.5)
202
+ current_stats[:serialization_duration_secs_p90] = @latency_stats[:serialization_duration_secs].query(0.9)
203
+ current_stats[:serialization_duration_secs_p99] = @latency_stats[:serialization_duration_secs].query(0.99)
204
+ current_stats[:compression_duration_secs_p50] = @latency_stats[:compression_duration_secs].query(0.5)
205
+ current_stats[:compression_duration_secs_p90] = @latency_stats[:compression_duration_secs].query(0.9)
206
+ current_stats[:compression_duration_secs_p99] = @latency_stats[:compression_duration_secs].query(0.99)
207
+ current_stats[:bytes_sent_p50] = @latency_stats[:bytes_sent].query(0.5)
208
+ current_stats[:bytes_sent_p90] = @latency_stats[:bytes_sent].query(0.9)
209
+ current_stats[:bytes_sent_p99] = @latency_stats[:bytes_sent].query(0.99)
210
+
211
+ if @flush_quantile_estimates_on_status_send
212
+ @logger.debug "Recreating / reseting quantile estimator classes for plugin metrics"
213
+ @latency_stats = get_new_latency_stats
214
+ end
215
+ current_stats
216
+ end
149
217
  end
150
218
 
151
219
 
152
220
 
153
221
  # Upload data to Scalyr. Assumes that the body size complies with Scalyr limits
154
- def post_add_events(body)
155
- post = prepare_post_object @add_events_uri.path, body
222
+ def post_add_events(body, is_status, body_serialization_duration = 0)
223
+ post_body, post_headers, compression_duration = prepare_post_object @add_events_uri.path, body
156
224
  fail_count = 1 # putative assume failure
157
225
  start_time = Time.now
158
226
  uncompressed_bytes_sent = 0
159
227
  compressed_bytes_sent = 0
160
228
  bytes_received = 0
161
229
  begin
162
- response = @http.request(@add_events_uri, post)
230
+ response = client.send(:post, @add_events_uri, body: post_body, headers: post_headers)
163
231
  handle_response(response)
164
232
 
165
233
  fail_count -= 1 # success means we negate the putative failure
166
234
  uncompressed_bytes_sent = (body.bytesize + @add_events_uri.path.bytesize)
167
- compressed_bytes_sent = (post.body.bytesize + @add_events_uri.path.bytesize)
235
+ compressed_bytes_sent = (post_body.bytesize + @add_events_uri.path.bytesize)
168
236
  bytes_received = response.body.bytesize # echee: double check
169
237
  # echee TODO add more statistics
170
238
 
239
+ # TODO: Manticore doesn't raise SSL errors as this but as "UnknownExceptions", need to dig in and see if there is a
240
+ # way to detect that it is from SSL.
171
241
  rescue OpenSSL::SSL::SSLError => e
172
- if @ssl_verify_peer and @ssl_ca_bundle_path.nil? and !File.file?(@ca_cert.path)
173
- @ca_cert = Tempfile.new("ca_cert")
174
- @ca_cert.write(@cert_string)
175
- @ca_cert.flush
176
- @http.ca_file = @ca_cert.path
177
- raise ClientError.new("Packaged certificate appears to have been deleted, writing a new one.", @add_events_uri)
178
- else
179
- raise e
180
- end
242
+ raise e
181
243
 
182
- rescue Net::HTTP::Persistent::Error => e
244
+ rescue Manticore::ManticoreException => e
183
245
  # The underlying persistent-connection library automatically retries when there are network-related errors.
184
246
  # Eventually, it will give up and raise this generic error, at which time, we convert it to a ClientError
185
247
  raise ClientError.new(e.message, @add_events_uri)
186
248
 
187
249
  ensure
188
- @stats_lock.synchronize do
189
- @stats[:total_requests_sent] += 1
190
- @stats[:total_requests_failed] += fail_count
191
- @stats[:total_request_bytes_sent] += uncompressed_bytes_sent
192
- @stats[:total_compressed_request_bytes_sent] += compressed_bytes_sent
193
- @stats[:total_response_bytes_received] += bytes_received
194
- end_time = Time.now
195
- @stats[:total_request_latency_secs] += (end_time - start_time)
250
+ if @record_stats_for_status or !is_status
251
+ @stats_lock.synchronize do
252
+ @stats[:total_requests_sent] += 1
253
+ @stats[:total_requests_failed] += fail_count
254
+ @stats[:total_request_bytes_sent] += uncompressed_bytes_sent
255
+ @stats[:total_compressed_request_bytes_sent] += compressed_bytes_sent
256
+ @stats[:total_response_bytes_received] += bytes_received
257
+ @stats[:total_serialization_duration_secs] += body_serialization_duration
258
+ @stats[:total_compression_duration_secs] += compression_duration
259
+ end_time = Time.now
260
+ @stats[:total_request_latency_secs] += (end_time - start_time)
261
+ @latency_stats[:request_latency_secs].observe(end_time - start_time)
262
+ @latency_stats[:serialization_duration_secs].observe(body_serialization_duration)
263
+ @latency_stats[:compression_duration_secs].observe(compression_duration)
264
+ @latency_stats[:bytes_sent].observe(uncompressed_bytes_sent)
265
+ end
196
266
  end
197
-
198
267
  end
199
268
  end # def post_request
200
269
 
201
270
 
202
271
 
203
272
  def close
204
- @http.shutdown
205
273
  end # def close
206
274
 
207
275
 
@@ -211,7 +279,9 @@ class ClientSession
211
279
  def prepare_post_object(uri_path, body)
212
280
  # use compression if enabled
213
281
  encoding = nil
282
+ compression_duration = 0
214
283
  if @compression_type
284
+ start_time = Time.now.to_f
215
285
  if @compression_type == 'deflate'
216
286
  encoding = 'deflate'
217
287
  compressed_body = Zlib::Deflate.deflate(body, @compression_level)
@@ -223,20 +293,24 @@ class ClientSession
223
293
  bz2.close
224
294
  compressed_body = io.string
225
295
  end
296
+ end_time = Time.now.to_f
297
+ compression_duration = end_time - start_time
226
298
  end
227
299
 
228
- post = Net::HTTP::Post.new uri_path
229
- post.add_field('Content-Type', 'application/json')
230
- version = 'output-logstash-scalyr 0.1.6'
231
- post.add_field('User-Agent', version + ';' + RUBY_VERSION + ';' + RUBY_PLATFORM)
300
+ version = sprintf('output-logstash-scalyr %s' % [PLUGIN_VERSION])
301
+ post_headers = {
302
+ 'Content-Type': 'application/json',
303
+ 'User-Agent': version + ';' + RUBY_VERSION + ';' + RUBY_PLATFORM
304
+ }
232
305
 
306
+ post_body = nil
233
307
  if not encoding.nil?
234
- post.add_field('Content-Encoding', encoding)
235
- post.body = compressed_body
308
+ post_headers['Content-Encoding'] = encoding
309
+ post_body = compressed_body
236
310
  else
237
- post.body = body
311
+ post_body = body
238
312
  end
239
- post
313
+ return post_body, post_headers, compression_duration
240
314
  end # def prepare_post_object
241
315
 
242
316
 
@@ -0,0 +1,2 @@
1
+ # encoding: utf-8
2
+ PLUGIN_VERSION = "v0.1.11.beta"
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-output-scalyr'
3
- s.version = '0.1.6'
3
+ s.version = '0.1.11.beta'
4
4
  s.licenses = ['Apache-2.0']
5
5
  s.summary = "Scalyr output plugin for Logstash"
6
6
  s.description = "Sends log data collected by Logstash to Scalyr (https://www.scalyr.com)"
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.add_runtime_dependency 'net-http-persistent'
23
23
  s.add_runtime_dependency 'logstash-core-plugin-api', '>= 1.60', '<= 2.99'
24
24
  s.add_runtime_dependency 'logstash-codec-plain'
25
+ s.add_runtime_dependency 'quantile'
25
26
  s.add_runtime_dependency 'ffi', '>= 1.9.18'
26
27
  s.add_runtime_dependency 'rbzip2', '0.3.0'
27
28
  s.add_development_dependency 'logstash-devutils'
@@ -0,0 +1,125 @@
1
+ require 'benchmark'
2
+ require 'json'
3
+
4
+ require_relative '../../lib/scalyr/common/util'
5
+
6
+ # NOTE: When using jRuby using multiple iterations with the same dataset doesn't make
7
+ # sense since it will just use JITed version of the code which will be very fast. If we
8
+ # wanted to accurately measure using multiple iterations we would need te different
9
+ # input data for each iteration.
10
+ ITERATIONS = 500
11
+
12
+ def rand_str(len)
13
+ return (0...len).map { (65 + rand(26)).chr }.join
14
+ end
15
+
16
+ def generate_hash(widths)
17
+ result = {}
18
+ if widths.empty?
19
+ return rand_str(20)
20
+ else
21
+ widths[0].times do
22
+ result[rand_str(9)] = generate_hash(widths[1..widths.length])
23
+ end
24
+ return result
25
+ end
26
+ end
27
+
28
+ def generate_data_array_for_spec(spec)
29
+ data = []
30
+ ITERATIONS.times do
31
+ data << generate_hash(spec)
32
+ end
33
+
34
+ data
35
+ end
36
+
37
+ def run_benchmark_and_print_results(data, run_benchmark_func)
38
+ puts ""
39
+ puts "Using %s total keys in a hash" % [Scalyr::Common::Util.flatten(data[0]).count]
40
+ puts ""
41
+
42
+ result = []
43
+ ITERATIONS.times do |i|
44
+ result << Benchmark.measure { run_benchmark_func.(data[0]) }
45
+ end
46
+
47
+ sum = result.inject(nil) { |sum, t| sum.nil? ? sum = t : sum += t }
48
+ avg = sum / result.size
49
+
50
+ Benchmark.bm(7, "sum:", "avg:") do |b|
51
+ [sum, avg]
52
+ end
53
+ puts ""
54
+ end
55
+
56
+ def flatten_data_func(data)
57
+ Scalyr::Common::Util.flatten(data)
58
+ end
59
+
60
+ def json_serialize_data(data)
61
+ data.to_json
62
+ end
63
+
64
+ DATASETS = {
65
+ :keys_50 => generate_data_array_for_spec([3, 3, 3, 2]),
66
+ :keys_200 => generate_data_array_for_spec([4, 4, 3, 4]),
67
+ :keys_200_flat => generate_data_array_for_spec([200]),
68
+ :keys_512 => generate_data_array_for_spec([8, 4, 4, 4]),
69
+ :keys_960 => generate_data_array_for_spec([12, 5, 4, 4]),
70
+ :keys_2700 => generate_data_array_for_spec([14, 8, 6, 4])
71
+ }
72
+
73
+
74
+ puts "Using %s iterations" % [ITERATIONS]
75
+ puts ""
76
+
77
+ puts "Scalyr::Common::Util.flatten()"
78
+ puts "==============================="
79
+
80
+ # Around ~50 keys in a hash
81
+ data = DATASETS[:keys_50]
82
+ run_benchmark_and_print_results(data, method(:flatten_data_func))
83
+
84
+ # Around ~200 keys in a hash
85
+ data = DATASETS[:keys_200]
86
+ run_benchmark_and_print_results(data, method(:flatten_data_func))
87
+
88
+ # Around ~200 keys in a hash (single level)
89
+ data = DATASETS[:keys_200_flat]
90
+ run_benchmark_and_print_results(data, method(:flatten_data_func))
91
+
92
+ # Around ~512 keys in a hash
93
+ data = DATASETS[:keys_512]
94
+ run_benchmark_and_print_results(data, method(:flatten_data_func))
95
+
96
+ # Around ~960 keys in a hash
97
+ data = DATASETS[:keys_960]
98
+ run_benchmark_and_print_results(data, method(:flatten_data_func))
99
+
100
+ # Around ~2700 keys in a hash
101
+ data = DATASETS[:keys_2700]
102
+ run_benchmark_and_print_results(data, method(:flatten_data_func))
103
+
104
+ puts "JSON.dumps (hash.to_dict)"
105
+ puts "==============================="
106
+
107
+ # Around ~200 keys in a hash
108
+ data = generate_data_array_for_spec([4, 4, 3, 4])
109
+ run_benchmark_and_print_results(data, method(:json_serialize_data))
110
+
111
+ # Around ~200 keys in a hash (single level)
112
+ data = DATASETS[:keys_200_flat]
113
+ run_benchmark_and_print_results(data, method(:json_serialize_data))
114
+
115
+ # Around ~512 keys in a hash
116
+ data = generate_data_array_for_spec([8, 4, 4, 4])
117
+ run_benchmark_and_print_results(data, method(:json_serialize_data))
118
+
119
+ # Around ~960 keys in a hash
120
+ data = generate_data_array_for_spec([12, 5, 4, 4])
121
+ run_benchmark_and_print_results(data, method(:json_serialize_data))
122
+
123
+ # Around ~2700 keys in a hash
124
+ data = generate_data_array_for_spec([14, 8, 6, 4])
125
+ run_benchmark_and_print_results(data, method(:json_serialize_data))
@@ -0,0 +1,48 @@
1
+ require 'benchmark'
2
+ require 'quantile'
3
+
4
+ require_relative '../../lib/scalyr/common/util'
5
+
6
+ # Micro benchmark which measures how much overhead Quantile.observe adds vs random sampling to see
7
+ # where making sampling (e.g. on event level metrics) is desired
8
+
9
+ ITERATIONS = 10000
10
+
11
+ def run_benchmark_and_print_results(run_benchmark_func)
12
+ result = []
13
+ ITERATIONS.times do |i|
14
+ result << Benchmark.measure { run_benchmark_func.() }
15
+ end
16
+
17
+ sum = result.inject(nil) { |sum, t| sum.nil? ? sum = t : sum += t }
18
+ avg = sum / result.size
19
+
20
+ Benchmark.bm(7, "sum:", "avg:") do |b|
21
+ [sum, avg]
22
+ end
23
+ puts ""
24
+ end
25
+
26
+
27
+ puts "Using %s iterations" % [ITERATIONS]
28
+ puts ""
29
+
30
+ @value = Quantile::Estimator.new
31
+ @prng = Random.new
32
+
33
+ def quantile_observe()
34
+ @value.observe(5)
35
+ end
36
+
37
+ def random_sample()
38
+ return @prng.rand(0.0..1.0) < 0.5
39
+ end
40
+
41
+ puts "Quartile.observe()"
42
+ puts "==============================="
43
+
44
+ run_benchmark_and_print_results(method(:quantile_observe))
45
+
46
+ puts "random sample"
47
+ puts "==============================="
48
+ run_benchmark_and_print_results(method(:random_sample))