From 595ec06812ade9146d0a5e5dae42aa4216e64fba Mon Sep 17 00:00:00 2001 From: Jeff Cantrill Date: Thu, 18 Jul 2019 11:10:51 -0500 Subject: [PATCH] Bug 1726639: Consume new viaq plugin to not set level based on stream --- fluentd/Dockerfile | 4 +- fluentd/Dockerfile.centos7 | 2 +- fluentd/rh-manifest.txt | 18 +- .../activesupport/activesupport.gemspec | 14 +- .../addressable/addressable.gemspec | 14 +- .../concurrent-ruby/concurrent-ruby.gemspec | 2 +- .../vendored_gem_src/domain_name/CHANGELOG.md | 10 + fluentd/vendored_gem_src/domain_name/Rakefile | 27 +- .../domain_name/data/public_suffix_list.dat | 935 ++++++++++++++---- .../domain_name/lib/domain_name/etld_data.rb | 409 +++++++- .../domain_name/lib/domain_name/version.rb | 2 +- .../elasticsearch-api/README.md | 1 + .../elasticsearch-api/Rakefile | 32 +- .../elasticsearch/api/actions/field_caps.rb | 3 +- .../elasticsearch/api/actions/get_source.rb | 4 +- .../api/actions/indices/stats.rb | 4 +- .../api/actions/indices/upgrade.rb | 1 + .../lib/elasticsearch/api/version.rb | 2 +- .../api/actions/get_document_source_spec.rb | 6 +- .../elasticsearch/api/rest_api_yaml_spec.rb | 164 +++ .../spec/elasticsearch/api/utils_spec.rb | 2 +- .../spec/rest_yaml_tests_helper.rb | 94 ++ .../elasticsearch-api/spec/spec_helper.rb | 31 +- .../elasticsearch-transport/README.md | 11 + .../elasticsearch-transport.gemspec | 1 + .../lib/elasticsearch/transport/client.rb | 29 +- .../elasticsearch/transport/transport/base.rb | 70 +- .../transport/connections/selector.rb | 22 +- .../transport/transport/http/curb.rb | 31 +- .../transport/transport/http/faraday.rb | 16 +- .../transport/transport/http/manticore.rb | 31 +- .../lib/elasticsearch/transport/version.rb | 2 +- .../connections/collection_spec.rb | 254 +++++ .../connections/selector_spec.rb | 174 ++++ .../elasticsearch/transport/client_spec.rb | 326 +++++- .../spec/spec_helper.rb | 6 + .../test/unit/connection_collection_test.rb | 147 --- .../test/unit/connection_selector_test.rb | 81 -- .../test/unit/transport_curb_test.rb | 2 +- .../test/unit/transport_manticore_test.rb | 38 +- .../vendored_gem_src/elasticsearch/README.md | 1 + .../elasticsearch/elasticsearch.gemspec | 4 +- .../lib/elasticsearch/version.rb | 2 +- .../vendored_gem_src/faraday/faraday.gemspec | 8 +- .../fluent-plugin-systemd.gemspec | 8 +- .../fluent-plugin-viaq_data_model/README.md | 4 +- .../fluent-plugin-viaq_data_model.gemspec | 2 +- .../fluent/plugin/filter_viaq_data_model.rb | 8 +- .../plugin/filter_viaq_data_model_systemd.rb | 43 +- .../test/test_filter_viaq_data_model.rb | 58 +- .../fluentd/.github/ISSUE_TEMPLATE.md | 21 +- .../.github/ISSUE_TEMPLATE/bug_report.md | 39 + .../.github/ISSUE_TEMPLATE/feature_request.md | 23 + fluentd/vendored_gem_src/fluentd/CHANGELOG.md | 59 ++ .../vendored_gem_src/fluentd/CONTRIBUTING.md | 2 +- fluentd/vendored_gem_src/fluentd/Gemfile | 5 + fluentd/vendored_gem_src/fluentd/README.md | 2 +- fluentd/vendored_gem_src/fluentd/Rakefile | 7 +- fluentd/vendored_gem_src/fluentd/appveyor.yml | 19 +- .../fluentd/lib/fluent/command/ca_generate.rb | 2 +- .../fluentd/lib/fluent/command/fluentd.rb | 4 + .../fluent/command/plugin_config_formatter.rb | 8 +- .../lib/fluent/config/literal_parser.rb | 4 +- .../fluentd/lib/fluent/plugin/base.rb | 1 + .../fluentd/lib/fluent/plugin/buffer.rb | 34 + .../fluentd/lib/fluent/plugin/in_forward.rb | 4 +- .../lib/fluent/plugin/in_monitor_agent.rb | 221 ++--- .../fluentd/lib/fluent/plugin/out_forward.rb | 51 +- .../fluentd/lib/fluent/plugin/output.rb | 38 +- .../fluentd/lib/fluent/plugin/parser_none.rb | 3 +- .../fluentd/lib/fluent/plugin_helper.rb | 1 + .../lib/fluent/plugin_helper/cert_option.rb | 6 +- .../lib/fluent/plugin_helper/http_server.rb | 76 ++ .../fluent/plugin_helper/http_server/app.rb | 79 ++ .../http_server/compat/server.rb | 81 ++ .../http_server/compat/webrick_handler.rb | 58 ++ .../plugin_helper/http_server/methods.rb | 35 + .../plugin_helper/http_server/request.rb | 42 + .../plugin_helper/http_server/router.rb | 54 + .../plugin_helper/http_server/server.rb | 87 ++ .../lib/fluent/plugin_helper/socket.rb | 12 +- .../fluentd/lib/fluent/supervisor.rb | 7 +- .../fluentd/lib/fluent/time.rb | 13 + .../fluentd/lib/fluent/version.rb | 2 +- .../fluentd/test/command/test_fluentd.rb | 38 +- .../command/test_plugin_config_formatter.rb | 12 +- .../vendored_gem_src/fluentd/test/helper.rb | 1 + .../fluentd/test/helpers/fuzzy_assert.rb | 89 ++ .../fluentd/test/plugin/test_buf_file.rb | 2 +- .../fluentd/test/plugin/test_in_http.rb | 7 +- .../test/plugin/test_in_monitor_agent.rb | 135 ++- .../fluentd/test/plugin/test_in_udp.rb | 2 - .../fluentd/test/plugin/test_out_file.rb | 27 +- .../fluentd/test/plugin/test_out_forward.rb | 82 +- .../test/plugin/test_out_secondary_file.rb | 10 +- .../test/plugin/test_output_as_buffered.rb | 4 + .../plugin/test_output_as_buffered_retries.rb | 2 - .../test_output_as_buffered_secondary.rb | 3 - .../test/plugin_helper/data/cert/cert-key.pem | 27 + .../data/cert/cert-with-no-newline.pem | 19 + .../test/plugin_helper/data/cert/cert.pem | 19 + .../plugin_helper/http_server/test_app.rb | 65 ++ .../plugin_helper/http_server/test_route.rb | 32 + .../test/plugin_helper/test_cert_option.rb | 16 + .../plugin_helper/test_http_server_helper.rb | 205 ++++ .../fluentd/test/plugin_helper/test_server.rb | 8 +- .../fluentd/test/test_event_time.rb | 13 + .../vendored_gem_src/fluentd/test/test_log.rb | 14 +- .../fluentd/test/test_supervisor.rb | 3 + fluentd/vendored_gem_src/i18n/i18n.gemspec | 2 +- .../mime-types-data/mime-types-data.gemspec | 14 +- .../mime-types/mime-types.gemspec | 14 +- .../minitest/minitest.gemspec | 2 +- fluentd/vendored_gem_src/msgpack/.rubocop.yml | 3 + fluentd/vendored_gem_src/msgpack/ChangeLog | 4 + fluentd/vendored_gem_src/msgpack/README.rdoc | 16 + .../msgpack/doclib/msgpack/time.rb | 22 + .../msgpack/doclib/msgpack/timestamp.rb | 44 + .../vendored_gem_src/msgpack/lib/msgpack.rb | 2 + .../msgpack/lib/msgpack/time.rb | 29 + .../msgpack/lib/msgpack/timestamp.rb | 76 ++ .../msgpack/lib/msgpack/version.rb | 2 +- .../msgpack/spec/timestamp_spec.rb | 117 +++ .../multi_json/multi_json.gemspec | 2 +- fluentd/vendored_gem_src/netrc/netrc.gemspec | 2 +- .../prometheus-client.gemspec | 2 +- .../public_suffix/.travis.yml | 7 + .../public_suffix/CHANGELOG.md | 6 + .../vendored_gem_src/public_suffix/README.md | 2 +- .../public_suffix/data/list.txt | 192 ++-- .../lib/public_suffix/version.rb | 2 +- .../public_suffix/public_suffix.gemspec | 2 +- .../quantile/quantile.gemspec | 2 +- .../data/definitions/Africa/Casablanca.rb | 66 ++ .../data/definitions/Africa/El_Aaiun.rb | 66 ++ .../data/definitions/America/Campo_Grande.rb | 100 -- .../tzinfo/data/definitions/America/Cuiaba.rb | 100 -- .../data/definitions/America/Sao_Paulo.rb | 100 -- .../lib/tzinfo/data/definitions/Asia/Gaza.rb | 102 +- .../tzinfo/data/definitions/Asia/Hebron.rb | 102 +- .../tzinfo/data/definitions/Asia/Hong_Kong.rb | 20 +- .../tzinfo/data/definitions/Europe/Rome.rb | 2 +- .../lib/tzinfo/data/indexes/countries.rb | 1 + .../lib/tzinfo/data/tzdataparser.rb | 24 +- .../tzinfo-data/lib/tzinfo/data/version.rb | 4 +- .../tzinfo-data/tzinfo-data.gemspec | 8 +- .../uuidtools/uuidtools.gemspec | 2 +- 147 files changed, 4892 insertions(+), 1466 deletions(-) create mode 100644 fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/rest_api_yaml_spec.rb create mode 100644 fluentd/vendored_gem_src/elasticsearch-api/spec/rest_yaml_tests_helper.rb create mode 100644 fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/connections/collection_spec.rb create mode 100644 fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/connections/selector_spec.rb delete mode 100644 fluentd/vendored_gem_src/elasticsearch-transport/test/unit/connection_collection_test.rb delete mode 100644 fluentd/vendored_gem_src/elasticsearch-transport/test/unit/connection_selector_test.rb create mode 100644 fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE/bug_report.md create mode 100644 fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE/feature_request.md create mode 100644 fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server.rb create mode 100644 fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/app.rb create mode 100644 fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/compat/server.rb create mode 100644 fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb create mode 100644 fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/methods.rb create mode 100644 fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/request.rb create mode 100644 fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/router.rb create mode 100644 fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/server.rb create mode 100644 fluentd/vendored_gem_src/fluentd/test/helpers/fuzzy_assert.rb create mode 100644 fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert-key.pem create mode 100644 fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert-with-no-newline.pem create mode 100644 fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert.pem create mode 100644 fluentd/vendored_gem_src/fluentd/test/plugin_helper/http_server/test_app.rb create mode 100644 fluentd/vendored_gem_src/fluentd/test/plugin_helper/http_server/test_route.rb create mode 100644 fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_cert_option.rb create mode 100644 fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_http_server_helper.rb create mode 100644 fluentd/vendored_gem_src/msgpack/doclib/msgpack/time.rb create mode 100644 fluentd/vendored_gem_src/msgpack/doclib/msgpack/timestamp.rb create mode 100644 fluentd/vendored_gem_src/msgpack/lib/msgpack/time.rb create mode 100644 fluentd/vendored_gem_src/msgpack/lib/msgpack/timestamp.rb create mode 100644 fluentd/vendored_gem_src/msgpack/spec/timestamp_spec.rb diff --git a/fluentd/Dockerfile b/fluentd/Dockerfile index cebcc78f5..0a5883cfe 100644 --- a/fluentd/Dockerfile +++ b/fluentd/Dockerfile @@ -3,7 +3,7 @@ FROM rhscl/ruby-25-rhel7:latest as builder MAINTAINER OpenShift Development ENV DATA_VERSION=1.6.0 \ - FLUENTD_VERSION=1.5.1 \ + FLUENTD_VERSION=1.6.2 \ HOME=/opt/app-root/src \ PATH=/opt/app-root/src/bin:/opt/app-root/bin:$PATH \ LOGGING_FILE_PATH=/var/log/fluentd/fluentd.log \ @@ -43,7 +43,7 @@ RUN cd ${HOME}/vendored_gem_src/ && ./install-gems.sh && cd / && rm -rf ${HOME}/ FROM rhel7:7-released ENV DATA_VERSION=1.6.0 \ - FLUENTD_VERSION=1.5.1 \ + FLUENTD_VERSION=1.6.2 \ HOME=/opt/app-root/src \ PATH=/opt/app-root/src/bin:/opt/app-root/bin:$PATH \ LOGGING_FILE_PATH=/var/log/fluentd/fluentd.log \ diff --git a/fluentd/Dockerfile.centos7 b/fluentd/Dockerfile.centos7 index 8164bb331..89c98a89b 100644 --- a/fluentd/Dockerfile.centos7 +++ b/fluentd/Dockerfile.centos7 @@ -3,7 +3,7 @@ FROM centos/ruby-25-centos7:latest MAINTAINER OpenShift Development ENV DATA_VERSION=1.6.0 \ - FLUENTD_VERSION=1.5.1 \ + FLUENTD_VERSION=1.6.2 \ GEM_HOME=/opt/app-root/src \ HOME=/opt/app-root/src \ PATH=/opt/app-root/src/bin:/opt/app-root/bin:$PATH \ diff --git a/fluentd/rh-manifest.txt b/fluentd/rh-manifest.txt index 73abfe1dd..aa814a55a 100644 --- a/fluentd/rh-manifest.txt +++ b/fluentd/rh-manifest.txt @@ -1,6 +1,6 @@ dig_rb 1.0.1 https://github.com/jrochkind/dig_rb fluent-config-regexp-type 1.0.0 https://github.com/okkez/fluent-config-regexp-type -fluentd 1.5.1 https://www.fluentd.org/ +fluentd 1.6.2 https://www.fluentd.org/ fluent-plugin-concat 2.3.0 https://github.com/fluent-plugins-nursery/fluent-plugin-concat fluent-plugin-multi-format-parser 1.0.0 https://github.com/repeatedly/fluent-plugin-multi-format-parser jemalloc 5.2.0 https://github.com/jemalloc/jemalloc/releases/download/5.2.0/jemalloc-5.2.0.tar.bz2 @@ -8,10 +8,10 @@ rubygem-activesupport 5.2.3 http://rubyonrails.org rubygem-addressable 2.6.0 https://github.com/sporkmonger/addressable rubygem-concurrent-ruby 1.1.5 http://www.concurrent-ruby.com rubygem-cool.io 1.5.4 http://coolio.github.com -rubygem-domain_name 0.5.20180417 https://github.com/knu/ruby-domain_name -rubygem-elasticsearch 7.1.0 http://github.com/elasticsearch/elasticsearch-ruby -rubygem-elasticsearch-api 7.1.0 https://github.com/elasticsearch/elasticsearch-ruby/tree/master/elasticsearch-api -rubygem-elasticsearch-transport 7.1.0 https://github.com/elasticsearch/elasticsearch-ruby/tree/master/elasticsearch-transport +rubygem-domain_name 0.5.20190701 https://github.com/knu/ruby-domain_name +rubygem-elasticsearch 7.2.0 http://github.com/elasticsearch/elasticsearch-ruby +rubygem-elasticsearch-api 7.2.0 https://github.com/elasticsearch/elasticsearch-ruby/tree/master/elasticsearch-api +rubygem-elasticsearch-transport 7.2.0 https://github.com/elasticsearch/elasticsearch-ruby/tree/master/elasticsearch-transport rubygem-excon 0.64.0 https://github.com/excon/excon rubygem-faraday 0.15.4 https://github.com/lostisland/faraday rubygem-ffi 1.11.1 http://wiki.github.com/ffi/ffi @@ -23,7 +23,7 @@ rubygem-fluent-plugin-record-modifier 2.0.1 https://github.com/repeatedly/fluent rubygem-fluent-plugin-remote-syslog 1.1 https://github.com/docebo/fluent-plugin-remote-syslog rubygem-fluent-plugin-rewrite-tag-filter 2.2.0 https://github.com/fluent/fluent-plugin-rewrite-tag-filter rubygem-fluent-plugin-systemd 1.0.2 https://github.com/reevoo/fluent-plugin-systemd -rubygem-fluent-plugin-viaq_data_model 0.0.18 https://github.com/ViaQ/fluent-plugin-viaq_data_model +rubygem-fluent-plugin-viaq_data_model 0.0.19 https://github.com/ViaQ/fluent-plugin-viaq_data_model rubygem-http 0.9.8 https://github.com/httprb/http.rb rubygem-http-cookie 1.0.3 https://github.com/sparklemotion/http-cookie rubygem-http-form_data 1.0.3 https://github.com/httprb/form_data.rb @@ -34,12 +34,12 @@ rubygem-lru_redux 1.1.0 https://github.com/SamSaffron/lru_redux rubygem-mime-types 3.2.2 https://github.com/mime-types/ruby-mime-types/ rubygem-mime-types-data 3.2019.0331 https://github.com/mime-types/mime-types-data/ rubygem-minitest 5.11.3 https://github.com/seattlerb/minitest -rubygem-msgpack 1.2.10 http://msgpack.org/ +rubygem-msgpack 1.3.0 http://msgpack.org/ rubygem-multi_json 1.13.1 http://github.com/intridea/multi_json rubygem-multipart-post 2.1.1 https://github.com/nicksieger/multipart-post rubygem-netrc 0.11.0 https://github.com/geemus/netrc rubygem-prometheus-client 0.9.0 https://github.com/prometheus/client_ruby -rubygem-public_suffix 3.1.0 https://simonecarletti.com/code/publicsuffix-ruby +rubygem-public_suffix 3.1.1 https://simonecarletti.com/code/publicsuffix-ruby rubygem-quantile 0.2.1 http://github.com/matttproud/ruby_quantile_estimation rubygem-recursive-open-struct 1.0.0 http://github.com/aetherknight/recursive-open-struct rubygem-rest-client 2.0.2 https://github.com/rest-client/rest-client @@ -48,7 +48,7 @@ rubygem-syslog_protocol 0.9.2 https://github.com/eric/syslog_protocol rubygem-systemd-journal 1.3.3 https://github.com/ledbettj/systemd-journal rubygem-thread_safe 0.3.6 https://github.com/ruby-concurrency/thread_safe rubygem-tzinfo 1.2.5 http://tzinfo.github.io -rubygem-tzinfo-data 1.2019.1 http://tzinfo.github.io +rubygem-tzinfo-data 1.2019.2 http://tzinfo.github.io rubygem-unf 0.1.4 https://github.com/knu/ruby-unf rubygem-unf_ext 0.0.7.6 https://github.com/knu/ruby-unf_ext rubygem-uuidtools 2.1.5 https://github.com/sporkmonger/uuidtools diff --git a/fluentd/vendored_gem_src/activesupport/activesupport.gemspec b/fluentd/vendored_gem_src/activesupport/activesupport.gemspec index 6f9a0c0dc..28b0e0459 100644 --- a/fluentd/vendored_gem_src/activesupport/activesupport.gemspec +++ b/fluentd/vendored_gem_src/activesupport/activesupport.gemspec @@ -17,28 +17,28 @@ Gem::Specification.new do |s| s.licenses = ["MIT".freeze] s.rdoc_options = ["--encoding".freeze, "UTF-8".freeze] s.required_ruby_version = Gem::Requirement.new(">= 2.2.2".freeze) - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "A toolkit of support libraries and Ruby core extensions extracted from the Rails framework.".freeze if s.respond_to? :specification_version then s.specification_version = 4 if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q.freeze, [">= 0.7", "< 2"]) + s.add_runtime_dependency(%q.freeze, ["< 2", ">= 0.7"]) s.add_runtime_dependency(%q.freeze, ["~> 1.1"]) s.add_runtime_dependency(%q.freeze, ["~> 5.1"]) - s.add_runtime_dependency(%q.freeze, ["~> 1.0", ">= 1.0.2"]) + s.add_runtime_dependency(%q.freeze, [">= 1.0.2", "~> 1.0"]) else - s.add_dependency(%q.freeze, [">= 0.7", "< 2"]) + s.add_dependency(%q.freeze, ["< 2", ">= 0.7"]) s.add_dependency(%q.freeze, ["~> 1.1"]) s.add_dependency(%q.freeze, ["~> 5.1"]) - s.add_dependency(%q.freeze, ["~> 1.0", ">= 1.0.2"]) + s.add_dependency(%q.freeze, [">= 1.0.2", "~> 1.0"]) end else - s.add_dependency(%q.freeze, [">= 0.7", "< 2"]) + s.add_dependency(%q.freeze, ["< 2", ">= 0.7"]) s.add_dependency(%q.freeze, ["~> 1.1"]) s.add_dependency(%q.freeze, ["~> 5.1"]) - s.add_dependency(%q.freeze, ["~> 1.0", ">= 1.0.2"]) + s.add_dependency(%q.freeze, [">= 1.0.2", "~> 1.0"]) end end diff --git a/fluentd/vendored_gem_src/addressable/addressable.gemspec b/fluentd/vendored_gem_src/addressable/addressable.gemspec index f485dedfb..c483a140f 100644 --- a/fluentd/vendored_gem_src/addressable/addressable.gemspec +++ b/fluentd/vendored_gem_src/addressable/addressable.gemspec @@ -17,22 +17,22 @@ Gem::Specification.new do |s| s.licenses = ["Apache-2.0".freeze] s.rdoc_options = ["--main".freeze, "README.md".freeze] s.required_ruby_version = Gem::Requirement.new(">= 2.0".freeze) - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "URI Implementation".freeze if s.respond_to? :specification_version then s.specification_version = 4 if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q.freeze, [">= 2.0.2", "< 4.0"]) - s.add_development_dependency(%q.freeze, [">= 1.0", "< 3.0"]) + s.add_runtime_dependency(%q.freeze, ["< 4.0", ">= 2.0.2"]) + s.add_development_dependency(%q.freeze, ["< 3.0", ">= 1.0"]) else - s.add_dependency(%q.freeze, [">= 2.0.2", "< 4.0"]) - s.add_dependency(%q.freeze, [">= 1.0", "< 3.0"]) + s.add_dependency(%q.freeze, ["< 4.0", ">= 2.0.2"]) + s.add_dependency(%q.freeze, ["< 3.0", ">= 1.0"]) end else - s.add_dependency(%q.freeze, [">= 2.0.2", "< 4.0"]) - s.add_dependency(%q.freeze, [">= 1.0", "< 3.0"]) + s.add_dependency(%q.freeze, ["< 4.0", ">= 2.0.2"]) + s.add_dependency(%q.freeze, ["< 3.0", ">= 1.0"]) end end diff --git a/fluentd/vendored_gem_src/concurrent-ruby/concurrent-ruby.gemspec b/fluentd/vendored_gem_src/concurrent-ruby/concurrent-ruby.gemspec index 0e2348c3c..8bb6877ce 100644 --- a/fluentd/vendored_gem_src/concurrent-ruby/concurrent-ruby.gemspec +++ b/fluentd/vendored_gem_src/concurrent-ruby/concurrent-ruby.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |s| s.homepage = "http://www.concurrent-ruby.com".freeze s.licenses = ["MIT".freeze] s.required_ruby_version = Gem::Requirement.new(">= 1.9.3".freeze) - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "Modern concurrency tools for Ruby. Inspired by Erlang, Clojure, Scala, Haskell, F#, C#, Java, and classic concurrency patterns.".freeze end diff --git a/fluentd/vendored_gem_src/domain_name/CHANGELOG.md b/fluentd/vendored_gem_src/domain_name/CHANGELOG.md index 640bca8d7..0c564b630 100644 --- a/fluentd/vendored_gem_src/domain_name/CHANGELOG.md +++ b/fluentd/vendored_gem_src/domain_name/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## [v0.5.20190701](https://github.com/knu/ruby-domain_name/tree/v0.5.20190701) (2019-07-05) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20180417...v0.5.20190701) + +- Update the eTLD database to 2019-07-01 18:45:50 UTC + +## [v0.5.20180417](https://github.com/knu/ruby-domain_name/tree/v0.5.20180417) (2018-04-17) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20170404...v0.5.20180417) + +- Update the eTLD database to 2018-04-17T23:50:25Z + ## [v0.5.20170404](https://github.com/knu/ruby-domain_name/tree/v0.5.20170404) (2017-04-04) [Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20170223...v0.5.20170404) diff --git a/fluentd/vendored_gem_src/domain_name/Rakefile b/fluentd/vendored_gem_src/domain_name/Rakefile index 199d6f666..0c2d3c7e8 100644 --- a/fluentd/vendored_gem_src/domain_name/Rakefile +++ b/fluentd/vendored_gem_src/domain_name/Rakefile @@ -52,13 +52,36 @@ end namespace :etld_data do task :commit do - load ETLD_DATA_RB + if system(*%W[git diff --exit-code --quiet], ETLD_DATA_FILE) + warn "Nothing to commit." + exit + end + + prev = `ruby -e "$(git cat-file -p @:lib/domain_name/version.rb); puts DomainName::VERSION"`.chomp + curr = `ruby -e "load 'lib/domain_name/version.rb'; puts DomainName::VERSION"`.chomp + timestamp = File.mtime(ETLD_DATA_FILE).utc + + File.open('CHANGELOG.md', 'r+') do |f| + lines = f.readlines + lines.insert(2, <<~EOF) +## [v#{curr}](https://github.com/knu/ruby-domain_name/tree/v#{curr}) (#{Time.now.strftime('%F')}) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v#{prev}...v#{curr}) + +- Update the eTLD database to #{timestamp} + + EOF + f.rewind + f.puts lines + end sh 'git', 'commit', + 'CHANGELOG.md', ETLD_DATA_FILE, ETLD_DATA_RB, VERSION_RB, - '-m', 'Update the eTLD database to %s.' % DomainName::ETLD_DATA_DATE + '-m', 'Update the eTLD database to %s.' % timestamp + + sh 'git', 'tag', "v#{curr}" end end diff --git a/fluentd/vendored_gem_src/domain_name/data/public_suffix_list.dat b/fluentd/vendored_gem_src/domain_name/data/public_suffix_list.dat index d720c7561..b162596c7 100644 --- a/fluentd/vendored_gem_src/domain_name/data/public_suffix_list.dat +++ b/fluentd/vendored_gem_src/domain_name/data/public_suffix_list.dat @@ -155,8 +155,13 @@ mil.al net.al org.al -// am : https://en.wikipedia.org/wiki/.am +// am : https://www.amnic.net/policy/en/Policy_EN.pdf am +co.am +com.am +commune.am +net.am +org.am // ao : https://en.wikipedia.org/wiki/.ao // http://www.dns.ao/REGISTR.DOC @@ -381,8 +386,13 @@ gov.bm net.bm org.bm -// bn : https://en.wikipedia.org/wiki/.bn -*.bn +// bn : http://www.bnnic.bn/faqs +bn +com.bn +edu.bn +gov.bn +net.bn +org.bn // bo : https://nic.bo/delegacion2015.php#h-1.10 bo @@ -546,6 +556,7 @@ niteroi.br not.br ntr.br odo.br +ong.br org.br osasco.br palmas.br @@ -575,6 +586,7 @@ slz.br sorocaba.br srv.br taxi.br +tc.br teo.br the.br tmp.br @@ -978,17 +990,16 @@ fm fo // fr : http://www.afnic.fr/ -// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs +// domaines descriptifs : https://www.afnic.fr/medias/documents/Cadre_legal/Afnic_Naming_Policy_12122016_VEN.pdf fr -com.fr asso.fr +com.fr +gouv.fr nom.fr prd.fr -presse.fr tm.fr -// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels +// domaines sectoriels : https://www.afnic.fr/en/products-and-services/the-fr-tld/sector-based-fr-domains-4.html aeroport.fr -assedic.fr avocat.fr avoues.fr cci.fr @@ -996,7 +1007,6 @@ chambagri.fr chirurgiens-dentistes.fr experts-comptables.fr geometre-expert.fr -gouv.fr greta.fr huissier-justice.fr medecin.fr @@ -1114,8 +1124,18 @@ mil.gt net.gt org.gt -// gu : http://gadao.gov.gu/registration.txt -*.gu +// gu : http://gadao.gov.gu/register.html +// University of Guam : https://www.uog.edu +// Submitted by uognoc@triton.uog.edu +gu +com.gu +edu.gu +gov.gu +guam.gu +info.gu +net.gu +org.gu +web.gu // gw : https://en.wikipedia.org/wiki/.gw gw @@ -1130,7 +1150,7 @@ gov.gy net.gy org.gy -// hk : https://www.hkdnr.hk +// hk : https://www.hkirc.hk // Submitted by registry hk com.hk @@ -1229,7 +1249,7 @@ tozsde.hu utazas.hu video.hu -// id : https://register.pandi.or.id/ +// id : https://pandi.id/en/domain/registration-requirements/ id ac.id biz.id @@ -1240,6 +1260,7 @@ mil.id my.id net.id or.id +ponpes.id sch.id web.id @@ -1341,10 +1362,8 @@ int.is it gov.it edu.it -// Reserved geo-names: -// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf -// There is also a list of reserved geo-names corresponding to Italian municipalities -// http://www.nic.it/documenti/appendice-c.pdf, but it is not included here. +// Reserved geo-names (regions and provinces): +// http://www.nic.it/sites/default/files/docs/Regulation_assignation_v7.1.pdf // Regions abr.it abruzzo.it @@ -1398,6 +1417,12 @@ sicily.it taa.it tos.it toscana.it +trentin-sud-tirol.it +trentin-süd-tirol.it +trentin-sudtirol.it +trentin-südtirol.it +trentin-sued-tirol.it +trentin-suedtirol.it trentino-a-adige.it trentino-aadige.it trentino-alto-adige.it @@ -1405,9 +1430,12 @@ trentino-altoadige.it trentino-s-tirol.it trentino-stirol.it trentino-sud-tirol.it +trentino-süd-tirol.it trentino-sudtirol.it +trentino-südtirol.it trentino-sued-tirol.it trentino-suedtirol.it +trentino.it trentinoa-adige.it trentinoaadige.it trentinoalto-adige.it @@ -1415,9 +1443,17 @@ trentinoaltoadige.it trentinos-tirol.it trentinostirol.it trentinosud-tirol.it +trentinosüd-tirol.it trentinosudtirol.it +trentinosüdtirol.it trentinosued-tirol.it trentinosuedtirol.it +trentinsud-tirol.it +trentinsüd-tirol.it +trentinsudtirol.it +trentinsüdtirol.it +trentinsued-tirol.it +trentinsuedtirol.it tuscany.it umb.it umbria.it @@ -1432,7 +1468,13 @@ valleaosta.it valled-aosta.it valledaosta.it vallee-aoste.it +vallée-aoste.it +vallee-d-aoste.it +vallée-d-aoste.it valleeaoste.it +valléeaoste.it +valleedaoste.it +valléedaoste.it vao.it vda.it ven.it @@ -1465,6 +1507,9 @@ at.it av.it avellino.it ba.it +balsan-sudtirol.it +balsan-südtirol.it +balsan-suedtirol.it balsan.it bari.it barletta-trani-andria.it @@ -1479,13 +1524,21 @@ bl.it bn.it bo.it bologna.it +bolzano-altoadige.it bolzano.it +bozen-sudtirol.it +bozen-südtirol.it +bozen-suedtirol.it bozen.it br.it brescia.it brindisi.it bs.it bt.it +bulsan-sudtirol.it +bulsan-südtirol.it +bulsan-suedtirol.it +bulsan.it bz.it ca.it cagliari.it @@ -1503,7 +1556,9 @@ catanzaro.it cb.it ce.it cesena-forli.it +cesena-forlì.it cesenaforli.it +cesenaforlì.it ch.it chieti.it ci.it @@ -1534,7 +1589,9 @@ florence.it fm.it foggia.it forli-cesena.it +forlì-cesena.it forlicesena.it +forlìcesena.it fr.it frosinone.it ge.it @@ -1665,6 +1722,7 @@ sp.it sr.it ss.it suedtirol.it +südtirol.it sv.it ta.it taranto.it @@ -1683,7 +1741,6 @@ trani-barletta-andria.it traniandriabarletta.it tranibarlettaandria.it trapani.it -trentino.it trento.it treviso.it trieste.it @@ -3646,8 +3703,16 @@ jeonnam.kr seoul.kr ulsan.kr -// kw : https://en.wikipedia.org/wiki/.kw -*.kw +// kw : https://www.nic.kw/policies/ +// Confirmed by registry +kw +com.kw +edu.kw +emb.kw +gov.kw +ind.kw +net.kw +org.kw // ky : http://www.icta.ky/da_ky_reg_dom.php // Confirmed by registry 2008-06-17 @@ -3729,10 +3794,18 @@ gov.lr org.lr net.lr -// ls : https://en.wikipedia.org/wiki/.ls +// ls : http://www.nic.ls/ +// Confirmed by registry ls +ac.ls +biz.ls co.ls +edu.ls +gov.ls +info.ls +net.ls org.ls +sc.ls // lt : https://en.wikipedia.org/wiki/.lt lt @@ -4590,9 +4663,6 @@ web.ni // ccTLD for the Netherlands nl -// BV.nl will be a registry for dutch BV's (besloten vennootschap) -bv.nl - // no : http://www.norid.no/regelverk/index.en.html // The Norwegian registry has declined to notify us of updates. The web pages // referenced below are the official source of the data. There is also an @@ -5822,17 +5892,15 @@ int.ru mil.ru test.ru -// rw : http://www.nic.rw/cgi-bin/policy.pl +// rw : https://www.ricta.org.rw/sites/default/files/resources/registry_registrar_contract_0.pdf rw -gov.rw -net.rw -edu.rw ac.rw -com.rw co.rw -int.rw +coop.rw +gov.rw mil.rw -gouv.rw +net.rw +org.rw // sa : http://www.nic.net.sa/ sa @@ -6122,40 +6190,36 @@ org.to edu.to mil.to -// subTLDs: https://www.nic.tr/forms/eng/policies.pdf -// and: https://www.nic.tr/forms/politikalar.pdf -// Submitted by +// tr : https://nic.tr/ +// https://nic.tr/forms/eng/policies.pdf +// https://nic.tr/index.php?USRACTN=PRICELST tr -com.tr -info.tr -biz.tr -net.tr -org.tr -web.tr -gen.tr -tv.tr av.tr -dr.tr bbs.tr -name.tr -tel.tr -gov.tr bel.tr -pol.tr +biz.tr +com.tr +dr.tr +edu.tr +gen.tr +gov.tr +info.tr mil.tr k12.tr -edu.tr kep.tr - +name.tr +net.tr +org.tr +pol.tr +tel.tr +tsk.tr +tv.tr +web.tr // Used by Northern Cyprus nc.tr - // Used by government agencies of Northern Cyprus gov.nc.tr -// travel : https://en.wikipedia.org/wiki/.travel -travel - // tt : http://www.nic.tt/ tt co.tt @@ -6730,8 +6794,16 @@ yt ελ // xn--j6w193g ("Hong Kong", Chinese) : HK -// https://www2.hkirc.hk/register/rules.jsp +// https://www.hkirc.hk +// Submitted by registry +// https://www.hkirc.hk/content.jsp?id=30#!/34 香港 +公司.香港 +教育.香港 +政府.香港 +個人.香港 +網絡.香港 +組織.香港 // xn--2scrj9c ("Bharat", Kannada) : IN // India @@ -6984,8 +7056,10 @@ mil.zw org.zw -// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2018-04-17T13:04:32Z +// newGTLDs +// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2019-06-14T10:00:50-04:00 +// This list is auto-generated, don't edit it manually. // aaa : 2015-02-26 American Automobile Association, Inc. aaa @@ -7031,10 +7105,7 @@ accountants // aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG aco -// active : 2014-05-01 Active Network, LLC -active - -// actor : 2013-12-12 United TLD Holdco Ltd. +// actor : 2013-12-12 Dog Beach, LLC actor // adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC) @@ -7076,7 +7147,7 @@ aigo // airbus : 2015-07-30 Airbus S.A.S. airbus -// airforce : 2014-03-06 United TLD Holdco Ltd. +// airforce : 2014-03-06 Dog Beach, LLC airforce // airtel : 2014-10-24 Bharti Airtel Limited @@ -7160,10 +7231,10 @@ arab // aramco : 2014-11-20 Aramco Services Company aramco -// archi : 2014-02-06 Afilias plc +// archi : 2014-02-06 Afilias Limited archi -// army : 2014-03-06 United TLD Holdco Ltd. +// army : 2014-03-06 Dog Beach, LLC army // art : 2016-03-24 UK Creative Ideas Limited @@ -7181,10 +7252,10 @@ associates // athleta : 2015-07-30 The Gap, Inc. athleta -// attorney : 2014-03-20 United TLD Holdco Ltd. +// attorney : 2014-03-20 Dog Beach, LLC attorney -// auction : 2014-03-20 United TLD Holdco Ltd. +// auction : 2014-03-20 Dog Beach, LLC auction // audi : 2015-05-21 AUDI Aktiengesellschaft @@ -7202,7 +7273,7 @@ auspost // author : 2014-12-18 Amazon Registry Services, Inc. author -// auto : 2014-11-13 Cars Registry Limited  +// auto : 2014-11-13 Cars Registry Limited auto // autos : 2014-01-09 DERAutos, LLC @@ -7220,7 +7291,7 @@ axa // azure : 2014-12-18 Microsoft Corporation azure -// baby : 2015-04-09 Johnson & Johnson Services, Inc. +// baby : 2015-04-09 XYZ.COM LLC baby // baidu : 2015-01-08 Baidu, Inc. @@ -7232,7 +7303,7 @@ banamex // bananarepublic : 2015-07-31 The Gap, Inc. bananarepublic -// band : 2014-06-12 United TLD Holdco Ltd. +// band : 2014-06-12 Dog Beach, LLC band // bank : 2014-09-25 fTLD Registry Services LLC @@ -7304,7 +7375,7 @@ best // bestbuy : 2015-07-31 BBY Solutions, Inc. bestbuy -// bet : 2015-05-07 Afilias plc +// bet : 2015-05-07 Afilias Limited bet // bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited @@ -7325,18 +7396,15 @@ bing // bingo : 2014-12-04 Binky Moon, LLC bingo -// bio : 2014-03-06 Afilias plc +// bio : 2014-03-06 Afilias Limited bio -// black : 2014-01-16 Afilias plc +// black : 2014-01-16 Afilias Limited black // blackfriday : 2014-01-16 Uniregistry, Corp. blackfriday -// blanco : 2015-07-16 BLANCO GmbH + Co KG -blanco - // blockbuster : 2015-07-30 Dish DBS Corporation blockbuster @@ -7346,7 +7414,7 @@ blog // bloomberg : 2014-07-17 Bloomberg IP Holdings LLC bloomberg -// blue : 2013-11-07 Afilias plc +// blue : 2013-11-07 Afilias Limited blue // bms : 2014-10-30 Bristol-Myers Squibb Company @@ -7373,7 +7441,7 @@ bofa // bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br bom -// bond : 2014-06-05 Bond University Limited +// bond : 2014-06-05 ShortDot SA bond // boo : 2014-01-30 Charleston Road Registry Inc. @@ -7400,7 +7468,7 @@ bot // boutique : 2013-11-14 Binky Moon, LLC boutique -// box : 2015-11-12 NS1 Limited +// box : 2015-11-12 .BOX INC. box // bradesco : 2014-12-18 Banco Bradesco S.A. @@ -7484,7 +7552,7 @@ capital // capitalone : 2015-08-06 Capital One Financial Corporation capitalone -// car : 2015-01-22 Cars Registry Limited  +// car : 2015-01-22 Cars Registry Limited car // caravan : 2013-12-12 Caravan International, Inc. @@ -7502,7 +7570,7 @@ career // careers : 2013-10-02 Binky Moon, LLC careers -// cars : 2014-11-13 Cars Registry Limited  +// cars : 2014-11-13 Cars Registry Limited cars // cartier : 2014-06-23 Richemont DNS Inc. @@ -7565,7 +7633,7 @@ chanel // channel : 2014-05-08 Charleston Road Registry Inc. channel -// charity : 2018-04-11 Corn Lake, LLC +// charity : 2018-04-11 Binky Moon, LLC charity // chase : 2015-04-30 JPMorgan Chase Bank, National Association @@ -7655,7 +7723,7 @@ coffee // college : 2014-01-16 XYZ.COM LLC college -// cologne : 2014-02-05 punkt.wien GmbH +// cologne : 2014-02-05 dotKoeln GmbH cologne // comcast : 2015-07-23 Comcast IP Holdings I, LLC @@ -7685,10 +7753,10 @@ condos // construction : 2013-09-16 Binky Moon, LLC construction -// consulting : 2013-12-05 United TLD Holdco Ltd. +// consulting : 2013-12-05 Dog Beach, LLC consulting -// contact : 2015-01-08 Top Level Spectrum, Inc. +// contact : 2015-01-08 Dog Beach, LLC contact // contractors : 2013-09-10 Binky Moon, LLC @@ -7703,7 +7771,7 @@ cookingchannel // cool : 2013-11-14 Binky Moon, LLC cool -// corsica : 2014-09-25 Collectivité Territoriale de Corse +// corsica : 2014-09-25 Collectivité de Corse corsica // country : 2013-12-19 DotCountry LLC @@ -7718,6 +7786,9 @@ coupons // courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD courses +// cpa : 2019-06-10 American Institute of Certified Public Accountants +cpa + // credit : 2014-03-20 Binky Moon, LLC credit @@ -7745,7 +7816,7 @@ cruises // csc : 2014-09-25 Alliance-One Services, Inc. csc -// cuisinella : 2014-04-03 SALM S.A.S. +// cuisinella : 2014-04-03 SCHMIDT GROUPE S.A.S. cuisinella // cymru : 2014-05-08 Nominet UK @@ -7760,7 +7831,7 @@ dabur // dad : 2014-01-23 Charleston Road Registry Inc. dad -// dance : 2013-10-24 United TLD Holdco Ltd. +// dance : 2013-10-24 Dog Beach, LLC dance // data : 2016-06-02 Dish DBS Corporation @@ -7787,13 +7858,13 @@ dds // deal : 2015-06-25 Amazon Registry Services, Inc. deal -// dealer : 2014-12-22 Dealer Dot Com, Inc. +// dealer : 2014-12-22 Intercap Registry Inc. dealer // deals : 2014-05-22 Binky Moon, LLC deals -// degree : 2014-03-06 United TLD Holdco Ltd. +// degree : 2014-03-06 Dog Beach, LLC degree // delivery : 2014-09-11 Binky Moon, LLC @@ -7808,13 +7879,13 @@ deloitte // delta : 2015-02-19 Delta Air Lines, Inc. delta -// democrat : 2013-10-24 United TLD Holdco Ltd. +// democrat : 2013-10-24 Dog Beach, LLC democrat // dental : 2014-03-20 Binky Moon, LLC dental -// dentist : 2014-03-20 United TLD Holdco Ltd. +// dentist : 2014-03-20 Dog Beach, LLC dentist // desi : 2013-11-14 Desi Networks LLC @@ -7871,9 +7942,6 @@ dodge // dog : 2014-12-04 Binky Moon, LLC dog -// doha : 2014-09-18 Communications Regulatory Authority (CRA) -doha - // domains : 2013-10-17 Binky Moon, LLC domains @@ -7910,7 +7978,7 @@ durban // dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG dvag -// dvr : 2016-05-26 Hughes Satellite Systems Corporation +// dvr : 2016-05-26 DISH Technologies L.L.C. dvr // earth : 2014-12-04 Interlink Co., Ltd. @@ -7937,7 +8005,7 @@ emerck // energy : 2014-09-11 Binky Moon, LLC energy -// engineer : 2014-03-06 United TLD Holdco Ltd. +// engineer : 2014-03-06 Dog Beach, LLC engineer // engineering : 2014-03-06 Binky Moon, LLC @@ -7946,9 +8014,6 @@ engineering // enterprises : 2013-09-20 Binky Moon, LLC enterprises -// epost : 2015-07-23 Deutsche Post AG -epost - // epson : 2014-12-04 Seiko Epson Corporation epson @@ -8012,13 +8077,13 @@ fairwinds // faith : 2014-11-20 dot Faith Limited faith -// family : 2015-04-02 United TLD Holdco Ltd. +// family : 2015-04-02 Dog Beach, LLC family -// fan : 2014-03-06 Asiamix Digital Limited +// fan : 2014-03-06 Dog Beach, LLC fan -// fans : 2014-11-07 Asiamix Digital Limited +// fans : 2014-11-07 Fans TLD Limited fans // farm : 2013-11-07 Binky Moon, LLC @@ -8123,7 +8188,7 @@ ford // forex : 2014-12-11 Dotforex Registry Limited forex -// forsale : 2014-05-22 United TLD Holdco Ltd. +// forsale : 2014-05-22 Dog Beach, LLC forsale // forum : 2015-04-02 Fegistry, LLC @@ -8171,7 +8236,7 @@ fund // furniture : 2014-03-20 Binky Moon, LLC furniture -// futbol : 2013-09-20 United TLD Holdco Ltd. +// futbol : 2013-09-20 Dog Beach, LLC futbol // fyi : 2015-04-02 Binky Moon, LLC @@ -8192,7 +8257,7 @@ gallup // game : 2015-05-28 Uniregistry, Corp. game -// games : 2015-05-28 United TLD Holdco Ltd. +// games : 2015-05-28 Dog Beach, LLC games // gap : 2015-07-31 The Gap, Inc. @@ -8201,6 +8266,9 @@ gap // garden : 2014-06-26 Minds + Machines Group Limited garden +// gay : 2019-05-23 Top Level Design, LLC +gay + // gbiz : 2014-07-17 Charleston Road Registry Inc. gbiz @@ -8228,7 +8296,7 @@ gift // gifts : 2014-07-03 Binky Moon, LLC gifts -// gives : 2014-03-06 United TLD Holdco Ltd. +// gives : 2014-03-06 Dog Beach, LLC gives // giving : 2014-11-13 Giving Limited @@ -8276,9 +8344,6 @@ golf // goo : 2014-12-18 NTT Resonant Inc. goo -// goodhands : 2015-07-31 Allstate Fire and Casualty Insurance Company -goodhands - // goodyear : 2015-07-02 The Goodyear Tire & Rubber Company goodyear @@ -8303,7 +8368,7 @@ graphics // gratis : 2014-03-20 Binky Moon, LLC gratis -// green : 2014-05-08 Afilias plc +// green : 2014-05-08 Afilias Limited green // gripe : 2014-03-06 Binky Moon, LLC @@ -8342,7 +8407,7 @@ hamburg // hangout : 2014-11-13 Charleston Road Registry Inc. hangout -// haus : 2013-12-05 United TLD Holdco Ltd. +// haus : 2013-12-05 Dog Beach, LLC haus // hbo : 2015-07-30 HBO Registry Services, Inc. @@ -8489,10 +8554,10 @@ imdb // immo : 2014-07-10 Binky Moon, LLC immo -// immobilien : 2013-11-07 United TLD Holdco Ltd. +// immobilien : 2013-11-07 Dog Beach, LLC immobilien -// inc : 2018-03-10 GTLD Limited +// inc : 2018-03-10 Intercap Registry Inc. inc // industries : 2013-12-05 Binky Moon, LLC @@ -8555,9 +8620,6 @@ itv // iveco : 2015-09-03 CNH Industrial N.V. iveco -// iwc : 2014-06-23 Richemont DNS Inc. -iwc - // jaguar : 2014-11-13 Jaguar Land Rover Ltd jaguar @@ -8582,9 +8644,6 @@ jewelry // jio : 2015-04-02 Reliance Industries Limited jio -// jlc : 2014-12-04 Richemont DNS Inc. -jlc - // jll : 2015-04-02 Jones Lang LaSalle Incorporated jll @@ -8615,7 +8674,7 @@ juegos // juniper : 2015-07-30 JUNIPER NETWORKS, INC. juniper -// kaufen : 2013-11-07 United TLD Holdco Ltd. +// kaufen : 2013-11-07 Dog Beach, LLC kaufen // kddi : 2014-09-12 KDDI CORPORATION @@ -8636,7 +8695,7 @@ kfh // kia : 2015-07-09 KIA MOTORS CORPORATION kia -// kim : 2013-09-23 Afilias plc +// kim : 2013-09-23 Afilias Limited kim // kinder : 2014-11-07 Ferrero Trading Lux S.A. @@ -8651,7 +8710,7 @@ kitchen // kiwi : 2013-09-20 DOT KIWI LIMITED kiwi -// koeln : 2014-01-09 punkt.wien GmbH +// koeln : 2014-01-09 dotKoeln GmbH koeln // komatsu : 2015-01-08 Komatsu Ltd. @@ -8720,10 +8779,10 @@ latino // latrobe : 2014-06-16 La Trobe University latrobe -// law : 2015-01-22 Minds + Machines Group Limited +// law : 2015-01-22 LW TLD Limited law -// lawyer : 2014-03-20 United TLD Holdco Ltd. +// lawyer : 2014-03-20 Dog Beach, LLC lawyer // lds : 2014-03-20 IRI Domain Management, LLC ("Applicant") @@ -8747,7 +8806,7 @@ lego // lexus : 2015-04-23 TOYOTA MOTOR CORPORATION lexus -// lgbt : 2014-05-08 Afilias plc +// lgbt : 2014-05-08 Afilias Limited lgbt // liaison : 2014-10-02 Liaison Technologies, Incorporated @@ -8792,7 +8851,7 @@ link // lipsy : 2015-06-25 Lipsy Ltd lipsy -// live : 2014-12-04 United TLD Holdco Ltd. +// live : 2014-12-04 Dog Beach, LLC live // living : 2015-07-30 Lifestyle Domain Holdings, Inc. @@ -8801,7 +8860,7 @@ living // lixil : 2015-03-19 LIXIL Group Corporation lixil -// llc : 2017-12-14 Afilias plc +// llc : 2017-12-14 Afilias Limited llc // loan : 2014-11-20 dot Loan Limited @@ -8828,7 +8887,7 @@ london // lotte : 2014-11-07 Lotte Holdings Co., Ltd. lotte -// lotto : 2014-04-10 Afilias plc +// lotto : 2014-04-10 Afilias Limited lotto // love : 2014-12-22 Merchant Law Group LLP @@ -8885,7 +8944,7 @@ mango // map : 2016-06-09 Charleston Road Registry Inc. map -// market : 2014-03-06 United TLD Holdco Ltd. +// market : 2014-03-06 Dog Beach, LLC market // marketing : 2013-11-07 Binky Moon, LLC @@ -8933,12 +8992,9 @@ memorial // men : 2015-02-26 Exclusive Registry Limited men -// menu : 2013-09-11 Wedding TLD2, LLC +// menu : 2013-09-11 Dot Menu Registry, LLC menu -// meo : 2014-11-07 MEO Servicos de Comunicacoes e Multimedia, S.A. -meo - // merckmsd : 2016-07-14 MSD Registry Holdings, Inc. merckmsd @@ -8978,7 +9034,7 @@ mobile // mobily : 2014-12-18 GreenTech Consultancy Company W.L.L. mobily -// moda : 2013-11-07 United TLD Holdco Ltd. +// moda : 2013-11-07 Dog Beach, LLC moda // moe : 2013-11-13 Interlink Co., Ltd. @@ -8996,7 +9052,7 @@ monash // money : 2014-10-16 Binky Moon, LLC money -// monster : 2015-09-11 Monster Worldwide, Inc. +// monster : 2015-09-11 XYZ.COM LLC monster // mopar : 2015-07-30 FCA US LLC. @@ -9005,7 +9061,7 @@ mopar // mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant") mormon -// mortgage : 2014-03-20 United TLD Holdco Ltd. +// mortgage : 2014-03-20 Dog Beach, LLC mortgage // moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) @@ -9053,7 +9109,7 @@ nationwide // natura : 2015-03-12 NATURA COSMÉTICOS S.A. natura -// navy : 2014-03-06 United TLD Holdco Ltd. +// navy : 2014-03-06 Dog Beach, LLC navy // nba : 2015-07-31 NBA REGISTRY, LLC @@ -9071,7 +9127,7 @@ netflix // network : 2013-11-14 Binky Moon, LLC network -// neustar : 2013-12-05 NeuStar, Inc. +// neustar : 2013-12-05 Registry Services, LLC neustar // new : 2014-01-30 Charleston Road Registry Inc. @@ -9080,7 +9136,7 @@ new // newholland : 2015-09-03 CNH Industrial N.V. newholland -// news : 2014-12-18 United TLD Holdco Ltd. +// news : 2014-12-18 Dog Beach, LLC news // next : 2015-06-18 Next plc @@ -9110,7 +9166,7 @@ nike // nikon : 2015-05-21 NIKON CORPORATION nikon -// ninja : 2013-11-07 United TLD Holdco Ltd. +// ninja : 2013-11-07 Dog Beach, LLC ninja // nissan : 2014-03-27 NISSAN MOTOR CO., LTD. @@ -9194,7 +9250,7 @@ online // onyourside : 2015-07-23 Nationwide Mutual Insurance Company onyourside -// ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED +// ooo : 2014-01-09 INFIBEAM AVENUES LIMITED ooo // open : 2015-07-31 American Express Travel Related Services Company, Inc. @@ -9206,7 +9262,7 @@ oracle // orange : 2015-03-12 Orange Brand Services Limited orange -// organic : 2014-03-27 Afilias plc +// organic : 2014-03-27 Afilias Limited organic // origins : 2015-10-01 The Estée Lauder Companies Inc. @@ -9221,7 +9277,7 @@ otsuka // ott : 2015-06-04 Dish DBS Corporation ott -// ovh : 2014-01-16 OVH SAS +// ovh : 2014-01-16 MédiaBC ovh // page : 2014-12-04 Charleston Road Registry Inc. @@ -9230,9 +9286,6 @@ page // panasonic : 2015-07-30 Panasonic Corporation panasonic -// panerai : 2014-11-07 Richemont DNS Inc. -panerai - // paris : 2014-01-30 City of Paris paris @@ -9257,7 +9310,7 @@ pay // pccw : 2015-05-14 PCCW Enterprises Limited pccw -// pet : 2015-05-07 Afilias plc +// pet : 2015-05-07 Afilias Limited pet // pfizer : 2015-09-11 Pfizer Inc. @@ -9308,7 +9361,7 @@ pin // ping : 2015-06-11 Ping Registry Provider, Inc. ping -// pink : 2013-10-01 Afilias plc +// pink : 2013-10-01 Afilias Limited pink // pioneer : 2015-07-16 Pioneer Corporation @@ -9323,7 +9376,7 @@ place // play : 2015-03-05 Charleston Road Registry Inc. play -// playstation : 2015-07-02 Sony Computer Entertainment Inc. +// playstation : 2015-07-02 Sony Interactive Entertainment Inc. playstation // plumbing : 2013-09-10 Binky Moon, LLC @@ -9338,7 +9391,7 @@ pnc // pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG pohl -// poker : 2014-07-03 Afilias plc +// poker : 2014-07-03 Afilias Limited poker // politie : 2015-08-20 Politie Nederland @@ -9371,7 +9424,7 @@ prof // progressive : 2015-07-23 Progressive Casualty Insurance Company progressive -// promo : 2014-12-18 Afilias plc +// promo : 2014-12-18 Afilias Limited promo // properties : 2013-12-05 Binky Moon, LLC @@ -9389,7 +9442,7 @@ pru // prudential : 2015-07-30 Prudential Financial, Inc. prudential -// pub : 2013-12-12 United TLD Holdco Ltd. +// pub : 2013-12-12 Dog Beach, LLC pub // pwc : 2015-10-29 PricewaterhouseCoopers LLP @@ -9431,7 +9484,7 @@ realty // recipes : 2013-10-17 Binky Moon, LLC recipes -// red : 2013-11-07 Afilias plc +// red : 2013-11-07 Afilias Limited red // redstone : 2014-10-31 Redstone Haute Couture Co., Ltd. @@ -9440,7 +9493,7 @@ redstone // redumbrella : 2015-03-26 Travelers TLD, LLC redumbrella -// rehab : 2014-03-06 United TLD Holdco Ltd. +// rehab : 2014-03-06 Dog Beach, LLC rehab // reise : 2014-03-13 Binky Moon, LLC @@ -9470,7 +9523,7 @@ repair // report : 2013-12-05 Binky Moon, LLC report -// republican : 2014-03-20 United TLD Holdco Ltd. +// republican : 2014-03-20 Dog Beach, LLC republican // rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable @@ -9482,7 +9535,7 @@ restaurant // review : 2014-11-20 dot Review Limited review -// reviews : 2013-09-13 United TLD Holdco Ltd. +// reviews : 2013-09-13 Dog Beach, LLC reviews // rexroth : 2015-06-18 Robert Bosch GMBH @@ -9506,7 +9559,7 @@ ril // rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO rio -// rip : 2014-07-10 United TLD Holdco Ltd. +// rip : 2014-07-10 Dog Beach, LLC rip // rmit : 2015-11-19 Royal Melbourne Institute of Technology @@ -9515,7 +9568,7 @@ rmit // rocher : 2014-12-18 Ferrero Trading Lux S.A. rocher -// rocks : 2013-11-14 United TLD Holdco Ltd. +// rocks : 2013-11-14 Dog Beach, LLC rocks // rodeo : 2013-12-19 Minds + Machines Group Limited @@ -9557,7 +9610,7 @@ safety // sakura : 2014-12-18 SAKURA Internet Inc. sakura -// sale : 2014-10-16 United TLD Holdco Ltd. +// sale : 2014-10-16 Dog Beach, LLC sale // salon : 2014-12-11 Binky Moon, LLC @@ -9581,9 +9634,6 @@ sanofi // sap : 2014-03-27 SAP AG sap -// sapo : 2014-11-07 MEO Servicos de Comunicacoes e Multimedia, S.A. -sapo - // sarl : 2014-07-03 Binky Moon, LLC sarl @@ -9611,7 +9661,7 @@ scb // schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG schaeffler -// schmidt : 2014-04-03 SALM S.A.S. +// schmidt : 2014-04-03 SCHMIDT GROUPE S.A.S. schmidt // scholarships : 2014-04-24 Scholarships.com, LLC @@ -9695,7 +9745,7 @@ shell // shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. shia -// shiksha : 2013-11-14 Afilias plc +// shiksha : 2013-11-14 Afilias Limited shiksha // shoes : 2013-10-02 Binky Moon, LLC @@ -9731,7 +9781,7 @@ singles // site : 2015-01-15 DotSite Inc. site -// ski : 2015-04-09 Afilias plc +// ski : 2015-04-09 Afilias Limited ski // skin : 2015-01-15 L'Oréal @@ -9743,7 +9793,7 @@ sky // skype : 2014-12-18 Microsoft Corporation skype -// sling : 2015-07-30 Hughes Satellite Systems Corporation +// sling : 2015-07-30 DISH Technologies L.L.C. sling // smart : 2015-07-09 Smart Communications, Inc. (SMART) @@ -9758,13 +9808,13 @@ sncf // soccer : 2015-03-26 Binky Moon, LLC soccer -// social : 2013-11-07 United TLD Holdco Ltd. +// social : 2013-11-07 Dog Beach, LLC social -// softbank : 2015-07-02 SoftBank Corp. +// softbank : 2015-07-02 SoftBank Group Corp. softbank -// software : 2014-03-20 United TLD Holdco Ltd. +// software : 2014-03-20 Dog Beach, LLC software // sohu : 2013-12-19 Sohu.com Limited @@ -9788,9 +9838,6 @@ soy // space : 2014-04-03 DotSpace Inc. space -// spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG -spiegel - // sport : 2017-11-16 Global Association of International Sports Federations (GAISF) sport @@ -9824,9 +9871,6 @@ statebank // statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company statefarm -// statoil : 2014-12-04 Statoil ASA -statoil - // stc : 2014-10-09 Saudi Telecom Company stc @@ -9845,7 +9889,7 @@ store // stream : 2016-01-08 dot Stream Limited stream -// studio : 2015-02-11 United TLD Holdco Ltd. +// studio : 2015-02-11 Dog Beach, LLC studio // study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD @@ -9938,9 +9982,6 @@ tech // technology : 2013-09-13 Binky Moon, LLC technology -// telecity : 2015-02-19 TelecityGroup International Limited -telecity - // telefonica : 2014-10-16 Telefónica S.A. telefonica @@ -10037,6 +10078,9 @@ trading // training : 2013-11-07 Binky Moon, LLC training +// travel : Dog Beach, LLC +travel + // travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. travelchannel @@ -10109,16 +10153,16 @@ ventures // verisign : 2015-08-13 VeriSign, Inc. verisign -// versicherung : 2014-03-20 TLD-BOX Registrydienstleistungen GmbH +// versicherung : 2014-03-20 tldbox GmbH versicherung -// vet : 2014-03-06 United TLD Holdco Ltd. +// vet : 2014-03-06 Dog Beach, LLC vet // viajes : 2013-10-17 Binky Moon, LLC viajes -// video : 2014-10-16 United TLD Holdco Ltd. +// video : 2014-10-16 Dog Beach, LLC video // vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe @@ -10145,9 +10189,6 @@ visa // vision : 2013-12-05 Binky Moon, LLC vision -// vista : 2014-09-18 Vistaprint Limited -vista - // vistaprint : 2014-09-18 Vistaprint Limited vistaprint @@ -10346,7 +10387,7 @@ xin // xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited 网站 -// xn--6frz82g : 2013-09-23 Afilias plc +// xn--6frz82g : 2013-09-23 Afilias Limited 移动 // xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited @@ -10586,9 +10627,6 @@ vermögensberatung // xn--zfr164b : 2013-11-08 China Organizational Name Administration Center 政务 -// xperia : 2015-05-14 Sony Mobile Communications AB -xperia - // xyz : 2013-12-05 XYZ.COM LLC xyz @@ -10634,9 +10672,6 @@ zero // zip : 2014-05-08 Charleston Road Registry Inc. zip -// zippo : 2015-07-02 Zadco Company -zippo - // zone : 2013-11-14 Binky Moon, LLC zone @@ -10658,6 +10693,10 @@ ltd.ua // Submitted by Przemyslaw Plewa beep.pl +// alboto.ca : http://alboto.ca +// Submitted by Anton Avramov +barsy.ca + // Alces Software Ltd : http://alces-software.com // Submitted by Mark J. Titorenko *.compute.estate @@ -10681,6 +10720,7 @@ us-east-1.amazonaws.com // Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/ // Submitted by Luke Wells cn-north-1.eb.amazonaws.com.cn +cn-northwest-1.eb.amazonaws.com.cn elasticbeanstalk.com ap-northeast-1.elasticbeanstalk.com ap-northeast-2.elasticbeanstalk.com @@ -10767,6 +10807,10 @@ s3-website.us-east-2.amazonaws.com t3l3p0rt.net tele.amune.org +// Apigee : https://apigee.com/ +// Submitted by Apigee Security Team +apigee.io + // Aptible : https://www.aptible.com/ // Submitted by Thomas Orozco on-aptible.com @@ -10786,6 +10830,12 @@ sweetpepper.org // Submitted by Vincent Tseng myasustor.com +// Automattic Inc. : https://automattic.com/ +// Submitted by Alex Concha +go-vip.co +go-vip.net +wpcomstaging.com + // AVM : https://avm.de // Submitted by Andreas Weise myfritz.net @@ -10795,10 +10845,22 @@ myfritz.net *.awdev.ca *.advisor.ws +// b-data GmbH : https://www.b-data.io +// Submitted by Olivier Benz +b-data.io + // backplane : https://www.backplane.io // Submitted by Anthony Voutas backplaneapp.io +// Balena : https://www.balena.io +// Submitted by Petros Angelatos +balena-devices.com + +// Banzai Cloud +// Submitted by Gabor Kozma +app.banzaicloud.io + // BetaInABox // Submitted by Adrian betainabox.com @@ -10807,6 +10869,10 @@ betainabox.com // Submitted by Nathan O'Sullivan bnr.la +// Blackbaud, Inc. : https://www.blackbaud.com +// Submitted by Paul Crowder +blackbaudcdn.net + // Boomla : https://boomla.com // Submitted by Tibor Halter boomla.net @@ -10828,10 +10894,22 @@ square7.net // Submitted by Dave Tharp browsersafetymark.io +// Bytemark Hosting : https://www.bytemark.co.uk +// Submitted by Paul Cammish +uk0.bigv.io +dh.bytemark.co.uk +vm.bytemark.co.uk + // callidomus : https://www.callidomus.com/ // Submitted by Marcus Popp mycd.eu +// Carrd : https://carrd.co +// Submitted by AJ +carrd.co +crd.co +uwu.ai + // CentralNic : http://www.centralnic.com/names/domains // Submitted by registry ae.org @@ -10893,6 +10971,10 @@ certmgr.org // Submitted by Alex Stoddard xenapponazure.com +// Civilized Discourse Construction Kit, Inc. : https://www.discourse.org/ +// Submitted by Rishabh Nambiar +discourse.group + // ClearVox : http://www.clearvox.nl/ // Submitted by Leon Rowland virtueeldomein.nl @@ -10901,10 +10983,16 @@ virtueeldomein.nl // Submitted by Quentin Adam cleverapps.io +// Clerk : https://www.clerk.dev +// Submitted by Colin Sidoti +*.lcl.dev +*.stg.dev + // Cloud66 : https://www.cloud66.com/ // Submitted by Khash Sajadi c66.me cloud66.ws +cloud66.zone // CloudAccess.net : https://www.cloudaccess.net/ // Submitted by Pawel Panek @@ -10919,9 +11007,26 @@ cloudaccess.net cloudcontrolled.com cloudcontrolapp.com +// Cloudera, Inc. : https://www.cloudera.com/ +// Submitted by Philip Langdale +cloudera.site + +// Cloudflare, Inc. : https://www.cloudflare.com/ +// Submitted by Jake Riesterer +trycloudflare.com +workers.dev + +// Clovyr : https://clovyr.io +// Submitted by Patrick Nielsen +wnext.app + // co.ca : http://registry.co.ca/ co.ca +// Co & Co : https://co-co.nl/ +// Submitted by Govert Versluis +*.otap.co + // i-registry s.r.o. : http://www.i-registry.cz/ // Submitted by Martin Semrad co.cz @@ -10952,6 +11057,10 @@ cloudns.us // Submitted by Stefan Dimitrov cloudeity.net +// CNPY : https://cnpy.gdn +// Submitted by Angelo Gladding +cnpy.gdn + // CoDNS B.V. co.nl co.no @@ -10995,6 +11104,15 @@ cyon.site daplie.me localhost.daplie.me +// Datto, Inc. : https://www.datto.com/ +// Submitted by Philipp Heckel +dattolocal.com +dattorelay.com +dattoweb.com +mydatto.com +dattolocal.net +mydatto.net + // Dansk.net : http://www.dansk.net/ // Submitted by Anani Voule biz.dk @@ -11003,6 +11121,11 @@ firm.dk reg.dk store.dk +// dapps.earth : https://dapps.earth/ +// Submitted by Daniil Burdakov +*.dapps.earth +*.bzz.dapps.earth + // Debian : https://www.debian.org/ // Submitted by Peter Palfrader / Debian Sysadmin Team debian.net @@ -11015,6 +11138,11 @@ dedyn.io // Submitted by Norbert Auler dnshome.de +// DotArai : https://www.dotarai.com/ +// Submitted by Atsadawat Netcharadsang +online.th +shop.th + // DrayTek Corp. : https://www.draytek.com/ // Submitted by Paul Fang drayddns.com @@ -11339,6 +11467,10 @@ ddnss.org definima.net definima.io +// dnstrace.pro : https://dnstrace.pro/ +// Submitted by Chris Partridge +bci.dnstrace.pro + // Dynu.com : https://www.dynu.com/ // Submitted by Sue Ye ddnsfree.com @@ -11371,6 +11503,11 @@ e4.cz // Submitted by Thomas Cottier mytuleap.com +// ECG Robotics, Inc: https://ecgrobotics.org +// Submitted by +onred.one +staging.onred.one + // Enonic : http://enonic.com/ // Submitted by Erik Kaareng-Sunde enonic.io @@ -11540,6 +11677,7 @@ channelsdvr.net // Fastly Inc. : http://www.fastly.com/ // Submitted by Fastly Security +fastly-terrarium.com fastlylb.net map.fastlylb.net freetls.fastly.net @@ -11550,6 +11688,11 @@ a.ssl.fastly.net b.ssl.fastly.net global.ssl.fastly.net +// FASTVPS EESTI OU : https://fastvps.ru/ +// Submitted by Likhachev Vasiliy +fastpanel.direct +fastvps-server.com + // Featherhead : https://featherhead.xyz/ // Submitted by Simon Menke fhapp.xyz @@ -11562,9 +11705,19 @@ cloud.fedoraproject.org app.os.fedoraproject.org app.os.stg.fedoraproject.org +// Fermax : https://fermax.com/ +// submitted by Koen Van Isterdael +mydobiss.com + // Filegear Inc. : https://www.filegear.com // Submitted by Jason Zhu filegear.me +filegear-au.me +filegear-de.me +filegear-gb.me +filegear-ie.me +filegear-jp.me +filegear-sg.me // Firebase, Inc. // Submitted by Chris Raynor @@ -11584,9 +11737,15 @@ fbxos.fr freebox-os.fr freeboxos.fr +// freedesktop.org : https://www.freedesktop.org +// Submitted by Daniel Stone +freedesktop.org + // Futureweb OG : http://www.futureweb.at // Submitted by Andreas Schnederle-Wagner *.futurecms.at +*.ex.futurecms.at +*.in.futurecms.at futurehosting.at futuremailing.at *.ex.ortsinfo.at @@ -11597,6 +11756,15 @@ futuremailing.at // Submitted by David Illsley service.gov.uk +// Gehirn Inc. : https://www.gehirn.co.jp/ +// Submitted by Kohei YOSHIDA +gehirn.ne.jp +usercontent.jp + +// Gentlent, Limited : https://www.gentlent.com +// Submitted by Tom Klein +lab.ms + // GitHub, Inc. // Submitted by Patrick Toomey github.io @@ -11606,6 +11774,15 @@ githubusercontent.com // Submitted by Alex Hanselka gitlab.io +// Glitch, Inc : https://glitch.com +// Submitted by Mads Hartmann +glitch.me + +// GOV.UK Platform as a Service : https://www.cloud.service.gov.uk/ +// Submitted by Tom Whitwell +cloudapps.digital +london.cloudapps.digital + // UKHomeOffice : https://www.gov.uk/government/organisations/home-office // Submitted by Jon Shanks homeoffice.gov.uk @@ -11621,6 +11798,9 @@ goip.de // Google, Inc. // Submitted by Eduardo Vela +run.app +a.run.app +web.app *.0emm.com appspot.com blogspot.ae @@ -11707,11 +11887,25 @@ publishproxy.com withgoogle.com withyoutube.com +// Hakaran group: http://hakaran.cz +// Submited by Arseniy Sokolov +fin.ci +free.hr +caa.li +ua.rs +conf.se + +// Handshake : https://handshake.org +// Submitted by Mike Damm +hs.zone +hs.run + // Hashbang : https://hashbang.sh hashbang.sh // Hasura : https://hasura.io // Submitted by Shahidh K Muhammed +hasura.app hasura-app.io // Hepforge : https://www.hepforge.org @@ -11723,14 +11917,52 @@ hepforge.org herokuapp.com herokussl.com +// Hibernating Rhinos +// Submitted by Oren Eini +myravendb.com +ravendb.community +ravendb.me +development.run +ravendb.run + +// HOSTBIP REGISTRY : https://www.hostbip.com/ +// Submitted by Atanunu Igbunuroghene +bpl.biz +orx.biz +ng.city +ng.ink +biz.gl +col.ng +gen.ng +ltd.ng +sch.so + +// Häkkinen.fi +// Submitted by Eero Häkkinen +häkkinen.fi + // Ici la Lune : http://www.icilalune.com/ // Submitted by Simon Morvan +*.moonscale.io moonscale.net // iki.fi // Submitted by Hannu Aronsson iki.fi +// Individual Network Berlin e.V. : https://www.in-berlin.de/ +// Submitted by Christian Seitz +dyn-berlin.de +in-berlin.de +in-brb.de +in-butter.de +in-dsl.de +in-dsl.net +in-dsl.org +in-vpn.de +in-vpn.net +in-vpn.org + // info.at : http://www.info.at/ biz.at info.at @@ -11777,6 +12009,16 @@ pixolino.com // Submitted by Matthew Hardeman ipifony.net +// IServ GmbH : https://iserv.eu +// Submitted by Kim-Alexander Brodowski +mein-iserv.de +test-iserv.de +iserv.dev + +// I-O DATA DEVICE, INC. : http://www.iodata.com/ +// Submitted by Yuji Minagawa +iobb.net + // Jino : https://www.jino.ru // Submitted by Sergey Ulyashin myjino.ru @@ -11794,10 +12036,20 @@ myjino.ru // Submitted by Stefan Keim js.org +// KaasHosting : http://www.kaashosting.nl/ +// Submitted by Wouter Bakker +kaas.gg +khplay.nl + // Keyweb AG : https://www.keyweb.de // Submitted by Martin Dannehl keymachine.de +// KingHost : https://king.host +// Submitted by Felipe Keller Braz +kinghost.net +uni5.net + // KnightPoint Systems, LLC : http://www.knightpoint.com/ // Submitted by Roy Keene knightpoint.systems @@ -11812,34 +12064,112 @@ git-repos.de lcube-server.de svn-repos.de +// Leadpages : https://www.leadpages.net +// Submitted by Greg Dallavalle +leadpages.co +lpages.co +lpusercontent.com + +// Lifetime Hosting : https://Lifetime.Hosting/ +// Submitted by Mike Fillator +co.business +co.education +co.events +co.financial +co.network +co.place +co.technology + +// Lightmaker Property Manager, Inc. : https://app.lmpm.com/ +// Submitted by Greg Holland +app.lmpm.com + +// Linki Tools UG : https://linki.tools +// Submitted by Paulo Matos +linkitools.space + // linkyard ldt: https://www.linkyard.ch/ // Submitted by Mario Siegenthaler linkyard.cloud linkyard-cloud.ch +// Linode : https://linode.com +// Submitted by +members.linode.com +nodebalancer.linode.com + // LiquidNet Ltd : http://www.liquidnetlimited.com/ // Submitted by Victor Velchev we.bs +// Log'in Line : https://www.loginline.com/ +// Submitted by Rémi Mach +loginline.app +loginline.dev +loginline.io +loginline.services +loginline.site + +// LubMAN UMCS Sp. z o.o : https://lubman.pl/ +// Submitted by Ireneusz Maliszewski +krasnik.pl +leczna.pl +lubartow.pl +lublin.pl +poniatowa.pl +swidnik.pl + +// Lug.org.uk : https://lug.org.uk +// Submitted by Jon Spriggs +uklugs.org +glug.org.uk +lug.org.uk +lugs.org.uk + // Lukanet Ltd : https://lukanet.com // Submitted by Anton Avramov barsy.bg +barsy.co.uk +barsyonline.co.uk +barsycenter.com barsyonline.com +barsy.club barsy.de barsy.eu barsy.in +barsy.info +barsy.io +barsy.me +barsy.menu +barsy.mobi barsy.net barsy.online +barsy.org +barsy.pro +barsy.pub +barsy.shop +barsy.site barsy.support +barsy.uk // Magento Commerce // Submitted by Damien Tournoud *.magentosite.cloud +// May First - People Link : https://mayfirst.org/ +// Submitted by Jamie McClelland +mayfirst.info +mayfirst.org + // Mail.Ru Group : https://hb.cldmail.ru // Submitted by Ilya Zaretskiy hb.cldmail.ru +// Memset hosting : https://www.memset.com +// Submitted by Tom Whitwell +miniserver.com +memset.net + // MetaCentrum, CESNET z.s.p.o. : https://www.metacentrum.cz/en/ // Submitted by Zdeněk Šustr cloud.metacentrum.cz @@ -11879,6 +12209,30 @@ net.ru org.ru pp.ru +// Nabu Casa : https://www.nabucasa.com +// Submitted by Paulus Schoutsen +ui.nabu.casa + +// Names.of.London : https://names.of.london/ +// Submitted by James Stevens or +pony.club +of.fashion +on.fashion +of.football +in.london +of.london +for.men +and.mom +for.mom +for.one +for.sale +of.work +to.work + +// NCTU.ME : https://nctu.me/ +// Submitted by Tocknicsu +nctu.me + // Netlify : https://www.netlify.com // Submitted by Jessica Parsons bitballoon.com @@ -11900,6 +12254,34 @@ nh-serv.co.uk // Submitted by Jeff Wheelhouse nfshost.com +// Now-DNS : https://now-dns.com +// Submitted by Steve Russell +dnsking.ch +mypi.co +n4t.co +001www.com +ddnslive.com +myiphost.com +forumz.info +16-b.it +32-b.it +64-b.it +soundcast.me +tcp4.me +dnsup.net +hicam.net +now-dns.net +ownip.net +vpndns.net +dynserv.org +now-dns.org +x443.pw +now-dns.top +ntdll.top +freeddns.us +crafting.xyz +zapto.xyz + // nsupdate.info : https://www.nsupdate.info/ // Submitted by Thomas Waldmann nsupdate.info @@ -12002,6 +12384,10 @@ stage.nodeart.io nodum.co nodum.io +// Nucleos Inc. : https://nucleos.com +// Submitted by Piotr Zduniak +pcloud.host + // NYC.mn : http://www.information.nyc.mn // Submitted by Matthew Brown nyc.mn @@ -12009,25 +12395,32 @@ nyc.mn // NymNom : https://nymnom.com/ // Submitted by Dave McCormack nom.ae +nom.af nom.ai nom.al nym.by nym.bz nom.cl nom.gd +nom.ge nom.gl nym.gr nom.gt +nym.gy nom.hn +nym.ie nom.im +nom.ke nym.kz nym.la +nym.lc nom.li nym.li nym.lt nym.lu nym.me nom.mk +nym.mn nym.mx nom.nu nym.nz @@ -12035,11 +12428,14 @@ nym.pe nym.pt nom.pw nom.qa +nym.ro nom.rs nom.si nym.sk +nom.st nym.su nym.sx +nom.tj nym.tw nom.ug nom.uy @@ -12050,6 +12446,10 @@ nom.vg // Submitted by Andrew Sampson cya.gg +// Omnibond Systems, LLC. : https://www.omnibond.com +// Submitted by Cole Estep +cloudycluster.net + // One Fold Media : http://www.onefoldmedia.com/ // Submitted by Eddie Jones nid.io @@ -12066,9 +12466,10 @@ operaunite.com // Submitted by Duarte Santos outsystemscloud.com -// OwnProvider : http://www.ownprovider.com +// OwnProvider GmbH: http://www.ownprovider.com // Submitted by Jan Moennich ownprovider.com +own.pm // OX : http://www.ox.rs // Submitted by Adam Grand @@ -12112,6 +12513,14 @@ on-web.fr *.platform.sh *.platformsh.site +// Port53 : https://port53.io/ +// Submitted by Maximilian Schieder +dyn53.io + +// Positive Codes Technology Company : http://co.bn/faq.html +// Submitted by Zulfais +co.bn + // prgmr.com : https://prgmr.com/ // Submitted by Sarah Newman xen.prgmr.com @@ -12120,6 +12529,14 @@ xen.prgmr.com // Submitted by registry priv.at +// privacytools.io : https://www.privacytools.io/ +// Submitted by Jonah Aragon +prvcy.page + +// Protocol Labs : https://protocol.ai/ +// Submitted by Michael Burns +*.dweb.link + // Protonet GmbH : http://protonet.io // Submitted by Martin Meier protonet.io @@ -12129,6 +12546,18 @@ protonet.io chirurgiens-dentistes-en-france.fr byen.site +// pubtls.org: https://www.pubtls.org +// Submitted by Kor Nielsen +pubtls.org + +// Qualifio : https://qualifio.com/ +// Submitted by Xavier De Cock +qualifioapp.com + +// Redstar Consultants : https://www.redstarconsultants.com/ +// Submitted by Jons Slemmer +instantcloud.cn + // Russian Academy of Sciences // Submitted by Tech Support ras.ru @@ -12157,10 +12586,29 @@ vaporcloud.io rackmaze.com rackmaze.net +// Rancher Labs, Inc : https://rancher.com +// Submitted by Vincent Fiduccia +*.on-rancher.cloud +*.on-rio.io + +// Read The Docs, Inc : https://www.readthedocs.org +// Submitted by David Fischer +readthedocs.io + // Red Hat, Inc. OpenShift : https://openshift.redhat.com/ // Submitted by Tim Kramer rhcloud.com +// Render : https://render.com +// Submitted by Anurag Goel +app.render.com +onrender.com + +// Repl.it : https://repl.it +// Submitted by Mason Clayton +repl.co +repl.run + // Resin.io : https://resin.io // Submitted by Tim Perry resindevice.io @@ -12176,6 +12624,10 @@ wellbeingzone.eu ptplus.fit wellbeingzone.co.uk +// Rochester Institute of Technology : http://www.rit.edu/ +// Submitted by Jennifer Herting +git-pages.rit.edu + // Sandstorm Development Group, Inc. : https://sandcats.io/ // Submitted by Asheesh Laroia sandcats.io @@ -12225,6 +12677,14 @@ shiftedit.io // Submitted by Alex Bowers myshopblocks.com +// Shopit : https://www.shopitcommerce.com/ +// Submitted by Craig McMahon +shopitsite.com + +// Siemens Mobility GmbH +// Submitted by Oliver Graebner +mo-siemens.io + // SinaAppEngine : http://sae.sina.com.cn/ // Submitted by SinaAppEngine 1kapp.com @@ -12233,12 +12693,20 @@ applinzi.com sinaapp.com vipsinaapp.com +// Siteleaf : https://www.siteleaf.com/ +// Submitted by Skylar Challand +siteleaf.net + // Skyhat : http://www.skyhat.io // Submitted by Shante Adam bounty-full.com alpha.bounty-full.com beta.bounty-full.com +// Stackhero : https://www.stackhero.io +// Submitted by Adrien Gillon +stackhero-network.com + // staticland : https://static.land // Submitted by Seth Vincent static.land @@ -12254,18 +12722,40 @@ apps.lair.io // Submitted by Reza Akhavan spacekit.io -// Stackspace : https://www.stackspace.io/ -// Submitted by Lina He -stackspace.space +// SpeedPartner GmbH: https://www.speedpartner.de/ +// Submitted by Stefan Neufeind +customer.speedpartner.de + +// Standard Library : https://stdlib.com +// Submitted by Jacob Lee +api.stdlib.com // Storj Labs Inc. : https://storj.io/ // Submitted by Philip Hutchins storj.farm +// Studenten Net Twente : http://www.snt.utwente.nl/ +// Submitted by Silke Hofstra +utwente.io + +// Student-Run Computing Facility : https://www.srcf.net/ +// Submitted by Edwin Balani +soc.srcf.net +user.srcf.net + // Sub 6 Limited: http://www.sub6.com // Submitted by Dan Miller temp-dns.com +// Swisscom Application Cloud: https://developer.swisscom.com +// Submitted by Matthias.Winzeler +applicationcloud.io +scapp.io + +// Syncloud : https://syncloud.org +// Submitted by Boris Rybalkin +syncloud.it + // Synology, Inc. : https://www.synology.com/ // Submitted by Rony Weng diskstation.me @@ -12294,17 +12784,33 @@ gdynia.pl med.pl sopot.pl +// Teckids e.V. : https://www.teckids.org +// Submitted by Dominik George +edugit.org + +// Telebit : https://telebit.cloud +// Submitted by AJ ONeal +telebit.app +telebit.io +*.telebit.xyz + // The Gwiddle Foundation : https://gwiddlefoundation.org.uk // Submitted by Joshua Bayfield gwiddle.co.uk // Thingdust AG : https://thingdust.com/ // Submitted by Adrian Imboden +thingdustdata.com cust.dev.thingdust.io cust.disrec.thingdust.io cust.prod.thingdust.io cust.testing.thingdust.io +// Tlon.io : https://tlon.io +// Submitted by Mark Staarink +arvo.network +azimuth.network + // TownNews.com : http://www.townnews.com // Submitted by Dustin Ward bloxcms.com @@ -12332,7 +12838,7 @@ lima-city.rocks webspace.rocks lima.zone -// TransIP : htts://www.transip.nl +// TransIP : https://www.transip.nl // Submitted by Rory Breuk *.transurl.be *.transurl.eu @@ -12361,6 +12867,7 @@ synology-ds.de // Uberspace : https://uberspace.de // Submitted by Moritz Werner uber.space +*.uberspace.de // UDR Limited : http://www.udr.hk.com // Submitted by registry @@ -12369,6 +12876,11 @@ hk.org ltd.hk inc.hk +// United Gameserver GmbH : https://united-gameserver.de +// Submitted by Stefan Schwarz +virtualuser.de +virtual-user.de + // .US // Submitted by Ed Moore lib.de.us @@ -12385,6 +12897,14 @@ router.management // Submitted by Adnan RIHAN v-info.info +// Voorloper.com: https://voorloper.com +// Submitted by Nathan van Bakel +voorloper.cloud + +// Waffle Computer Inc., Ltd. : https://docs.waffleinfo.com +// Submitted by Masayuki Note +wafflecell.com + // WeDeploy by Liferay, Inc. : https://www.wedeploy.com // Submitted by Henrique Vicente wedeploy.io @@ -12399,6 +12919,16 @@ remotewd.com // Submitted by Yuvi Panda wmflabs.org +// XenonCloud GbR: https://xenoncloud.net +// Submitted by Julian Uphoff +half.host + +// XnBay Technology : http://www.xnbay.com/ +// Submitted by XnBay Developer +xnbay.com +u2.xnbay.com +u2-local.xnbay.com + // XS4ALL Internet bv : https://www.xs4all.nl/ // Submitted by Daniel Mostertman cistron.nl @@ -12437,4 +12967,19 @@ za.org // Submitted by Olli Vanhoja now.sh +// Zine EOOD : https://zine.bg/ +// Submitted by Martin Angelov +bss.design + +// Zitcom A/S : https://www.zitcom.dk +// Submitted by Emil Stahl +basicserver.io +virtualserver.io +site.builder.nu +enterprisecloud.nu + +// Zone.id : https://zone.id/ +// Submitted by Su Hendro +zone.id + // ===END PRIVATE DOMAINS=== diff --git a/fluentd/vendored_gem_src/domain_name/lib/domain_name/etld_data.rb b/fluentd/vendored_gem_src/domain_name/lib/domain_name/etld_data.rb index 7d1525598..9525d841b 100644 --- a/fluentd/vendored_gem_src/domain_name/lib/domain_name/etld_data.rb +++ b/fluentd/vendored_gem_src/domain_name/lib/domain_name/etld_data.rb @@ -1,5 +1,5 @@ class DomainName - ETLD_DATA_DATE = '2018-04-17T23:50:25Z' + ETLD_DATA_DATE = '2019-07-01T18:45:50Z' ETLD_DATA = { "ac" => 0, @@ -132,6 +132,11 @@ class DomainName "net.al" => 0, "org.al" => 0, "am" => 0, + "co.am" => 0, + "com.am" => 0, + "commune.am" => 0, + "net.am" => 0, + "org.am" => 0, "ao" => 0, "ed.ao" => 0, "gv.ao" => 0, @@ -297,7 +302,12 @@ class DomainName "gov.bm" => 0, "net.bm" => 0, "org.bm" => 0, - "bn" => -1, + "bn" => 0, + "com.bn" => 0, + "edu.bn" => 0, + "gov.bn" => 0, + "net.bn" => 0, + "org.bn" => 0, "bo" => 0, "com.bo" => 0, "edu.bo" => 0, @@ -454,6 +464,7 @@ class DomainName "not.br" => 0, "ntr.br" => 0, "odo.br" => 0, + "ong.br" => 0, "org.br" => 0, "osasco.br" => 0, "palmas.br" => 0, @@ -483,6 +494,7 @@ class DomainName "sorocaba.br" => 0, "srv.br" => 0, "taxi.br" => 0, + "tc.br" => 0, "teo.br" => 0, "the.br" => 0, "tmp.br" => 0, @@ -760,14 +772,13 @@ class DomainName "fm" => 0, "fo" => 0, "fr" => 0, - "com.fr" => 0, "asso.fr" => 0, + "com.fr" => 0, + "gouv.fr" => 0, "nom.fr" => 0, "prd.fr" => 0, - "presse.fr" => 0, "tm.fr" => 0, "aeroport.fr" => 0, - "assedic.fr" => 0, "avocat.fr" => 0, "avoues.fr" => 0, "cci.fr" => 0, @@ -775,7 +786,6 @@ class DomainName "chirurgiens-dentistes.fr" => 0, "experts-comptables.fr" => 0, "geometre-expert.fr" => 0, - "gouv.fr" => 0, "greta.fr" => 0, "huissier-justice.fr" => 0, "medecin.fr" => 0, @@ -850,7 +860,15 @@ class DomainName "mil.gt" => 0, "net.gt" => 0, "org.gt" => 0, - "gu" => -1, + "gu" => 0, + "com.gu" => 0, + "edu.gu" => 0, + "gov.gu" => 0, + "guam.gu" => 0, + "info.gu" => 0, + "net.gu" => 0, + "org.gu" => 0, + "web.gu" => 0, "gw" => 0, "gy" => 0, "co.gy" => 0, @@ -954,6 +972,7 @@ class DomainName "my.id" => 0, "net.id" => 0, "or.id" => 0, + "ponpes.id" => 0, "sch.id" => 0, "web.id" => 0, "ie" => 0, @@ -1074,6 +1093,12 @@ class DomainName "taa.it" => 0, "tos.it" => 0, "toscana.it" => 0, + "trentin-sud-tirol.it" => 0, + "xn--trentin-sd-tirol-rzb.it" => 0, + "trentin-sudtirol.it" => 0, + "xn--trentin-sdtirol-7vb.it" => 0, + "trentin-sued-tirol.it" => 0, + "trentin-suedtirol.it" => 0, "trentino-a-adige.it" => 0, "trentino-aadige.it" => 0, "trentino-alto-adige.it" => 0, @@ -1081,9 +1106,12 @@ class DomainName "trentino-s-tirol.it" => 0, "trentino-stirol.it" => 0, "trentino-sud-tirol.it" => 0, + "xn--trentino-sd-tirol-c3b.it" => 0, "trentino-sudtirol.it" => 0, + "xn--trentino-sdtirol-szb.it" => 0, "trentino-sued-tirol.it" => 0, "trentino-suedtirol.it" => 0, + "trentino.it" => 0, "trentinoa-adige.it" => 0, "trentinoaadige.it" => 0, "trentinoalto-adige.it" => 0, @@ -1091,9 +1119,17 @@ class DomainName "trentinos-tirol.it" => 0, "trentinostirol.it" => 0, "trentinosud-tirol.it" => 0, + "xn--trentinosd-tirol-rzb.it" => 0, "trentinosudtirol.it" => 0, + "xn--trentinosdtirol-7vb.it" => 0, "trentinosued-tirol.it" => 0, "trentinosuedtirol.it" => 0, + "trentinsud-tirol.it" => 0, + "xn--trentinsd-tirol-6vb.it" => 0, + "trentinsudtirol.it" => 0, + "xn--trentinsdtirol-nsb.it" => 0, + "trentinsued-tirol.it" => 0, + "trentinsuedtirol.it" => 0, "tuscany.it" => 0, "umb.it" => 0, "umbria.it" => 0, @@ -1108,7 +1144,13 @@ class DomainName "valled-aosta.it" => 0, "valledaosta.it" => 0, "vallee-aoste.it" => 0, + "xn--valle-aoste-ebb.it" => 0, + "vallee-d-aoste.it" => 0, + "xn--valle-d-aoste-ehb.it" => 0, "valleeaoste.it" => 0, + "xn--valleaoste-e7a.it" => 0, + "valleedaoste.it" => 0, + "xn--valledaoste-ebb.it" => 0, "vao.it" => 0, "vda.it" => 0, "ven.it" => 0, @@ -1140,6 +1182,9 @@ class DomainName "av.it" => 0, "avellino.it" => 0, "ba.it" => 0, + "balsan-sudtirol.it" => 0, + "xn--balsan-sdtirol-nsb.it" => 0, + "balsan-suedtirol.it" => 0, "balsan.it" => 0, "bari.it" => 0, "barletta-trani-andria.it" => 0, @@ -1154,13 +1199,21 @@ class DomainName "bn.it" => 0, "bo.it" => 0, "bologna.it" => 0, + "bolzano-altoadige.it" => 0, "bolzano.it" => 0, + "bozen-sudtirol.it" => 0, + "xn--bozen-sdtirol-2ob.it" => 0, + "bozen-suedtirol.it" => 0, "bozen.it" => 0, "br.it" => 0, "brescia.it" => 0, "brindisi.it" => 0, "bs.it" => 0, "bt.it" => 0, + "bulsan-sudtirol.it" => 0, + "xn--bulsan-sdtirol-nsb.it" => 0, + "bulsan-suedtirol.it" => 0, + "bulsan.it" => 0, "bz.it" => 0, "ca.it" => 0, "cagliari.it" => 0, @@ -1178,7 +1231,9 @@ class DomainName "cb.it" => 0, "ce.it" => 0, "cesena-forli.it" => 0, + "xn--cesena-forl-mcb.it" => 0, "cesenaforli.it" => 0, + "xn--cesenaforl-i8a.it" => 0, "ch.it" => 0, "chieti.it" => 0, "ci.it" => 0, @@ -1209,7 +1264,9 @@ class DomainName "fm.it" => 0, "foggia.it" => 0, "forli-cesena.it" => 0, + "xn--forl-cesena-fcb.it" => 0, "forlicesena.it" => 0, + "xn--forlcesena-c8a.it" => 0, "fr.it" => 0, "frosinone.it" => 0, "ge.it" => 0, @@ -1340,6 +1397,7 @@ class DomainName "sr.it" => 0, "ss.it" => 0, "suedtirol.it" => 0, + "xn--sdtirol-n2a.it" => 0, "sv.it" => 0, "ta.it" => 0, "taranto.it" => 0, @@ -1358,7 +1416,6 @@ class DomainName "traniandriabarletta.it" => 0, "tranibarlettaandria.it" => 0, "trapani.it" => 0, - "trentino.it" => 0, "trento.it" => 0, "treviso.it" => 0, "trieste.it" => 0, @@ -3280,7 +3337,14 @@ class DomainName "jeonnam.kr" => 0, "seoul.kr" => 0, "ulsan.kr" => 0, - "kw" => -1, + "kw" => 0, + "com.kw" => 0, + "edu.kw" => 0, + "emb.kw" => 0, + "gov.kw" => 0, + "ind.kw" => 0, + "net.kw" => 0, + "org.kw" => 0, "ky" => 0, "edu.ky" => 0, "gov.ky" => 0, @@ -3340,8 +3404,15 @@ class DomainName "org.lr" => 0, "net.lr" => 0, "ls" => 0, + "ac.ls" => 0, + "biz.ls" => 0, "co.ls" => 0, + "edu.ls" => 0, + "gov.ls" => 0, + "info.ls" => 0, + "net.ls" => 0, "org.ls" => 0, + "sc.ls" => 0, "lt" => 0, "gov.lt" => 0, "lu" => 0, @@ -4109,7 +4180,6 @@ class DomainName "org.ni" => 0, "web.ni" => 0, "nl" => 0, - "bv.nl" => 0, "no" => 0, "fhs.no" => 0, "vgs.no" => 0, @@ -5259,15 +5329,13 @@ class DomainName "mil.ru" => 0, "test.ru" => 0, "rw" => 0, - "gov.rw" => 0, - "net.rw" => 0, - "edu.rw" => 0, "ac.rw" => 0, - "com.rw" => 0, "co.rw" => 0, - "int.rw" => 0, + "coop.rw" => 0, + "gov.rw" => 0, "mil.rw" => 0, - "gouv.rw" => 0, + "net.rw" => 0, + "org.rw" => 0, "sa" => 0, "com.sa" => 0, "net.sa" => 0, @@ -5477,29 +5545,29 @@ class DomainName "edu.to" => 0, "mil.to" => 0, "tr" => 0, - "com.tr" => 0, - "info.tr" => 0, - "biz.tr" => 0, - "net.tr" => 0, - "org.tr" => 0, - "web.tr" => 0, - "gen.tr" => 0, - "tv.tr" => 0, "av.tr" => 0, - "dr.tr" => 0, "bbs.tr" => 0, - "name.tr" => 0, - "tel.tr" => 0, - "gov.tr" => 0, "bel.tr" => 0, - "pol.tr" => 0, + "biz.tr" => 0, + "com.tr" => 0, + "dr.tr" => 0, + "edu.tr" => 0, + "gen.tr" => 0, + "gov.tr" => 0, + "info.tr" => 0, "mil.tr" => 0, "k12.tr" => 0, - "edu.tr" => 0, "kep.tr" => 0, + "name.tr" => 0, + "net.tr" => 0, + "org.tr" => 0, + "pol.tr" => 0, + "tel.tr" => 0, + "tsk.tr" => 0, + "tv.tr" => 0, + "web.tr" => 0, "nc.tr" => 0, "gov.nc.tr" => 0, - "travel" => 0, "tt" => 0, "co.tt" => 0, "com.tt" => 0, @@ -5959,6 +6027,12 @@ class DomainName "xn--node" => 0, "xn--qxam" => 0, "xn--j6w193g" => 0, + "xn--55qx5d.xn--j6w193g" => 0, + "xn--wcvs22d.xn--j6w193g" => 0, + "xn--mxtq1m.xn--j6w193g" => 0, + "xn--gmqw5a.xn--j6w193g" => 0, + "xn--od0alg.xn--j6w193g" => 0, + "xn--uc0atv.xn--j6w193g" => 0, "xn--2scrj9c" => 0, "xn--3hcrj9c" => 0, "xn--45br5cyl" => 0, @@ -6076,7 +6150,6 @@ class DomainName "accountant" => 0, "accountants" => 0, "aco" => 0, - "active" => 0, "actor" => 0, "adac" => 0, "ads" => 0, @@ -6177,7 +6250,6 @@ class DomainName "bio" => 0, "black" => 0, "blackfriday" => 0, - "blanco" => 0, "blockbuster" => 0, "blog" => 0, "bloomberg" => 0, @@ -6305,6 +6377,7 @@ class DomainName "coupon" => 0, "coupons" => 0, "courses" => 0, + "cpa" => 0, "credit" => 0, "creditcard" => 0, "creditunion" => 0, @@ -6356,7 +6429,6 @@ class DomainName "doctor" => 0, "dodge" => 0, "dog" => 0, - "doha" => 0, "domains" => 0, "dot" => 0, "download" => 0, @@ -6381,7 +6453,6 @@ class DomainName "engineer" => 0, "engineering" => 0, "enterprises" => 0, - "epost" => 0, "epson" => 0, "equipment" => 0, "ericsson" => 0, @@ -6466,6 +6537,7 @@ class DomainName "games" => 0, "gap" => 0, "garden" => 0, + "gay" => 0, "gbiz" => 0, "gdn" => 0, "gea" => 0, @@ -6491,7 +6563,6 @@ class DomainName "goldpoint" => 0, "golf" => 0, "goo" => 0, - "goodhands" => 0, "goodyear" => 0, "goog" => 0, "google" => 0, @@ -6584,7 +6655,6 @@ class DomainName "itau" => 0, "itv" => 0, "iveco" => 0, - "iwc" => 0, "jaguar" => 0, "java" => 0, "jcb" => 0, @@ -6593,7 +6663,6 @@ class DomainName "jetzt" => 0, "jewelry" => 0, "jio" => 0, - "jlc" => 0, "jll" => 0, "jmp" => 0, "jnj" => 0, @@ -6711,7 +6780,6 @@ class DomainName "memorial" => 0, "men" => 0, "menu" => 0, - "meo" => 0, "merckmsd" => 0, "metlife" => 0, "miami" => 0, @@ -6809,7 +6877,6 @@ class DomainName "ovh" => 0, "page" => 0, "panasonic" => 0, - "panerai" => 0, "paris" => 0, "pars" => 0, "partners" => 0, @@ -6926,7 +6993,6 @@ class DomainName "sandvikcoromant" => 0, "sanofi" => 0, "sap" => 0, - "sapo" => 0, "sarl" => 0, "sas" => 0, "save" => 0, @@ -6995,7 +7061,6 @@ class DomainName "sony" => 0, "soy" => 0, "space" => 0, - "spiegel" => 0, "sport" => 0, "spot" => 0, "spreadbetting" => 0, @@ -7007,7 +7072,6 @@ class DomainName "starhub" => 0, "statebank" => 0, "statefarm" => 0, - "statoil" => 0, "stc" => 0, "stcgroup" => 0, "stockholm" => 0, @@ -7045,7 +7109,6 @@ class DomainName "team" => 0, "tech" => 0, "technology" => 0, - "telecity" => 0, "telefonica" => 0, "temasek" => 0, "tennis" => 0, @@ -7078,6 +7141,7 @@ class DomainName "trade" => 0, "trading" => 0, "training" => 0, + "travel" => 0, "travelchannel" => 0, "travelers" => 0, "travelersinsurance" => 0, @@ -7114,7 +7178,6 @@ class DomainName "virgin" => 0, "visa" => 0, "vision" => 0, - "vista" => 0, "vistaprint" => 0, "viva" => 0, "vivo" => 0, @@ -7261,7 +7324,6 @@ class DomainName "xn--w4rs40l" => 0, "xn--xhq521b" => 0, "xn--zfr164b" => 0, - "xperia" => 0, "xyz" => 0, "yachts" => 0, "yahoo" => 0, @@ -7277,13 +7339,13 @@ class DomainName "zara" => 0, "zero" => 0, "zip" => 0, - "zippo" => 0, "zone" => 0, "zuerich" => 0, "cc.ua" => 0, "inf.ua" => 0, "ltd.ua" => 0, "beep.pl" => 0, + "barsy.ca" => 0, "compute.estate" => -1, "alces.network" => -1, "alwaysdata.net" => 0, @@ -7293,6 +7355,7 @@ class DomainName "compute.amazonaws.com.cn" => -1, "us-east-1.amazonaws.com" => 0, "cn-north-1.eb.amazonaws.com.cn" => 0, + "cn-northwest-1.eb.amazonaws.com.cn" => 0, "elasticbeanstalk.com" => 0, "ap-northeast-1.elasticbeanstalk.com" => 0, "ap-northeast-2.elasticbeanstalk.com" => 0, @@ -7369,6 +7432,7 @@ class DomainName "s3-website.us-east-2.amazonaws.com" => 0, "t3l3p0rt.net" => 0, "tele.amune.org" => 0, + "apigee.io" => 0, "on-aptible.com" => 0, "user.party.eus" => 0, "pimienta.org" => 0, @@ -7376,12 +7440,19 @@ class DomainName "potager.org" => 0, "sweetpepper.org" => 0, "myasustor.com" => 0, + "go-vip.co" => 0, + "go-vip.net" => 0, + "wpcomstaging.com" => 0, "myfritz.net" => 0, "awdev.ca" => -1, "advisor.ws" => -1, + "b-data.io" => 0, "backplaneapp.io" => 0, + "balena-devices.com" => 0, + "app.banzaicloud.io" => 0, "betainabox.com" => 0, "bnr.la" => 0, + "blackbaudcdn.net" => 0, "boomla.net" => 0, "boxfuse.io" => 0, "square7.ch" => 0, @@ -7391,7 +7462,13 @@ class DomainName "bplaced.net" => 0, "square7.net" => 0, "browsersafetymark.io" => 0, + "uk0.bigv.io" => 0, + "dh.bytemark.co.uk" => 0, + "vm.bytemark.co.uk" => 0, "mycd.eu" => 0, + "carrd.co" => 0, + "crd.co" => 0, + "uwu.ai" => 0, "ae.org" => 0, "ar.com" => 0, "br.com" => 0, @@ -7427,10 +7504,14 @@ class DomainName "c.la" => 0, "certmgr.org" => 0, "xenapponazure.com" => 0, + "discourse.group" => 0, "virtueeldomein.nl" => 0, "cleverapps.io" => 0, + "lcl.dev" => -1, + "stg.dev" => -1, "c66.me" => 0, "cloud66.ws" => 0, + "cloud66.zone" => 0, "jdevcloud.com" => 0, "wpdevcloud.com" => 0, "cloudaccess.host" => 0, @@ -7438,7 +7519,12 @@ class DomainName "cloudaccess.net" => 0, "cloudcontrolled.com" => 0, "cloudcontrolapp.com" => 0, + "cloudera.site" => 0, + "trycloudflare.com" => 0, + "workers.dev" => 0, + "wnext.app" => 0, "co.ca" => 0, + "otap.co" => -1, "co.cz" => 0, "c.cdn77.org" => 0, "cdn77-ssl.net" => 0, @@ -7457,6 +7543,7 @@ class DomainName "cloudns.pw" => 0, "cloudns.us" => 0, "cloudeity.net" => 0, + "cnpy.gdn" => 0, "co.nl" => 0, "co.no" => 0, "webhosting.be" => 0, @@ -7477,14 +7564,24 @@ class DomainName "cyon.site" => 0, "daplie.me" => 0, "localhost.daplie.me" => 0, + "dattolocal.com" => 0, + "dattorelay.com" => 0, + "dattoweb.com" => 0, + "mydatto.com" => 0, + "dattolocal.net" => 0, + "mydatto.net" => 0, "biz.dk" => 0, "co.dk" => 0, "firm.dk" => 0, "reg.dk" => 0, "store.dk" => 0, + "dapps.earth" => -1, + "bzz.dapps.earth" => -1, "debian.net" => 0, "dedyn.io" => 0, "dnshome.de" => 0, + "online.th" => 0, + "shop.th" => 0, "drayddns.com" => 0, "dreamhosters.com" => 0, "mydrobo.com" => 0, @@ -7783,6 +7880,7 @@ class DomainName "ddnss.org" => 0, "definima.net" => 0, "definima.io" => 0, + "bci.dnstrace.pro" => 0, "ddnsfree.com" => 0, "ddnsgeek.com" => 0, "giize.com" => 0, @@ -7803,6 +7901,8 @@ class DomainName "dynv6.net" => 0, "e4.cz" => 0, "mytuleap.com" => 0, + "onred.one" => 0, + "staging.onred.one" => 0, "enonic.io" => 0, "customer.enonic.io" => 0, "eu.org" => 0, @@ -7948,6 +8048,7 @@ class DomainName "vladimir.su" => 0, "vologda.su" => 0, "channelsdvr.net" => 0, + "fastly-terrarium.com" => 0, "fastlylb.net" => 0, "map.fastlylb.net" => 0, "freetls.fastly.net" => 0, @@ -7957,13 +8058,22 @@ class DomainName "a.ssl.fastly.net" => 0, "b.ssl.fastly.net" => 0, "global.ssl.fastly.net" => 0, + "fastpanel.direct" => 0, + "fastvps-server.com" => 0, "fhapp.xyz" => 0, "fedorainfracloud.org" => 0, "fedorapeople.org" => 0, "cloud.fedoraproject.org" => 0, "app.os.fedoraproject.org" => 0, "app.os.stg.fedoraproject.org" => 0, + "mydobiss.com" => 0, "filegear.me" => 0, + "filegear-au.me" => 0, + "filegear-de.me" => 0, + "filegear-gb.me" => 0, + "filegear-ie.me" => 0, + "filegear-jp.me" => 0, + "filegear-sg.me" => 0, "firebaseapp.com" => 0, "flynnhub.com" => 0, "flynnhosting.net" => 0, @@ -7973,20 +8083,32 @@ class DomainName "fbxos.fr" => 0, "freebox-os.fr" => 0, "freeboxos.fr" => 0, + "freedesktop.org" => 0, "futurecms.at" => -1, + "ex.futurecms.at" => -1, + "in.futurecms.at" => -1, "futurehosting.at" => 0, "futuremailing.at" => 0, "ex.ortsinfo.at" => -1, "kunden.ortsinfo.at" => -1, "statics.cloud" => -1, "service.gov.uk" => 0, + "gehirn.ne.jp" => 0, + "usercontent.jp" => 0, + "lab.ms" => 0, "github.io" => 0, "githubusercontent.com" => 0, "gitlab.io" => 0, + "glitch.me" => 0, + "cloudapps.digital" => 0, + "london.cloudapps.digital" => 0, "homeoffice.gov.uk" => 0, "ro.im" => 0, "shop.ro" => 0, "goip.de" => 0, + "run.app" => 0, + "a.run.app" => 0, + "web.app" => 0, "0emm.com" => -1, "appspot.com" => 0, "blogspot.ae" => 0, @@ -8072,13 +8194,47 @@ class DomainName "publishproxy.com" => 0, "withgoogle.com" => 0, "withyoutube.com" => 0, + "fin.ci" => 0, + "free.hr" => 0, + "caa.li" => 0, + "ua.rs" => 0, + "conf.se" => 0, + "hs.zone" => 0, + "hs.run" => 0, "hashbang.sh" => 0, + "hasura.app" => 0, "hasura-app.io" => 0, "hepforge.org" => 0, "herokuapp.com" => 0, "herokussl.com" => 0, + "myravendb.com" => 0, + "ravendb.community" => 0, + "ravendb.me" => 0, + "development.run" => 0, + "ravendb.run" => 0, + "bpl.biz" => 0, + "orx.biz" => 0, + "ng.city" => 0, + "ng.ink" => 0, + "biz.gl" => 0, + "col.ng" => 0, + "gen.ng" => 0, + "ltd.ng" => 0, + "sch.so" => 0, + "xn--hkkinen-5wa.fi" => 0, + "moonscale.io" => -1, "moonscale.net" => 0, "iki.fi" => 0, + "dyn-berlin.de" => 0, + "in-berlin.de" => 0, + "in-brb.de" => 0, + "in-butter.de" => 0, + "in-dsl.de" => 0, + "in-dsl.net" => 0, + "in-dsl.org" => 0, + "in-vpn.de" => 0, + "in-vpn.net" => 0, + "in-vpn.org" => 0, "biz.at" => 0, "info.at" => 0, "info.cx" => 0, @@ -8111,6 +8267,10 @@ class DomainName "to.leg.br" => 0, "pixolino.com" => 0, "ipifony.net" => 0, + "mein-iserv.de" => 0, + "test-iserv.de" => 0, + "iserv.dev" => 0, + "iobb.net" => 0, "myjino.ru" => 0, "hosting.myjino.ru" => -1, "landing.myjino.ru" => -1, @@ -8119,26 +8279,78 @@ class DomainName "triton.zone" => -1, "cns.joyent.com" => -1, "js.org" => 0, + "kaas.gg" => 0, + "khplay.nl" => 0, "keymachine.de" => 0, + "kinghost.net" => 0, + "uni5.net" => 0, "knightpoint.systems" => 0, "co.krd" => 0, "edu.krd" => 0, "git-repos.de" => 0, "lcube-server.de" => 0, "svn-repos.de" => 0, + "leadpages.co" => 0, + "lpages.co" => 0, + "lpusercontent.com" => 0, + "co.business" => 0, + "co.education" => 0, + "co.events" => 0, + "co.financial" => 0, + "co.network" => 0, + "co.place" => 0, + "co.technology" => 0, + "app.lmpm.com" => 0, + "linkitools.space" => 0, "linkyard.cloud" => 0, "linkyard-cloud.ch" => 0, + "members.linode.com" => 0, + "nodebalancer.linode.com" => 0, "we.bs" => 0, + "loginline.app" => 0, + "loginline.dev" => 0, + "loginline.io" => 0, + "loginline.services" => 0, + "loginline.site" => 0, + "krasnik.pl" => 0, + "leczna.pl" => 0, + "lubartow.pl" => 0, + "lublin.pl" => 0, + "poniatowa.pl" => 0, + "swidnik.pl" => 0, + "uklugs.org" => 0, + "glug.org.uk" => 0, + "lug.org.uk" => 0, + "lugs.org.uk" => 0, "barsy.bg" => 0, + "barsy.co.uk" => 0, + "barsyonline.co.uk" => 0, + "barsycenter.com" => 0, "barsyonline.com" => 0, + "barsy.club" => 0, "barsy.de" => 0, "barsy.eu" => 0, "barsy.in" => 0, + "barsy.info" => 0, + "barsy.io" => 0, + "barsy.me" => 0, + "barsy.menu" => 0, + "barsy.mobi" => 0, "barsy.net" => 0, "barsy.online" => 0, + "barsy.org" => 0, + "barsy.pro" => 0, + "barsy.pub" => 0, + "barsy.shop" => 0, + "barsy.site" => 0, "barsy.support" => 0, + "barsy.uk" => 0, "magentosite.cloud" => -1, + "mayfirst.info" => 0, + "mayfirst.org" => 0, "hb.cldmail.ru" => 0, + "miniserver.com" => 0, + "memset.net" => 0, "cloud.metacentrum.cz" => 0, "custom.metacentrum.cz" => 0, "flt.cloud.muni.cz" => 0, @@ -8155,12 +8367,52 @@ class DomainName "net.ru" => 0, "org.ru" => 0, "pp.ru" => 0, + "ui.nabu.casa" => 0, + "pony.club" => 0, + "of.fashion" => 0, + "on.fashion" => 0, + "of.football" => 0, + "in.london" => 0, + "of.london" => 0, + "for.men" => 0, + "and.mom" => 0, + "for.mom" => 0, + "for.one" => 0, + "for.sale" => 0, + "of.work" => 0, + "to.work" => 0, + "nctu.me" => 0, "bitballoon.com" => 0, "netlify.com" => 0, "4u.com" => 0, "ngrok.io" => 0, "nh-serv.co.uk" => 0, "nfshost.com" => 0, + "dnsking.ch" => 0, + "mypi.co" => 0, + "n4t.co" => 0, + "001www.com" => 0, + "ddnslive.com" => 0, + "myiphost.com" => 0, + "forumz.info" => 0, + "16-b.it" => 0, + "32-b.it" => 0, + "64-b.it" => 0, + "soundcast.me" => 0, + "tcp4.me" => 0, + "dnsup.net" => 0, + "hicam.net" => 0, + "now-dns.net" => 0, + "ownip.net" => 0, + "vpndns.net" => 0, + "dynserv.org" => 0, + "now-dns.org" => 0, + "x443.pw" => 0, + "now-dns.top" => 0, + "ntdll.top" => 0, + "freeddns.us" => 0, + "crafting.xyz" => 0, + "zapto.xyz" => 0, "nsupdate.info" => 0, "nerdpol.ovh" => 0, "blogsyte.com" => 0, @@ -8251,27 +8503,35 @@ class DomainName "stage.nodeart.io" => 0, "nodum.co" => 0, "nodum.io" => 0, + "pcloud.host" => 0, "nyc.mn" => 0, "nom.ae" => 0, + "nom.af" => 0, "nom.ai" => 0, "nom.al" => 0, "nym.by" => 0, "nym.bz" => 0, "nom.cl" => 0, "nom.gd" => 0, + "nom.ge" => 0, "nom.gl" => 0, "nym.gr" => 0, "nom.gt" => 0, + "nym.gy" => 0, "nom.hn" => 0, + "nym.ie" => 0, "nom.im" => 0, + "nom.ke" => 0, "nym.kz" => 0, "nym.la" => 0, + "nym.lc" => 0, "nom.li" => 0, "nym.li" => 0, "nym.lt" => 0, "nym.lu" => 0, "nym.me" => 0, "nom.mk" => 0, + "nym.mn" => 0, "nym.mx" => 0, "nom.nu" => 0, "nym.nz" => 0, @@ -8279,22 +8539,27 @@ class DomainName "nym.pt" => 0, "nom.pw" => 0, "nom.qa" => 0, + "nym.ro" => 0, "nom.rs" => 0, "nom.si" => 0, "nym.sk" => 0, + "nom.st" => 0, "nym.su" => 0, "nym.sx" => 0, + "nom.tj" => 0, "nym.tw" => 0, "nom.ug" => 0, "nom.uy" => 0, "nom.vc" => 0, "nom.vg" => 0, "cya.gg" => 0, + "cloudycluster.net" => 0, "nid.io" => 0, "opencraft.hosting" => 0, "operaunite.com" => 0, "outsystemscloud.com" => 0, "ownprovider.com" => 0, + "own.pm" => 0, "ox.rs" => 0, "oy.lc" => 0, "pgfog.com" => 0, @@ -8311,11 +8576,18 @@ class DomainName "on-web.fr" => 0, "platform.sh" => -1, "platformsh.site" => -1, + "dyn53.io" => 0, + "co.bn" => 0, "xen.prgmr.com" => 0, "priv.at" => 0, + "prvcy.page" => 0, + "dweb.link" => -1, "protonet.io" => 0, "chirurgiens-dentistes-en-france.fr" => 0, "byen.site" => 0, + "pubtls.org" => 0, + "qualifioapp.com" => 0, + "instantcloud.cn" => 0, "ras.ru" => 0, "qa2.com" => 0, "dev-myqnapcloud.com" => 0, @@ -8326,13 +8598,21 @@ class DomainName "vaporcloud.io" => 0, "rackmaze.com" => 0, "rackmaze.net" => 0, + "on-rancher.cloud" => -1, + "on-rio.io" => -1, + "readthedocs.io" => 0, "rhcloud.com" => 0, + "app.render.com" => 0, + "onrender.com" => 0, + "repl.co" => 0, + "repl.run" => 0, "resindevice.io" => 0, "devices.resinstaging.io" => 0, "hzc.io" => 0, "wellbeingzone.eu" => 0, "ptplus.fit" => 0, "wellbeingzone.co.uk" => 0, + "git-pages.rit.edu" => 0, "sandcats.io" => 0, "logoip.de" => 0, "logoip.com" => 0, @@ -8355,23 +8635,34 @@ class DomainName "pp.ua" => 0, "shiftedit.io" => 0, "myshopblocks.com" => 0, + "shopitsite.com" => 0, + "mo-siemens.io" => 0, "1kapp.com" => 0, "appchizi.com" => 0, "applinzi.com" => 0, "sinaapp.com" => 0, "vipsinaapp.com" => 0, + "siteleaf.net" => 0, "bounty-full.com" => 0, "alpha.bounty-full.com" => 0, "beta.bounty-full.com" => 0, + "stackhero-network.com" => 0, "static.land" => 0, "dev.static.land" => 0, "sites.static.land" => 0, "apps.lair.io" => 0, "stolos.io" => -1, "spacekit.io" => 0, - "stackspace.space" => 0, + "customer.speedpartner.de" => 0, + "api.stdlib.com" => 0, "storj.farm" => 0, + "utwente.io" => 0, + "soc.srcf.net" => 0, + "user.srcf.net" => 0, "temp-dns.com" => 0, + "applicationcloud.io" => 0, + "scapp.io" => 0, + "syncloud.it" => 0, "diskstation.me" => 0, "dscloud.biz" => 0, "dscloud.me" => 0, @@ -8392,11 +8683,18 @@ class DomainName "gdynia.pl" => 0, "med.pl" => 0, "sopot.pl" => 0, + "edugit.org" => 0, + "telebit.app" => 0, + "telebit.io" => 0, + "telebit.xyz" => -1, "gwiddle.co.uk" => 0, + "thingdustdata.com" => 0, "cust.dev.thingdust.io" => 0, "cust.disrec.thingdust.io" => 0, "cust.prod.thingdust.io" => 0, "cust.testing.thingdust.io" => 0, + "arvo.network" => 0, + "azimuth.network" => 0, "bloxcms.com" => 0, "townnews-staging.com" => 0, "12hp.at" => 0, @@ -8436,19 +8734,28 @@ class DomainName "synology-diskstation.de" => 0, "synology-ds.de" => 0, "uber.space" => 0, + "uberspace.de" => -1, "hk.com" => 0, "hk.org" => 0, "ltd.hk" => 0, "inc.hk" => 0, + "virtualuser.de" => 0, + "virtual-user.de" => 0, "lib.de.us" => 0, "2038.io" => 0, "router.management" => 0, "v-info.info" => 0, + "voorloper.cloud" => 0, + "wafflecell.com" => 0, "wedeploy.io" => 0, "wedeploy.me" => 0, "wedeploy.sh" => 0, "remotewd.com" => 0, "wmflabs.org" => 0, + "half.host" => 0, + "xnbay.com" => 0, + "u2.xnbay.com" => 0, + "u2-local.xnbay.com" => 0, "cistron.nl" => 0, "demon.nl" => 0, "xs4all.space" => 0, @@ -8466,6 +8773,12 @@ class DomainName "za.net" => 0, "za.org" => 0, "now.sh" => 0, + "bss.design" => 0, + "basicserver.io" => 0, + "virtualserver.io" => 0, + "site.builder.nu" => 0, + "enterprisecloud.nu" => 0, + "zone.id" => 0, } def self.etld_data diff --git a/fluentd/vendored_gem_src/domain_name/lib/domain_name/version.rb b/fluentd/vendored_gem_src/domain_name/lib/domain_name/version.rb index cf2f8f98b..c37552f5b 100644 --- a/fluentd/vendored_gem_src/domain_name/lib/domain_name/version.rb +++ b/fluentd/vendored_gem_src/domain_name/lib/domain_name/version.rb @@ -1,3 +1,3 @@ class DomainName - VERSION = '0.5.20180417' + VERSION = '0.5.20190701' end diff --git a/fluentd/vendored_gem_src/elasticsearch-api/README.md b/fluentd/vendored_gem_src/elasticsearch-api/README.md index 03215385e..5e712ca09 100644 --- a/fluentd/vendored_gem_src/elasticsearch-api/README.md +++ b/fluentd/vendored_gem_src/elasticsearch-api/README.md @@ -23,6 +23,7 @@ just use a release matching major version of Elasticsearch. | 2.x | → | 2.x | | 5.x | → | 5.x | | 6.x | → | 6.x | +| 7.x | → | 7.x | | master | → | master | ## Installation diff --git a/fluentd/vendored_gem_src/elasticsearch-api/Rakefile b/fluentd/vendored_gem_src/elasticsearch-api/Rakefile index 67f37750c..908188f6b 100644 --- a/fluentd/vendored_gem_src/elasticsearch-api/Rakefile +++ b/fluentd/vendored_gem_src/elasticsearch-api/Rakefile @@ -40,11 +40,17 @@ namespace :test do sh '../scripts/wait-cluster.sh' end - RSpec::Core::RakeTask.new(:spec) + RSpec::Core::RakeTask.new(:spec) do |t| + t.exclude_pattern = 'spec/**{,/*/**}/rest_api_yaml_spec.rb' + end + + RSpec::Core::RakeTask.new(:rest_api) do |t| + t.pattern = 'spec/**{,/*/**}/rest_api_yaml_spec.rb' + end desc "Update the repository with YAML tests" task :update do - git_specs "fetch origin --verbose", :verbose => true + git_specs "fetch origin", :verbose => true end Rake::TestTask.new(:unit) do |test| @@ -56,7 +62,7 @@ namespace :test do end desc "Run integration tests" - task :integration => :wait_for_green do + task :integration => :update do require 'elasticsearch' branches = `git --git-dir=#{__current__.join('../tmp/elasticsearch/.git')} --work-tree=#{__current__.join('../tmp/elasticsearch')} branch --no-color` @@ -73,15 +79,6 @@ namespace :test do current_branch = 'master' end - # Define the task - t = Rake::TestTask.new(:integration) do |test| - test.deps = [ :wait_for_green ] - test.libs << 'lib' << 'test' - test.test_files = FileList["test/integration/yaml_test_runner.rb", "test/integration/**/*_test.rb"] - test.verbose = false - test.warning = false - end - # Check if a test cluster is running begin url = ENV['TEST_CLUSTER_URL'] || ENV['TEST_ES_SERVER'] @@ -116,16 +113,7 @@ namespace :test do git_specs "checkout #{checkout_build_hash} --force --quiet" end - # Run the task - args = [t.ruby_opts_string, t.run_code, t.file_list_string, t.option_list].join(' ') - - ruby args do |ok, status| - if !ok && status.respond_to?(:signaled?) && status.signaled? - raise SignalException.new(status.termsig) - elsif !ok - fail "Command failed with status (#{status.exitstatus}): " + "[ruby #{args}]" - end - end + Rake::Task['test:rest_api'].invoke ensure git_specs "checkout #{current_branch} --force --quiet" if checkout_specs_version && current_branch diff --git a/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/field_caps.rb b/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/field_caps.rb index b449b9a2d..22d1e93f6 100644 --- a/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/field_caps.rb +++ b/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/field_caps.rb @@ -50,7 +50,8 @@ def field_caps(arguments={}) :fields, :ignore_unavailable, :allow_no_indices, - :expand_wildcards ].freeze) + :expand_wildcards, + :include_unmapped ].freeze) end end end diff --git a/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/get_source.rb b/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/get_source.rb index 7c05ad894..c7b28a72f 100644 --- a/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/get_source.rb +++ b/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/get_source.rb @@ -69,9 +69,7 @@ def get_source(arguments={}) params[:fields] = Utils.__listify(params[:fields]) if params[:fields] - Utils.__rescue_from_not_found do - perform_request(method, path, params, body).body - end + perform_request(method, path, params, body).body end # Register this action with its valid params when the module is loaded. diff --git a/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/indices/stats.rb b/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/indices/stats.rb index 30023cb48..79f8a457d 100644 --- a/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/indices/stats.rb +++ b/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/indices/stats.rb @@ -120,7 +120,9 @@ def stats(arguments={}) :ignore_unavailable, :allow_no_indices, :expand_wildcards, - :include_segment_file_sizes ].freeze) + :include_segment_file_sizes, + :include_unloaded_segments, + :forbid_closed_indices ].freeze) # Register this action with its valid parts when the module is loaded. # diff --git a/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/indices/upgrade.rb b/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/indices/upgrade.rb index 202114728..709077da1 100644 --- a/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/indices/upgrade.rb +++ b/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/actions/indices/upgrade.rb @@ -44,6 +44,7 @@ def upgrade(arguments={}) # # @since 6.1.1 ParamsRegistry.register(:upgrade, [ + :index, :allow_no_indices, :expand_wildcards, :ignore_unavailable, diff --git a/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/version.rb b/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/version.rb index 09280e750..da3661388 100644 --- a/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/version.rb +++ b/fluentd/vendored_gem_src/elasticsearch-api/lib/elasticsearch/api/version.rb @@ -17,6 +17,6 @@ module Elasticsearch module API - VERSION = "7.1.0" + VERSION = "7.2.0" end end diff --git a/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/actions/get_document_source_spec.rb b/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/actions/get_document_source_spec.rb index caae69e40..f036662c1 100644 --- a/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/actions/get_document_source_spec.rb +++ b/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/actions/get_document_source_spec.rb @@ -91,8 +91,10 @@ expect(client).to receive(:perform_request).and_raise(NotFound) end - it 'returns false' do - expect(client.get_source(index: 'foo', id: '1')).to eq(false) + it 'raises the error' do + expect { + client.get_source(index: 'foo', id: '1') + }.to raise_exception(NotFound) end end end diff --git a/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/rest_api_yaml_spec.rb b/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/rest_api_yaml_spec.rb new file mode 100644 index 000000000..ac0ab3014 --- /dev/null +++ b/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/rest_api_yaml_spec.rb @@ -0,0 +1,164 @@ +# Licensed to Elasticsearch B.V. under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. Elasticsearch B.V. licenses this file to you under +# the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +require 'spec_helper' +require 'rest_yaml_tests_helper' + +describe 'Rest API YAML tests' do + + REST_API_YAML_FILES.each do |file| + + test_file = Elasticsearch::RestAPIYAMLTests::TestFile.new(file, REST_API_YAML_SKIP_FEATURES) + + context "#{file.gsub("#{YAML_FILES_DIRECTORY}/", '')}" do + + test_file.tests.each do |test| + + context "#{test.description}" do + + if test.skip_test?(ADMIN_CLIENT) + skip 'Test contains feature(s) not yet support or version is not satisfied' + + else + + let(:client) do + DEFAULT_CLIENT + end + + # Runs once before each test in a test file + before(:all) do + # Runs once before each test in a test file + Elasticsearch::RestAPIYAMLTests::TestFile.clear_data(ADMIN_CLIENT) + test_file.setup(ADMIN_CLIENT) + end + + after(:all) do + test_file.teardown(ADMIN_CLIENT) + Elasticsearch::RestAPIYAMLTests::TestFile.clear_data(ADMIN_CLIENT) + end + + test.task_groups.each do |task_group| + + before do + task_group.run(client) + end + + # 'catch' is in the task group definition + if task_group.catch_exception? + + it 'sends the request and throws the expected error' do + expect(task_group.exception).to match_error(task_group.expected_exception_message) + end + + # 'match' on error description is in the task group definition + if task_group.has_match_clauses? + + task_group.match_clauses.each do |match| + it 'contains the expected error in the request response' do + expect(task_group.exception.message).to match(Regexp.new(Regexp.escape(match['match'].values.first.to_s))) + end + end + end + else + + # 'match' is in the task group definition + if task_group.has_match_clauses? + + task_group.match_clauses.each do |match| + it "has the expected value (#{match['match'].values.join(',')}) in the response field (#{match['match'].keys.join(',')})" do + expect(task_group.response).to match_response(match['match'], test) + end + end + end + + # 'length' is in the task group definition + if task_group.has_length_match_clauses? + + task_group.length_match_clauses.each do |match| + it "the '#{match['length'].keys.join(',')}' field have the expected length" do + expect(task_group.response).to match_response_field_length(match['length'], test) + end + end + end + + # 'is_true' is in the task group definition + if task_group.has_true_clauses? + + task_group.true_clauses.each do |match| + it "sends the request and the '#{match['is_true']}' field is set to true" do + expect(task_group.response).to match_true_field(match['is_true'], test) + end + end + end + + # 'is_false' is in the task group definition + if task_group.has_false_clauses? + + task_group.false_clauses.each do |match| + it "sends the request and the '#{match['is_false']}' field is set to true" do + expect(task_group.response).to match_false_field(match['is_false'], test) + end + end + end + + # 'gte' is in the task group definition + if task_group.has_gte_clauses? + + task_group.gte_clauses.each do |match| + it "sends the request and the '#{match['gte']}' field is greater than or equal to the expected value" do + expect(task_group.response).to match_gte_field(match['gte'], test) + end + end + end + + # 'gt' is in the task group definition + if task_group.has_gt_clauses? + + task_group.gt_clauses.each do |match| + it "sends the request and the '#{match['gt']}' field is greater than the expected value" do + expect(task_group.response).to match_gt_field(match['gt'], test) + end + end + end + + # 'lte' is in the task group definition + if task_group.has_lte_clauses? + + task_group.lte_clauses.each do |match| + it "sends the request and the '#{match['lte']}' field is less than or equal to the expected value" do + expect(task_group.response).to match_lte_field(match['lte'], test) + end + end + end + + # 'lt' is in the task group definition + if task_group.has_lt_clauses? + + task_group.lt_clauses.each do |match| + it "sends the request and the '#{match['lt']}' field is less than the expected value" do + expect(task_group.response).to match_lt_field(match['lt'], test) + end + end + end + end + end + end + end + end + end + end +end diff --git a/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/utils_spec.rb b/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/utils_spec.rb index aa978e121..f5ea4bfd9 100644 --- a/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/utils_spec.rb +++ b/fluentd/vendored_gem_src/elasticsearch-api/spec/elasticsearch/api/utils_spec.rb @@ -44,7 +44,7 @@ expect(utils.__escape('foo bar')).to eq('foo+bar') end - it 'uses the escape_utils gem when available', unless: JRUBY do + it 'uses the escape_utils gem when available', unless: defined?(JRUBY_VERSION) do require 'escape_utils' expect(CGI).not_to receive(:escape) expect(EscapeUtils).to receive(:escape_url).and_call_original diff --git a/fluentd/vendored_gem_src/elasticsearch-api/spec/rest_yaml_tests_helper.rb b/fluentd/vendored_gem_src/elasticsearch-api/spec/rest_yaml_tests_helper.rb new file mode 100644 index 000000000..40567ea63 --- /dev/null +++ b/fluentd/vendored_gem_src/elasticsearch-api/spec/rest_yaml_tests_helper.rb @@ -0,0 +1,94 @@ +# Licensed to Elasticsearch B.V. under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. Elasticsearch B.V. licenses this file to you under +# the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +require "#{File.expand_path(File.dirname('..'), '..')}/api-spec-testing/test_file" +require "#{File.expand_path(File.dirname('..'), '..')}/api-spec-testing/rspec_matchers" +include Elasticsearch::RestAPIYAMLTests + +TRANSPORT_OPTIONS = {} +PROJECT_PATH = File.join(File.dirname(__FILE__), '..', '..') + +if hosts = ELASTICSEARCH_URL + split_hosts = hosts.split(',').map do |host| + /(http\:\/\/)?(\S+)/.match(host)[2] + end + + TEST_HOST, TEST_PORT = split_hosts.first.split(':') +else + TEST_HOST, TEST_PORT = 'localhost', '9200' +end + +if defined?(TEST_HOST) && defined?(TEST_PORT) + URL = "http://#{TEST_HOST}:#{TEST_PORT}" + + ADMIN_CLIENT = Elasticsearch::Client.new(host: URL, transport_options: TRANSPORT_OPTIONS) + + if ENV['QUIET'] == 'true' + DEFAULT_CLIENT = Elasticsearch::Client.new(host: URL, transport_options: TRANSPORT_OPTIONS) + else + DEFAULT_CLIENT = Elasticsearch::Client.new(host: URL, + transport_options: TRANSPORT_OPTIONS, + tracer: Logger.new($stdout)) + end +end + + +YAML_FILES_DIRECTORY = "#{File.expand_path(File.dirname('..'), '..')}" + + "/tmp/elasticsearch/rest-api-spec/src/main/resources/rest-api-spec/test" + +SINGLE_TEST = if ENV['SINGLE_TEST'] && !ENV['SINGLE_TEST'].empty? + ["#{File.expand_path(File.dirname('..'), '..')}" + + "/tmp/elasticsearch/rest-api-spec/src/main/resources/rest-api-spec/test/#{ENV['SINGLE_TEST']}"] + end + +skipped_tests = [] + +# Response from Elasticsearch is just a String, so it's not possible to compare using headers. +skipped_tests << { file: 'cat.aliases/20_headers.yml', + description: 'Simple alias with yaml body through Accept header' } + +# Check version skip logic +skipped_tests << { file: 'create/15_without_id.yml', + description: 'Create without ID' } + +# No error is raised +skipped_tests << { file: 'create/15_without_id_with_types.yml', + description: 'Create without ID' } + +# Error message doesn't match +skipped_tests << { file: 'tasks.get/10_basic.yml', + description: 'get task test' } + +# No error is raised +skipped_tests << { file: 'cat.allocation/10_basic.yml', + description: '*' } + +# Figure out how to match response when there is an error +skipped_tests << { file: 'delete/70_mix_typeless_typeful.yml', + description: '*' } + +# Figure out how to match response when there is an error +skipped_tests << { file: 'cat.templates/10_basic.yml', + description: '*' } + +SKIPPED_TESTS = skipped_tests + +# The directory of rest api YAML files. +REST_API_YAML_FILES = SINGLE_TEST || Dir.glob("#{YAML_FILES_DIRECTORY}/**/*.yml") + +# The features to skip +REST_API_YAML_SKIP_FEATURES = ['warnings'].freeze diff --git a/fluentd/vendored_gem_src/elasticsearch-api/spec/spec_helper.rb b/fluentd/vendored_gem_src/elasticsearch-api/spec/spec_helper.rb index 4a3829926..96c184ddd 100644 --- a/fluentd/vendored_gem_src/elasticsearch-api/spec/spec_helper.rb +++ b/fluentd/vendored_gem_src/elasticsearch-api/spec/spec_helper.rb @@ -16,25 +16,25 @@ # under the License. require 'pry-nav' +require 'yaml' +require 'jbuilder' +require 'jsonify' +require 'elasticsearch' require 'elasticsearch-transport' require 'elasticsearch-api' -require 'jbuilder' if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9' -require 'jsonify' - require 'ansi' tracer = ::Logger.new(STDERR) tracer.formatter = lambda { |s, d, p, m| "#{m.gsub(/^.*$/) { |n| ' ' + n }.ansi(:faint)}\n" } -RUBY_1_8 = defined?(RUBY_VERSION) && RUBY_VERSION < '1.9' -JRUBY = defined?(JRUBY_VERSION) - unless defined?(ELASTICSEARCH_URL) - ELASTICSEARCH_URL = ENV['ELASTICSEARCH_URL'] || ENV['TEST_ES_SERVER'] || "localhost:#{(ENV['TEST_CLUSTER_PORT'] || 9200)}" + ELASTICSEARCH_URL = ENV['ELASTICSEARCH_URL'] || + ENV['TEST_ES_SERVER'] || + "localhost:#{(ENV['TEST_CLUSTER_PORT'] || 9200)}" end -DEFAULT_CLIENT = Elasticsearch::Client.new host: ELASTICSEARCH_URL, - tracer: (ENV['QUIET'] ? nil : tracer) +DEFAULT_CLIENT = Elasticsearch::Client.new(host: ELASTICSEARCH_URL, + tracer: (tracer unless ENV['QUIET'])) module HelperModule def self.included(context) @@ -63,17 +63,4 @@ def self.included(context) config.color = true end -if ENV['COVERAGE'] && ENV['CI'].nil? && !RUBY_1_8 - require 'simplecov' - SimpleCov.start { add_filter "/test|test_/" } -end - -if ENV['CI'] && !RUBY_1_8 - require 'simplecov' - require 'simplecov-rcov' - SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter - SimpleCov.start { add_filter "/test|test_" } -end - class NotFound < StandardError; end - diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/README.md b/fluentd/vendored_gem_src/elasticsearch-transport/README.md index fc5818a15..51d2b885a 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/README.md +++ b/fluentd/vendored_gem_src/elasticsearch-transport/README.md @@ -106,6 +106,17 @@ Another way to configure the URL(s) is to export the `ELASTICSEARCH_URL` variabl The client will automatically round-robin across the hosts (unless you select or implement a different [connection selector](#connection-selector)). +### Connect using an Elastic Cloud ID + +If you are using [Elastic Cloud](https://www.elastic.co/cloud), you can provide your cloud id to the client. +You must supply your username and password separately, and optionally a port. If no port is supplied, +port 9243 will be used. + +Note: Do not enable sniffing when using Elastic Cloud. The nodes are behind a load balancer so +Elastic Cloud will take care of everything for you. + + Elasticsearch::Client.new(cloud_id: 'name:bG9jYWxob3N0JGFiY2QkZWZnaA==', user: 'elastic', password: 'changeme') + ### Authentication You can pass the authentication credentials, scheme and port in the host configuration hash: diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/elasticsearch-transport.gemspec b/fluentd/vendored_gem_src/elasticsearch-transport/elasticsearch-transport.gemspec index 0ad468749..8dcb6dccf 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/elasticsearch-transport.gemspec +++ b/fluentd/vendored_gem_src/elasticsearch-transport/elasticsearch-transport.gemspec @@ -65,6 +65,7 @@ Gem::Specification.new do |s| s.add_development_dependency "patron" unless defined? JRUBY_VERSION s.add_development_dependency "typhoeus", '~> 0.6' s.add_development_dependency "net-http-persistent" + s.add_development_dependency "httpclient" s.add_development_dependency "manticore", '~> 0.6' if defined? JRUBY_VERSION s.add_development_dependency "hashie" diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/client.rb b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/client.rb index 920ead272..20a94ca82 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/client.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/client.rb @@ -15,6 +15,8 @@ # specific language governing permissions and limitations # under the License. +require 'base64' + module Elasticsearch module Transport @@ -46,6 +48,11 @@ class Client # @since 7.0.0 DEFAULT_HOST = 'localhost:9200'.freeze + # The default port to use if connecting using a Cloud ID. + # + # @since 7.2.0 + DEFAULT_CLOUD_PORT = 9243 + # Returns the transport object. # # @see Elasticsearch::Transport::Transport::Base @@ -101,6 +108,9 @@ class Client # # @option arguments [String] :send_get_body_as Specify the HTTP method to use for GET requests with a body. # (Default: GET) + # @option arguments [true, false] :compression Whether to compress requests. Gzip compression will be used. + # The default is false. Responses will automatically be inflated if they are compressed. + # If a custom transport object is used, it must handle the request compression and response inflation. # # @yield [faraday] Access and configure the `Faraday::Connection` instance directly with a block # @@ -117,7 +127,8 @@ def initialize(arguments={}, &block) @arguments[:http] ||= {} @options[:http] ||= {} - @seeds = __extract_hosts(@arguments[:hosts] || + @seeds = extract_cloud_creds(@arguments) + @seeds ||= __extract_hosts(@arguments[:hosts] || @arguments[:host] || @arguments[:url] || @arguments[:urls] || @@ -130,12 +141,6 @@ def initialize(arguments={}, &block) @arguments[:transport_options][:request] = { :timeout => @arguments[:request_timeout] } end - @arguments[:transport_options][:headers] ||= {} - - unless @arguments[:transport_options][:headers].keys.any? {|k| k.to_s.downcase =~ /content\-?\_?type/} - @arguments[:transport_options][:headers]['Content-Type'] = 'application/json' - end - if @arguments[:transport] @transport = @arguments[:transport] else @@ -162,6 +167,16 @@ def perform_request(method, path, params={}, body=nil, headers=nil) private + def extract_cloud_creds(arguments) + return unless arguments[:cloud_id] + cloud_url, elasticsearch_instance = Base64.decode64(arguments[:cloud_id].gsub('name:', '')).split('$') + [ { scheme: 'https', + user: arguments[:user], + password: arguments[:password], + host: "#{elasticsearch_instance}.#{cloud_url}", + port: arguments[:port] || DEFAULT_CLOUD_PORT } ] + end + # Normalizes and returns hosts configuration. # # Arrayifies the `hosts_config` argument and extracts `host` and `port` info from strings. diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/base.rb b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/base.rb index f80684213..bbb7f5e91 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/base.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/base.rb @@ -56,6 +56,7 @@ def initialize(arguments={}, &block) @options[:retry_on_status] ||= [] @block = block + @compression = !!@options[:compression] @connections = __build_connections @serializer = options[:serializer] || ( options[:serializer_class] ? options[:serializer_class].new(self) : DEFAULT_SERIALIZER_CLASS.new(self) ) @@ -202,7 +203,7 @@ def __trace(method, path, params, headers, body, url, response, json, took, dura ( params.empty? ? '' : "&#{::Faraday::Utils::ParamsHash[params].to_query}" ) trace_body = body ? " -d '#{__convert_to_json(body, :pretty => true)}'" : '' trace_command = "curl -X #{method.to_s.upcase}" - trace_command += " -H '#{headers.inject('') { |memo,item| memo << item[0] + ': ' + item[1] }}'" if headers && !headers.empty? + trace_command += " -H '#{headers.collect { |k,v| "#{k}: #{v}" }.join(", ")}'" if headers && !headers.empty? trace_command += " '#{trace_url}'#{trace_body}\n" tracer.info trace_command tracer.debug "# #{Time.now.iso8601} [#{response.status}] (#{format('%.3f', duration)}s)\n#" @@ -234,7 +235,8 @@ def __convert_to_json(o=nil, options={}) def __full_url(host) url = "#{host[:protocol]}://" url += "#{CGI.escape(host[:user])}:#{CGI.escape(host[:password])}@" if host[:user] - url += "#{host[:host]}:#{host[:port]}" + url += "#{host[:host]}" + url += ":#{host[:port]}" if host[:port] url += "#{host[:path]}" if host[:path] url end @@ -328,7 +330,7 @@ def perform_request(method, path, params={}, body=nil, headers=nil, &block) if response.status.to_i >= 300 __log_response method, path, params, body, url, response, nil, 'N/A', duration - __trace method, path, params, headers, body, url, response, nil, 'N/A', duration if tracer + __trace method, path, params, connection.connection.headers, body, url, response, nil, 'N/A', duration if tracer # Log the failure only when `ignore` doesn't match the response status unless ignore.include?(response.status.to_i) @@ -345,7 +347,7 @@ def perform_request(method, path, params={}, body=nil, headers=nil, &block) __log_response method, path, params, body, url, response, json, took, duration end - __trace method, path, params, headers, body, url, response, json, took, duration if tracer + __trace method, path, params, connection.connection.headers, body, url, response, nil, 'N/A', duration if tracer Response.new response.status, json || response.body, response.headers ensure @@ -360,6 +362,66 @@ def perform_request(method, path, params={}, body=nil, headers=nil, &block) def host_unreachable_exceptions [Errno::ECONNREFUSED] end + + private + + USER_AGENT_STR = 'User-Agent'.freeze + USER_AGENT_REGEX = /user\-?\_?agent/ + CONTENT_TYPE_STR = 'Content-Type'.freeze + CONTENT_TYPE_REGEX = /content\-?\_?type/ + DEFAULT_CONTENT_TYPE = 'application/json'.freeze + GZIP = 'gzip'.freeze + ACCEPT_ENCODING = 'Accept-Encoding'.freeze + GZIP_FIRST_TWO_BYTES = '1f8b'.freeze + HEX_STRING_DIRECTIVE = 'H*'.freeze + RUBY_ENCODING = '1.9'.respond_to?(:force_encoding) + + def decompress_response(body) + return body unless use_compression? + return body unless gzipped?(body) + + io = StringIO.new(body) + gzip_reader = if RUBY_ENCODING + Zlib::GzipReader.new(io, :encoding => 'ASCII-8BIT') + else + Zlib::GzipReader.new(io) + end + gzip_reader.read + end + + def gzipped?(body) + body[0..1].unpack(HEX_STRING_DIRECTIVE)[0] == GZIP_FIRST_TWO_BYTES + end + + def use_compression? + @compression + end + + def apply_headers(client, options) + headers = options[:headers] || {} + headers[CONTENT_TYPE_STR] = find_value(headers, CONTENT_TYPE_REGEX) || DEFAULT_CONTENT_TYPE + headers[USER_AGENT_STR] = find_value(headers, USER_AGENT_REGEX) || user_agent_header(client) + client.headers[ACCEPT_ENCODING] = GZIP if use_compression? + client.headers.merge!(headers) + end + + def find_value(hash, regex) + key_value = hash.find { |k,v| k.to_s.downcase =~ regex } + if key_value + hash.delete(key_value[0]) + key_value[1] + end + end + + def user_agent_header(client) + @user_agent ||= begin + meta = ["RUBY_VERSION: #{RUBY_VERSION}"] + if RbConfig::CONFIG && RbConfig::CONFIG['host_os'] + meta << "#{RbConfig::CONFIG['host_os'].split('_').first[/[a-z]+/i].downcase} #{RbConfig::CONFIG['target_cpu']}" + end + "elasticsearch-ruby/#{VERSION} (#{meta.join('; ')})" + end + end end end end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/connections/selector.rb b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/connections/selector.rb index 64f0af122..09f23de08 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/connections/selector.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/connections/selector.rb @@ -61,18 +61,30 @@ def select(options={}) class RoundRobin include Base + # @option arguments [Connections::Collection] :connections Collection with connections. + # + def initialize(arguments = {}) + super + @mutex = Mutex.new + @current = nil + end + # Returns the next connection from the collection, rotating them in round-robin fashion. # # @return [Connections::Connection] # def select(options={}) - # On Ruby 1.9, Array#rotate could be used instead - @current = !defined?(@current) || @current.nil? ? 0 : @current+1 - @current = 0 if @current >= connections.size - connections[@current] + @mutex.synchronize do + conns = connections + if @current && (@current < conns.size-1) + @current += 1 + else + @current = 0 + end + conns[@current] + end end end - end end end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/curb.rb b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/curb.rb index a9a45b911..f5d438e87 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/curb.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/curb.rb @@ -43,7 +43,15 @@ def perform_request(method, path, params={}, body=nil, headers=nil) connection.connection.set :nobody, false connection.connection.put_data = __convert_to_json(body) if body - connection.connection.headers = headers if headers + + if headers + if connection.connection.headers + connection.connection.headers.merge!(headers) + else + connection.connection.headers = headers + end + end + else raise ArgumentError, "Unsupported HTTP method: #{method}" end @@ -53,7 +61,7 @@ def perform_request(method, path, params={}, body=nil, headers=nil) response_headers['content-type'] = 'application/json' if connection.connection.header_str =~ /\/json/ Response.new connection.connection.response_code, - connection.connection.body_str, + decompress_response(connection.connection.body_str), response_headers end end @@ -65,10 +73,7 @@ def perform_request(method, path, params={}, body=nil, headers=nil) def __build_connection(host, options={}, block=nil) client = ::Curl::Easy.new - headers = options[:headers] || {} - headers.update('User-Agent' => "Curb #{Curl::CURB_VERSION}") - - client.headers = headers + apply_headers(client, options) client.url = __full_url(host) if host[:user] @@ -96,8 +101,20 @@ def host_unreachable_exceptions ::Curl::Err::TimeoutError ] end - end + private + + def user_agent_header(client) + @user_agent ||= begin + meta = ["RUBY_VERSION: #{RUBY_VERSION}"] + if RbConfig::CONFIG && RbConfig::CONFIG['host_os'] + meta << "#{RbConfig::CONFIG['host_os'].split('_').first[/[a-z]+/i].downcase} #{RbConfig::CONFIG['target_cpu']}" + end + meta << "Curb #{Curl::CURB_VERSION}" + "elasticsearch-ruby/#{VERSION} (#{meta.join('; ')})" + end + end + end end end end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/faraday.rb b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/faraday.rb index dfb87bbbb..3644934c8 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/faraday.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/faraday.rb @@ -42,7 +42,7 @@ def perform_request(method, path, params={}, body=nil, headers=nil) ( body ? __convert_to_json(body) : nil ), headers) - Response.new response.status, response.body, response.headers + Response.new response.status, decompress_response(response.body), response.headers end end @@ -52,6 +52,7 @@ def perform_request(method, path, params={}, body=nil, headers=nil) # def __build_connection(host, options={}, block=nil) client = ::Faraday.new(__full_url(host), options, &block) + apply_headers(client, options) Connections::Connection.new :host => host, :connection => client end @@ -62,6 +63,19 @@ def __build_connection(host, options={}, block=nil) def host_unreachable_exceptions [::Faraday::Error::ConnectionFailed, ::Faraday::Error::TimeoutError] end + + private + + def user_agent_header(client) + @user_agent ||= begin + meta = ["RUBY_VERSION: #{RUBY_VERSION}"] + if RbConfig::CONFIG && RbConfig::CONFIG['host_os'] + meta << "#{RbConfig::CONFIG['host_os'].split('_').first[/[a-z]+/i].downcase} #{RbConfig::CONFIG['target_cpu']}" + end + meta << "#{client.headers[USER_AGENT_STR]}" + "elasticsearch-ruby/#{VERSION} (#{meta.join('; ')})" + end + end end end end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/manticore.rb b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/manticore.rb index 588850488..91c762769 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/manticore.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/transport/http/manticore.rb @@ -110,14 +110,8 @@ def perform_request(method, path, params={}, body=nil, headers=nil) # def __build_connections @request_options = {} - - if options[:transport_options] && options[:transport_options][:headers] - @request_options[:headers] = options[:transport_options][:headers] - end - - if options.key?(:headers) - @request_options[:headers] = options[:headers] - end + apply_headers(@request_options, options[:transport_options]) + apply_headers(@request_options, options) Connections::Collection.new \ :connections => hosts.map { |host| @@ -157,6 +151,27 @@ def host_unreachable_exceptions ::Manticore::ResolutionFailure ] end + + private + + def apply_headers(request_options, options) + headers = (options && options[:headers]) || {} + headers[CONTENT_TYPE_STR] = find_value(headers, CONTENT_TYPE_REGEX) || DEFAULT_CONTENT_TYPE + headers[USER_AGENT_STR] = find_value(headers, USER_AGENT_REGEX) || user_agent_header + headers[ACCEPT_ENCODING] = GZIP if use_compression? + request_options.merge!(headers: headers) + end + + def user_agent_header + @user_agent ||= begin + meta = ["RUBY_VERSION: #{JRUBY_VERSION}"] + if RbConfig::CONFIG && RbConfig::CONFIG['host_os'] + meta << "#{RbConfig::CONFIG['host_os'].split('_').first[/[a-z]+/i].downcase} #{RbConfig::CONFIG['target_cpu']}" + end + meta << "Manticore #{::Manticore::VERSION}" + "elasticsearch-ruby/#{VERSION} (#{meta.join('; ')})" + end + end end end end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/version.rb b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/version.rb index ab71a01f2..290237db8 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/version.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/lib/elasticsearch/transport/version.rb @@ -17,6 +17,6 @@ module Elasticsearch module Transport - VERSION = "7.1.0" + VERSION = "7.2.0" end end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/connections/collection_spec.rb b/fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/connections/collection_spec.rb new file mode 100644 index 000000000..3e2d897f0 --- /dev/null +++ b/fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/connections/collection_spec.rb @@ -0,0 +1,254 @@ +# Licensed to Elasticsearch B.V. under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. Elasticsearch B.V. licenses this file to you under +# the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +require 'spec_helper' + +describe Elasticsearch::Transport::Transport::Connections::Collection do + + describe '#initialize' do + + let(:collection) do + described_class.new + end + + it 'has an empty list of connections as a default' do + expect(collection.connections).to be_empty + end + + it 'has a default selector class' do + expect(collection.selector).not_to be_nil + end + + context 'when a selector class is specified' do + + let(:collection) do + described_class.new(selector_class: Elasticsearch::Transport::Transport::Connections::Selector::Random) + end + + it 'sets the selector' do + expect(collection.selector).to be_a(Elasticsearch::Transport::Transport::Connections::Selector::Random) + end + end + end + + describe '#get_connection' do + + let(:collection) do + described_class.new(selector_class: Elasticsearch::Transport::Transport::Connections::Selector::Random) + end + + before do + expect(collection.selector).to receive(:select).and_return('OK') + end + + it 'uses the selector to select a connection' do + expect(collection.get_connection).to eq('OK') + end + end + + describe '#hosts' do + + let(:collection) do + described_class.new(connections: [ double('connection', host: 'A'), + double('connection', host: 'B') ]) + end + + it 'returns a list of hosts' do + expect(collection.hosts).to eq([ 'A', 'B']) + end + end + + describe 'enumerable' do + + let(:collection) do + described_class.new(connections: [ double('connection', host: 'A', dead?: false), + double('connection', host: 'B', dead?: false) ]) + end + + describe '#map' do + + it 'responds to the method' do + expect(collection.map { |c| c.host.downcase }).to eq(['a', 'b']) + end + end + + describe '#[]' do + + it 'responds to the method' do + expect(collection[0].host).to eq('A') + expect(collection[1].host).to eq('B') + end + end + + describe '#size' do + + it 'responds to the method' do + expect(collection.size).to eq(2) + end + end + + context 'when a connection is marked as dead' do + + let(:collection) do + described_class.new(connections: [ double('connection', host: 'A', dead?: true), + double('connection', host: 'B', dead?: false) ]) + end + + it 'does not enumerate the dead connections' do + expect(collection.size).to eq(1) + expect(collection.collect { |c| c.host }).to eq(['B']) + end + + context '#alive' do + + it 'enumerates the alive connections' do + expect(collection.alive.collect { |c| c.host }).to eq(['B']) + end + end + + context '#dead' do + + it 'enumerates the alive connections' do + expect(collection.dead.collect { |c| c.host }).to eq(['A']) + end + end + end + end + + describe '#add' do + + let(:collection) do + described_class.new(connections: [ double('connection', host: 'A', dead?: false), + double('connection', host: 'B', dead?: false) ]) + end + + context 'when an array is provided' do + + before do + collection.add([double('connection', host: 'C', dead?: false), + double('connection', host: 'D', dead?: false)]) + end + + it 'adds the connections' do + expect(collection.size).to eq(4) + end + end + + context 'when an element is provided' do + + before do + collection.add(double('connection', host: 'C', dead?: false)) + end + + it 'adds the connection' do + expect(collection.size).to eq(3) + end + end + end + + describe '#remove' do + + let(:connections) do + [ double('connection', host: 'A', dead?: false), + double('connection', host: 'B', dead?: false) ] + end + + let(:collection) do + described_class.new(connections: connections) + end + + context 'when an array is provided' do + + before do + collection.remove(connections) + end + + it 'removes the connections' do + expect(collection.size).to eq(0) + end + end + + context 'when an element is provided' do + + let(:connections) do + [ double('connection', host: 'A', dead?: false), + double('connection', host: 'B', dead?: false) ] + end + + before do + collection.remove(connections.first) + end + + it 'removes the connection' do + expect(collection.size).to eq(1) + end + end + end + + describe '#get_connection' do + + context 'when all connections are dead' do + + let(:connection_a) do + Elasticsearch::Transport::Transport::Connections::Connection.new(host: { host: 'A' }) + end + + let(:connection_b) do + Elasticsearch::Transport::Transport::Connections::Connection.new(host: { host: 'B' }) + end + + let(:collection) do + described_class.new(connections: [connection_a, connection_b]) + end + + before do + connection_a.dead!.dead! + connection_b.dead! + end + + it 'returns the connection with the least failures' do + expect(collection.get_connection.host[:host]).to eq('B') + end + end + + context 'when multiple threads are used' do + + let(:connections) do + 20.times.collect do |i| + Elasticsearch::Transport::Transport::Connections::Connection.new(host: { host: i }) + end + end + + let(:collection) do + described_class.new(connections: connections) + end + + it 'allows threads to select connections in parallel' do + expect(10.times.collect do + threads = [] + 20.times do + threads << Thread.new do + collection.get_connection + end + end + threads.map { |t| t.join } + collection.get_connection.host[:host] + end).to eq((0..9).to_a) + end + end + end +end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/connections/selector_spec.rb b/fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/connections/selector_spec.rb new file mode 100644 index 000000000..ff91fb667 --- /dev/null +++ b/fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/connections/selector_spec.rb @@ -0,0 +1,174 @@ +# Licensed to Elasticsearch B.V. under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. Elasticsearch B.V. licenses this file to you under +# the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +require 'spec_helper' + +describe Elasticsearch::Transport::Transport::Connections::Selector do + + before do + class BackupStrategySelector + include Elasticsearch::Transport::Transport::Connections::Selector::Base + + def select(options={}) + connections.reject do |c| + c.host[:attributes] && c.host[:attributes][:backup] + end.sample + end + end + end + + after do + Object.send(:remove_const, :BackupStrategySelector) + end + + let(:backup_strategy_selector) do + BackupStrategySelector.new + end + + describe 'the Random selector' do + + let(:connections) do + [1, 2] + end + + let(:selector) do + described_class::Random.new(connections: connections) + end + + it 'is initialized with connections' do + expect(selector.connections).to eq(connections) + end + + describe '#select' do + + let(:connections) do + (0..19).to_a + end + + it 'returns a connection' do + expect(selector.select).to be_a(Integer) + end + + context 'when multiple threads are used' do + + it 'allows threads to select connections in parallel' do + expect(10.times.collect do + threads = [] + 20.times do + threads << Thread.new do + selector.select + end + end + threads.map { |t| t.join } + selector.select + end).to all(be_a(Integer)) + end + end + end + end + + describe 'the RoundRobin selector' do + + let(:connections) do + ['A', 'B', 'C'] + end + + let(:selector) do + described_class::RoundRobin.new(connections: connections) + end + + it 'is initialized with connections' do + expect(selector.connections).to eq(connections) + end + + describe '#select' do + + it 'rotates over the connections' do + expect(selector.select).to eq('A') + expect(selector.select).to eq('B') + expect(selector.select).to eq('C') + expect(selector.select).to eq('A') + end + + context 'when multiple threads are used' do + + let(:connections) do + (0..19).to_a + end + + it 'returns a connection' do + expect(selector.select).to be_a(Integer) + end + + it 'allows threads to select connections in parallel' do + expect(10.times.collect do + threads = [] + 20.times do + threads << Thread.new do + selector.select + end + end + threads.map { |t| t.join } + selector.select + end).to eq((0..9).to_a) + end + end + end + end + + describe 'a custom selector' do + + let(:connections) do + [ double(host: { hostname: 'host1' }), + double(host: { hostname: 'host2', attributes: { backup: true } }) ] + end + + let(:selector) do + BackupStrategySelector.new(connections: connections) + end + + it 'is initialized with connections' do + expect(selector.connections).to eq(connections) + end + + describe '#select' do + + it 'applies the custom strategy' do + 10.times { expect(selector.select.host[:hostname]).to eq('host1') } + end + end + end + + context 'when the Base module is included in a class' do + + before do + class ExampleSelector + include Elasticsearch::Transport::Transport::Connections::Selector::Base + end + end + + after do + Object.send(:remove_const, :ExampleSelector) + end + + it 'requires the #select method to be redefined' do + expect { + ExampleSelector.new.select + }.to raise_exception(NoMethodError) + end + end +end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/transport/client_spec.rb b/fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/transport/client_spec.rb index ed3b68b61..db8329caf 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/transport/client_spec.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/spec/elasticsearch/transport/client_spec.rb @@ -33,18 +33,161 @@ expect(client.transport).to be_a(Elasticsearch::Transport::Client::DEFAULT_TRANSPORT_CLASS) end - it 'uses Faraday as the default transport' do + it 'preserves the Faraday default user agent header' do expect(client.transport.connections.first.connection.headers['User-Agent']).to match(/Faraday/) end + it 'identifies the Ruby client in the User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to match(/elasticsearch-ruby\/#{Elasticsearch::Transport::VERSION}/) + end + + it 'identifies the Ruby version in the User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to match(/#{RUBY_VERSION}/) + end + + it 'identifies the host_os in the User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to match(/#{RbConfig::CONFIG['host_os'].split('_').first[/[a-z]+/i].downcase}/) + end + + it 'identifies the target_cpu in the User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to match(/#{RbConfig::CONFIG['target_cpu']}/) + end + it 'sets the \'Content-Type\' header to \'application/json\' by default' do - expect(client.transport.options[:transport_options][:headers]['Content-Type']).to eq('application/json') + expect(client.transport.connections.first.connection.headers['Content-Type']).to eq('application/json') end it 'uses localhost by default' do expect(client.transport.hosts[0][:host]).to eq('localhost') end + context 'when a User-Agent header is specified as client option' do + + let(:client) do + described_class.new(transport_options: { headers: { 'User-Agent' => 'testing' } }) + end + + it 'sets the specified User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to eq('testing') + end + end + + context 'when a user-agent header is specified as client option in lower-case' do + + let(:client) do + described_class.new(transport_options: { headers: { 'user-agent' => 'testing' } }) + end + + it 'sets the specified User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to eq('testing') + end + end + + context 'when a Content-Type header is specified as client option' do + + let(:client) do + described_class.new(transport_options: { headers: { 'Content-Type' => 'testing' } }) + end + + it 'sets the specified Content-Type header' do + expect(client.transport.connections.first.connection.headers['Content-Type']).to eq('testing') + end + end + + context 'when a content-type header is specified as client option in lower-case' do + + let(:client) do + described_class.new(transport_options: { headers: { 'content-type' => 'testing' } }) + end + + it 'sets the specified Content-Type header' do + expect(client.transport.connections.first.connection.headers['Content-Type']).to eq('testing') + end + end + + context 'when the Curb transport class is used', unless: jruby? do + + let(:client) do + described_class.new(transport_class: Elasticsearch::Transport::Transport::HTTP::Curb) + end + + it 'preserves the Curb default user agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to match(/Curb/) + end + + it 'identifies the Ruby client in the User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to match(/elasticsearch-ruby\/#{Elasticsearch::Transport::VERSION}/) + end + + it 'identifies the Ruby version in the User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to match(/#{RUBY_VERSION}/) + end + + it 'identifies the host_os in the User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to match(/#{RbConfig::CONFIG['host_os'].split('_').first[/[a-z]+/i].downcase}/) + end + + it 'identifies the target_cpu in the User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to match(/#{RbConfig::CONFIG['target_cpu']}/) + end + + it 'sets the \'Content-Type\' header to \'application/json\' by default' do + expect(client.transport.connections.first.connection.headers['Content-Type']).to eq('application/json') + end + + it 'uses localhost by default' do + expect(client.transport.hosts[0][:host]).to eq('localhost') + end + + context 'when a User-Agent header is specified as a client option' do + + let(:client) do + described_class.new(transport_class: Elasticsearch::Transport::Transport::HTTP::Curb, + transport_options: { headers: { 'User-Agent' => 'testing' } }) + end + + it 'sets the specified User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to eq('testing') + end + end + + context 'when a user-agent header is specified as a client option as lower-case' do + + let(:client) do + described_class.new(transport_class: Elasticsearch::Transport::Transport::HTTP::Curb, + transport_options: { headers: { 'user-agent' => 'testing' } }) + end + + it 'sets the specified User-Agent header' do + expect(client.transport.connections.first.connection.headers['User-Agent']).to eq('testing') + end + end + + context 'when a Content-Type header is specified as client option' do + + let(:client) do + described_class.new(transport_class: Elasticsearch::Transport::Transport::HTTP::Curb, + transport_options: { headers: { 'Content-Type' => 'testing' } }) + end + + it 'sets the specified Content-Type header' do + expect(client.transport.connections.first.connection.headers['Content-Type']).to eq('testing') + end + end + + context 'when a content-type header is specified as client option in lower-case' do + + let(:client) do + described_class.new(transport_class: Elasticsearch::Transport::Transport::HTTP::Curb, + transport_options: { headers: { 'content-type' => 'testing' } }) + end + + it 'sets the specified Content-Type header' do + expect(client.transport.connections.first.connection.headers['Content-Type']).to eq('testing') + end + end + end + describe 'adapter' do context 'when no adapter is specified' do @@ -127,6 +270,48 @@ end end + context 'when cloud credentials are provided' do + + let(:client) do + described_class.new(cloud_id: 'name:bG9jYWxob3N0JGFiY2QkZWZnaA==', user: 'elastic', password: 'changeme') + end + + let(:hosts) do + client.transport.hosts + end + + it 'extracts the cloud credentials' do + expect(hosts[0][:host]).to eq('abcd.localhost') + expect(hosts[0][:protocol]).to eq('https') + expect(hosts[0][:user]).to eq('elastic') + expect(hosts[0][:password]).to eq('changeme') + expect(hosts[0][:port]).to eq(9243) + end + + it 'creates the correct full url' do + expect(client.transport.__full_url(client.transport.hosts[0])).to eq('https://elastic:changeme@abcd.localhost:9243') + end + + context 'when a port is specified' do + + let(:client) do + described_class.new(cloud_id: 'name:bG9jYWxob3N0JGFiY2QkZWZnaA==', user: 'elastic', password: 'changeme', port: 9200 ) + end + + it 'sets the specified port along with the cloud credentials' do + expect(hosts[0][:host]).to eq('abcd.localhost') + expect(hosts[0][:protocol]).to eq('https') + expect(hosts[0][:user]).to eq('elastic') + expect(hosts[0][:password]).to eq('changeme') + expect(hosts[0][:port]).to eq(9200) + end + + it 'creates the correct full url' do + expect(client.transport.__full_url(client.transport.hosts[0])).to eq('https://elastic:changeme@abcd.localhost:9200') + end + end + end + shared_examples_for 'a client that extracts hosts' do context 'when the hosts are a String' do @@ -1053,6 +1238,141 @@ }.to raise_exception(Elasticsearch::Transport::Transport::Errors::BadRequest) end end + + context 'when the \'compression\' option is set to true' do + + context 'when using Faraday as the transport' do + + context 'when using the Net::HTTP adapter' do + + let(:client) do + described_class.new(hosts: ELASTICSEARCH_HOSTS, compression: true, adapter: :net_http) + end + + it 'compresses the request and decompresses the response' do + expect(client.perform_request('GET', '/').body).to be_a(Hash) + end + + it 'sets the Accept-Encoding header' do + expect(client.transport.connections[0].connection.headers['Accept-Encoding']) + end + + it 'preserves the other headers' do + expect(client.transport.connections[0].connection.headers['User-Agent']) + end + end + + context 'when using the HTTPClient adapter' do + + let(:client) do + described_class.new(hosts: ELASTICSEARCH_HOSTS, compression: true, adapter: :httpclient) + end + + it 'compresses the request and decompresses the response' do + expect(client.perform_request('GET', '/').body).to be_a(Hash) + end + + it 'sets the Accept-Encoding header' do + expect(client.transport.connections[0].connection.headers['Accept-Encoding']) + end + + it 'preserves the other headers' do + expect(client.transport.connections[0].connection.headers['User-Agent']) + end + end + + context 'when using the Patron adapter', unless: jruby? do + + let(:client) do + described_class.new(hosts: ELASTICSEARCH_HOSTS, compression: true, adapter: :patron) + end + + it 'compresses the request and decompresses the response' do + expect(client.perform_request('GET', '/').body).to be_a(Hash) + end + + it 'sets the Accept-Encoding header' do + expect(client.transport.connections[0].connection.headers['Accept-Encoding']) + end + + it 'preserves the other headers' do + expect(client.transport.connections[0].connection.headers['User-Agent']) + end + end + + context 'when using the Net::HTTP::Persistent adapter' do + + let(:client) do + described_class.new(hosts: ELASTICSEARCH_HOSTS, compression: true, adapter: :net_http_persistent) + end + + it 'compresses the request and decompresses the response' do + expect(client.perform_request('GET', '/').body).to be_a(Hash) + end + + it 'sets the Accept-Encoding header' do + expect(client.transport.connections[0].connection.headers['Accept-Encoding']) + end + + it 'preserves the other headers' do + expect(client.transport.connections[0].connection.headers['User-Agent']) + end + end + + context 'when using the Typhoeus adapter' do + + let(:client) do + described_class.new(hosts: ELASTICSEARCH_HOSTS, compression: true, adapter: :typhoeus) + end + + it 'compresses the request and decompresses the response' do + expect(client.perform_request('GET', '/').body).to be_a(Hash) + end + + it 'sets the Accept-Encoding header' do + expect(client.transport.connections[0].connection.headers['Accept-Encoding']) + end + + it 'preserves the other headers' do + expect(client.transport.connections[0].connection.headers['User-Agent']) + end + end + end + end + + context 'when using Curb as the transport', unless: jruby? do + + let(:client) do + described_class.new(hosts: ELASTICSEARCH_HOSTS, + compression: true, + transport_class: Elasticsearch::Transport::Transport::HTTP::Curb) + end + + it 'compresses the request and decompresses the response' do + expect(client.perform_request('GET', '/').body).to be_a(Hash) + end + + it 'sets the Accept-Encoding header' do + expect(client.transport.connections[0].connection.headers['Accept-Encoding']) + end + + it 'preserves the other headers' do + expect(client.transport.connections[0].connection.headers['User-Agent']) + end + end + + context 'when using Manticore as the transport', if: jruby? do + + let(:client) do + described_class.new(hosts: ELASTICSEARCH_HOSTS, + compression: true, + transport_class: Elasticsearch::Transport::Transport::HTTP::Manticore) + end + + it 'compresses the request and decompresses the response' do + expect(client.perform_request('GET', '/').body).to be_a(Hash) + end + end end describe '#perform_request' do @@ -1064,7 +1384,7 @@ client.perform_request('DELETE', 'myindex') rescue client.perform_request('PUT', 'myindex', {}, { settings: { number_of_shards: 2, number_of_replicas: 0 } }) client.perform_request('PUT', 'myindex/mydoc/1', { routing: 'XYZ', timeout: '1s' }, { foo: 'bar' }) - client.perform_request('GET', '_cluster/health?wait_for_status=green', {}) + client.perform_request('GET', '_cluster/health?wait_for_status=green&timeout=2s', {}) end let(:response) do diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/spec/spec_helper.rb b/fluentd/vendored_gem_src/elasticsearch-transport/spec/spec_helper.rb index c969e5a71..97cbeb23a 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/spec/spec_helper.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/spec/spec_helper.rb @@ -4,6 +4,12 @@ require 'ansi/code' require 'hashie/mash' require 'pry-nav' +if defined?(JRUBY_VERSION) + require 'elasticsearch/transport/transport/http/manticore' +else + require 'elasticsearch/transport/transport/http/curb' + require 'curb' +end # The hosts to use for creating a elasticsearch client. # diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/connection_collection_test.rb b/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/connection_collection_test.rb deleted file mode 100644 index 5abf5255b..000000000 --- a/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/connection_collection_test.rb +++ /dev/null @@ -1,147 +0,0 @@ -# Licensed to Elasticsearch B.V. under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch B.V. licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -require 'test_helper' - -class Elasticsearch::Transport::Transport::Connections::CollectionTest < Minitest::Test - include Elasticsearch::Transport::Transport::Connections - - context "Connection collection" do - - should "have empty array as default connections array" do - assert_equal [], Collection.new.connections - end - - should "have default selector class" do - assert_not_nil Collection.new.selector - end - - should "initialize a custom selector class" do - c = Collection.new :selector_class => Selector::Random - assert_instance_of Selector::Random, c.selector - end - - should "take a custom selector instance" do - c = Collection.new :selector => Selector::Random.new - assert_instance_of Selector::Random, c.selector - end - - should "get connection from selector" do - c = Collection.new - c.selector.expects(:select).returns('OK') - assert_equal 'OK', c.get_connection - end - - should "return an array of hosts" do - c = Collection.new :connections => [ Connection.new(:host => 'foo'), Connection.new(:host => 'bar') ] - assert_equal ['foo', 'bar'], c.hosts - end - - should "be enumerable" do - c = Collection.new :connections => [ Connection.new(:host => 'foo'), Connection.new(:host => 'bar') ] - - assert_equal ['FOO', 'BAR'], c.map { |i| i.host.upcase } - assert_equal 'foo', c[0].host - assert_equal 'bar', c[1].host - assert_equal 2, c.size - end - - should "add connections" do - c = Collection.new :connections => [ Connection.new(:host => { :protocol => 'http', :host => 'foo', :port => 1}) ] - assert_equal 1, c.size - - c.add([ Connection.new(:host => { :protocol => 'http', :host => 'bar', :port => 1 }), - Connection.new(:host => { :protocol => 'http', :host => 'bam', :port => 1 }) ]) - assert_equal 3, c.size - end - - should "add connection" do - c = Collection.new :connections => [ Connection.new(:host => { :protocol => 'http', :host => 'foo', :port => 1}) ] - assert_equal 1, c.size - - c.add(Connection.new(:host => { :protocol => 'http', :host => 'bar', :port => 1 })) - assert_equal 2, c.size - end - - should "remove connections" do - c = Collection.new :connections => [ - Connection.new(:host => { :protocol => 'http', :host => 'foo', :port => 1 }), - Connection.new(:host => { :protocol => 'http', :host => 'bar', :port => 1 }) - ] - assert_equal 2, c.size - - c.remove([c.first]) - assert_equal 1, c.size - - c.remove(c) - assert_equal 0, c.size - end - - should "remove connection" do - c = Collection.new :connections => [ - Connection.new(:host => { :protocol => 'http', :host => 'foo', :port => 1 }), - Connection.new(:host => { :protocol => 'http', :host => 'bar', :port => 1 }) - ] - assert_equal 2, c.size - - c.remove(c.first) - assert_equal 1, c.size - end - - context "with the dead pool" do - setup do - @collection = Collection.new :connections => [ Connection.new(:host => 'foo'), Connection.new(:host => 'bar') ] - @collection[1].dead! - end - - should "not iterate over dead connections" do - assert_equal 1, @collection.size - assert_equal ['FOO'], @collection.map { |c| c.host.upcase } - assert_equal @collection.connections, @collection.alive - end - - should "have dead connections collection" do - assert_equal 1, @collection.dead.size - assert_equal ['BAR'], @collection.dead.map { |c| c.host.upcase } - end - - should "not return dead connections, when alive connections exist" do - assert_equal 1, @collection.size - @collection.all.size.times { refute @collection.get_connection.dead? } - end - - should "resurrect dead connection with least failures when no alive is available" do - c1 = Connection.new(:host => { :protocol => 'http', :host => 'foo', :port => 123 }).dead!.dead! - c2 = Connection.new(:host => { :protocol => 'http', :host => 'bar', :port => 123 }).dead! - - @collection = Collection.new :connections => [ c1, c2 ] - - assert_equal 0, @collection.size - assert_not_nil @collection.get_connection - assert_equal 1, @collection.size - assert_equal c2, @collection.first - end - - should "return all connections" do - assert_equal 2, @collection.all.size - end - - end - - end - -end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/connection_selector_test.rb b/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/connection_selector_test.rb deleted file mode 100644 index 565ee15a7..000000000 --- a/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/connection_selector_test.rb +++ /dev/null @@ -1,81 +0,0 @@ -# Licensed to Elasticsearch B.V. under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch B.V. licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -require 'test_helper' - -class Elasticsearch::Transport::Transport::Connections::SelectorTest < Minitest::Test - include Elasticsearch::Transport::Transport::Connections::Selector - - class DummyStrategySelector - include Elasticsearch::Transport::Transport::Connections::Selector::Base - end - - class BackupStrategySelector - include Elasticsearch::Transport::Transport::Connections::Selector::Base - - def select(options={}) - connections.reject do |c| - c.host[:attributes] && c.host[:attributes][:backup] - end.send( defined?(RUBY_VERSION) && RUBY_VERSION > '1.9' ? :sample : :choice) - end - end - - context "Connection selector" do - - should "be initialized with connections" do - assert_equal [1, 2], Random.new(:connections => [1, 2]).connections - end - - should "have the abstract select method" do - assert_raise(NoMethodError) { DummyStrategySelector.new.select } - end - - context "in random strategy" do - setup do - @selector = Random.new :connections => ['A', 'B', 'C'] - end - - should "pick a connection" do - assert_not_nil @selector.select - end - end - - context "in round-robin strategy" do - setup do - @selector = RoundRobin.new :connections => ['A', 'B', 'C'] - end - - should "rotate over connections" do - assert_equal 'A', @selector.select - assert_equal 'B', @selector.select - assert_equal 'C', @selector.select - assert_equal 'A', @selector.select - end - end - - context "with a custom strategy" do - - should "return proper connection" do - selector = BackupStrategySelector.new :connections => [ stub(:host => { :hostname => 'host1' }), - stub(:host => { :hostname => 'host2', :attributes => { :backup => true }}) ] - 10.times { assert_equal 'host1', selector.select.host[:hostname] } - end - - end - - end -end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/transport_curb_test.rb b/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/transport_curb_test.rb index 01f7aec85..12002d843 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/transport_curb_test.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/transport_curb_test.rb @@ -57,7 +57,7 @@ class Elasticsearch::Transport::Transport::HTTP::FaradayTest < Minitest::Test should "perform request with headers" do @transport.connections.first.connection.expects(:put_data=).with('{"foo":"bar"}') @transport.connections.first.connection.expects(:http).with(:POST).returns(stub_everything) - @transport.connections.first.connection.expects(:headers=).with({"Content-Type" => "application/x-ndjson"}) + @transport.connections.first.connection.headers.expects(:merge!).with("Content-Type" => "application/x-ndjson") @transport.perform_request 'POST', '/', {}, {:foo => 'bar'}, {"Content-Type" => "application/x-ndjson"} end diff --git a/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/transport_manticore_test.rb b/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/transport_manticore_test.rb index 8ce289456..8372dc89e 100644 --- a/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/transport_manticore_test.rb +++ b/fluentd/vendored_gem_src/elasticsearch-transport/test/unit/transport_manticore_test.rb @@ -56,32 +56,42 @@ class Elasticsearch::Transport::Transport::HTTP::ManticoreTest < Minitest::Test should "set body for GET request" do @transport.connections.first.connection.expects(:get). - with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}'}).returns(stub_everything) + with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}', + :headers => {"Content-Type" => "application/json", + "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything) @transport.perform_request 'GET', '/', {}, '{"foo":"bar"}' end should "set body for PUT request" do @transport.connections.first.connection.expects(:put). - with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}'}).returns(stub_everything) + with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}', + :headers => {"Content-Type" => "application/json", + "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything) @transport.perform_request 'PUT', '/', {}, {:foo => 'bar'} end should "serialize the request body" do @transport.connections.first.connection.expects(:post). - with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}'}).returns(stub_everything) + with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}', + :headers => {"Content-Type" => "application/json", + "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything) @transport.perform_request 'POST', '/', {}, {'foo' => 'bar'} end should "set custom headers for PUT request" do @transport.connections.first.connection.expects(:put). - with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}', :headers => {"Content-Type" => "application/x-ndjson"}}) + with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}', + :headers => {"Content-Type" => "application/json", + "User-Agent" => @transport.send(:user_agent_header)}}) .returns(stub_everything) @transport.perform_request 'PUT', '/', {}, '{"foo":"bar"}', {"Content-Type" => "application/x-ndjson"} end should "not serialize a String request body" do @transport.connections.first.connection.expects(:post). - with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}'}).returns(stub_everything) + with('http://127.0.0.1:8080//', {:body => '{"foo":"bar"}', + :headers => {"Content-Type" => "application/json", + "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything) @transport.serializer.expects(:dump).never @transport.perform_request 'POST', '/', {}, '{"foo":"bar"}' end @@ -93,7 +103,8 @@ class Elasticsearch::Transport::Transport::HTTP::ManticoreTest < Minitest::Test transport = Manticore.new :hosts => [ { :host => 'localhost', :port => 8080 } ], :options => options - transport.connections.first.connection.stub("http://localhost:8080//", :body => "\"\"", :headers => {"content-type" => "application/json"}, :code => 200 ) + transport.connections.first.connection.stub("http://localhost:8080//", :body => "\"\"", :headers => {"Content-Type" => "application/x-ndjson", + "User-Agent" => @transport.send(:user_agent_header)}, :code => 200 ) response = transport.perform_request 'GET', '/', {} assert_equal response.status, 200 @@ -113,11 +124,16 @@ class Elasticsearch::Transport::Transport::HTTP::ManticoreTest < Minitest::Test end should "handle HTTP methods" do - @transport.connections.first.connection.expects(:delete).with('http://127.0.0.1:8080//', {}).returns(stub_everything) - @transport.connections.first.connection.expects(:head).with('http://127.0.0.1:8080//', {}).returns(stub_everything) - @transport.connections.first.connection.expects(:get).with('http://127.0.0.1:8080//', {}).returns(stub_everything) - @transport.connections.first.connection.expects(:put).with('http://127.0.0.1:8080//', {}).returns(stub_everything) - @transport.connections.first.connection.expects(:post).with('http://127.0.0.1:8080//', {}).returns(stub_everything) + @transport.connections.first.connection.expects(:delete).with('http://127.0.0.1:8080//', { headers: {"Content-Type" => "application/json", + "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything) + @transport.connections.first.connection.expects(:head).with('http://127.0.0.1:8080//', { headers: {"Content-Type" => "application/json", + "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything) + @transport.connections.first.connection.expects(:get).with('http://127.0.0.1:8080//', { headers: {"Content-Type" => "application/json", + "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything) + @transport.connections.first.connection.expects(:put).with('http://127.0.0.1:8080//', { headers: {"Content-Type" => "application/json", + "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything) + @transport.connections.first.connection.expects(:post).with('http://127.0.0.1:8080//', { headers: {"Content-Type" => "application/json", + "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything) %w| HEAD GET PUT POST DELETE |.each { |method| @transport.perform_request method, '/' } diff --git a/fluentd/vendored_gem_src/elasticsearch/README.md b/fluentd/vendored_gem_src/elasticsearch/README.md index 3f76eac65..16863cb73 100644 --- a/fluentd/vendored_gem_src/elasticsearch/README.md +++ b/fluentd/vendored_gem_src/elasticsearch/README.md @@ -31,6 +31,7 @@ just use a release matching major version of Elasticsearch. | 2.x | → | 2.x | | 5.x | → | 5.x | | 6.x | → | 6.x | +| 7.x | → | 7.x | | master | → | master | ## Installation diff --git a/fluentd/vendored_gem_src/elasticsearch/elasticsearch.gemspec b/fluentd/vendored_gem_src/elasticsearch/elasticsearch.gemspec index 7e182d924..716ed259d 100644 --- a/fluentd/vendored_gem_src/elasticsearch/elasticsearch.gemspec +++ b/fluentd/vendored_gem_src/elasticsearch/elasticsearch.gemspec @@ -40,8 +40,8 @@ Gem::Specification.new do |s| s.required_ruby_version = '>= 1.9' - s.add_dependency "elasticsearch-transport", '7.1.0' - s.add_dependency "elasticsearch-api", '7.1.0' + s.add_dependency "elasticsearch-transport", '7.2.0' + s.add_dependency "elasticsearch-api", '7.2.0' s.add_development_dependency "bundler" diff --git a/fluentd/vendored_gem_src/elasticsearch/lib/elasticsearch/version.rb b/fluentd/vendored_gem_src/elasticsearch/lib/elasticsearch/version.rb index f6fc2e0f5..f587cf5e1 100644 --- a/fluentd/vendored_gem_src/elasticsearch/lib/elasticsearch/version.rb +++ b/fluentd/vendored_gem_src/elasticsearch/lib/elasticsearch/version.rb @@ -16,5 +16,5 @@ # under the License. module Elasticsearch - VERSION = "7.1.0" + VERSION = "7.2.0" end diff --git a/fluentd/vendored_gem_src/faraday/faraday.gemspec b/fluentd/vendored_gem_src/faraday/faraday.gemspec index 487abf0c2..0f08b7cce 100644 --- a/fluentd/vendored_gem_src/faraday/faraday.gemspec +++ b/fluentd/vendored_gem_src/faraday/faraday.gemspec @@ -14,19 +14,19 @@ Gem::Specification.new do |s| s.homepage = "https://github.com/lostisland/faraday".freeze s.licenses = ["MIT".freeze] s.required_ruby_version = Gem::Requirement.new(">= 1.9".freeze) - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "HTTP/REST API client library.".freeze if s.respond_to? :specification_version then s.specification_version = 4 if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q.freeze, [">= 1.2", "< 3"]) + s.add_runtime_dependency(%q.freeze, ["< 3", ">= 1.2"]) else - s.add_dependency(%q.freeze, [">= 1.2", "< 3"]) + s.add_dependency(%q.freeze, ["< 3", ">= 1.2"]) end else - s.add_dependency(%q.freeze, [">= 1.2", "< 3"]) + s.add_dependency(%q.freeze, ["< 3", ">= 1.2"]) end end diff --git a/fluentd/vendored_gem_src/fluent-plugin-systemd/fluent-plugin-systemd.gemspec b/fluentd/vendored_gem_src/fluent-plugin-systemd/fluent-plugin-systemd.gemspec index 1e7eec0b2..85f6d06da 100644 --- a/fluentd/vendored_gem_src/fluent-plugin-systemd/fluent-plugin-systemd.gemspec +++ b/fluentd/vendored_gem_src/fluent-plugin-systemd/fluent-plugin-systemd.gemspec @@ -14,7 +14,7 @@ Gem::Specification.new do |s| s.files = ["LICENCE".freeze, "README.md".freeze, "lib/fluent/plugin/filter_systemd_entry.rb".freeze, "lib/fluent/plugin/in_systemd.rb".freeze, "lib/fluent/plugin/systemd/entry_mutator.rb".freeze] s.homepage = "https://github.com/reevoo/fluent-plugin-systemd".freeze s.licenses = ["Apache-2.0".freeze] - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "Input plugin to read from systemd journal.".freeze if s.respond_to? :specification_version then @@ -25,14 +25,14 @@ Gem::Specification.new do |s| s.add_development_dependency(%q.freeze, [">= 0"]) s.add_development_dependency(%q.freeze, ["~> 2.5"]) s.add_development_dependency(%q.freeze, ["~> 0.53.0"]) - s.add_runtime_dependency(%q.freeze, [">= 0.14.11", "< 2"]) + s.add_runtime_dependency(%q.freeze, ["< 2", ">= 0.14.11"]) s.add_runtime_dependency(%q.freeze, ["~> 1.3.2"]) else s.add_dependency(%q.freeze, ["> 1.10"]) s.add_dependency(%q.freeze, [">= 0"]) s.add_dependency(%q.freeze, ["~> 2.5"]) s.add_dependency(%q.freeze, ["~> 0.53.0"]) - s.add_dependency(%q.freeze, [">= 0.14.11", "< 2"]) + s.add_dependency(%q.freeze, ["< 2", ">= 0.14.11"]) s.add_dependency(%q.freeze, ["~> 1.3.2"]) end else @@ -40,7 +40,7 @@ Gem::Specification.new do |s| s.add_dependency(%q.freeze, [">= 0"]) s.add_dependency(%q.freeze, ["~> 2.5"]) s.add_dependency(%q.freeze, ["~> 0.53.0"]) - s.add_dependency(%q.freeze, [">= 0.14.11", "< 2"]) + s.add_dependency(%q.freeze, ["< 2", ">= 0.14.11"]) s.add_dependency(%q.freeze, ["~> 1.3.2"]) end end diff --git a/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/README.md b/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/README.md index 8910235b3..32401a4fb 100644 --- a/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/README.md +++ b/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/README.md @@ -162,10 +162,10 @@ See `filter-viaq_data_model.conf` for an example filter configuration. create the full index name. * `elasticsearch_index_name_field` - name of the field in the record which stores the index name - you should remove this field in the elasticsearch output - plugin using the `remove_keys` config parameter - default is `viaq_idnex_name` + plugin using the `remove_keys` config parameter - default is `viaq_index_name` * `elasticsearch_index_prefix_field` - name of the field in the record which stores the index prefix - you should remove this field in the elasticsearch output - plugin using the `remove_keys` config parameter - default is `viaq_idnex_prefix` + plugin using the `remove_keys` config parameter - default is `viaq_index_prefix` **NOTE** The `formatter` blocks are matched in the given order in the file. This means, don't use `tag "**"` as the first formatter or none of your diff --git a/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/fluent-plugin-viaq_data_model.gemspec b/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/fluent-plugin-viaq_data_model.gemspec index a31cffe17..97fe0396e 100644 --- a/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/fluent-plugin-viaq_data_model.gemspec +++ b/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/fluent-plugin-viaq_data_model.gemspec @@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) Gem::Specification.new do |gem| gem.name = "fluent-plugin-viaq_data_model" - gem.version = "0.0.18" + gem.version = "0.0.19" gem.authors = ["Rich Megginson"] gem.email = ["rmeggins@redhat.com"] gem.description = %q{Filter plugin to ensure data is in the ViaQ common data model} diff --git a/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/lib/fluent/plugin/filter_viaq_data_model.rb b/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/lib/fluent/plugin/filter_viaq_data_model.rb index 10f04728f..8eef5e200 100644 --- a/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/lib/fluent/plugin/filter_viaq_data_model.rb +++ b/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/lib/fluent/plugin/filter_viaq_data_model.rb @@ -280,7 +280,7 @@ def delempty(thing) '8' => 'trace', '9' => 'unknown', } - def normalize_level(level, newlevel, stream=nil, priority=nil) + def normalize_level(level, newlevel, priority=nil) # if the record already has a level field, and it looks like one of our well # known values, convert it to the canonical normalized form - otherwise, # preserve the value in string format @@ -290,10 +290,6 @@ def normalize_level(level, newlevel, stream=nil, priority=nil) (level.respond_to?(:downcase) && (retlevel = NORMAL_LEVELS[level.downcase])) retlevel = level.to_s # don't know what it is - just convert to string end - elsif stream == 'stdout' - retlevel = 'info' - elsif stream == 'stderr' - retlevel = 'err' elsif !priority.nil? retlevel = PRIORITY_LEVELS[priority] else @@ -321,7 +317,7 @@ def process_sys_var_log_fields(tag, time, record, fmtr_type = nil) def process_k8s_json_file_fields(tag, time, record, fmtr_type = nil) record['message'] = record['message'] || record['log'] - record['level'] = normalize_level(record['level'], nil, record['stream']) + record['level'] = normalize_level(record['level'], nil) if record.key?('kubernetes') && record['kubernetes'].respond_to?(:fetch) && \ (k8shost = record['kubernetes'].fetch('host', nil)) record['hostname'] = k8shost diff --git a/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/lib/fluent/plugin/filter_viaq_data_model_systemd.rb b/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/lib/fluent/plugin/filter_viaq_data_model_systemd.rb index ad22a1bab..9d1add1ec 100644 --- a/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/lib/fluent/plugin/filter_viaq_data_model_systemd.rb +++ b/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/lib/fluent/plugin/filter_viaq_data_model_systemd.rb @@ -21,25 +21,28 @@ module ViaqDataModelFilterSystemd # map of journal fields to viaq data model field JOURNAL_FIELD_MAP_SYSTEMD_T = { - "_AUDIT_LOGINUID" => "AUDIT_LOGINUID", - "_AUDIT_SESSION" => "AUDIT_SESSION", - "_BOOT_ID" => "BOOT_ID", - "_CAP_EFFECTIVE" => "CAP_EFFECTIVE", - "_CMDLINE" => "CMDLINE", - "_COMM" => "COMM", - "_EXE" => "EXE", - "_GID" => "GID", - "_MACHINE_ID" => "MACHINE_ID", - "_PID" => "PID", - "_SELINUX_CONTEXT" => "SELINUX_CONTEXT", - "_SYSTEMD_CGROUP" => "SYSTEMD_CGROUP", - "_SYSTEMD_OWNER_UID" => "SYSTEMD_OWNER_UID", - "_SYSTEMD_SESSION" => "SYSTEMD_SESSION", - "_SYSTEMD_SLICE" => "SYSTEMD_SLICE", - "_SYSTEMD_UNIT" => "SYSTEMD_UNIT", - "_SYSTEMD_USER_UNIT" => "SYSTEMD_USER_UNIT", - "_TRANSPORT" => "TRANSPORT", - "_UID" => "UID" + "_AUDIT_LOGINUID" => "AUDIT_LOGINUID", + "_AUDIT_SESSION" => "AUDIT_SESSION", + "_BOOT_ID" => "BOOT_ID", + "_CAP_EFFECTIVE" => "CAP_EFFECTIVE", + "_CMDLINE" => "CMDLINE", + "_COMM" => "COMM", + "_EXE" => "EXE", + "_GID" => "GID", + "_LINE_BREAK" => "LINE_BREAK", + "_MACHINE_ID" => "MACHINE_ID", + "_PID" => "PID", + "_SELINUX_CONTEXT" => "SELINUX_CONTEXT", + "_STREAM_ID" => "STREAM_ID", + "_SYSTEMD_CGROUP" => "SYSTEMD_CGROUP", + "_SYSTEMD_INVOCATION_ID" => "SYSTEMD_INVOCATION_ID", + "_SYSTEMD_OWNER_UID" => "SYSTEMD_OWNER_UID", + "_SYSTEMD_SESSION" => "SYSTEMD_SESSION", + "_SYSTEMD_SLICE" => "SYSTEMD_SLICE", + "_SYSTEMD_UNIT" => "SYSTEMD_UNIT", + "_SYSTEMD_USER_UNIT" => "SYSTEMD_USER_UNIT", + "_TRANSPORT" => "TRANSPORT", + "_UID" => "UID" } JOURNAL_FIELD_MAP_SYSTEMD_U = { @@ -93,7 +96,7 @@ def process_journal_fields(tag, time, record, fmtr_type) unless systemd_k.empty? (record['systemd'] ||= {})['k'] = systemd_k end - record['level'] = normalize_level(record['level'], nil, nil, record['PRIORITY']) + record['level'] = normalize_level(record['level'], nil, record['PRIORITY']) JOURNAL_TIME_FIELDS.each do |field| if (val = record[field]) vali = val.to_i diff --git a/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/test/test_filter_viaq_data_model.rb b/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/test/test_filter_viaq_data_model.rb index efb26c25b..539968f2d 100644 --- a/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/test/test_filter_viaq_data_model.rb +++ b/fluentd/vendored_gem_src/fluent-plugin-viaq_data_model/test/test_filter_viaq_data_model.rb @@ -239,9 +239,12 @@ def normal_input "_EXE" => "EXE", "_GID" => "GID", "_MACHINE_ID" => "MACHINE_ID", + "_LINE_BREAK" => "LINE_BREAK", "_PID" => "PID", "_SELINUX_CONTEXT" => "SELINUX_CONTEXT", + "_STREAM_ID" => "STREAM_ID", "_SYSTEMD_CGROUP" => "SYSTEMD_CGROUP", + "_SYSTEMD_INVOCATION_ID" => "SYSTEMD_INVOCATION_ID", "_SYSTEMD_OWNER_UID" => "SYSTEMD_OWNER_UID", "_SYSTEMD_SESSION" => "SYSTEMD_SESSION", "_SYSTEMD_SLICE" => "SYSTEMD_SLICE", @@ -273,25 +276,28 @@ def normal_input end def normal_output_t { - "AUDIT_LOGINUID" =>"AUDIT_LOGINUID", - "AUDIT_SESSION" =>"AUDIT_SESSION", - "BOOT_ID" =>"BOOT_ID", - "CAP_EFFECTIVE" =>"CAP_EFFECTIVE", - "CMDLINE" =>"CMDLINE", - "COMM" =>"COMM", - "EXE" =>"EXE", - "GID" =>"GID", - "MACHINE_ID" =>"MACHINE_ID", - "PID" =>"PID", - "SELINUX_CONTEXT" =>"SELINUX_CONTEXT", - "SYSTEMD_CGROUP" =>"SYSTEMD_CGROUP", - "SYSTEMD_OWNER_UID" =>"SYSTEMD_OWNER_UID", - "SYSTEMD_SESSION" =>"SYSTEMD_SESSION", - "SYSTEMD_SLICE" =>"SYSTEMD_SLICE", - "SYSTEMD_UNIT" =>"SYSTEMD_UNIT", - "SYSTEMD_USER_UNIT" =>"SYSTEMD_USER_UNIT", - "TRANSPORT" =>"TRANSPORT", - "UID" =>"UID" + "AUDIT_LOGINUID" =>"AUDIT_LOGINUID", + "AUDIT_SESSION" =>"AUDIT_SESSION", + "BOOT_ID" =>"BOOT_ID", + "CAP_EFFECTIVE" =>"CAP_EFFECTIVE", + "CMDLINE" =>"CMDLINE", + "COMM" =>"COMM", + "EXE" =>"EXE", + "GID" =>"GID", + "MACHINE_ID" =>"MACHINE_ID", + "LINE_BREAK" =>"LINE_BREAK", + "PID" =>"PID", + "SELINUX_CONTEXT" =>"SELINUX_CONTEXT", + "STREAM_ID" =>"STREAM_ID", + "SYSTEMD_INVOCATION_ID" =>"SYSTEMD_INVOCATION_ID", + "SYSTEMD_CGROUP" =>"SYSTEMD_CGROUP", + "SYSTEMD_OWNER_UID" =>"SYSTEMD_OWNER_UID", + "SYSTEMD_SESSION" =>"SYSTEMD_SESSION", + "SYSTEMD_SLICE" =>"SYSTEMD_SLICE", + "SYSTEMD_UNIT" =>"SYSTEMD_UNIT", + "SYSTEMD_USER_UNIT" =>"SYSTEMD_USER_UNIT", + "TRANSPORT" =>"TRANSPORT", + "UID" =>"UID" } end def normal_output_u @@ -838,7 +844,7 @@ def add_event(input) ') assert_equal('mymessage', rec['message']) assert_equal('k8shost', rec['hostname']) - assert_equal('err', rec['level']) + assert_equal('unknown', rec['level']) assert_equal(@timestamp_str, rec['@timestamp']) assert_equal('127.0.0.1', rec['pipeline_metadata']['normalizer']['ipaddr4']) assert_equal('::1', rec['pipeline_metadata']['normalizer']['ipaddr6']) @@ -867,7 +873,7 @@ def add_event(input) assert_equal('ADDED', rec['kubernetes']['event']['verb']) assert_equal('event message', rec['message']) assert_equal('mymessage', rec['pipeline_metadata']['collector']['original_raw_message']) - assert_equal('err', rec['level']) + assert_equal('unknown', rec['level']) assert_equal('2017-07-27T17:23:46.216527+00:00', rec['@timestamp']) assert_equal('127.0.0.1', rec['pipeline_metadata']['collector']['ipaddr4']) assert_equal('::1', rec['pipeline_metadata']['collector']['ipaddr6']) @@ -896,7 +902,7 @@ def add_event(input) ') assert_equal('mymessage', rec['message']) assert_equal('k8shost', rec['hostname']) - assert_equal('err', rec['level']) + assert_equal('unknown', rec['level']) assert_equal(now.utc.to_datetime.rfc3339(6), rec['@timestamp']) assert_equal('127.0.0.1', rec['pipeline_metadata']['normalizer']['ipaddr4']) assert_equal('::1', rec['pipeline_metadata']['normalizer']['ipaddr6']) @@ -926,7 +932,7 @@ def add_event(input) ') assert_equal('mymessage', rec['message']) assert_equal('k8shost', rec['hostname']) - assert_equal('err', rec['level']) + assert_equal('unknown', rec['level']) assert_equal(expectedtime, rec['@timestamp']) assert_equal('127.0.0.1', rec['pipeline_metadata']['normalizer']['ipaddr4']) assert_equal('::1', rec['pipeline_metadata']['normalizer']['ipaddr6']) @@ -955,7 +961,7 @@ def add_event(input) ') assert_equal('mymessage', rec['message']) assert_equal('k8shost', rec['hostname']) - assert_equal('err', rec['level']) + assert_equal('unknown', rec['level']) assert_equal(@timestamp_str, rec['@timestamp']) assert_equal('127.0.0.1', rec['pipeline_metadata']['normalizer']['ipaddr4']) assert_equal('::1', rec['pipeline_metadata']['normalizer']['ipaddr6']) @@ -983,7 +989,7 @@ def add_event(input) ') assert_equal('mymessage', rec['message']) assert_equal('k8shost', rec['hostname']) - assert_equal('err', rec['level']) + assert_equal('unknown', rec['level']) assert_equal(Time.at(@time).utc.to_datetime.rfc3339(6), rec['@timestamp']) assert_equal('127.0.0.1', rec['pipeline_metadata']['normalizer']['ipaddr4']) assert_equal('::1', rec['pipeline_metadata']['normalizer']['ipaddr6']) @@ -1010,7 +1016,7 @@ def add_event(input) ') assert_equal('mymessage', rec['message']) assert_equal('k8shost', rec['hostname']) - assert_equal('info', rec['level']) + assert_equal('unknown', rec['level']) assert_equal(@timestamp_str, rec['@timestamp']) assert_equal('127.0.0.1', rec['pipeline_metadata']['normalizer']['ipaddr4']) assert_equal('::1', rec['pipeline_metadata']['normalizer']['ipaddr6']) diff --git a/fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE.md b/fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE.md index d2ac020fd..0b94f21f9 100644 --- a/fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE.md +++ b/fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE.md @@ -1,8 +1,17 @@ Check [CONTRIBUTING guideline](https://github.com/fluent/fluentd/blob/master/CONTRIBUTING.md) first and here is the list to help us investigate the problem. -- fluentd or td-agent version. -- Environment information: - - Operating system: `cat /etc/os-release` - - Kernel version: `uname -r` -- Your configuration -- Your problem explanation. If you have an error logs, write it together. +**Got a question or problem?** + +RESOURCES of [Official site](https://www.fluentd.org/) and [Fluentd documentation](https://docs.fluentd.org/) may help you. + +If you have further questions about Fluentd and plugins, please direct these to [Mailing List](https://groups.google.com/forum/#!forum/fluentd). +Don't use Github issue for asking questions. Here are examples: + +- I installed xxx plugin but it doesn't work. Why? +- Fluentd starts but logs are not sent to xxx. Am I wrong? +- I want to do xxx. How to realize it with plugins? + +We may close such questions to keep clear repository for developers and users. +Github issue is mainly for submitting a bug report or feature request. See below. + +If you can't judge your case is a bug or not, use mailing list or slack first. diff --git a/fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE/bug_report.md b/fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..04901a006 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,39 @@ +--- +name: Bug Report +about: Create a report to help us improve. If you have questions about Fluentd and plugins, please direct these to https://groups.google.com/forum/#!forum/fluentd +labels: 'bug' + +--- + +Check [CONTRIBUTING guideline](https://github.com/fluent/fluentd/blob/master/CONTRIBUTING.md) first and here is the list to help us investigate the problem. + +**Describe the bug** + + +**To Reproduce** + + +**Expected behavior** + + +**Your Environment** + +- Fluentd or td-agent version: `fluentd --version` or `td-agent --version` +- Operating system: `cat /etc/os-release` +- Kernel version: `uname -r` + +**Your Configuration** + +``` + +``` + +**Your Error Log** + +``` + +``` + +**Additional context** + + diff --git a/fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE/feature_request.md b/fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..79401ac9f --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,23 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +Check [CONTRIBUTING guideline](https://github.com/fluent/fluentd/blob/master/CONTRIBUTING.md) first and here is the list to help us investigate the problem. + +**Is your feature request related to a problem? Please describe.** + + + +**Describe the solution you'd like** + + + +**Describe alternatives you've considered** + + + +**Additional context** + + diff --git a/fluentd/vendored_gem_src/fluentd/CHANGELOG.md b/fluentd/vendored_gem_src/fluentd/CHANGELOG.md index c5eaf5643..7d210dac5 100644 --- a/fluentd/vendored_gem_src/fluentd/CHANGELOG.md +++ b/fluentd/vendored_gem_src/fluentd/CHANGELOG.md @@ -1,5 +1,64 @@ +# v1.6 + +## Release v1.6.2 - 2019/07/11 + +### Bug fixes + +* http_server helper: Add title argument to support multiple servers + https://github.com/fluent/fluentd/pull/2493 + +## Release v1.6.1 - 2019/07/10 + +### Enhancement + +* socket/cert: Support all private keys OpenSSL supports, not only RSA. + https://github.com/fluent/fluentd/pull/2487 +* output/buffer: Improve statistics method performance + https://github.com/fluent/fluentd/pull/2491 + +### Bug fixes + +* plugin_config_formatter: update new doc URL + https://github.com/fluent/fluentd/pull/2481 +* out_forward: Avoid zero division error when there are no available nodes + https://github.com/fluent/fluentd/pull/2482 + +## Release v1.6.0 - 2019/07/01 + +### New feature + +* plugin: Add http_server helper and in_monitor_agent use it + https://github.com/fluent/fluentd/pull/2447 + +### Enhancement + +* in_monitor_agent: Add more metrics for buffer/output + https://github.com/fluent/fluentd/pull/2450 +* time/plugin: Add `EventTime#to_time` method for fast conversion + https://github.com/fluent/fluentd/pull/2469 +* socket helper/out_forward: Add connect_timeout parameter + https://github.com/fluent/fluentd/pull/2467 +* command: Add `--conf-encoding` option + https://github.com/fluent/fluentd/pull/2453 +* parser_none: Small performance optimization + https://github.com/fluent/fluentd/pull/2455 + +### Bug fixes + +* cert: Fix cert match pattern + https://github.com/fluent/fluentd/pull/2466 +* output: Fix forget to increment rollback count + https://github.com/fluent/fluentd/pull/2462 + # v1.5 +## Release v1.5.2 - 2019/06/13 + +### Bug fixes + +* out_forward: Fix duplicated handshake bug in keepalive + https://github.com/fluent/fluentd/pull/2456 + ## Release v1.5.1 - 2019/06/05 ### Enhancement diff --git a/fluentd/vendored_gem_src/fluentd/CONTRIBUTING.md b/fluentd/vendored_gem_src/fluentd/CONTRIBUTING.md index 0d75114cc..aedf494a7 100644 --- a/fluentd/vendored_gem_src/fluentd/CONTRIBUTING.md +++ b/fluentd/vendored_gem_src/fluentd/CONTRIBUTING.md @@ -24,7 +24,7 @@ If you find a bug of Fluentd or a mistake in the documentation, you can help us submitting an issue to Fluentd. Even better you can submit a Pull Request with a fix. * **Fluentd**: Use [fluentd](https://github.com/fluent/fluentd) repository. Fill issue template. -* **Documentation**: Use [fluentd-docs](https://github.com/fluent/fluentd-docs) repository. +* **Documentation**: Use [fluentd-docs](https://github.com/fluent/fluentd-docs-gitbook) repository. If you find a bug of 3rd party plugins, please submit an issue to each plugin repository. And use [omnibus-td-agent](https://github.com/treasure-data/omnibus-td-agent) repository for td-agent related issues. diff --git a/fluentd/vendored_gem_src/fluentd/Gemfile b/fluentd/vendored_gem_src/fluentd/Gemfile index 88ae4bc4e..846728054 100644 --- a/fluentd/vendored_gem_src/fluentd/Gemfile +++ b/fluentd/vendored_gem_src/fluentd/Gemfile @@ -2,6 +2,11 @@ source 'https://rubygems.org/' gemspec +# https://github.com/socketry/async-io/blob/v1.23.1/async-io.gemspec#L21 +if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('2.3.0') + gem 'async-http', '~> 0.42' +end + local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local") if File.exist?(local_gemfile) puts "Loading Gemfile.local ..." if $DEBUG # `ruby -d` or `bundle -v` diff --git a/fluentd/vendored_gem_src/fluentd/README.md b/fluentd/vendored_gem_src/fluentd/README.md index f359e46e8..e587c1086 100644 --- a/fluentd/vendored_gem_src/fluentd/README.md +++ b/fluentd/vendored_gem_src/fluentd/README.md @@ -13,7 +13,7 @@ GitLab CI: [Fluentd](https://www.fluentd.org/) collects events from various data sources and writes them to files, RDBMS, NoSQL, IaaS, SaaS, Hadoop and so on. Fluentd helps you unify your logging infrastructure (Learn more about the [Unified Logging Layer](https://www.fluentd.org/blog/unified-logging-layer)).

- +

An event consists of *tag*, *time* and *record*. Tag is a string separated with '.' (e.g. myapp.access). It is used to categorize events. Time is a UNIX time recorded at occurrence of an event. Record is a JSON object. diff --git a/fluentd/vendored_gem_src/fluentd/Rakefile b/fluentd/vendored_gem_src/fluentd/Rakefile index ad182bb88..82a1a5354 100755 --- a/fluentd/vendored_gem_src/fluentd/Rakefile +++ b/fluentd/vendored_gem_src/fluentd/Rakefile @@ -34,7 +34,12 @@ Rake::TestTask.new(:base_test) do |t| t.test_files = if ENV["WIN_RAPID"] ["test/test_event.rb", "test/test_supervisor.rb", "test/plugin_helper/test_event_loop.rb"] else - Dir["test/**/test_*.rb"].sort + tests = Dir["test/**/test_*.rb"].sort + if Process.uid.zero? + puts "test_file_util.rb for non-root user env. Disable this test on root environment" + tests.delete("test/plugin/test_file_util.rb") + end + tests end t.verbose = true t.warning = true diff --git a/fluentd/vendored_gem_src/fluentd/appveyor.yml b/fluentd/vendored_gem_src/fluentd/appveyor.yml index 2afed5190..3fed3e932 100644 --- a/fluentd/vendored_gem_src/fluentd/appveyor.yml +++ b/fluentd/vendored_gem_src/fluentd/appveyor.yml @@ -5,10 +5,11 @@ version: '{build}' install: - SET PATH=C:\Ruby%ruby_version%\bin;%PATH% - - "%devkit%\\devkitvars.bat" + - IF %ridk%==0 "%devkit%\\devkitvars.bat" - ruby --version - gem --version - - bundle install + - IF %ridk%==1 ridk.cmd exec bundle install + - IF %ridk%==0 bundle install build: off test_script: - bundle exec rake test @@ -17,22 +18,20 @@ test_script: branches: only: - master - - v0.10 - - v0.12 - - v0.14 # https://www.appveyor.com/docs/installed-software/#ruby environment: matrix: - ruby_version: "23-x64" devkit: C:\Ruby23-x64\DevKit + ridk: 0 - ruby_version: "23" devkit: C:\Ruby23\DevKit - - ruby_version: "22-x64" - devkit: C:\Ruby23-x64\DevKit - - ruby_version: "22" - devkit: C:\Ruby23\DevKit - WIN_RAPID: true + ridk: 0 + - ruby_version: "24-x64" + ridk: 1 + - ruby_version: "24" + ridk: 1 matrix: allow_failures: - ruby_version: "21" diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/command/ca_generate.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/command/ca_generate.rb index cf0493087..9689fc17b 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/command/ca_generate.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/command/ca_generate.rb @@ -91,7 +91,7 @@ def self.generate_ca_pair(opts={}) def self.generate_server_pair(opts={}) key = OpenSSL::PKey::RSA.generate(opts[:private_key_length]) - ca_key = OpenSSL::PKey::RSA.new(File.read(opts[:ca_key_path]), opts[:ca_key_passphrase]) + ca_key = OpenSSL::PKey::read(File.read(opts[:ca_key_path]), opts[:ca_key_passphrase]) ca_cert = OpenSSL::X509::Certificate.new(File.read(opts[:ca_cert_path])) issuer = ca_cert.issuer diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/command/fluentd.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/command/fluentd.rb index a453fe5e7..93e2c35cf 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/command/fluentd.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/command/fluentd.rb @@ -155,6 +155,10 @@ opts[:gem_install_path] = s } +op.on('--conf-encoding ENCODING', "specify configuration file encoding") { |s| + opts[:conf_encoding] = s +} + if Fluent.windows? require 'windows/library' include Windows::Library diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/command/plugin_config_formatter.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/command/plugin_config_formatter.rb index 5c77c1206..f765ae5d4 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/command/plugin_config_formatter.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/command/plugin_config_formatter.rb @@ -32,8 +32,8 @@ class FluentPluginConfigFormatter "buffer", "parser", "formatter", "storage" ] - DOCS_BASE_URL = "https://docs.fluentd.org/v1.0/articles/quickstart" - DOCS_ARTICLE_BASE_URL = "https://docs.fluentd.org/v1.0/articles/" + DOCS_BASE_URL = "https://docs.fluentd.org/v/1.0" + DOCS_PLUGIN_HELPER_BASE_URL = "#{DOCS_BASE_URL}/plugin-helper-overview/" def initialize(argv = ARGV) @argv = argv @@ -198,7 +198,7 @@ def dump_json(dumped_config) end def plugin_helper_url(plugin_helper) - "#{DOCS_ARTICLE_BASE_URL}api-plugin-helper-#{plugin_helper}" + "#{DOCS_PLUGIN_HELPER_BASE_URL}api-plugin-helper-#{plugin_helper}" end def plugin_helper_markdown_link(plugin_helper) @@ -207,7 +207,7 @@ def plugin_helper_markdown_link(plugin_helper) def plugin_overview_url(class_name) plugin_type = class_name.slice(/::(\w+)\z/, 1).downcase - "#{DOCS_ARTICLE_BASE_URL}#{plugin_type}-plugin-overview" + "#{DOCS_BASE_URL}/#{plugin_type}#overview" end def plugin_overview_markdown_link(class_name) diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/config/literal_parser.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/config/literal_parser.rb index 85cbb27bf..b02f8251c 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/config/literal_parser.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/config/literal_parser.rb @@ -215,7 +215,7 @@ def scan_json(is_array) parsed = nil begin parsed = JSON.parse(buffer + line_buffer.rstrip.sub(/,$/, '') + (is_array ? "]" : "}")) - rescue JSON::ParserError => e + rescue JSON::ParserError # This '#' is in json string literals end @@ -243,7 +243,7 @@ def scan_json(is_array) line_buffer << char begin result = JSON.parse(buffer + line_buffer) - rescue JSON::ParserError => e + rescue JSON::ParserError # Incomplete json string yet end end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/base.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/base.rb index 70ded69bd..a7474db00 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/base.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/base.rb @@ -29,6 +29,7 @@ class Base attr_accessor :under_plugin_development def initialize + @log = nil super @_state = State.new(false, false, false, false, false, false, false, false, false) @_context_router = nil diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/buffer.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/buffer.rb index 690290a19..fbf355943 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/buffer.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/buffer.rb @@ -740,6 +740,40 @@ def write_step_by_step(metadata, data, format, splits_count, &block) enqueue_chunk(metadata) if enqueue_chunk_before_retry retry end + + STATS_KEYS = [ + 'stage_length', + 'stage_byte_size', + 'queue_length', + 'queue_byte_size', + 'available_buffer_space_ratios', + 'total_queued_size', + 'oldest_timekey', + 'newest_timekey' + ] + + def statistics + stage_size, queue_size = @stage_size, @queue_size + buffer_space = 1.0 - ((stage_size + queue_size * 1.0) / @total_limit_size).round + stats = { + 'stage_length' => @stage.size, + 'stage_byte_size' => stage_size, + 'queue_length' => @queue.size, + 'queue_byte_size' => queue_size, + 'available_buffer_space_ratios' => buffer_space * 100, + 'total_queued_size' => stage_size + queue_size, + } + + if (m = timekeys.min) + stats['oldest_timekey'] = m + end + + if (m = timekeys.max) + stats['newest_timekey'] = m + end + + { 'buffer' => stats } + end end end end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/in_forward.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/in_forward.rb index 73abef148..9b08fd130 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/in_forward.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/in_forward.rb @@ -135,13 +135,13 @@ def configure(conf) if client.host begin source = IPSocket.getaddress(client.host) - rescue SocketError => e + rescue SocketError raise Fluent::ConfigError, "host '#{client.host}' cannot be resolved" end end source_addr = begin IPAddr.new(source || client.network) - rescue ArgumentError => e + rescue ArgumentError raise Fluent::ConfigError, "network '#{client.network}' address format is invalid" end @nodes.push({ diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/in_monitor_agent.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/in_monitor_agent.rb index 323189e19..39eab972e 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/in_monitor_agent.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/in_monitor_agent.rb @@ -28,7 +28,7 @@ module Fluent::Plugin class MonitorAgentInput < Input Fluent::Plugin.register_input('monitor_agent', self) - helpers :timer, :thread + helpers :timer, :thread, :http_server desc 'The address to bind to.' config_param :bind, :string, default: '0.0.0.0' @@ -43,35 +43,83 @@ class MonitorAgentInput < Input desc 'Determine whether to include the retry information.' config_param :include_retry, :bool, default: true - class MonitorServlet < WEBrick::HTTPServlet::AbstractServlet - def initialize(server, agent) + class APIHandler + def initialize(agent) @agent = agent end - def do_GET(req, res) - begin - code, header, body = process(req) - rescue - code, header, body = render_json_error(500, { - 'message '=> 'Internal Server Error', - 'error' => "#{$!}", - 'backgrace'=> $!.backtrace, - }) - end + def plugins_ltsv(req) + list = build_object(build_option(req)) - # set response code, header and body - res.status = code - header.each_pair {|k,v| - res[k] = v - } - res.body = body + render_ltsv(list) + end + + def plugins_json(req) + opts = build_option(req) + obj = build_object(opts) + + render_json({ 'plugins' => obj }, pretty_json: opts[:pretty_json]) + end + + def config_ltsv(_req) + obj = { + 'pid' => Process.pid, + 'ppid' => Process.ppid + }.merge(@agent.fluentd_opts) + + render_ltsv([obj]) + end + + def config_json(req) + obj = { + 'pid' => Process.pid, + 'ppid' => Process.ppid + }.merge(@agent.fluentd_opts) + opts = build_option(req) + + render_json(obj, pretty_json: opts[:pretty_json]) + end + + private + + def render_error_json(code:, msg:, pretty_json: nil, **additional_params) + resp = additional_params.merge('message' => msg) + render_json(resp, code: code, pretty_json: pretty_json) end - def build_object(req, opts) - unless req.path_info == "" - return render_json_error(404, "Not found") + def render_json(obj, code: 200, pretty_json: nil) + body = + if pretty_json + JSON.pretty_generate(obj) + else + obj.to_json + end + + [code, { 'Content-Type' => 'application/json' }, body] + end + + def render_ltsv(obj, code: 200) + normalized = JSON.parse(obj.to_json) + text = '' + normalized.each do |hash| + row = [] + hash.each do |k, v| + if v.is_a?(Array) + row << "#{k}:#{v.join(',')}" + elsif v.is_a?(Hash) + next + else + row << "#{k}:#{v}" + end + end + + text << row.join("\t") << "\n" end + [code, { 'Content-Type' => 'text/plain' }, text] + end + + def build_object(opts) qs = opts[:query] if tag = qs['tag'.freeze].first # ?tag= to search an output plugin by match pattern @@ -98,30 +146,11 @@ def build_object(req, opts) list end - def render_json(obj, opts={}) - render_json_error(200, obj, opts) - end - - def render_json_error(code, obj, opts={}) - if opts[:pretty_json] - js = JSON.pretty_generate(obj) - else - js = obj.to_json - end - [code, {'Content-Type'=>'application/json'}, js] - end - - private - def build_option(req) qs = Hash.new { |_, _| [] } # parse ?=query string if req.query_string - begin - qs.merge!(CGI.parse(req.query_string)) - rescue - return render_json_error(400, "Invalid query string") - end + qs.merge!(CGI.parse(req.query_string)) end # if ?debug=1 is set, set :with_debug_info for get_monitor_info @@ -152,74 +181,6 @@ def build_option(req) end end - class LTSVMonitorServlet < MonitorServlet - def process(req) - opts = build_option(req) - list = build_object(req, opts) - return unless list - - normalized = JSON.parse(list.to_json) - - text = '' - - normalized.map {|hash| - row = [] - hash.each_pair {|k,v| - unless v.is_a?(Hash) || v.is_a?(Array) - row << "#{k}:#{v}" - end - } - text << row.join("\t") << "\n" - } - - [200, {'Content-Type'=>'text/plain'}, text] - end - end - - class JSONMonitorServlet < MonitorServlet - def process(req) - opts = build_option(req) - list = build_object(req, opts) - return unless list - - render_json({ - 'plugins' => list - }, opts) - end - end - - class ConfigMonitorServlet < MonitorServlet - def build_object(req, _opt) - { - 'pid' => Process.pid, - 'ppid' => Process.ppid - }.merge(@agent.fluentd_opts) - end - end - - class LTSVConfigMonitorServlet < ConfigMonitorServlet - def process(req) - opts = build_option(req) - result = build_object(req, opts) - - row = [] - JSON.parse(result.to_json).each_pair { |k, v| - row << "#{k}:#{v}" - } - text = row.join("\t") - - [200, {'Content-Type'=>'text/plain'}, text] - end - end - - class JSONConfigMonitorServlet < ConfigMonitorServlet - def process(req) - opts = build_option(req) - result = build_object(req, opts) - render_json(result, opts) - end - end - def initialize super @@ -235,23 +196,25 @@ def multi_workers_ready? true end + class NotFoundJson + BODY = { 'message' => 'Not found' }.to_json + def self.call(_req) + [404, { 'Content-Type' => 'application/json' }, BODY] + end + end + def start super log.debug "listening monitoring http server on http://#{@bind}:#{@port}/api/plugins for worker#{fluentd_worker_id}" - @srv = WEBrick::HTTPServer.new({ - BindAddress: @bind, - Port: @port, - Logger: WEBrick::Log.new(STDERR, WEBrick::Log::FATAL), - AccessLog: [], - }) - @srv.mount('/api/plugins', LTSVMonitorServlet, self) - @srv.mount('/api/plugins.json', JSONMonitorServlet, self) - @srv.mount('/api/config', LTSVConfigMonitorServlet, self) - @srv.mount('/api/config.json', JSONConfigMonitorServlet, self) - thread_create :in_monitor_agent_servlet do - @srv.start + api_handler = APIHandler.new(self) + create_http_server(:in_monitor_http_server_helper, addr: @bind, port: @port, logger: log, default_app: NotFoundJson) do |serv| + serv.get('/api/plugins') { |req| api_handler.plugins_ltsv(req) } + serv.get('/api/plugins.json') { |req| api_handler.plugins_json(req) } + serv.get('/api/config') { |req| api_handler.config_ltsv(req) } + serv.get('/api/config.json') { |req| api_handler.config_json(req) } end + if @tag log.debug "tag parameter is specified. Emit plugins info to '#{@tag}'" @@ -267,15 +230,7 @@ def start end end - def shutdown - if @srv - @srv.shutdown - @srv = nil - end - - super - end - + # They are deprecated but remain for compatibility MONITOR_INFO = { 'output_plugin' => ->(){ is_a?(::Fluent::Plugin::Output) }, 'buffer_queue_length' => ->(){ throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer); @buffer.queue.size }, @@ -377,6 +332,10 @@ def get_monitor_info(pe, opts={}) end } + if pe.respond_to?(:statistics) + obj.merge!(pe.statistics['output'] || {}) + end + obj['retry'] = get_retry_info(pe.retry) if opts[:with_retry] and pe.instance_variable_defined?(:@retry) # include all instance variables if :with_debug_info is set diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/out_forward.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/out_forward.rb index fb5cc36bb..684a2484c 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/out_forward.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/out_forward.rb @@ -39,6 +39,8 @@ class ConnectionClosedError < Error; end desc 'The timeout time when sending event logs.' config_param :send_timeout, :time, default: 60 + desc 'The timeout time for socket connect' + config_param :connect_timeout, :time, default: nil # TODO: add linger_timeout, recv_timeout desc 'The protocol to use for heartbeats (default is the same with "transport").' @@ -376,6 +378,7 @@ def create_transfer_socket(host, port, hostname, &block) linger_timeout: Fluent.windows? ? nil : @send_timeout, send_timeout: @send_timeout, recv_timeout: @ack_response_timeout, + connect_timeout: @connect_timeout, &block ) when :tcp @@ -384,6 +387,7 @@ def create_transfer_socket(host, port, hostname, &block) linger_timeout: @send_timeout, send_timeout: @send_timeout, recv_timeout: @ack_response_timeout, + connect_timeout: @connect_timeout, &block ) else @@ -424,6 +428,12 @@ def rebuild_weight_array end weight_array = [] + if regular_nodes.empty? + log.warn('No nodes are available') + @weight_array = weight_array + return @weight_array + end + gcd = regular_nodes.map {|n| n.weight }.inject(0) {|r,w| r.gcd(w) } regular_nodes.each {|n| (n.weight / gcd).times { @@ -770,8 +780,7 @@ def standby? end def verify_connection - connect do |sock| - ri = RequestInfo.new(@sender.security ? :helo : :established) + connect do |sock, ri| if ri.state != :established establish_connection(sock, ri) raise if ri.state != :established @@ -810,11 +819,6 @@ def establish_connection(sock, ri) end def send_data_actual(sock, tag, chunk) - ri = RequestInfo.new(@sender.security ? :helo : :established) - if ri.state != :established - establish_connection(sock, ri) - end - unless available? raise ConnectionClosedError, "failed to establish connection with node #{@name}" end @@ -841,7 +845,10 @@ def send_data_actual(sock, tag, chunk) end def send_data(tag, chunk) - sock = connect + sock, ri = connect + if ri.state != :established + establish_connection(sock, ri) + end begin send_data_actual(sock, tag, chunk) @@ -1073,26 +1080,36 @@ def on_read(sock, ri, data) private def connect(host = nil) - sock = if @keepalive - @socket_cache.fetch_or { @sender.create_transfer_socket(host || resolved_host, port, @hostname) } - else - @log.debug('connect new socket') - @sender.create_transfer_socket(host || resolved_host, port, @hostname) - end + socket, request_info = + if @keepalive + ri = RequestInfo.new(:established) + sock = @socket_cache.fetch_or do + s = @sender.create_transfer_socket(host || resolved_host, port, @hostname) + ri = RequestInfo.new(@sender.security ? :helo : :established) # overwrite if new connection + s + end + [sock, ri] + else + @log.debug('connect new socket') + [@sender.create_transfer_socket(host || resolved_host, port, @hostname), RequestInfo.new(@sender.security ? :helo : :established)] + end if block_given? + ret = nil begin - yield(sock) + ret = yield(socket, request_info) rescue @socket_cache.revoke if @keepalive raise else @socket_cache.dec_ref if @keepalive ensure - sock.close unless @keepalive + socket.close unless @keepalive end + + ret else - sock + [socket, request_info] end end end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/output.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/output.rb index 8ea11d66f..be44e3990 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/output.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/output.rb @@ -16,6 +16,7 @@ require 'fluent/error' require 'fluent/plugin/base' +require 'fluent/plugin/buffer' require 'fluent/plugin_helper/record_accessor' require 'fluent/log' require 'fluent/plugin_id' @@ -184,6 +185,8 @@ def initialize @emit_records = 0 @write_count = 0 @rollback_count = 0 + @flush_time_count = 0 + @slow_flush_count = 0 # How to process events is decided here at once, but it will be decided in delayed way on #configure & #start if implement?(:synchronous) @@ -1173,7 +1176,10 @@ def try_flush @dequeued_chunks.delete_if{|d| d.chunk_id == chunk.unique_id } end end - @buffer.takeback_chunk(chunk.unique_id) + + if @buffer.takeback_chunk(chunk.unique_id) + @counters_monitor.synchronize { @rollback_count += 1 } + end update_retry_state(chunk.unique_id, using_secondary, e) @@ -1202,7 +1208,10 @@ def backup_chunk(chunk, using_secondary, delayed_commit) def check_slow_flush(start) elapsed_time = Fluent::Clock.now - start + elapsed_millsec = (elapsed_time * 1000).to_i + @counters_monitor.synchronize { @flush_time_count += elapsed_millsec } if elapsed_time > @slow_flush_log_threshold + @counters_monitor.synchronize { @slow_flush_count += 1 } log.warn "buffer flush took longer time than slow_flush_log_threshold:", elapsed_time: elapsed_time, slow_flush_log_threshold: @slow_flush_log_threshold, plugin_id: self.plugin_id end @@ -1457,6 +1466,33 @@ def flush_thread_run(state) state.mutex.unlock end end + + BUFFER_STATS_KEYS = {} + Fluent::Plugin::Buffer::STATS_KEYS.each { |key| + BUFFER_STATS_KEYS[key] = "buffer_#{key}" + } + + def statistics + stats = { + 'emit_records' => @emit_records, + # Respect original name + # https://github.com/fluent/fluentd/blob/45c7b75ba77763eaf87136864d4942c4e0c5bfcd/lib/fluent/plugin/in_monitor_agent.rb#L284 + 'retry_count' => @num_errors, + 'emit_count' => @emit_count, + 'write_count' => @write_count, + 'rollback_count' => @rollback_count, + 'slow_flush_count' => @slow_flush_count, + 'flush_time_count' => @flush_time_count, + } + + if @buffer && @buffer.respond_to?(:statistics) + (@buffer.statistics['buffer'] || {}).each do |k, v| + stats[BUFFER_STATS_KEYS[k]] = v + end + end + + { 'output' => stats } + end end end end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/parser_none.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/parser_none.rb index 8d9bf6045..b3cbbd864 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/parser_none.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin/parser_none.rb @@ -27,8 +27,7 @@ class NoneParser < Parser config_param :message_key, :string, default: 'message' def parse(text) - record = {} - record[@message_key] = text + record = {@message_key => text} time = @estimate_current_event ? Fluent::EventTime.now : nil yield time, record end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper.rb index 363b1866f..0b143a520 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper.rb @@ -22,6 +22,7 @@ require 'fluent/plugin_helper/storage' require 'fluent/plugin_helper/parser' require 'fluent/plugin_helper/formatter' +require 'fluent/plugin_helper/http_server' require 'fluent/plugin_helper/inject' require 'fluent/plugin_helper/extract' require 'fluent/plugin_helper/socket' diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/cert_option.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/cert_option.rb index cb153038c..2d26e716d 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/cert_option.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/cert_option.rb @@ -76,7 +76,7 @@ def cert_option_server_validate!(conf) end def cert_option_load(cert_path, private_key_path, private_key_passphrase) - key = OpenSSL::PKey::RSA.new(File.read(private_key_path), private_key_passphrase) + key = OpenSSL::PKey::read(File.read(private_key_path), private_key_passphrase) certs = cert_option_certificates_from_file(cert_path) cert = certs.shift return cert, key, certs @@ -137,7 +137,7 @@ def cert_option_generate_ca_pair_self_signed(generate_opts) end def cert_option_generate_server_pair_by_ca(ca_cert_path, ca_key_path, ca_key_passphrase, generate_opts) - ca_key = OpenSSL::PKey::RSA.new(File.read(ca_key_path), ca_key_passphrase) + ca_key = OpenSSL::PKey::read(File.read(ca_key_path), ca_key_passphrase) ca_cert = OpenSSL::X509::Certificate.new(File.read(ca_cert_path)) cert, key = cert_option_generate_pair(generate_opts, ca_cert.subject) raise "BUG: certificate digest algorithm not set" unless generate_opts[:digest] @@ -168,7 +168,7 @@ def cert_option_generate_server_pair_self_signed(generate_opts) def cert_option_certificates_from_file(path) data = File.read(path) - pattern = Regexp.compile('-+BEGIN CERTIFICATE-+\n(?:[^-]*\n)+-+END CERTIFICATE-+\n', Regexp::MULTILINE) + pattern = Regexp.compile('-+BEGIN CERTIFICATE-+\n(?:[^-]*\n)+-+END CERTIFICATE-+\n?', Regexp::MULTILINE) list = [] data.scan(pattern){|match| list << OpenSSL::X509::Certificate.new(match) } list diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server.rb new file mode 100644 index 000000000..f9d5ce519 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server.rb @@ -0,0 +1,76 @@ +# +# Fluentd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +begin + # raise if RUBY_VERSION < 2.3.x. see Gemfile + require 'async' + require 'fluent/plugin_helper/http_server/server' +rescue LoadError => _ + require 'fluent/plugin_helper/http_server/compat/server' + Fluent::PluginHelper::HttpServer::Server = Fluent::PluginHelper::HttpServer::Compat::Server +end + +require 'fluent/plugin_helper/thread' + +module Fluent + module PluginHelper + module HttpServer + include Fluent::PluginHelper::Thread + # stop : stop http server and mark callback thread as stopped + # shutdown : [-] + # close : correct stopped threads + # terminate: kill thread + + # @param title [Symbol] the thread name. this value should be unique. + # @param addr [String] Listen address + # @param port [String] Listen port + # @param logger [Logger] logger used in this server + # @param default_app [Object] This method must have #call. + def create_http_server(title, addr:, port:, logger:, default_app: nil) + unless block_given? + raise ArgumentError, 'BUG: callback not specified' + end + + @_http_server = HttpServer::Server.new(addr: addr, port: port, logger: logger, default_app: default_app) do |serv| + yield(serv) + end + + _block_until_http_server_start do |notify| + thread_create(title) do + @_http_server.start(notify) + end + end + end + + def stop + if @_http_server + @_http_server.stop + end + + super + end + + private + + # To block until server is ready to listen + def _block_until_http_server_start + que = Queue.new + yield(que) + que.pop + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/app.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/app.rb new file mode 100644 index 000000000..fe8581e1c --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/app.rb @@ -0,0 +1,79 @@ +# +# Fluentd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'async/http/protocol' +require 'fluent/plugin_helper/http_server/methods' +require 'fluent/plugin_helper/http_server/request' + +module Fluent + module PluginHelper + module HttpServer + class App + def initialize(router, logger) + @logger = logger + @router = router + end + + # Required method by async-http + def call(request) + method = request.method + resp = + case method + when HttpServer::Methods::GET + get(request) + when HttpServer::Methods::HEAD + head(request) + when HttpServer::Methods::POST + post(request) + when HttpServer::Methods::PATCH + patch(request) + when HttpServer::Methods::PUT + put(request) + when HttpServer::Methods::DELETE + delete(request) + when HttpServer::Methods::OPTIONS + options(request) + when HttpServer::Methods::CONNECT + connect(request) + when HttpServer::Methods::TRACE + trace(request) + else + raise "Unknown method #{method}" + end + Protocol::HTTP::Response[*resp] + rescue => e + @logger.error(e) + Protocol::HTTP::Response[500, { 'Content-Type' => 'text/plain' }, 'Internal Server Error'] + end + + HttpServer::Methods::ALL.map { |e| e.downcase.to_sym }.each do |name| + define_method(name) do |request| + req = Request.new(request) + + path = req.path + canonical_path = + if path.size >= 2 && !path.end_with?('/') + "#{path}/" + else + path + end + @router.route!(name, canonical_path, req) + end + end + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/compat/server.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/compat/server.rb new file mode 100644 index 000000000..19884bf76 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/compat/server.rb @@ -0,0 +1,81 @@ +# +# Fluentd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'fluent/plugin_helper/http_server/methods' +require 'fluent/plugin_helper/http_server/compat/webrick_handler' + +module Fluent + module PluginHelper + module HttpServer + module Compat + class Server + # @param logger [Logger] + # @param default_app [Object] ignored option. only for compat + def initialize(addr:, port:, logger:, default_app: nil) + @addr = addr + @port = port + @logger = logger + @server = WEBrick::HTTPServer.new( + BindAddress: @addr, + Port: @port, + Logger: WEBrick::Log.new(STDERR, WEBrick::Log::FATAL), + AccessLog: [], + ) + + # @example ["/example.json", :get, handler object] + @methods = [] + + if block_given? + yield(self) + end + end + + def start(notify = nil) + build_handler + notify.push(:ready) + @logger.debug('Start webrick HTTP server listening') + @server.start + end + + def stop + @server.shutdown + @server.stop + end + + HttpServer::Methods::ALL.map { |e| e.downcase.to_sym }.each do |name| + define_method(name) do |path, app = nil, &block| + if (block && app) || (!block && !app) + raise 'You must specify either app or block in the same time' + end + + # Do not build a handler class here to able to handle multiple methods for single path. + @methods << [path, name, app || block] + end + end + + private + + def build_handler + @methods.group_by(&:first).each do |(path, rest)| + klass = Fluent::PluginHelper::HttpServer::Compat::WebrickHandler.build(Hash[rest.map { |e| [e[1], e[2]] }]) + @server.mount(path, klass) + end + end + end + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb new file mode 100644 index 000000000..7ddee4592 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb @@ -0,0 +1,58 @@ +# +# Fluentd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'webrick' +require 'json' + +module Fluent + module PluginHelper + module HttpServer + module Compat + class WebrickHandler + # **opt is enough. but I wrote a signature explicitly for readability + def self.build(get: nil, head: nil, post: nil, put: nil, patch: nil, delete: nil, connect: nil, options: nil, trace: nil) + opt = { get: get, head: head, post: post, put: put, patch: patch, delete: delete, connect: connect, options: options, trace: trace } + + Class.new(WEBrick::HTTPServlet::AbstractServlet) do + HttpServer::Methods::ALL.each do |name| + define_method("do_#{name}") do |request, response| + code, headers, body = + if request.path_info != '' + render_json(404, 'message' => 'Not found') + else + begin + opt[name.downcase.to_sym].call(request) + rescue => _ + render_json(500, 'message' => 'Something went wrong') + end + end + + response.status = code + headers.each { |k, v| response[k] = v } + response.body = body + end + + def render_json(code, obj) + [code, { 'Content-Type' => 'application/json' }, obj.to_json] + end + end + end + end + end + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/methods.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/methods.rb new file mode 100644 index 000000000..11ad79a52 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/methods.rb @@ -0,0 +1,35 @@ +# +# Fluentd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +module Fluent + module PluginHelper + module HttpServer + module Methods + GET = 'GET'.freeze + HEAD = 'HEAD'.freeze + POST = 'POST'.freeze + PUT = 'PUT'.freeze + PATCH = 'PATCH'.freeze + DELETE = 'DELETE'.freeze + OPTIONS = 'OPTIONS'.freeze + CONNECT = 'CONNECT'.freeze + TRACE = 'TRACE'.freeze + + ALL = [GET, HEAD, POST, PUT, PATCH, DELETE, CONNECT, OPTIONS, TRACE].freeze + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/request.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/request.rb new file mode 100644 index 000000000..d61c000d8 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/request.rb @@ -0,0 +1,42 @@ +# +# Fluentd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'async/http/protocol' +require 'fluent/plugin_helper/http_server/methods' + +module Fluent + module PluginHelper + module HttpServer + class Request + attr_reader :path, :query_string + + def initialize(request) + @request = request + path = request.path + @path, @query_string = path.split('?', 2) + end + + def query + @query_string && CGI.parse(@query_string) + end + + def body + @request.body && @request.body.read + end + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/router.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/router.rb new file mode 100644 index 000000000..069d3aa0b --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/router.rb @@ -0,0 +1,54 @@ +# +# Fluentd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'async/http/protocol' + +module Fluent + module PluginHelper + module HttpServer + class Router + class NotFoundApp + def self.call(req) + [404, { 'Content-Type' => 'text/plain' }, "404 Not Found: #{req.path}\n"] + end + end + + def initialize(default_app = nil) + @router = { get: {}, head: {}, post: {}, put: {}, patch: {}, delete: {}, connect: {}, options: {}, trace: {} } + @default_app = default_app || NotFoundApp + end + + # @param method [Symbol] + # @param path [String] + # @param app [Object] + def mount(method, path, app) + if @router[method].include?(path) + raise "#{path} is already mounted" + end + + @router[method][path] = app + end + + # @param method [Symbol] + # @param path [String] + # @param request [Fluent::PluginHelper::HttpServer::Request] + def route!(method, path, request) + @router.fetch(method).fetch(path, @default_app).call(request) + end + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/server.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/server.rb new file mode 100644 index 000000000..c337541d3 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/http_server/server.rb @@ -0,0 +1,87 @@ +# +# Fluentd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'async' +require 'async/http' +require 'async/http/endpoint' + +require 'fluent/plugin_helper/http_server/app' +require 'fluent/plugin_helper/http_server/router' +require 'fluent/plugin_helper/http_server/methods' + +module Fluent + module PluginHelper + module HttpServer + class Server + # @param default_app [Object] This method must have #call. + def initialize(addr:, port:, logger:, default_app: nil) + @addr = addr + @port = port + @logger = logger + + # TODO: support https and http2 + @uri = URI("http://#{@addr}:#{@port}").to_s + @router = Router.new(default_app) + @reactor = Async::Reactor.new + @server = Async::HTTP::Server.new( + App.new(@router, @logger), + Async::HTTP::Endpoint.parse(@uri) + ) + + if block_given? + yield(self) + end + end + + def start(notify = nil) + @logger.debug("Start async HTTP server listening #{@uri}") + task = @reactor.run do + @server.run + + if notify + notify.push(:ready) + end + end + + task.stop + @logger.debug('Finished HTTP server') + end + + def stop + @logger.debug('closing HTTP server') + + if @reactor + @reactor.stop + end + end + + HttpServer::Methods::ALL.map { |e| e.downcase.to_sym }.each do |name| + define_method(name) do |path, app = nil, &block| + unless path.end_with?('/') + path << '/' + end + + if (block && app) || (!block && !app) + raise 'You must specify either app or block in the same time' + end + + @router.mount(name, path, app || block) + end + end + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/socket.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/socket.rb index 09ffd3168..847cba56f 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/socket.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/plugin_helper/socket.rb @@ -55,8 +55,14 @@ def socket_create(proto, host, port, **kwargs, &block) end end - def socket_create_tcp(host, port, resolve_name: false, **kwargs, &block) - sock = WrappedSocket::TCP.new(host, port) + def socket_create_tcp(host, port, resolve_name: false, connect_timeout: nil, **kwargs, &block) + sock = if connect_timeout + s = ::Socket.tcp(host, port, connect_timeout: connect_timeout) + s.autoclose = false # avoid GC triggered close + WrappedSocket::TCP.for_fd(s.fileno) + else + WrappedSocket::TCP.new(host, port) + end socket_option_set(sock, resolve_name: resolve_name, **kwargs) if block begin @@ -133,7 +139,7 @@ def socket_create_tls( context.cert_store = cert_store context.verify_hostname = true if verify_fqdn && fqdn && context.respond_to?(:verify_hostname=) context.cert = OpenSSL::X509::Certificate.new(File.read(cert_path)) if cert_path - context.key = OpenSSL::PKey::RSA.new(File.read(private_key_path), private_key_passphrase) if private_key_path + context.key = OpenSSL::PKey::read(File.read(private_key_path), private_key_passphrase) if private_key_path end tcpsock = socket_create_tcp(host, port, **kwargs) diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/supervisor.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/supervisor.rb index 443c787d1..491edd7f8 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/supervisor.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/supervisor.rb @@ -249,7 +249,7 @@ def self.load_config(path, params = {}) config_fname = File.basename(path) config_basedir = File.dirname(path) # Assume fluent.conf encoding is UTF-8 - config_data = File.open(path, "r:utf-8:utf-8") {|f| f.read } + config_data = File.open(path, "r:#{params['conf_encoding']}:utf-8") {|f| f.read } inline_config = params['inline_config'] if inline_config == '-' config_data << "\n" << STDIN.read @@ -422,6 +422,7 @@ def self.default_options supervise: true, standalone_worker: false, signame: nil, + conf_encoding: 'utf-8' } end @@ -440,6 +441,7 @@ def initialize(opt) @config_path = opt[:config_path] @inline_config = opt[:inline_config] @use_v1_config = opt[:use_v1_config] + @conf_encoding = opt[:conf_encoding] @log_path = opt[:log_path] @dry_run = opt[:dry_run] @show_plugin_config = opt[:show_plugin_config] @@ -618,6 +620,7 @@ def supervise params['chuser'] = @chuser params['chgroup'] = @chgroup params['use_v1_config'] = @use_v1_config + params['conf_encoding'] = @conf_encoding # system config parameters params['workers'] = @workers @@ -763,7 +766,7 @@ def main_process(&block) def read_config @config_fname = File.basename(@config_path) @config_basedir = File.dirname(@config_path) - @config_data = File.open(@config_path, "r:utf-8:utf-8") {|f| f.read } + @config_data = File.open(@config_path, "r:#{@conf_encoding}:utf-8") {|f| f.read } if @inline_config == '-' @config_data << "\n" << STDIN.read elsif @inline_config diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/time.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/time.rb index dbe1ddee3..f97f89b61 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/time.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/time.rb @@ -69,6 +69,19 @@ def to_s @sec.to_s end + begin + # ruby 2.5 or later + Time.at(0, 0, :nanosecond) + + def to_time + Time.at(@sec, @nsec, :nanosecond) + end + rescue + def to_time + Time.at(@sec, @nsec / 1000.0) + end + end + def to_json(*args) @sec.to_s end diff --git a/fluentd/vendored_gem_src/fluentd/lib/fluent/version.rb b/fluentd/vendored_gem_src/fluentd/lib/fluent/version.rb index aff760c82..95b514fb6 100644 --- a/fluentd/vendored_gem_src/fluentd/lib/fluent/version.rb +++ b/fluentd/vendored_gem_src/fluentd/lib/fluent/version.rb @@ -16,6 +16,6 @@ module Fluent - VERSION = '1.5.1' + VERSION = '1.6.2' end diff --git a/fluentd/vendored_gem_src/fluentd/test/command/test_fluentd.rb b/fluentd/vendored_gem_src/fluentd/test/command/test_fluentd.rb index abed81f54..6a43d5de4 100644 --- a/fluentd/vendored_gem_src/fluentd/test/command/test_fluentd.rb +++ b/fluentd/vendored_gem_src/fluentd/test/command/test_fluentd.rb @@ -28,9 +28,9 @@ def process_exist?(pid) end end - def create_conf_file(name, content) + def create_conf_file(name, content, ext_enc = 'utf-8') conf_path = File.join(TMP_DIR, name) - File.open(conf_path, 'w') do |file| + File.open(conf_path, "w:#{ext_enc}:utf-8") do |file| file.write content end conf_path @@ -203,6 +203,40 @@ def assert_fluentd_fails_to_start(cmdline, *pattern_list, timeout: 10) end end + sub_test_case 'with --conf-encoding' do + test 'runs successfully' do + conf = < + @type dummy + tag dummy + dummy {"message": "yay!"} + + + @type null + +CONF + conf_path = create_conf_file('shift_jis.conf', conf, 'shift_jis') + assert_log_matches(create_cmdline(conf_path, '--conf-encoding', 'shift_jis'), "fluentd worker is now running", 'worker=0') + end + + test 'failed to run by invalid encoding' do + conf = < + @type dummy + tag dummy + dummy {"message": "yay!"} + + + @type null + +CONF + conf_path = create_conf_file('shift_jis.conf', conf, 'shift_jis') + assert_fluentd_fails_to_start(create_cmdline(conf_path), "invalid byte sequence in UTF-8") + end + end + sub_test_case 'with system configuration about root directory' do setup do @root_path = File.join(TMP_DIR, "rootpath") diff --git a/fluentd/vendored_gem_src/fluentd/test/command/test_plugin_config_formatter.rb b/fluentd/vendored_gem_src/fluentd/test/command/test_plugin_config_formatter.rb index dc3bb1d8d..6765c57a1 100644 --- a/fluentd/vendored_gem_src/fluentd/test/command/test_plugin_config_formatter.rb +++ b/fluentd/vendored_gem_src/fluentd/test/command/test_plugin_config_formatter.rb @@ -180,10 +180,10 @@ def process(tag, es) expected = <2}], ] res_codes = [] - res_headers = [] d.run do events.each do |tag, time, record| @@ -731,7 +730,6 @@ def test_content_encoding_deflate ["tag2", time, {"a"=>2}], ] res_codes = [] - res_headers = [] d.run do events.each do |tag, time, record| @@ -803,10 +801,9 @@ def test_if_content_type_is_initialized_properly # Send two requests the second one has no Content-Type in Keep-Alive Net::HTTP.start("127.0.0.1", PORT) do |http| req = Net::HTTP::Post.new("/foodb/bartbl", {"connection" => "keepalive", "Content-Type" => "application/json"}) - res = http.request(req) - + http.request(req) req = Net::HTTP::Get.new("/foodb/bartbl", {"connection" => "keepalive"}) - res = http.request(req) + http.request(req) end end diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin/test_in_monitor_agent.rb b/fluentd/vendored_gem_src/fluentd/test/plugin/test_in_monitor_agent.rb index db961c56a..fdb20bd32 100644 --- a/fluentd/vendored_gem_src/fluentd/test/plugin/test_in_monitor_agent.rb +++ b/fluentd/vendored_gem_src/fluentd/test/plugin/test_in_monitor_agent.rb @@ -10,6 +10,8 @@ require_relative '../test_plugin_classes' class MonitorAgentInputTest < Test::Unit::TestCase + include FuzzyAssert + def setup Fluent::Test.setup end @@ -118,7 +120,13 @@ def test_configure "plugin_category" => "output", "plugin_id" => "test_out", "retry_count" => 0, - "type" => "test_out" + "type" => "test_out", + "emit_count" => Integer, + "emit_records" => Integer, + "write_count" => Integer, + "rollback_count" => Integer, + "slow_flush_count" => Integer, + "flush_time_count" => Integer, } output_info.merge!("config" => {"@id" => "test_out", "@type" => "test_out"}) if with_config error_label_info = { @@ -129,14 +137,24 @@ def test_configure "plugin_category" => "output", "plugin_id" => "null", "retry_count" => 0, - "type" => "null" + "type" => "null", + "buffer_available_buffer_space_ratios" => Float, + "buffer_queue_byte_size" => Integer, + "buffer_stage_byte_size" => Integer, + "buffer_stage_length" => Integer, + "emit_count" => Integer, + "emit_records" => Integer, + "write_count" => Integer, + "rollback_count" => Integer, + "slow_flush_count" => Integer, + "flush_time_count" => Integer, } error_label_info.merge!("config" => {"@id"=>"null", "@type" => "null"}) if with_config opts = {with_config: with_config} assert_equal(input_info, d.instance.get_monitor_info(@ra.inputs.first, opts)) - assert_equal(filter_info, d.instance.get_monitor_info(@ra.filters.first, opts)) - assert_equal(output_info, d.instance.get_monitor_info(test_label.outputs.first, opts)) - assert_equal(error_label_info, d.instance.get_monitor_info(error_label.outputs.first, opts)) + assert_fuzzy_equal(filter_info, d.instance.get_monitor_info(@ra.filters.first, opts)) + assert_fuzzy_equal(output_info, d.instance.get_monitor_info(test_label.outputs.first, opts)) + assert_fuzzy_equal(error_label_info, d.instance.get_monitor_info(error_label.outputs.first, opts)) end test "fluentd opts" do @@ -186,16 +204,29 @@ def test_configure "plugin_category" => "output", "type" => "relabel", "output_plugin" => true, - "retry_count" => 0} + "retry_count" => 0, + "emit_count" => Integer, + "emit_records" => Integer, + "write_count" => Integer, + "rollback_count" => Integer, + "slow_flush_count" => Integer, + "flush_time_count" => Integer, + } expect_test_out_record = { "plugin_id" => "test_out", "plugin_category" => "output", "type" => "test_out", "output_plugin" => true, - "retry_count" => 0 + "retry_count" => 0, + "emit_count" => Integer, + "emit_records" => Integer, + "write_count" => Integer, + "rollback_count" => Integer, + "slow_flush_count" => Integer, + "flush_time_count" => Integer, } - assert_equal(expect_relabel_record, d.events[1][2]) - assert_equal(expect_test_out_record, d.events[3][2]) + assert_fuzzy_equal(expect_relabel_record, d.events[1][2]) + assert_fuzzy_equal(expect_test_out_record, d.events[3][2]) end end @@ -303,7 +334,17 @@ def get(uri, header = {}) "plugin_category" => "output", "plugin_id" => "null", "retry_count" => 0, - "type" => "null" + "type" => "null", + "buffer_available_buffer_space_ratios" => Float, + "buffer_queue_byte_size" => Integer, + "buffer_stage_byte_size" => Integer, + "buffer_stage_length" => Integer, + "emit_count" => Integer, + "emit_records" => Integer, + "write_count" => Integer, + "rollback_count" => Integer, + "slow_flush_count" => Integer, + "flush_time_count" => Integer, } expected_null_response.merge!("config" => {"@id" => "null", "@type" => "null"}) if with_config expected_null_response.merge!("retry" => {}) if with_retry @@ -311,7 +352,21 @@ def get(uri, header = {}) test_in_response = response["plugins"][0] null_response = response["plugins"][5] assert_equal(expected_test_in_response, test_in_response) - assert_equal(expected_null_response, null_response) + assert_fuzzy_equal(expected_null_response, null_response) + end + + test "/api/plugins.json/not_found" do + d = create_driver(" + @type monitor_agent + bind '127.0.0.1' + port #{@port} + tag monitor +") + d.instance.start + resp = get("http://127.0.0.1:#{@port}/api/plugins.json/not_found") + assert_equal('404', resp.code) + body = JSON.parse(resp.body) + assert_equal(body['message'], 'Not found') end data(:with_config_and_retry_yes => [true, true, "?with_config=yes&with_retry"], @@ -341,7 +396,17 @@ def get(uri, header = {}) "plugin_category" => "output", "plugin_id" => "null", "retry_count" => 0, - "type" => "null" + "type" => "null", + "buffer_available_buffer_space_ratios" => Float, + "buffer_queue_byte_size" => Integer, + "buffer_stage_byte_size" => Integer, + "buffer_stage_length" => Integer, + "emit_count" => Integer, + "emit_records" => Integer, + "write_count" => Integer, + "rollback_count" => Integer, + "slow_flush_count" => Integer, + "flush_time_count" => Integer, } expected_null_response.merge!("config" => {"@id" => "null", "@type" => "null"}) if with_config expected_null_response.merge!("retry" => {}) if with_retry @@ -349,7 +414,7 @@ def get(uri, header = {}) test_in_response = response["plugins"][0] null_response = response["plugins"][5] assert_equal(expected_test_in_response, test_in_response) - assert_equal(expected_null_response, null_response) + assert_fuzzy_include(expected_null_response, null_response) end test "/api/plugins.json with 'with_ivars'. response contains specified instance variables of each plugin" do @@ -377,13 +442,23 @@ def get(uri, header = {}) "plugin_id" => "null", "retry_count" => 0, "type" => "null", - "instance_variables" => {"id" => "null", "num_errors" => 0} + "instance_variables" => {"id" => "null", "num_errors" => 0}, + "buffer_available_buffer_space_ratios" => Float, + "buffer_queue_byte_size" => Integer, + "buffer_stage_byte_size" => Integer, + "buffer_stage_length" => Integer, + "emit_count" => Integer, + "emit_records" => Integer, + "write_count" => Integer, + "rollback_count" => Integer, + "slow_flush_count" => Integer, + "flush_time_count" => Integer, } response = JSON.parse(get("http://127.0.0.1:#{@port}/api/plugins.json?with_config=no&with_retry=no&with_ivars=id,num_errors").body) test_in_response = response["plugins"][0] null_response = response["plugins"][5] assert_equal(expected_test_in_response, test_in_response) - assert_equal(expected_null_response, null_response) + assert_fuzzy_equal(expected_null_response, null_response) end test "/api/config" do @@ -394,7 +469,7 @@ def get(uri, header = {}) tag monitor ") d.instance.start - expected_response_regex = /pid:\d+\tppid:\d+\tconfig_path:\/etc\/fluent\/fluent.conf\tpid_file:\tplugin_dirs:\[\"\/etc\/fluent\/plugin\"\]\tlog_path:/ + expected_response_regex = /pid:\d+\tppid:\d+\tconfig_path:\/etc\/fluent\/fluent.conf\tpid_file:\tplugin_dirs:\/etc\/fluent\/plugin\tlog_path:/ assert_match(expected_response_regex, get("http://127.0.0.1:#{@port}/api/config").body) @@ -427,6 +502,20 @@ def get(uri, header = {}) assert_true !get("http://127.0.0.1:#{@port}/api/config.json").body.include?("\n") assert_true get("http://127.0.0.1:#{@port}/api/config.json?debug=1").body.include?("\n") end + + test "/api/config.json/not_found" do + d = create_driver(" + @type monitor_agent + bind '127.0.0.1' + port #{@port} + tag monitor +") + d.instance.start + resp = get("http://127.0.0.1:#{@port}/api/config.json/not_found") + assert_equal('404', resp.code) + body = JSON.parse(resp.body) + assert_equal(body['message'], 'Not found') + end end sub_test_case "check retry of buffered plugins" do @@ -482,6 +571,18 @@ def write(chunk) "plugin_category" => "output", "plugin_id" => "test_out_fail_write", "type" => "test_out_fail_write", + "buffer_newest_timekey" => output.calculate_timekey(event_time), + "buffer_oldest_timekey" => output.calculate_timekey(event_time), + "buffer_available_buffer_space_ratios" => Float, + "buffer_queue_byte_size" => Integer, + "buffer_stage_byte_size" => Integer, + "buffer_stage_length" => Integer, + "emit_count" => Integer, + "emit_records" => Integer, + "write_count" => Integer, + "rollback_count" => Integer, + 'slow_flush_count' => Integer, + 'flush_time_count' => Integer, } output.emit_events('test.tag', Fluent::ArrayEventStream.new([[event_time, {"message" => "test failed flush 1"}]])) # flush few times to check steps @@ -497,7 +598,7 @@ def write(chunk) # remove dynamic keys response_retry_count = test_out_fail_write_response.delete("retry_count") response_retry = test_out_fail_write_response.delete("retry") - assert_equal(expected_test_out_fail_write_response, test_out_fail_write_response) + assert_fuzzy_equal(expected_test_out_fail_write_response, test_out_fail_write_response) assert{ response_retry.has_key?("steps") } # it's very hard to check exact retry count (because retries are called by output flush thread scheduling) assert{ response_retry_count >= 1 && response_retry["steps"] >= 0 } diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin/test_in_udp.rb b/fluentd/vendored_gem_src/fluentd/test/plugin/test_in_udp.rb index 8f50771b5..94814f0ea 100755 --- a/fluentd/vendored_gem_src/fluentd/test/plugin/test_in_udp.rb +++ b/fluentd/vendored_gem_src/fluentd/test/plugin/test_in_udp.rb @@ -194,7 +194,6 @@ def create_udp_socket(host, port) end end - expected = {'message' => 'test'} assert_equal 1, d.events.size assert_equal "udp", d.events[0][0] assert d.events[0][1].is_a?(Fluent::EventTime) @@ -214,7 +213,6 @@ def create_udp_socket(host, port) end end - expected = {'message' => 'test'} assert_equal 1, d.events.size assert_equal "udp", d.events[0][0] assert d.events[0][1].is_a?(Fluent::EventTime) diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_file.rb b/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_file.rb index 821e22e6b..2cb92dee9 100644 --- a/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_file.rb +++ b/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_file.rb @@ -72,10 +72,12 @@ def create_driver(conf = CONFIG, opts = {}) create_driver %[path #{TMP_DIR}/test_dir/foo/bar/baz] end - assert_raise(Fluent::ConfigError) do - FileUtils.mkdir_p("#{TMP_DIR}/test_dir") - File.chmod(0555, "#{TMP_DIR}/test_dir") - create_driver %[path #{TMP_DIR}/test_dir/foo/bar/baz] + if Process.uid.nonzero? + assert_raise(Fluent::ConfigError) do + FileUtils.mkdir_p("#{TMP_DIR}/test_dir") + File.chmod(0555, "#{TMP_DIR}/test_dir") + create_driver %[path #{TMP_DIR}/test_dir/foo/bar/baz] + end end end @@ -102,15 +104,17 @@ def create_driver(conf = CONFIG, opts = {}) end end - test 'configuration error raised if specified directory via template is not writable' do - Timecop.freeze(Time.parse("2016-10-04 21:33:27 UTC")) do - conf = config_element('match', '**', { + if Process.uid.nonzero? + test 'configuration error raised if specified directory via template is not writable' do + Timecop.freeze(Time.parse("2016-10-04 21:33:27 UTC")) do + conf = config_element('match', '**', { 'path' => "#{TMP_DIR}/prohibited/${tag}/file.%Y%m%d.log", }, [ config_element('buffer', 'time,tag', {'timekey' => 86400, 'timekey_zone' => '+0000'}) ]) - FileUtils.mkdir_p("#{TMP_DIR}/prohibited") - File.chmod(0555, "#{TMP_DIR}/prohibited") - assert_raise Fluent::ConfigError.new("out_file: `#{TMP_DIR}/prohibited/a/file.20161004.log_**.log` is not writable") do - create_driver(conf) + FileUtils.mkdir_p("#{TMP_DIR}/prohibited") + File.chmod(0555, "#{TMP_DIR}/prohibited") + assert_raise Fluent::ConfigError.new("out_file: `#{TMP_DIR}/prohibited/a/file.20161004.log_**.log` is not writable") do + create_driver(conf) + end end end end @@ -635,7 +639,6 @@ def parse_system(text) test '${chunk_id}' do time = event_time("2011-01-02 13:14:15 UTC") - formatted_lines = %[2011-01-02T13:14:15Z\ttest\t{"a":1}\n] + %[2011-01-02T13:14:15Z\ttest\t{"a":2}\n] write_once = ->(){ d = create_driver %[ diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_forward.rb b/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_forward.rb index dc6bc0e21..9ffba3ec2 100644 --- a/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_forward.rb +++ b/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_forward.rb @@ -78,6 +78,7 @@ def read_ack_from_sock(sock, unpacker) assert_equal 60, d.instance.send_timeout assert_equal :transport, d.instance.heartbeat_type assert_equal 1, nodes.length + assert_nil d.instance.connect_timeout node = nodes.first assert_equal "test", node.name assert_equal '127.0.0.1', node.host @@ -102,6 +103,23 @@ def read_ack_from_sock(sock, unpacker) assert_equal( 10*1024*1024, instance.buffer.chunk_limit_size ) end + test 'configure timeouts' do + @d = d = create_driver(%[ + send_timeout 30 + connect_timeout 10 + hard_timeout 15 + ack_response_timeout 20 + + host #{TARGET_HOST} + port #{TARGET_PORT} + + ]) + assert_equal 30, d.instance.send_timeout + assert_equal 10, d.instance.connect_timeout + assert_equal 15, d.instance.hard_timeout + assert_equal 20, d.instance.ack_response_timeout + end + test 'configure_udp_heartbeat' do @d = d = create_driver(CONFIG + "\nheartbeat_type udp") assert_equal :udp, d.instance.heartbeat_type @@ -649,7 +667,55 @@ def read_ack_from_sock(sock, unpacker) assert_equal(['test', time, records[1]], events[1]) end - test 'authentication_with_user_auth' do + test 'keepalive + shared_key' do + input_conf = TARGET_CONFIG + %[ + + self_hostname in.localhost + shared_key fluentd-sharedkey + + ] + target_input_driver = create_target_input_driver(conf: input_conf) + + output_conf = %[ + send_timeout 51 + keepalive true + + self_hostname localhost + shared_key fluentd-sharedkey + + + name test + host #{TARGET_HOST} + port #{TARGET_PORT} + + ] + @d = d = create_driver(output_conf) + + time = event_time('2011-01-02 13:14:15 UTC') + records = [{ 'a' => 1 }, { 'a' => 2 }] + records2 = [{ 'b' => 1}, { 'b' => 2}] + target_input_driver.run(expect_records: 4, timeout: 15) do + d.run(default_tag: 'test') do + records.each do |record| + d.feed(time, record) + end + + d.flush # emit buffer to reuse same socket later + records2.each do |record| + d.feed(time, record) + end + end + end + + events = target_input_driver.events + assert{ events != [] } + assert_equal(['test', time, records[0]], events[0]) + assert_equal(['test', time, records[1]], events[1]) + assert_equal(['test', time, records2[0]], events[2]) + assert_equal(['test', time, records2[1]], events[3]) + end + + test 'authentication_with_user_auth' do input_conf = TARGET_CONFIG + %[ self_hostname in.localhost @@ -944,6 +1010,20 @@ def create_target_input_driver(response_stub: nil, disconnect: false, conf: TARG end end + test 'if no available node' do + # do not create output driver + d = create_driver(%[ + + name test + standby + host #{TARGET_HOST} + port #{TARGET_PORT} + + ]) + d.instance_start + assert_nothing_raised { d.run } + end + sub_test_case 'keepalive' do test 'Do not create connection per send_data' do target_input_driver = create_target_input_driver(conf: TARGET_CONFIG) diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_secondary_file.rb b/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_secondary_file.rb index 17eab866c..05091b285 100644 --- a/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_secondary_file.rb +++ b/fluentd/vendored_gem_src/fluentd/test/plugin/test_out_secondary_file.rb @@ -88,10 +88,12 @@ def create_driver(conf = CONFIG, primary = create_primary) create_driver %[directory #{TMP_DIR}/test_dir/foo/bar/] end - assert_raise Fluent::ConfigError.new("out_secondary_file: `#{TMP_DIR}/test_dir/foo/bar/` should be writable") do - FileUtils.mkdir_p("#{TMP_DIR}/test_dir") - File.chmod(0555, "#{TMP_DIR}/test_dir") - create_driver %[directory #{TMP_DIR}/test_dir/foo/bar/] + if Process.uid.nonzero? + assert_raise Fluent::ConfigError.new("out_secondary_file: `#{TMP_DIR}/test_dir/foo/bar/` should be writable") do + FileUtils.mkdir_p("#{TMP_DIR}/test_dir") + File.chmod(0555, "#{TMP_DIR}/test_dir") + create_driver %[directory #{TMP_DIR}/test_dir/foo/bar/] + end end end diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered.rb b/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered.rb index 667d1a8af..cd22d7b15 100644 --- a/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered.rb +++ b/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered.rb @@ -207,6 +207,10 @@ def waiting(seconds) end end + setup do + @i = nil + end + teardown do if @i @i.stop unless @i.stopped? diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered_retries.rb b/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered_retries.rb index e340a1c14..c227ed9df 100644 --- a/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered_retries.rb +++ b/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered_retries.rb @@ -457,8 +457,6 @@ def get_log_time(msg, logs) prev_write_count = @i.write_count prev_num_errors = @i.num_errors - chunks = @i.buffer.queue.dup - 20.times do |i| # large times enough now = @i.next_flush_time diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered_secondary.rb b/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered_secondary.rb index d1b398f7b..fd9d49503 100644 --- a/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered_secondary.rb +++ b/fluentd/vendored_gem_src/fluentd/test/plugin/test_output_as_buffered_secondary.rb @@ -741,8 +741,6 @@ def dummy_event_stream assert{ @i.num_errors > 0 } prev_write_count = @i.write_count - prev_num_errors = @i.num_errors - first_failure = @i.retry.start 20.times do |i| # large enough @@ -757,7 +755,6 @@ def dummy_event_stream break if @i.buffer.queue.size == 0 prev_write_count = @i.write_count - prev_num_errors = @i.num_errors end # retry_timeout == 60(sec), retry_secondary_threshold == 0.8 diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert-key.pem b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert-key.pem new file mode 100644 index 000000000..21f41f5c6 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEArbUTk5n5RruIQGhK1T8g/emKonlfWNMSj/J/f/U9NJ14ugIx +yHBMqx4WaTyA4zjT2VJO5tRBe385zlIUf8i+x7Ovt/MgsjiwXyKv7qdsE5KHLq+V +XJfA+s5vAAyzBHY/BA7xxh/QqCI8a/a1OyHyaQ9pFRFXtQBlTH7Fc1qSw5Yg0EXo +fa6YIBQuDjfqa7FRPj+bEWDO5PUqOMzH5XKBUPS9GLHOqia0CnzF2a51TArC0Dl1 +oNFa7myVmjBuNtkG88Fkd7YNzGa+sNBJPmuGvFXuU3XPEnrtARO/SG4g9/MQUvfM +I3jFFOJAMmEKd8QXxO5FgIuEnaNOhVRVH/e9wwIDAQABAoIBAQCcYYAWSW/Y9ctb +8IguIn8ZF77vNkVYOe1kGfQexjErxPiCvKcEw9TB2HxkkUuXQ/m0lBzkQgIRpB/u +VoaN47OdJW70M7UjvVVK0HeCascpd6irpvbYPOZG5MGZUdV4Ftv0U1/l9Y5rTycG +KzxM1+rcGjuH8+z5zjlj/FzV1Jx75pgH2vwE7tBC9hMIefKJVxsnj+1I2BWwT3Ra +tFayaKW80UYvGQeQjMHyWzEAHAAco5EVTNU9q4xkeKubZx/dod8b05S0Oral0SHY +AFzXJCp6k29w0m3saEtVQBTImwNut8scJ4KoryGRp9fj9a/dBb1RHe/6EXZ8kDRe +zhB2/XWBAoGBANpaAPdcIXFyke4DRB07JGin4NU+yzIZy+RwsHme1OIwu9jUYQ1j +SzcrnJ9adkjgHl4z2psXyeSz/lSUGj7ZjcMVaDu49JSYMPP3heXGkHdtlVyB7KFR +OBt1rgNdXYfOLOBg6j7mf5G5fXUIATM8fNw5nDYIivD7U3cl9TdUe3OJAoGBAMuo +e/pmRMEaaDmXuNkDGv/ZoOC4j9tO1fGheSdna9gZWoOyY+MUTFNBQuz/8aw6VsKS +c7RXY0QI6NsgdLD1OGVgH9AXhDqvgfOBXDWdr/DNJa0wDFNaWRrMFeNQLm7Xhxuf +OBQycq6vUiWJ6XTqcdk+xErcWRbsQPsGozCEcHfrAoGBAI+sl2QsMClI/PLDHWeq +ict/Y3aNigCebsYSzFxKgcOP05raLD417sEPplBIovpS1kigECDrJ0KgmSIoDZj7 +Z8dM57gcfHrmJZfycB2AaYDcD2K+bui625Nd/LFkFu4MYQUHYDshSiGmDwIZ0UhY +bcQu+DWpq1rj1Mjaph7RLSYZAoGBAMAJNiZt6qT/ZonwA/A1mm7oYmekAJo2I0y+ +CwTZ43oYph4Kx19nU3Up05aw3MyfEhJUkF/cCxErKY7+cqouAKiu1DCfDCNePTZE +o5M3BqEUgFNnPCgYyG6ZRIZco/wGpTKplvKMg1EuplIZUhbZvtKv+d3xGtyfl8Jc +huKH75lTAoGAHQ3Sy56zgQEJ3QFrIw4puztf/KXpSgLA+aSDh6Ti4IY7L+CwZmuW +JyVbgF33CwSIKEhacmALs1ZZsDc1ZXov1HWwePxe4/m7smoqZDtrRXQsbRB5COzA +U30iEMW/rwI3WmHhiIWZYje85+VJZqBc5QS8guv4/XrS/FE7C8Suksc= +-----END RSA PRIVATE KEY----- diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert-with-no-newline.pem b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert-with-no-newline.pem new file mode 100644 index 000000000..1624ad0c8 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert-with-no-newline.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDLDCCAhSgAwIBAgIIEJHFsHrKBGYwDQYJKoZIhvcNAQELBQAwJjEQMA4GA1UE +ChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE5MDYxOTA1MTM0NVoX +DTE5MDkxODExMTg0NVowJjEQMA4GA1UEChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9j +YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArbUTk5n5RruI +QGhK1T8g/emKonlfWNMSj/J/f/U9NJ14ugIxyHBMqx4WaTyA4zjT2VJO5tRBe385 +zlIUf8i+x7Ovt/MgsjiwXyKv7qdsE5KHLq+VXJfA+s5vAAyzBHY/BA7xxh/QqCI8 +a/a1OyHyaQ9pFRFXtQBlTH7Fc1qSw5Yg0EXofa6YIBQuDjfqa7FRPj+bEWDO5PUq +OMzH5XKBUPS9GLHOqia0CnzF2a51TArC0Dl1oNFa7myVmjBuNtkG88Fkd7YNzGa+ +sNBJPmuGvFXuU3XPEnrtARO/SG4g9/MQUvfMI3jFFOJAMmEKd8QXxO5FgIuEnaNO +hVRVH/e9wwIDAQABo14wXDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB +BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPLdOVnVWuuB +7Pnvpgte4BHitzFYMA0GCSqGSIb3DQEBCwUAA4IBAQBp8LAzjWIJapwTBnnivwZk +D6Lr028mZIacbBZKsmmPi0VvDFqCvUAbHN8ytPlRBWnvvkihDkZs1TwcDCXGsWYs +dNNwsYGpk3mQxsHQ9atvy0mQGLDlfaSs/329bfVCw1cPFo9n+MeivSBoE6asdIbH +tOW3kk1XtJZ2qQJJRvexFImZc0z8c2cG0+eR5hQxQd9bLnAczi/8mZ8VzaU/O3UU +OJoVuyp0AA8f2f0f1QDaeH9stWZtJQj3ZX1DWHRE3OmVkoBdlt8EHYGggtvQaLIF +XbHigLHzYztMjmDt4fmRczu/Fu6M4xNro8jLgjiIjqlLBjDZiKrSbOwgyebwFDlv +-----END CERTIFICATE----- \ No newline at end of file diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert.pem b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert.pem new file mode 100644 index 000000000..d9351650b --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/data/cert/cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDLDCCAhSgAwIBAgIIEJHFsHrKBGYwDQYJKoZIhvcNAQELBQAwJjEQMA4GA1UE +ChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE5MDYxOTA1MTM0NVoX +DTE5MDkxODExMTg0NVowJjEQMA4GA1UEChMHRmx1ZW50ZDESMBAGA1UEAxMJbG9j +YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArbUTk5n5RruI +QGhK1T8g/emKonlfWNMSj/J/f/U9NJ14ugIxyHBMqx4WaTyA4zjT2VJO5tRBe385 +zlIUf8i+x7Ovt/MgsjiwXyKv7qdsE5KHLq+VXJfA+s5vAAyzBHY/BA7xxh/QqCI8 +a/a1OyHyaQ9pFRFXtQBlTH7Fc1qSw5Yg0EXofa6YIBQuDjfqa7FRPj+bEWDO5PUq +OMzH5XKBUPS9GLHOqia0CnzF2a51TArC0Dl1oNFa7myVmjBuNtkG88Fkd7YNzGa+ +sNBJPmuGvFXuU3XPEnrtARO/SG4g9/MQUvfMI3jFFOJAMmEKd8QXxO5FgIuEnaNO +hVRVH/e9wwIDAQABo14wXDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB +BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPLdOVnVWuuB +7Pnvpgte4BHitzFYMA0GCSqGSIb3DQEBCwUAA4IBAQBp8LAzjWIJapwTBnnivwZk +D6Lr028mZIacbBZKsmmPi0VvDFqCvUAbHN8ytPlRBWnvvkihDkZs1TwcDCXGsWYs +dNNwsYGpk3mQxsHQ9atvy0mQGLDlfaSs/329bfVCw1cPFo9n+MeivSBoE6asdIbH +tOW3kk1XtJZ2qQJJRvexFImZc0z8c2cG0+eR5hQxQd9bLnAczi/8mZ8VzaU/O3UU +OJoVuyp0AA8f2f0f1QDaeH9stWZtJQj3ZX1DWHRE3OmVkoBdlt8EHYGggtvQaLIF +XbHigLHzYztMjmDt4fmRczu/Fu6M4xNro8jLgjiIjqlLBjDZiKrSbOwgyebwFDlv +-----END CERTIFICATE----- diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin_helper/http_server/test_app.rb b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/http_server/test_app.rb new file mode 100644 index 000000000..1d2272fc8 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/http_server/test_app.rb @@ -0,0 +1,65 @@ +require_relative '../../helper' +require 'flexmock/test_unit' + +begin + require 'fluent/plugin_helper/http_server/app' + skip = false +rescue LoadError => _ + skip = true +end + +unless skip + class HtttpHelperAppTest < Test::Unit::TestCase + NULL_LOGGER = Logger.new(nil) + + class DummyRounter + def initialize(table = {}) + @table = table + end + + def route!(method, path, _req) + r = @table.fetch(method).fetch(path) + [200, {}, r] + end + end + + sub_test_case '#call' do + data( + 'GET request' => 'GET', + 'POST request' => 'POST', + 'DELETE request' => 'DELETE', + 'PUT request' => 'PUT', + 'PATCH request' => 'PATCH', + 'OPTION request' => 'OPTIONS', + 'CONNECT request' => 'CONNECT', + 'TRACE request' => 'TRACE', + ) + test 'dispatch correct path' do |method| + r = DummyRounter.new(method.downcase.to_sym => { '/path/' => 'hi' }) + app = Fluent::PluginHelper::HttpServer::App.new(r, NULL_LOGGER) + m = flexmock('request', method: method, path: '/path/') + r = app.call(m) + assert_equal(r.body.read, 'hi') + assert_equal(r.status, 200) + end + + test 'dispatch correct path for head' do |method| + r = DummyRounter.new(head: { '/path/' => 'hi' }) + app = Fluent::PluginHelper::HttpServer::App.new(r, NULL_LOGGER) + m = flexmock('request', method: method, path: '/path') + r = app.call(m) + assert_equal(r.body.read, '') + assert_equal(r.status, 200) + end + + test 'if path does not end with `/`' do |method| + r = DummyRounter.new(head: { '/path/' => 'hi' }) + app = Fluent::PluginHelper::HttpServer::App.new(r, NULL_LOGGER) + m = flexmock('request', method: method, path: '/path') + r = app.call(m) + assert_equal(r.body.read, '') + assert_equal(r.status, 200) + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin_helper/http_server/test_route.rb b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/http_server/test_route.rb new file mode 100644 index 000000000..e53423ed4 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/http_server/test_route.rb @@ -0,0 +1,32 @@ +require_relative '../../helper' +require 'flexmock/test_unit' + +begin + require 'fluent/plugin_helper/http_server/router' + skip = false +rescue LoadError => _ + skip = true +end + +unless skip + class HtttpHelperRouterTest < Test::Unit::TestCase + sub_test_case '#mount' do + test 'mount with method and path' do + router = Fluent::PluginHelper::HttpServer::Router.new + router.mount(:get, '/path/', ->(req) { req }) + assert_equal(router.route!(:get, '/path/', 'request'), 'request') + end + + test 'use default app if path is not found' do + router = Fluent::PluginHelper::HttpServer::Router.new + req = flexmock('request', path: 'path/') + assert_equal(router.route!(:get, '/path/', req), [404, { 'Content-Type' => 'text/plain' }, "404 Not Found: #{req.path}\n"]) + end + + test 'default app is configurable' do + router = Fluent::PluginHelper::HttpServer::Router.new(->(req) { req }) + assert_equal(router.route!(:get, '/path/', 'hello'), 'hello') + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_cert_option.rb b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_cert_option.rb new file mode 100644 index 000000000..e0b0f7dab --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_cert_option.rb @@ -0,0 +1,16 @@ +require_relative '../helper' +require 'fluent/plugin_helper/cert_option' + +class CertOptionPluginHelperTest < Test::Unit::TestCase + class Dummy < Fluent::Plugin::TestBase + helpers :cert_option + end + + test 'can load PEM encoded certificate file' do + d = Dummy.new + certs = d.cert_option_certificates_from_file("test/plugin_helper/data/cert/cert.pem") + assert_equal(1, certs.length) + certs = d.cert_option_certificates_from_file("test/plugin_helper/data/cert/cert-with-no-newline.pem") + assert_equal(1, certs.length) + end +end diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_http_server_helper.rb b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_http_server_helper.rb new file mode 100644 index 000000000..292734a52 --- /dev/null +++ b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_http_server_helper.rb @@ -0,0 +1,205 @@ +require_relative '../helper' +require 'flexmock/test_unit' +require 'fluent/plugin_helper/http_server' +require 'fluent/plugin/output' +require 'fluent/event' +require 'net/http' +require 'uri' + +class HtttpHelperTest < Test::Unit::TestCase + PORT = unused_port + NULL_LOGGER = Logger.new(nil) + + class Dummy < Fluent::Plugin::TestBase + helpers :http_server + end + + def on_driver + Fluent::Test.setup + driver = Dummy.new + driver.start + driver.after_start + + yield(driver) + ensure + unless driver.stopped? + driver.stop rescue nil + end + + unless driver.before_shutdown? + driver.before_shutdown rescue nil + end + + unless driver.shutdown? + driver.shutdown rescue nil + end + + unless driver.after_shutdown? + driver.after_shutdown rescue nil + end + + unless driver.closed? + driver.close rescue nil + end + + unless driver.terminated? + driver.terminated rescue nil + end + end + + %w[get head].each do |n| + define_method(n) do |uri, header = {}| + url = URI.parse(uri) + headers = { 'Content-Type' => 'application/x-www-form-urlencoded/' }.merge(header) + req = Net::HTTP.const_get(n.capitalize).new(url, headers) + Net::HTTP.start(url.host, url.port) do |http| + http.request(req) + end + end + end + + %w[post put patch delete options trace].each do |n| + define_method(n) do |uri, body = '', header = {}| + url = URI.parse(uri) + headers = { 'Content-Type' => 'application/x-www-form-urlencoded/' }.merge(header) + req = Net::HTTP.const_get(n.capitalize).new(url, headers) + req.body = body + Net::HTTP.start(url.host, url.port) do |http| + http.request(req) + end + end + end + + sub_test_case 'Create a HTTP server' do + test 'monunt given path' do + on_driver do |driver| + driver.create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s| + s.get('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] } + s.post('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello post'] } + s.head('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello head'] } + s.put('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello put'] } + s.patch('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello patch'] } + s.delete('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello delete'] } + s.trace('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello trace'] } + s.options('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello options'] } + end + + resp = head("http://127.0.0.1:#{PORT}/example/hello") + assert_equal('200', resp.code) + assert_equal(nil, resp.body) + assert_equal('text/plain', resp['Content-Type']) + + %w[get put post put delete trace].each do |n| + resp = send(n, "http://127.0.0.1:#{PORT}/example/hello") + assert_equal('200', resp.code) + assert_equal("hello #{n}", resp.body) + assert_equal('text/plain', resp['Content-Type']) + end + + # TODO: remove when fluentd drop ruby 2.1 + if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('2.2.0') + resp = options("http://127.0.0.1:#{PORT}/example/hello") + assert_equal('200', resp.code) + assert_equal("hello options", resp.body) + assert_equal('text/plain', resp['Content-Type']) + end + end + end + + test 'when path does not start with `/` or ends with `/`' do + on_driver do |driver| + driver.create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s| + s.get('example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] } + s.get('/example/hello2/') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] } + end + + resp = get("http://127.0.0.1:#{PORT}/example/hello") + assert_equal('404', resp.code) + + resp = get("http://127.0.0.1:#{PORT}/example/hello2") + assert_equal('200', resp.code) + end + end + + test 'when error raised' do + on_driver do |driver| + driver.create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s| + s.get('/example/hello') { raise 'error!' } + end + + resp = get("http://127.0.0.1:#{PORT}/example/hello") + assert_equal('500', resp.code) + end + end + + test 'when path is not found' do + on_driver do |driver| + driver.create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s| + s.get('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] } + end + + resp = get("http://127.0.0.1:#{PORT}/example/hello/not_found") + assert_equal('404', resp.code) + end + end + + test 'params and body' do + on_driver do |driver| + driver.create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s| + s.get('/example/hello') do |req| + assert_equal(req.query_string, nil) + assert_equal(req.body, nil) + [200, { 'Content-Type' => 'text/plain' }, 'hello get'] + end + + s.post('/example/hello') do |req| + assert_equal(req.query_string, nil) + assert_equal(req.body, 'this is body') + [200, { 'Content-Type' => 'text/plain' }, 'hello post'] + end + + s.get('/example/hello/params') do |req| + assert_equal(req.query_string, 'test=true') + assert_equal(req.body, nil) + [200, { 'Content-Type' => 'text/plain' }, 'hello get'] + end + + s.post('/example/hello/params') do |req| + assert_equal(req.query_string, 'test=true') + assert_equal(req.body, 'this is body') + [200, { 'Content-Type' => 'text/plain' }, 'hello post'] + end + end + + resp = get("http://127.0.0.1:#{PORT}/example/hello") + assert_equal('200', resp.code) + + resp = post("http://127.0.0.1:#{PORT}/example/hello", 'this is body') + assert_equal('200', resp.code) + + resp = get("http://127.0.0.1:#{PORT}/example/hello/params?test=true") + assert_equal('200', resp.code) + + resp = post("http://127.0.0.1:#{PORT}/example/hello/params?test=true", 'this is body') + assert_equal('200', resp.code) + end + end + + test 'must be called #start and #stop' do + on_driver do |driver| + server = flexmock('Server') do |watcher| + watcher.should_receive(:start).once.and_return do |que| + que.push(:start) + end + watcher.should_receive(:stop).once + end + + stub(Fluent::PluginHelper::HttpServer::Server).new(anything) { server } + driver.create_http_server(:http_server_helper_test, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do + # nothing + end + driver.stop + end + end + end +end diff --git a/fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_server.rb b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_server.rb index d628ccfee..e54c20c8e 100644 --- a/fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_server.rb +++ b/fluentd/vendored_gem_src/fluentd/test/plugin_helper/test_server.rb @@ -230,16 +230,10 @@ class Dummy < Fluent::Plugin::TestBase data( 'server_create udp' => [:server_create, :udp], ) - test 'raise error if tcp/tls/unix options specified for udp' do |(m, proto)| + test 'raise error if tcp/tls/unix backlog options specified for udp' do |(m, proto)| assert_raise(ArgumentError.new("BUG: backlog is available for tcp/tls")) do @d.__send__(m, :myserver, PORT, proto: proto, backlog: 500){|x| x } end - end - - data( - 'server_create udp' => [:server_create, :udp], - ) - test 'raise error if tcp/tls/unix options specified for udp' do |(m, proto)| assert_raise(ArgumentError.new("BUG: send_keepalive_packet is available for tcp")) do @d.__send__(m, :myserver, PORT, proto: proto, send_keepalive_packet: true){|x| x } end diff --git a/fluentd/vendored_gem_src/fluentd/test/test_event_time.rb b/fluentd/vendored_gem_src/fluentd/test/test_event_time.rb index 0c74d209e..581a276e5 100644 --- a/fluentd/vendored_gem_src/fluentd/test/test_event_time.rb +++ b/fluentd/vendored_gem_src/fluentd/test/test_event_time.rb @@ -36,6 +36,19 @@ class EventTimeTest < Test::Unit::TestCase assert_equal('100', "#{time}") end + test '#to_time' do + time = Fluent::EventTime.new(@now.to_i, @now.nsec).to_time + assert_instance_of(Time, time) + assert_equal(@now.to_i, time.to_i) + begin + ::Time.at(0, 0, :nanosecond) + assert_equal(@now.nsec, time.nsec) + rescue + # Time.at(@sec, @nsec / 1000.0) sometimes cause 1 diff error in nsec by 1000.0 + assert_in_delta(@now.nsec, time.nsec, 1) + end + end + test '#to_json' do time = Fluent::EventTime.new(100) assert_equal('100', time.to_json) diff --git a/fluentd/vendored_gem_src/fluentd/test/test_log.rb b/fluentd/vendored_gem_src/fluentd/test/test_log.rb index 032e5169e..84cb7715d 100644 --- a/fluentd/vendored_gem_src/fluentd/test/test_log.rb +++ b/fluentd/vendored_gem_src/fluentd/test/test_log.rb @@ -12,7 +12,7 @@ def setup FileUtils.rm_rf(TMP_DIR) FileUtils.mkdir_p(TMP_DIR) @log_device = Fluent::Test::DummyLogDevice.new - @timestamp = Time.parse("2016-04-21 11:58:41 +0900") + @timestamp = Time.parse("2016-04-21 02:58:41 +0000") @timestamp_str = @timestamp.strftime("%Y-%m-%d %H:%M:%S %z") Timecop.freeze(@timestamp) end @@ -540,7 +540,7 @@ def test_log_rotates_specified_size_with_logdevio class PluginLoggerTest < Test::Unit::TestCase def setup @log_device = Fluent::Test::DummyLogDevice.new - @timestamp = Time.parse("2016-04-21 11:58:41 +0900") + @timestamp = Time.parse("2016-04-21 02:58:41 +0000") @timestamp_str = @timestamp.strftime("%Y-%m-%d %H:%M:%S %z") Timecop.freeze(@timestamp) dl_opts = {} @@ -796,13 +796,15 @@ def setup end data( - text: [:text, "2016-04-21 11:58:41 +0900 [info]: yaaay\n"], - json: [:json, %Q({"time":"2016-04-21 11:58:41 +0900","level":"info","message":"yaaay"}\n)], + text: [:text, "2016-04-21 02:58:41 +0000 [info]: yaaay\n"], + json: [:json, %Q({"time":"2016-04-21 02:58:41 +0000","level":"info","message":"yaaay"}\n)], ) def test_format(data) fmt, expected_log_line = data - @log.format = fmt - @log.info "yaaay" + with_timezone('utc') { + @log.format = fmt + @log.info "yaaay" + } assert{ @log_device.logs.include? expected_log_line } end diff --git a/fluentd/vendored_gem_src/fluentd/test/test_supervisor.rb b/fluentd/vendored_gem_src/fluentd/test/test_supervisor.rb index 0d6f2be2c..1348f72d8 100644 --- a/fluentd/vendored_gem_src/fluentd/test/test_supervisor.rb +++ b/fluentd/vendored_gem_src/fluentd/test/test_supervisor.rb @@ -274,6 +274,7 @@ def test_load_config params['log_path'] = 'test/tmp/supervisor/log' params['suppress_repeated_stacktrace'] = true params['log_level'] = Fluent::Log::LEVEL_INFO + params['conf_encoding'] = 'utf-8' load_config_proc = Proc.new { Fluent::Supervisor.load_config(tmp_dir, params) } # first call @@ -340,6 +341,7 @@ def test_load_config_for_daemonize params['suppress_repeated_stacktrace'] = true params['log_level'] = Fluent::Log::LEVEL_INFO params['daemonize'] = './fluentd.pid' + params['conf_encoding'] = 'utf-8' load_config_proc = Proc.new { Fluent::Supervisor.load_config(tmp_dir, params) } # first call @@ -414,6 +416,7 @@ def test_load_config_with_multibyte_string params['log_path'] = 'test/tmp/supervisor/log' params['suppress_repeated_stacktrace'] = true params['log_level'] = Fluent::Log::LEVEL_INFO + params['conf_encoding'] = 'utf-8' load_config_proc = Proc.new { Fluent::Supervisor.load_config(tmp_path, params) } se_config = load_config_proc.call diff --git a/fluentd/vendored_gem_src/i18n/i18n.gemspec b/fluentd/vendored_gem_src/i18n/i18n.gemspec index 855cf7757..f27200b90 100644 --- a/fluentd/vendored_gem_src/i18n/i18n.gemspec +++ b/fluentd/vendored_gem_src/i18n/i18n.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |s| s.licenses = ["MIT".freeze] s.post_install_message = "\nHEADS UP! i18n 1.1 changed fallbacks to exclude default locale.\nBut that may break your application.\n\nPlease check your Rails app for 'config.i18n.fallbacks = true'.\nIf you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be\n'config.i18n.fallbacks = [I18n.default_locale]'.\nIf not, fallbacks will be broken in your app by I18n 1.1.x.\n\nFor more info see:\nhttps://github.com/svenfuchs/i18n/releases/tag/v1.1.0\n\n".freeze s.required_ruby_version = Gem::Requirement.new(">= 2.3.0".freeze) - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "New wave Internationalization support for Ruby".freeze if s.respond_to? :specification_version then diff --git a/fluentd/vendored_gem_src/mime-types-data/mime-types-data.gemspec b/fluentd/vendored_gem_src/mime-types-data/mime-types-data.gemspec index bc6bd6663..1b9d7665f 100644 --- a/fluentd/vendored_gem_src/mime-types-data/mime-types-data.gemspec +++ b/fluentd/vendored_gem_src/mime-types-data/mime-types-data.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |s| s.licenses = ["MIT".freeze] s.rdoc_options = ["--main".freeze, "README.md".freeze] s.required_ruby_version = Gem::Requirement.new(">= 2.0".freeze) - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "mime-types-data provides a registry for information about MIME media type definitions".freeze if s.respond_to? :specification_version then @@ -30,8 +30,8 @@ Gem::Specification.new do |s| s.add_development_dependency(%q.freeze, ["~> 1.6"]) s.add_development_dependency(%q.freeze, ["~> 1.0"]) s.add_development_dependency(%q.freeze, ["~> 10.0"]) - s.add_development_dependency(%q.freeze, [">= 3.2.1", "< 4"]) - s.add_development_dependency(%q.freeze, [">= 4.0", "< 6"]) + s.add_development_dependency(%q.freeze, ["< 4", ">= 3.2.1"]) + s.add_development_dependency(%q.freeze, ["< 6", ">= 4.0"]) s.add_development_dependency(%q.freeze, ["~> 3.17"]) else s.add_dependency(%q.freeze, ["~> 1.6"]) @@ -40,8 +40,8 @@ Gem::Specification.new do |s| s.add_dependency(%q.freeze, ["~> 1.6"]) s.add_dependency(%q.freeze, ["~> 1.0"]) s.add_dependency(%q.freeze, ["~> 10.0"]) - s.add_dependency(%q.freeze, [">= 3.2.1", "< 4"]) - s.add_dependency(%q.freeze, [">= 4.0", "< 6"]) + s.add_dependency(%q.freeze, ["< 4", ">= 3.2.1"]) + s.add_dependency(%q.freeze, ["< 6", ">= 4.0"]) s.add_dependency(%q.freeze, ["~> 3.17"]) end else @@ -51,8 +51,8 @@ Gem::Specification.new do |s| s.add_dependency(%q.freeze, ["~> 1.6"]) s.add_dependency(%q.freeze, ["~> 1.0"]) s.add_dependency(%q.freeze, ["~> 10.0"]) - s.add_dependency(%q.freeze, [">= 3.2.1", "< 4"]) - s.add_dependency(%q.freeze, [">= 4.0", "< 6"]) + s.add_dependency(%q.freeze, ["< 4", ">= 3.2.1"]) + s.add_dependency(%q.freeze, ["< 6", ">= 4.0"]) s.add_dependency(%q.freeze, ["~> 3.17"]) end end diff --git a/fluentd/vendored_gem_src/mime-types/mime-types.gemspec b/fluentd/vendored_gem_src/mime-types/mime-types.gemspec index ac50a4d41..f0e0a7c74 100644 --- a/fluentd/vendored_gem_src/mime-types/mime-types.gemspec +++ b/fluentd/vendored_gem_src/mime-types/mime-types.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |s| s.licenses = ["MIT".freeze] s.rdoc_options = ["--main".freeze, "README.rdoc".freeze] s.required_ruby_version = Gem::Requirement.new(">= 2.0".freeze) - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "The mime-types library provides a library and registry for information about MIME content type definitions".freeze if s.respond_to? :specification_version then @@ -35,11 +35,11 @@ Gem::Specification.new do |s| s.add_development_dependency(%q.freeze, ["~> 1.0"]) s.add_development_dependency(%q.freeze, ["~> 3.0"]) s.add_development_dependency(%q.freeze, ["~> 1.4"]) - s.add_development_dependency(%q.freeze, [">= 10.0", "< 13.0"]) + s.add_development_dependency(%q.freeze, ["< 13.0", ">= 10.0"]) s.add_development_dependency(%q.freeze, ["~> 1.3"]) s.add_development_dependency(%q.freeze, ["~> 5.2"]) s.add_development_dependency(%q.freeze, ["~> 0.7"]) - s.add_development_dependency(%q.freeze, [">= 4.0", "< 6"]) + s.add_development_dependency(%q.freeze, ["< 6", ">= 4.0"]) s.add_development_dependency(%q.freeze, ["~> 3.17"]) else s.add_dependency(%q.freeze, ["~> 3.2015"]) @@ -53,11 +53,11 @@ Gem::Specification.new do |s| s.add_dependency(%q.freeze, ["~> 1.0"]) s.add_dependency(%q.freeze, ["~> 3.0"]) s.add_dependency(%q.freeze, ["~> 1.4"]) - s.add_dependency(%q.freeze, [">= 10.0", "< 13.0"]) + s.add_dependency(%q.freeze, ["< 13.0", ">= 10.0"]) s.add_dependency(%q.freeze, ["~> 1.3"]) s.add_dependency(%q.freeze, ["~> 5.2"]) s.add_dependency(%q.freeze, ["~> 0.7"]) - s.add_dependency(%q.freeze, [">= 4.0", "< 6"]) + s.add_dependency(%q.freeze, ["< 6", ">= 4.0"]) s.add_dependency(%q.freeze, ["~> 3.17"]) end else @@ -72,11 +72,11 @@ Gem::Specification.new do |s| s.add_dependency(%q.freeze, ["~> 1.0"]) s.add_dependency(%q.freeze, ["~> 3.0"]) s.add_dependency(%q.freeze, ["~> 1.4"]) - s.add_dependency(%q.freeze, [">= 10.0", "< 13.0"]) + s.add_dependency(%q.freeze, ["< 13.0", ">= 10.0"]) s.add_dependency(%q.freeze, ["~> 1.3"]) s.add_dependency(%q.freeze, ["~> 5.2"]) s.add_dependency(%q.freeze, ["~> 0.7"]) - s.add_dependency(%q.freeze, [">= 4.0", "< 6"]) + s.add_dependency(%q.freeze, ["< 6", ">= 4.0"]) s.add_dependency(%q.freeze, ["~> 3.17"]) end end diff --git a/fluentd/vendored_gem_src/minitest/minitest.gemspec b/fluentd/vendored_gem_src/minitest/minitest.gemspec index eb9c49bb7..fe7745a32 100644 --- a/fluentd/vendored_gem_src/minitest/minitest.gemspec +++ b/fluentd/vendored_gem_src/minitest/minitest.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |s| s.homepage = "https://github.com/seattlerb/minitest".freeze s.licenses = ["MIT".freeze] s.rdoc_options = ["--main".freeze, "README.rdoc".freeze] - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking".freeze if s.respond_to? :specification_version then diff --git a/fluentd/vendored_gem_src/msgpack/.rubocop.yml b/fluentd/vendored_gem_src/msgpack/.rubocop.yml index c2cec10aa..f8022d246 100644 --- a/fluentd/vendored_gem_src/msgpack/.rubocop.yml +++ b/fluentd/vendored_gem_src/msgpack/.rubocop.yml @@ -5,6 +5,9 @@ # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. +AllCops: + TargetRubyVersion: 2.3 + # Offense count: 3 Lint/AmbiguousOperator: Enabled: false diff --git a/fluentd/vendored_gem_src/msgpack/ChangeLog b/fluentd/vendored_gem_src/msgpack/ChangeLog index 9b1a36e3e..a2771bed3 100644 --- a/fluentd/vendored_gem_src/msgpack/ChangeLog +++ b/fluentd/vendored_gem_src/msgpack/ChangeLog @@ -1,3 +1,7 @@ +2019-06-20 verison 1.3.0: + +* Add timestamp ext type (id:-1) support + 2019-04-19 version 1.2.10: * Optimze MessagePack.unpack not to copy source string diff --git a/fluentd/vendored_gem_src/msgpack/README.rdoc b/fluentd/vendored_gem_src/msgpack/README.rdoc index df6af35fe..9c4ac0eb5 100644 --- a/fluentd/vendored_gem_src/msgpack/README.rdoc +++ b/fluentd/vendored_gem_src/msgpack/README.rdoc @@ -121,6 +121,22 @@ being serialized altogether by throwing an exception: [1, :symbol, 'string'].to_msgpack # => RuntimeError: Serialization of symbols prohibited += Serializing and deserializing Time instances + +There are the timestamp extension type in MessagePack, +but it is not registered by default. + +To map Ruby's Time to MessagePack's timestamp for the default factory: + + MessagePack::DefaultFactory.register_type( + MessagePack::Timestamp::TYPE, # or just -1 + Time, + packer: MessagePack::Time::Packer, + unpacker: MessagePack::Time::Unpacker + ) + +See {API reference}[http://ruby.msgpack.org/] for details. + = Extension Types Packer and Unpacker support {Extension types of MessagePack}[https://github.com/msgpack/msgpack/blob/master/spec.md#types-extension-type]. diff --git a/fluentd/vendored_gem_src/msgpack/doclib/msgpack/time.rb b/fluentd/vendored_gem_src/msgpack/doclib/msgpack/time.rb new file mode 100644 index 000000000..3c25734ae --- /dev/null +++ b/fluentd/vendored_gem_src/msgpack/doclib/msgpack/time.rb @@ -0,0 +1,22 @@ +module MessagePack + + # MessagePack::Time provides packer and unpacker functions for a timestamp type. + # @example Setup for DefaultFactory + # MessagePack::DefaultFactory.register_type( + # MessagePack::Timestamp::TYPE, + # Time, + # packer: MessagePack::Time::Packer, + # unpacker: MessagePack::Time::Unpacker + # ) + class Time + # A packer function that packs a Time instance to a MessagePack timestamp. + Packer = lambda { |payload| + # ... + } + + # An unpacker function that unpacks a MessagePack timestamp to a Time instance. + Unpcker = lambda { |time| + # ... + } + end +end diff --git a/fluentd/vendored_gem_src/msgpack/doclib/msgpack/timestamp.rb b/fluentd/vendored_gem_src/msgpack/doclib/msgpack/timestamp.rb new file mode 100644 index 000000000..9b67bb1ff --- /dev/null +++ b/fluentd/vendored_gem_src/msgpack/doclib/msgpack/timestamp.rb @@ -0,0 +1,44 @@ +module MessagePack + # A utility class for MessagePack timestamp type + class Timestamp + # + # The timestamp extension type defined in the MessagePack spec. + # + # See https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type for details. + # + TYPE = -1 + + # @return [Integer] Second part of the timestamp. + attr_reader :sec + + # @return [Integer] Nanosecond part of the timestamp. + attr_reader :nsec + + # @param [Integer] sec + # @param [Integer] nsec + def initialize(sec, nsec) + end + + # @example An unpacker implementation for the Time class + # lambda do |payload| + # tv = MessagePack::Timestamp.from_msgpack_ext(payload) + # Time.at(tv.sec, tv.nsec, :nanosecond) + # end + # + # @param [String] data + # @return [MessagePack::Timestamp] + def self.from_msgpack_ext(data) + end + + # @example A packer implementation for the Time class + # unpacker = lambda do |time| + # MessagePack::Timestamp.to_msgpack_ext(time.tv_sec, time.tv_nsec) + # end + # + # @param [Integer] sec + # @param [Integer] nsec + # @return [String] + def self.to_msgpack_ext(sec, nsec) + end + end +end diff --git a/fluentd/vendored_gem_src/msgpack/lib/msgpack.rb b/fluentd/vendored_gem_src/msgpack/lib/msgpack.rb index fe608a111..390321d8c 100644 --- a/fluentd/vendored_gem_src/msgpack/lib/msgpack.rb +++ b/fluentd/vendored_gem_src/msgpack/lib/msgpack.rb @@ -17,6 +17,8 @@ require "msgpack/factory" require "msgpack/symbol" require "msgpack/core_ext" +require "msgpack/timestamp" +require "msgpack/time" module MessagePack DefaultFactory = MessagePack::Factory.new diff --git a/fluentd/vendored_gem_src/msgpack/lib/msgpack/time.rb b/fluentd/vendored_gem_src/msgpack/lib/msgpack/time.rb new file mode 100644 index 000000000..fc6935796 --- /dev/null +++ b/fluentd/vendored_gem_src/msgpack/lib/msgpack/time.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +# MessagePack extention packer and unpacker for built-in Time class +module MessagePack + module Time + # 3-arg Time.at is available Ruby >= 2.5 + TIME_AT_3_AVAILABLE = begin + !!::Time.at(0, 0, :nanosecond) + rescue ArgumentError + false + end + + Unpacker = if TIME_AT_3_AVAILABLE + lambda do |payload| + tv = MessagePack::Timestamp.from_msgpack_ext(payload) + ::Time.at(tv.sec, tv.nsec, :nanosecond) + end + else + lambda do |payload| + tv = MessagePack::Timestamp.from_msgpack_ext(payload) + ::Time.at(tv.sec, tv.nsec / 1000.0) + end + end + + Packer = lambda { |time| + MessagePack::Timestamp.to_msgpack_ext(time.tv_sec, time.tv_nsec) + } + end +end diff --git a/fluentd/vendored_gem_src/msgpack/lib/msgpack/timestamp.rb b/fluentd/vendored_gem_src/msgpack/lib/msgpack/timestamp.rb new file mode 100644 index 000000000..768412d72 --- /dev/null +++ b/fluentd/vendored_gem_src/msgpack/lib/msgpack/timestamp.rb @@ -0,0 +1,76 @@ +# frozen_string_literal: true + +module MessagePack + class Timestamp # a.k.a. "TimeSpec" + # Because the byte-order of MessagePack is big-endian in, + # pack() and unpack() specifies ">". + # See https://docs.ruby-lang.org/en/trunk/Array.html#method-i-pack for details. + + # The timestamp extension type defined in the MessagePack spec. + # See https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type for details. + TYPE = -1 + + TIMESTAMP32_MAX_SEC = (1 << 32) - 1 + TIMESTAMP64_MAX_SEC = (1 << 34) - 1 + + # @return [Integer] + attr_reader :sec + + # @return [Integer] + attr_reader :nsec + + # @param [Integer] sec + # @param [Integer] nsec + def initialize(sec, nsec) + @sec = sec + @nsec = nsec + end + + def self.from_msgpack_ext(data) + case data.length + when 4 + # timestamp32 (sec: uint32be) + sec, = data.unpack('L>') + new(sec, 0) + when 8 + # timestamp64 (nsec: uint30be, sec: uint34be) + n, s = data.unpack('L>2') + sec = ((n & 0b11) << 32) | s + nsec = n >> 2 + new(sec, nsec) + when 12 + # timestam96 (nsec: uint32be, sec: int64be) + nsec, sec = data.unpack('L>q>') + new(sec, nsec) + else + raise MalformedFormatError, "Invalid timestamp data size: #{data.length}" + end + end + + def self.to_msgpack_ext(sec, nsec) + if sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC + if nsec === 0 && sec <= TIMESTAMP32_MAX_SEC + # timestamp32 = (sec: uint32be) + [sec].pack('L>') + else + # timestamp64 (nsec: uint30be, sec: uint34be) + nsec30 = nsec << 2 + sec_high2 = sec << 32 # high 2 bits (`x & 0b11` is redandunt) + sec_low32 = sec & 0xffffffff # low 32 bits + [nsec30 | sec_high2, sec_low32].pack('L>2') + end + else + # timestamp96 (nsec: uint32be, sec: int64be) + [nsec, sec].pack('L>q>') + end + end + + def to_msgpack_ext + self.class.to_msgpack_ext(sec, nsec) + end + + def ==(other) + other.class == self.class && sec == other.sec && nsec == other.nsec + end + end +end diff --git a/fluentd/vendored_gem_src/msgpack/lib/msgpack/version.rb b/fluentd/vendored_gem_src/msgpack/lib/msgpack/version.rb index 08c1731e2..095182543 100644 --- a/fluentd/vendored_gem_src/msgpack/lib/msgpack/version.rb +++ b/fluentd/vendored_gem_src/msgpack/lib/msgpack/version.rb @@ -1,5 +1,5 @@ module MessagePack - VERSION = "1.2.10" + VERSION = "1.3.0" # NOTE for msgpack-ruby maintainer: # Check these things to release new binaryes for new Ruby versions (especially for Windows): diff --git a/fluentd/vendored_gem_src/msgpack/spec/timestamp_spec.rb b/fluentd/vendored_gem_src/msgpack/spec/timestamp_spec.rb new file mode 100644 index 000000000..f5043da57 --- /dev/null +++ b/fluentd/vendored_gem_src/msgpack/spec/timestamp_spec.rb @@ -0,0 +1,117 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe MessagePack::Timestamp do + describe 'malformed format' do + it do + expect do + MessagePack::Timestamp.from_msgpack_ext([0xd4, 0x00].pack("C*")) + end.to raise_error(MessagePack::MalformedFormatError) + end + end + + describe 'register_type with Time' do + let(:factory) do + factory = MessagePack::Factory.new + factory.register_type( + MessagePack::Timestamp::TYPE, + Time, + packer: MessagePack::Time::Packer, + unpacker: MessagePack::Time::Unpacker + ) + factory + end + + let(:time) { Time.local(2019, 6, 17, 1, 2, 3, 123_456_789 / 1000.0) } + it 'serializes and deserializes Time' do + prefix_fixext8_with_type_id = [0xd7, -1].pack("c*") + + packed = factory.pack(time) + expect(packed).to start_with(prefix_fixext8_with_type_id) + expect(packed.size).to eq(10) + unpacked = factory.unpack(packed) + expect(unpacked.to_i).to eq(time.to_i) + expect(unpacked.to_f).to eq(time.to_f) + # expect(unpacked).to eq(time) # we can't do it because of nsec (rational vs float?) + end + + let(:time_without_nsec) { Time.local(2019, 6, 17, 1, 2, 3, 0) } + it 'serializes time without nanosec as fixext4' do + prefix_fixext4_with_type_id = [0xd6, -1].pack("c*") + + packed = factory.pack(time_without_nsec) + expect(packed).to start_with(prefix_fixext4_with_type_id) + expect(packed.size).to eq(6) + unpacked = factory.unpack(packed) + expect(unpacked).to eq(time_without_nsec) + end + + let(:time_after_2514) { Time.at(1 << 34) } # the max num of 34bit int means 2514-05-30 01:53:04 UTC + it 'serializes time after 2038 as ext8' do + prefix_ext8_with_12bytes_payload_and_type_id = [0xc7, 12, -1].pack("c*") + + expect(time_after_2514.to_i).to be > 0xffffffff + packed = factory.pack(time_after_2514) + expect(packed).to start_with(prefix_ext8_with_12bytes_payload_and_type_id) + expect(packed.size).to eq(15) + end + end + + describe 'register_type with MessagePack::Timestamp' do + let(:factory) do + factory = MessagePack::Factory.new + factory.register_type(MessagePack::Timestamp::TYPE, MessagePack::Timestamp) + factory + end + + let(:timestamp) { MessagePack::Timestamp.new(Time.now.tv_sec, 123_456_789) } + it 'serializes and deserializes MessagePack::Timestamp' do + packed = factory.pack(timestamp) + unpacked = factory.unpack(packed) + expect(unpacked).to eq(timestamp) + end + end + + describe 'timestamp32' do + it 'handles [1, 0]' do + t = MessagePack::Timestamp.new(1, 0) + + payload = t.to_msgpack_ext + unpacked = MessagePack::Timestamp.from_msgpack_ext(payload) + + expect(unpacked).to eq(t) + end + end + + describe 'timestamp64' do + it 'handles [1, 1]' do + t = MessagePack::Timestamp.new(1, 1) + + payload = t.to_msgpack_ext + unpacked = MessagePack::Timestamp.from_msgpack_ext(payload) + + expect(unpacked).to eq(t) + end + end + + describe 'timestamp96' do + it 'handles [-1, 0]' do + t = MessagePack::Timestamp.new(-1, 0) + + payload = t.to_msgpack_ext + unpacked = MessagePack::Timestamp.from_msgpack_ext(payload) + + expect(unpacked).to eq(t) + end + + it 'handles [-1, 999_999_999]' do + t = MessagePack::Timestamp.new(-1, 999_999_999) + + payload = t.to_msgpack_ext + unpacked = MessagePack::Timestamp.from_msgpack_ext(payload) + + expect(unpacked).to eq(t) + end + end +end diff --git a/fluentd/vendored_gem_src/multi_json/multi_json.gemspec b/fluentd/vendored_gem_src/multi_json/multi_json.gemspec index d0e838b2a..0b100bb63 100644 --- a/fluentd/vendored_gem_src/multi_json/multi_json.gemspec +++ b/fluentd/vendored_gem_src/multi_json/multi_json.gemspec @@ -15,7 +15,7 @@ Gem::Specification.new do |s| s.files = ["CHANGELOG.md".freeze, "CONTRIBUTING.md".freeze, "LICENSE.md".freeze, "README.md".freeze, "lib/multi_json.rb".freeze, "lib/multi_json/adapter.rb".freeze, "lib/multi_json/adapter_error.rb".freeze, "lib/multi_json/adapters/gson.rb".freeze, "lib/multi_json/adapters/jr_jackson.rb".freeze, "lib/multi_json/adapters/json_common.rb".freeze, "lib/multi_json/adapters/json_gem.rb".freeze, "lib/multi_json/adapters/json_pure.rb".freeze, "lib/multi_json/adapters/nsjsonserialization.rb".freeze, "lib/multi_json/adapters/oj.rb".freeze, "lib/multi_json/adapters/ok_json.rb".freeze, "lib/multi_json/adapters/yajl.rb".freeze, "lib/multi_json/convertible_hash_keys.rb".freeze, "lib/multi_json/options.rb".freeze, "lib/multi_json/options_cache.rb".freeze, "lib/multi_json/parse_error.rb".freeze, "lib/multi_json/vendor/okjson.rb".freeze, "lib/multi_json/version.rb".freeze] s.homepage = "http://github.com/intridea/multi_json".freeze s.licenses = ["MIT".freeze] - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "A common interface to multiple JSON libraries.".freeze if s.respond_to? :specification_version then diff --git a/fluentd/vendored_gem_src/netrc/netrc.gemspec b/fluentd/vendored_gem_src/netrc/netrc.gemspec index 48d6a3654..14e1119dc 100644 --- a/fluentd/vendored_gem_src/netrc/netrc.gemspec +++ b/fluentd/vendored_gem_src/netrc/netrc.gemspec @@ -14,7 +14,7 @@ Gem::Specification.new do |s| s.files = ["LICENSE.md".freeze, "Readme.md".freeze, "changelog.txt".freeze, "data/default_only.netrc".freeze, "data/login.netrc".freeze, "data/newlineless.netrc".freeze, "data/password.netrc".freeze, "data/permissive.netrc".freeze, "data/sample.netrc".freeze, "data/sample_multi.netrc".freeze, "data/sample_multi_with_default.netrc".freeze, "data/sample_with_default.netrc".freeze, "lib/netrc.rb".freeze, "test/test_lex.rb".freeze, "test/test_netrc.rb".freeze, "test/test_parse.rb".freeze] s.homepage = "https://github.com/geemus/netrc".freeze s.licenses = ["MIT".freeze] - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "Library to read and write netrc files.".freeze if s.respond_to? :specification_version then diff --git a/fluentd/vendored_gem_src/prometheus-client/prometheus-client.gemspec b/fluentd/vendored_gem_src/prometheus-client/prometheus-client.gemspec index 4fc4b8b35..8dc5c8ea8 100644 --- a/fluentd/vendored_gem_src/prometheus-client/prometheus-client.gemspec +++ b/fluentd/vendored_gem_src/prometheus-client/prometheus-client.gemspec @@ -13,7 +13,7 @@ Gem::Specification.new do |s| s.files = ["README.md".freeze, "lib/prometheus.rb".freeze, "lib/prometheus/client.rb".freeze, "lib/prometheus/client/counter.rb".freeze, "lib/prometheus/client/formats/text.rb".freeze, "lib/prometheus/client/gauge.rb".freeze, "lib/prometheus/client/histogram.rb".freeze, "lib/prometheus/client/label_set_validator.rb".freeze, "lib/prometheus/client/metric.rb".freeze, "lib/prometheus/client/push.rb".freeze, "lib/prometheus/client/registry.rb".freeze, "lib/prometheus/client/summary.rb".freeze, "lib/prometheus/client/version.rb".freeze, "lib/prometheus/middleware/collector.rb".freeze, "lib/prometheus/middleware/exporter.rb".freeze] s.homepage = "https://github.com/prometheus/client_ruby".freeze s.licenses = ["Apache 2.0".freeze] - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "A suite of instrumentation metric primitivesthat can be exposed through a web services interface.".freeze if s.respond_to? :specification_version then diff --git a/fluentd/vendored_gem_src/public_suffix/.travis.yml b/fluentd/vendored_gem_src/public_suffix/.travis.yml index b676a52bd..89eec321f 100644 --- a/fluentd/vendored_gem_src/public_suffix/.travis.yml +++ b/fluentd/vendored_gem_src/public_suffix/.travis.yml @@ -15,6 +15,13 @@ cache: - bundler matrix: + include: + - rvm: 2.1 + before_install: + - gem install bundler -v '< 2.0' + - rvm: 2.2 + before_install: + - gem install bundler -v '< 2.0' allow_failures: - rvm: ruby-head - rvm: jruby-9.1.5.0 diff --git a/fluentd/vendored_gem_src/public_suffix/CHANGELOG.md b/fluentd/vendored_gem_src/public_suffix/CHANGELOG.md index 198c9a29a..aea88f78b 100644 --- a/fluentd/vendored_gem_src/public_suffix/CHANGELOG.md +++ b/fluentd/vendored_gem_src/public_suffix/CHANGELOG.md @@ -1,6 +1,12 @@ # Changelog +#### Release 3.1.1 + +- CHANGED: Updated definitions. +- CHANGED: Rolled back support for Ruby 2.3 (GH-161, GH-162) + + #### Release 3.1.0 - CHANGED: Updated definitions. diff --git a/fluentd/vendored_gem_src/public_suffix/README.md b/fluentd/vendored_gem_src/public_suffix/README.md index 18ab00988..5d417ded8 100644 --- a/fluentd/vendored_gem_src/public_suffix/README.md +++ b/fluentd/vendored_gem_src/public_suffix/README.md @@ -7,7 +7,7 @@ ## Requirements -- Ruby >= 2.1 +- Ruby >= 2.3 For an older versions of Ruby use a previous release. diff --git a/fluentd/vendored_gem_src/public_suffix/data/list.txt b/fluentd/vendored_gem_src/public_suffix/data/list.txt index c6d33bc89..382880085 100644 --- a/fluentd/vendored_gem_src/public_suffix/data/list.txt +++ b/fluentd/vendored_gem_src/public_suffix/data/list.txt @@ -7057,9 +7057,9 @@ org.zw // newGTLDs -// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2018-05-08T19:40:37Z -// This list is auto-generated, don't edit it manually. +// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2019-06-14T10:00:50-04:00 +// This list is auto-generated, don't edit it manually. // aaa : 2015-02-26 American Automobile Association, Inc. aaa @@ -7105,7 +7105,7 @@ accountants // aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG aco -// actor : 2013-12-12 United TLD Holdco Ltd. +// actor : 2013-12-12 Dog Beach, LLC actor // adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC) @@ -7147,7 +7147,7 @@ aigo // airbus : 2015-07-30 Airbus S.A.S. airbus -// airforce : 2014-03-06 United TLD Holdco Ltd. +// airforce : 2014-03-06 Dog Beach, LLC airforce // airtel : 2014-10-24 Bharti Airtel Limited @@ -7231,10 +7231,10 @@ arab // aramco : 2014-11-20 Aramco Services Company aramco -// archi : 2014-02-06 Afilias plc +// archi : 2014-02-06 Afilias Limited archi -// army : 2014-03-06 United TLD Holdco Ltd. +// army : 2014-03-06 Dog Beach, LLC army // art : 2016-03-24 UK Creative Ideas Limited @@ -7252,10 +7252,10 @@ associates // athleta : 2015-07-30 The Gap, Inc. athleta -// attorney : 2014-03-20 United TLD Holdco Ltd. +// attorney : 2014-03-20 Dog Beach, LLC attorney -// auction : 2014-03-20 United TLD Holdco Ltd. +// auction : 2014-03-20 Dog Beach, LLC auction // audi : 2015-05-21 AUDI Aktiengesellschaft @@ -7291,7 +7291,7 @@ axa // azure : 2014-12-18 Microsoft Corporation azure -// baby : 2015-04-09 Johnson & Johnson Services, Inc. +// baby : 2015-04-09 XYZ.COM LLC baby // baidu : 2015-01-08 Baidu, Inc. @@ -7303,7 +7303,7 @@ banamex // bananarepublic : 2015-07-31 The Gap, Inc. bananarepublic -// band : 2014-06-12 United TLD Holdco Ltd. +// band : 2014-06-12 Dog Beach, LLC band // bank : 2014-09-25 fTLD Registry Services LLC @@ -7375,7 +7375,7 @@ best // bestbuy : 2015-07-31 BBY Solutions, Inc. bestbuy -// bet : 2015-05-07 Afilias plc +// bet : 2015-05-07 Afilias Limited bet // bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited @@ -7396,10 +7396,10 @@ bing // bingo : 2014-12-04 Binky Moon, LLC bingo -// bio : 2014-03-06 Afilias plc +// bio : 2014-03-06 Afilias Limited bio -// black : 2014-01-16 Afilias plc +// black : 2014-01-16 Afilias Limited black // blackfriday : 2014-01-16 Uniregistry, Corp. @@ -7414,7 +7414,7 @@ blog // bloomberg : 2014-07-17 Bloomberg IP Holdings LLC bloomberg -// blue : 2013-11-07 Afilias plc +// blue : 2013-11-07 Afilias Limited blue // bms : 2014-10-30 Bristol-Myers Squibb Company @@ -7441,7 +7441,7 @@ bofa // bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br bom -// bond : 2014-06-05 Bond University Limited +// bond : 2014-06-05 ShortDot SA bond // boo : 2014-01-30 Charleston Road Registry Inc. @@ -7468,7 +7468,7 @@ bot // boutique : 2013-11-14 Binky Moon, LLC boutique -// box : 2015-11-12 NS1 Limited +// box : 2015-11-12 .BOX INC. box // bradesco : 2014-12-18 Banco Bradesco S.A. @@ -7633,7 +7633,7 @@ chanel // channel : 2014-05-08 Charleston Road Registry Inc. channel -// charity : 2018-04-11 Corn Lake, LLC +// charity : 2018-04-11 Binky Moon, LLC charity // chase : 2015-04-30 JPMorgan Chase Bank, National Association @@ -7723,7 +7723,7 @@ coffee // college : 2014-01-16 XYZ.COM LLC college -// cologne : 2014-02-05 punkt.wien GmbH +// cologne : 2014-02-05 dotKoeln GmbH cologne // comcast : 2015-07-23 Comcast IP Holdings I, LLC @@ -7753,10 +7753,10 @@ condos // construction : 2013-09-16 Binky Moon, LLC construction -// consulting : 2013-12-05 United TLD Holdco Ltd. +// consulting : 2013-12-05 Dog Beach, LLC consulting -// contact : 2015-01-08 Top Level Spectrum, Inc. +// contact : 2015-01-08 Dog Beach, LLC contact // contractors : 2013-09-10 Binky Moon, LLC @@ -7786,6 +7786,9 @@ coupons // courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD courses +// cpa : 2019-06-10 American Institute of Certified Public Accountants +cpa + // credit : 2014-03-20 Binky Moon, LLC credit @@ -7813,7 +7816,7 @@ cruises // csc : 2014-09-25 Alliance-One Services, Inc. csc -// cuisinella : 2014-04-03 SALM S.A.S. +// cuisinella : 2014-04-03 SCHMIDT GROUPE S.A.S. cuisinella // cymru : 2014-05-08 Nominet UK @@ -7828,7 +7831,7 @@ dabur // dad : 2014-01-23 Charleston Road Registry Inc. dad -// dance : 2013-10-24 United TLD Holdco Ltd. +// dance : 2013-10-24 Dog Beach, LLC dance // data : 2016-06-02 Dish DBS Corporation @@ -7855,13 +7858,13 @@ dds // deal : 2015-06-25 Amazon Registry Services, Inc. deal -// dealer : 2014-12-22 Dealer Dot Com, Inc. +// dealer : 2014-12-22 Intercap Registry Inc. dealer // deals : 2014-05-22 Binky Moon, LLC deals -// degree : 2014-03-06 United TLD Holdco Ltd. +// degree : 2014-03-06 Dog Beach, LLC degree // delivery : 2014-09-11 Binky Moon, LLC @@ -7876,13 +7879,13 @@ deloitte // delta : 2015-02-19 Delta Air Lines, Inc. delta -// democrat : 2013-10-24 United TLD Holdco Ltd. +// democrat : 2013-10-24 Dog Beach, LLC democrat // dental : 2014-03-20 Binky Moon, LLC dental -// dentist : 2014-03-20 United TLD Holdco Ltd. +// dentist : 2014-03-20 Dog Beach, LLC dentist // desi : 2013-11-14 Desi Networks LLC @@ -7975,7 +7978,7 @@ durban // dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG dvag -// dvr : 2016-05-26 Hughes Satellite Systems Corporation +// dvr : 2016-05-26 DISH Technologies L.L.C. dvr // earth : 2014-12-04 Interlink Co., Ltd. @@ -8002,7 +8005,7 @@ emerck // energy : 2014-09-11 Binky Moon, LLC energy -// engineer : 2014-03-06 United TLD Holdco Ltd. +// engineer : 2014-03-06 Dog Beach, LLC engineer // engineering : 2014-03-06 Binky Moon, LLC @@ -8074,13 +8077,13 @@ fairwinds // faith : 2014-11-20 dot Faith Limited faith -// family : 2015-04-02 United TLD Holdco Ltd. +// family : 2015-04-02 Dog Beach, LLC family -// fan : 2014-03-06 Asiamix Digital Limited +// fan : 2014-03-06 Dog Beach, LLC fan -// fans : 2014-11-07 Asiamix Digital Limited +// fans : 2014-11-07 Fans TLD Limited fans // farm : 2013-11-07 Binky Moon, LLC @@ -8185,7 +8188,7 @@ ford // forex : 2014-12-11 Dotforex Registry Limited forex -// forsale : 2014-05-22 United TLD Holdco Ltd. +// forsale : 2014-05-22 Dog Beach, LLC forsale // forum : 2015-04-02 Fegistry, LLC @@ -8233,7 +8236,7 @@ fund // furniture : 2014-03-20 Binky Moon, LLC furniture -// futbol : 2013-09-20 United TLD Holdco Ltd. +// futbol : 2013-09-20 Dog Beach, LLC futbol // fyi : 2015-04-02 Binky Moon, LLC @@ -8254,7 +8257,7 @@ gallup // game : 2015-05-28 Uniregistry, Corp. game -// games : 2015-05-28 United TLD Holdco Ltd. +// games : 2015-05-28 Dog Beach, LLC games // gap : 2015-07-31 The Gap, Inc. @@ -8263,6 +8266,9 @@ gap // garden : 2014-06-26 Minds + Machines Group Limited garden +// gay : 2019-05-23 Top Level Design, LLC +gay + // gbiz : 2014-07-17 Charleston Road Registry Inc. gbiz @@ -8290,7 +8296,7 @@ gift // gifts : 2014-07-03 Binky Moon, LLC gifts -// gives : 2014-03-06 United TLD Holdco Ltd. +// gives : 2014-03-06 Dog Beach, LLC gives // giving : 2014-11-13 Giving Limited @@ -8362,7 +8368,7 @@ graphics // gratis : 2014-03-20 Binky Moon, LLC gratis -// green : 2014-05-08 Afilias plc +// green : 2014-05-08 Afilias Limited green // gripe : 2014-03-06 Binky Moon, LLC @@ -8401,7 +8407,7 @@ hamburg // hangout : 2014-11-13 Charleston Road Registry Inc. hangout -// haus : 2013-12-05 United TLD Holdco Ltd. +// haus : 2013-12-05 Dog Beach, LLC haus // hbo : 2015-07-30 HBO Registry Services, Inc. @@ -8548,10 +8554,10 @@ imdb // immo : 2014-07-10 Binky Moon, LLC immo -// immobilien : 2013-11-07 United TLD Holdco Ltd. +// immobilien : 2013-11-07 Dog Beach, LLC immobilien -// inc : 2018-03-10 GTLD Limited +// inc : 2018-03-10 Intercap Registry Inc. inc // industries : 2013-12-05 Binky Moon, LLC @@ -8668,7 +8674,7 @@ juegos // juniper : 2015-07-30 JUNIPER NETWORKS, INC. juniper -// kaufen : 2013-11-07 United TLD Holdco Ltd. +// kaufen : 2013-11-07 Dog Beach, LLC kaufen // kddi : 2014-09-12 KDDI CORPORATION @@ -8689,7 +8695,7 @@ kfh // kia : 2015-07-09 KIA MOTORS CORPORATION kia -// kim : 2013-09-23 Afilias plc +// kim : 2013-09-23 Afilias Limited kim // kinder : 2014-11-07 Ferrero Trading Lux S.A. @@ -8704,7 +8710,7 @@ kitchen // kiwi : 2013-09-20 DOT KIWI LIMITED kiwi -// koeln : 2014-01-09 punkt.wien GmbH +// koeln : 2014-01-09 dotKoeln GmbH koeln // komatsu : 2015-01-08 Komatsu Ltd. @@ -8773,10 +8779,10 @@ latino // latrobe : 2014-06-16 La Trobe University latrobe -// law : 2015-01-22 Minds + Machines Group Limited +// law : 2015-01-22 LW TLD Limited law -// lawyer : 2014-03-20 United TLD Holdco Ltd. +// lawyer : 2014-03-20 Dog Beach, LLC lawyer // lds : 2014-03-20 IRI Domain Management, LLC ("Applicant") @@ -8800,7 +8806,7 @@ lego // lexus : 2015-04-23 TOYOTA MOTOR CORPORATION lexus -// lgbt : 2014-05-08 Afilias plc +// lgbt : 2014-05-08 Afilias Limited lgbt // liaison : 2014-10-02 Liaison Technologies, Incorporated @@ -8845,7 +8851,7 @@ link // lipsy : 2015-06-25 Lipsy Ltd lipsy -// live : 2014-12-04 United TLD Holdco Ltd. +// live : 2014-12-04 Dog Beach, LLC live // living : 2015-07-30 Lifestyle Domain Holdings, Inc. @@ -8854,7 +8860,7 @@ living // lixil : 2015-03-19 LIXIL Group Corporation lixil -// llc : 2017-12-14 Afilias plc +// llc : 2017-12-14 Afilias Limited llc // loan : 2014-11-20 dot Loan Limited @@ -8881,7 +8887,7 @@ london // lotte : 2014-11-07 Lotte Holdings Co., Ltd. lotte -// lotto : 2014-04-10 Afilias plc +// lotto : 2014-04-10 Afilias Limited lotto // love : 2014-12-22 Merchant Law Group LLP @@ -8938,7 +8944,7 @@ mango // map : 2016-06-09 Charleston Road Registry Inc. map -// market : 2014-03-06 United TLD Holdco Ltd. +// market : 2014-03-06 Dog Beach, LLC market // marketing : 2013-11-07 Binky Moon, LLC @@ -8986,7 +8992,7 @@ memorial // men : 2015-02-26 Exclusive Registry Limited men -// menu : 2013-09-11 Wedding TLD2, LLC +// menu : 2013-09-11 Dot Menu Registry, LLC menu // merckmsd : 2016-07-14 MSD Registry Holdings, Inc. @@ -9028,7 +9034,7 @@ mobile // mobily : 2014-12-18 GreenTech Consultancy Company W.L.L. mobily -// moda : 2013-11-07 United TLD Holdco Ltd. +// moda : 2013-11-07 Dog Beach, LLC moda // moe : 2013-11-13 Interlink Co., Ltd. @@ -9046,7 +9052,7 @@ monash // money : 2014-10-16 Binky Moon, LLC money -// monster : 2015-09-11 Monster Worldwide, Inc. +// monster : 2015-09-11 XYZ.COM LLC monster // mopar : 2015-07-30 FCA US LLC. @@ -9055,7 +9061,7 @@ mopar // mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant") mormon -// mortgage : 2014-03-20 United TLD Holdco Ltd. +// mortgage : 2014-03-20 Dog Beach, LLC mortgage // moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) @@ -9103,7 +9109,7 @@ nationwide // natura : 2015-03-12 NATURA COSMÉTICOS S.A. natura -// navy : 2014-03-06 United TLD Holdco Ltd. +// navy : 2014-03-06 Dog Beach, LLC navy // nba : 2015-07-31 NBA REGISTRY, LLC @@ -9130,7 +9136,7 @@ new // newholland : 2015-09-03 CNH Industrial N.V. newholland -// news : 2014-12-18 United TLD Holdco Ltd. +// news : 2014-12-18 Dog Beach, LLC news // next : 2015-06-18 Next plc @@ -9160,7 +9166,7 @@ nike // nikon : 2015-05-21 NIKON CORPORATION nikon -// ninja : 2013-11-07 United TLD Holdco Ltd. +// ninja : 2013-11-07 Dog Beach, LLC ninja // nissan : 2014-03-27 NISSAN MOTOR CO., LTD. @@ -9244,7 +9250,7 @@ online // onyourside : 2015-07-23 Nationwide Mutual Insurance Company onyourside -// ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED +// ooo : 2014-01-09 INFIBEAM AVENUES LIMITED ooo // open : 2015-07-31 American Express Travel Related Services Company, Inc. @@ -9256,7 +9262,7 @@ oracle // orange : 2015-03-12 Orange Brand Services Limited orange -// organic : 2014-03-27 Afilias plc +// organic : 2014-03-27 Afilias Limited organic // origins : 2015-10-01 The Estée Lauder Companies Inc. @@ -9271,7 +9277,7 @@ otsuka // ott : 2015-06-04 Dish DBS Corporation ott -// ovh : 2014-01-16 OVH SAS +// ovh : 2014-01-16 MédiaBC ovh // page : 2014-12-04 Charleston Road Registry Inc. @@ -9304,7 +9310,7 @@ pay // pccw : 2015-05-14 PCCW Enterprises Limited pccw -// pet : 2015-05-07 Afilias plc +// pet : 2015-05-07 Afilias Limited pet // pfizer : 2015-09-11 Pfizer Inc. @@ -9355,7 +9361,7 @@ pin // ping : 2015-06-11 Ping Registry Provider, Inc. ping -// pink : 2013-10-01 Afilias plc +// pink : 2013-10-01 Afilias Limited pink // pioneer : 2015-07-16 Pioneer Corporation @@ -9370,7 +9376,7 @@ place // play : 2015-03-05 Charleston Road Registry Inc. play -// playstation : 2015-07-02 Sony Computer Entertainment Inc. +// playstation : 2015-07-02 Sony Interactive Entertainment Inc. playstation // plumbing : 2013-09-10 Binky Moon, LLC @@ -9385,7 +9391,7 @@ pnc // pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG pohl -// poker : 2014-07-03 Afilias plc +// poker : 2014-07-03 Afilias Limited poker // politie : 2015-08-20 Politie Nederland @@ -9418,7 +9424,7 @@ prof // progressive : 2015-07-23 Progressive Casualty Insurance Company progressive -// promo : 2014-12-18 Afilias plc +// promo : 2014-12-18 Afilias Limited promo // properties : 2013-12-05 Binky Moon, LLC @@ -9436,7 +9442,7 @@ pru // prudential : 2015-07-30 Prudential Financial, Inc. prudential -// pub : 2013-12-12 United TLD Holdco Ltd. +// pub : 2013-12-12 Dog Beach, LLC pub // pwc : 2015-10-29 PricewaterhouseCoopers LLP @@ -9478,7 +9484,7 @@ realty // recipes : 2013-10-17 Binky Moon, LLC recipes -// red : 2013-11-07 Afilias plc +// red : 2013-11-07 Afilias Limited red // redstone : 2014-10-31 Redstone Haute Couture Co., Ltd. @@ -9487,7 +9493,7 @@ redstone // redumbrella : 2015-03-26 Travelers TLD, LLC redumbrella -// rehab : 2014-03-06 United TLD Holdco Ltd. +// rehab : 2014-03-06 Dog Beach, LLC rehab // reise : 2014-03-13 Binky Moon, LLC @@ -9517,7 +9523,7 @@ repair // report : 2013-12-05 Binky Moon, LLC report -// republican : 2014-03-20 United TLD Holdco Ltd. +// republican : 2014-03-20 Dog Beach, LLC republican // rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable @@ -9529,7 +9535,7 @@ restaurant // review : 2014-11-20 dot Review Limited review -// reviews : 2013-09-13 United TLD Holdco Ltd. +// reviews : 2013-09-13 Dog Beach, LLC reviews // rexroth : 2015-06-18 Robert Bosch GMBH @@ -9553,7 +9559,7 @@ ril // rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO rio -// rip : 2014-07-10 United TLD Holdco Ltd. +// rip : 2014-07-10 Dog Beach, LLC rip // rmit : 2015-11-19 Royal Melbourne Institute of Technology @@ -9562,7 +9568,7 @@ rmit // rocher : 2014-12-18 Ferrero Trading Lux S.A. rocher -// rocks : 2013-11-14 United TLD Holdco Ltd. +// rocks : 2013-11-14 Dog Beach, LLC rocks // rodeo : 2013-12-19 Minds + Machines Group Limited @@ -9604,7 +9610,7 @@ safety // sakura : 2014-12-18 SAKURA Internet Inc. sakura -// sale : 2014-10-16 United TLD Holdco Ltd. +// sale : 2014-10-16 Dog Beach, LLC sale // salon : 2014-12-11 Binky Moon, LLC @@ -9655,7 +9661,7 @@ scb // schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG schaeffler -// schmidt : 2014-04-03 SALM S.A.S. +// schmidt : 2014-04-03 SCHMIDT GROUPE S.A.S. schmidt // scholarships : 2014-04-24 Scholarships.com, LLC @@ -9739,7 +9745,7 @@ shell // shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. shia -// shiksha : 2013-11-14 Afilias plc +// shiksha : 2013-11-14 Afilias Limited shiksha // shoes : 2013-10-02 Binky Moon, LLC @@ -9775,7 +9781,7 @@ singles // site : 2015-01-15 DotSite Inc. site -// ski : 2015-04-09 Afilias plc +// ski : 2015-04-09 Afilias Limited ski // skin : 2015-01-15 L'Oréal @@ -9787,7 +9793,7 @@ sky // skype : 2014-12-18 Microsoft Corporation skype -// sling : 2015-07-30 Hughes Satellite Systems Corporation +// sling : 2015-07-30 DISH Technologies L.L.C. sling // smart : 2015-07-09 Smart Communications, Inc. (SMART) @@ -9802,13 +9808,13 @@ sncf // soccer : 2015-03-26 Binky Moon, LLC soccer -// social : 2013-11-07 United TLD Holdco Ltd. +// social : 2013-11-07 Dog Beach, LLC social -// softbank : 2015-07-02 SoftBank Corp. +// softbank : 2015-07-02 SoftBank Group Corp. softbank -// software : 2014-03-20 United TLD Holdco Ltd. +// software : 2014-03-20 Dog Beach, LLC software // sohu : 2013-12-19 Sohu.com Limited @@ -9883,7 +9889,7 @@ store // stream : 2016-01-08 dot Stream Limited stream -// studio : 2015-02-11 United TLD Holdco Ltd. +// studio : 2015-02-11 Dog Beach, LLC studio // study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD @@ -10147,16 +10153,16 @@ ventures // verisign : 2015-08-13 VeriSign, Inc. verisign -// versicherung : 2014-03-20 TLD-BOX Registrydienstleistungen GmbH +// versicherung : 2014-03-20 tldbox GmbH versicherung -// vet : 2014-03-06 United TLD Holdco Ltd. +// vet : 2014-03-06 Dog Beach, LLC vet // viajes : 2013-10-17 Binky Moon, LLC viajes -// video : 2014-10-16 United TLD Holdco Ltd. +// video : 2014-10-16 Dog Beach, LLC video // vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe @@ -10381,7 +10387,7 @@ xin // xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited 网站 -// xn--6frz82g : 2013-09-23 Afilias plc +// xn--6frz82g : 2013-09-23 Afilias Limited 移动 // xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited @@ -10847,6 +10853,10 @@ b-data.io // Submitted by Anthony Voutas backplaneapp.io +// Balena : https://www.balena.io +// Submitted by Petros Angelatos +balena-devices.com + // Banzai Cloud // Submitted by Gabor Kozma app.banzaicloud.io @@ -10997,6 +11007,10 @@ cloudaccess.net cloudcontrolled.com cloudcontrolapp.com +// Cloudera, Inc. : https://www.cloudera.com/ +// Submitted by Philip Langdale +cloudera.site + // Cloudflare, Inc. : https://www.cloudflare.com/ // Submitted by Jake Riesterer workers.dev @@ -11785,6 +11799,7 @@ goip.de // Submitted by Eduardo Vela run.app a.run.app +web.app *.0emm.com appspot.com blogspot.ae @@ -11993,6 +12008,10 @@ ipifony.net mein-iserv.de test-iserv.de +// I-O DATA DEVICE, INC. : http://www.iodata.com/ +// Submitted by Yuji Minagawa +iobb.net + // Jino : https://www.jino.ru // Submitted by Sergey Ulyashin myjino.ru @@ -12019,6 +12038,11 @@ khplay.nl // Submitted by Martin Dannehl keymachine.de +// KingHost : https://king.host +// Submitted by Felipe Keller Braz +kinghost.net +uni5.net + // KnightPoint Systems, LLC : http://www.knightpoint.com/ // Submitted by Roy Keene knightpoint.systems diff --git a/fluentd/vendored_gem_src/public_suffix/lib/public_suffix/version.rb b/fluentd/vendored_gem_src/public_suffix/lib/public_suffix/version.rb index 1d649a3ac..e3130b904 100644 --- a/fluentd/vendored_gem_src/public_suffix/lib/public_suffix/version.rb +++ b/fluentd/vendored_gem_src/public_suffix/lib/public_suffix/version.rb @@ -9,5 +9,5 @@ module PublicSuffix # The current library version. - VERSION = "3.1.0" + VERSION = "3.1.1" end diff --git a/fluentd/vendored_gem_src/public_suffix/public_suffix.gemspec b/fluentd/vendored_gem_src/public_suffix/public_suffix.gemspec index e4a6cd37c..44bfccf12 100644 --- a/fluentd/vendored_gem_src/public_suffix/public_suffix.gemspec +++ b/fluentd/vendored_gem_src/public_suffix/public_suffix.gemspec @@ -12,7 +12,7 @@ Gem::Specification.new do |s| s.description = "PublicSuffix can parse and decompose a domain name into top level domain, domain and subdomains." s.licenses = ["MIT"] - s.required_ruby_version = ">= 2.3" + s.required_ruby_version = ">= 2.1" s.require_paths = ["lib"] s.files = `git ls-files`.split("\n") diff --git a/fluentd/vendored_gem_src/quantile/quantile.gemspec b/fluentd/vendored_gem_src/quantile/quantile.gemspec index 79972547d..a36c49189 100644 --- a/fluentd/vendored_gem_src/quantile/quantile.gemspec +++ b/fluentd/vendored_gem_src/quantile/quantile.gemspec @@ -14,7 +14,7 @@ Gem::Specification.new do |s| s.files = ["LICENSE".freeze, "README.md".freeze, "lib/quantile.rb".freeze, "lib/quantile/estimator.rb".freeze, "lib/quantile/quantile.rb".freeze, "lib/quantile/version.rb".freeze] s.homepage = "http://github.com/matttproud/ruby_quantile_estimation".freeze s.licenses = ["Apache 2.0".freeze] - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "Streaming Quantile Estimation".freeze end diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Africa/Casablanca.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Africa/Casablanca.rb index f459829e9..27b56c03e 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Africa/Casablanca.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Africa/Casablanca.rb @@ -112,6 +112,72 @@ module Casablanca tz.transition 2036, 11, :o3, 2111018400 tz.transition 2037, 10, :o4, 2138234400 tz.transition 2037, 11, :o3, 2141863200 + tz.transition 2038, 9, :o4, 2169079200, 29588311, 12 + tz.transition 2038, 10, :o3, 2172103200, 29588731, 12 + tz.transition 2039, 9, :o4, 2199924000, 29592595, 12 + tz.transition 2039, 10, :o3, 2202948000, 29593015, 12 + tz.transition 2040, 9, :o4, 2230164000, 29596795, 12 + tz.transition 2040, 10, :o3, 2233792800, 29597299, 12 + tz.transition 2041, 8, :o4, 2261008800, 29601079, 12 + tz.transition 2041, 9, :o3, 2264032800, 29601499, 12 + tz.transition 2042, 8, :o4, 2291248800, 29605279, 12 + tz.transition 2042, 9, :o3, 2294877600, 29605783, 12 + tz.transition 2043, 8, :o4, 2322093600, 29609563, 12 + tz.transition 2043, 9, :o3, 2325117600, 29609983, 12 + tz.transition 2044, 7, :o4, 2352938400, 29613847, 12 + tz.transition 2044, 8, :o3, 2355962400, 29614267, 12 + tz.transition 2045, 7, :o4, 2383178400, 29618047, 12 + tz.transition 2045, 8, :o3, 2386807200, 29618551, 12 + tz.transition 2046, 7, :o4, 2414023200, 29622331, 12 + tz.transition 2046, 8, :o3, 2417047200, 29622751, 12 + tz.transition 2047, 6, :o4, 2444868000, 29626615, 12 + tz.transition 2047, 7, :o3, 2447892000, 29627035, 12 + tz.transition 2048, 6, :o4, 2475108000, 29630815, 12 + tz.transition 2048, 7, :o3, 2478736800, 29631319, 12 + tz.transition 2049, 5, :o4, 2505952800, 29635099, 12 + tz.transition 2049, 7, :o3, 2508976800, 29635519, 12 + tz.transition 2050, 5, :o4, 2536192800, 29639299, 12 + tz.transition 2050, 6, :o3, 2539821600, 29639803, 12 + tz.transition 2051, 5, :o4, 2567037600, 29643583, 12 + tz.transition 2051, 6, :o3, 2570061600, 29644003, 12 + tz.transition 2052, 4, :o4, 2597882400, 29647867, 12 + tz.transition 2052, 6, :o3, 2600906400, 29648287, 12 + tz.transition 2053, 4, :o4, 2628122400, 29652067, 12 + tz.transition 2053, 5, :o3, 2631751200, 29652571, 12 + tz.transition 2054, 4, :o4, 2658967200, 29656351, 12 + tz.transition 2054, 5, :o3, 2661991200, 29656771, 12 + tz.transition 2055, 3, :o4, 2689812000, 29660635, 12 + tz.transition 2055, 5, :o3, 2692836000, 29661055, 12 + tz.transition 2056, 3, :o4, 2720052000, 29664835, 12 + tz.transition 2056, 4, :o3, 2723680800, 29665339, 12 + tz.transition 2057, 3, :o4, 2750896800, 29669119, 12 + tz.transition 2057, 4, :o3, 2753920800, 29669539, 12 + tz.transition 2058, 2, :o4, 2781136800, 29673319, 12 + tz.transition 2058, 3, :o3, 2784765600, 29673823, 12 + tz.transition 2059, 2, :o4, 2811981600, 29677603, 12 + tz.transition 2059, 3, :o3, 2815005600, 29678023, 12 + tz.transition 2060, 2, :o4, 2842826400, 29681887, 12 + tz.transition 2060, 3, :o3, 2845850400, 29682307, 12 + tz.transition 2061, 1, :o4, 2873066400, 29686087, 12 + tz.transition 2061, 2, :o3, 2876695200, 29686591, 12 + tz.transition 2062, 1, :o4, 2903911200, 29690371, 12 + tz.transition 2062, 2, :o3, 2906935200, 29690791, 12 + tz.transition 2062, 12, :o4, 2934756000, 29694655, 12 + tz.transition 2063, 2, :o3, 2937780000, 29695075, 12 + tz.transition 2063, 12, :o4, 2964996000, 29698855, 12 + tz.transition 2064, 1, :o3, 2968020000, 29699275, 12 + tz.transition 2064, 12, :o4, 2995840800, 29703139, 12 + tz.transition 2065, 1, :o3, 2998864800, 29703559, 12 + tz.transition 2065, 11, :o4, 3026080800, 29707339, 12 + tz.transition 2066, 1, :o3, 3029709600, 29707843, 12 + tz.transition 2066, 11, :o4, 3056925600, 29711623, 12 + tz.transition 2066, 12, :o3, 3059949600, 29712043, 12 + tz.transition 2067, 11, :o4, 3087770400, 29715907, 12 + tz.transition 2067, 12, :o3, 3090794400, 29716327, 12 + tz.transition 2068, 10, :o4, 3118010400, 29720107, 12 + tz.transition 2068, 12, :o3, 3121639200, 29720611, 12 + tz.transition 2069, 10, :o4, 3148855200, 29724391, 12 + tz.transition 2069, 11, :o3, 3151879200, 29724811, 12 end end end diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Africa/El_Aaiun.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Africa/El_Aaiun.rb index 06ab6a9c3..6493792c8 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Africa/El_Aaiun.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Africa/El_Aaiun.rb @@ -102,6 +102,72 @@ module El_Aaiun tz.transition 2036, 11, :o4, 2111018400 tz.transition 2037, 10, :o5, 2138234400 tz.transition 2037, 11, :o4, 2141863200 + tz.transition 2038, 9, :o5, 2169079200, 29588311, 12 + tz.transition 2038, 10, :o4, 2172103200, 29588731, 12 + tz.transition 2039, 9, :o5, 2199924000, 29592595, 12 + tz.transition 2039, 10, :o4, 2202948000, 29593015, 12 + tz.transition 2040, 9, :o5, 2230164000, 29596795, 12 + tz.transition 2040, 10, :o4, 2233792800, 29597299, 12 + tz.transition 2041, 8, :o5, 2261008800, 29601079, 12 + tz.transition 2041, 9, :o4, 2264032800, 29601499, 12 + tz.transition 2042, 8, :o5, 2291248800, 29605279, 12 + tz.transition 2042, 9, :o4, 2294877600, 29605783, 12 + tz.transition 2043, 8, :o5, 2322093600, 29609563, 12 + tz.transition 2043, 9, :o4, 2325117600, 29609983, 12 + tz.transition 2044, 7, :o5, 2352938400, 29613847, 12 + tz.transition 2044, 8, :o4, 2355962400, 29614267, 12 + tz.transition 2045, 7, :o5, 2383178400, 29618047, 12 + tz.transition 2045, 8, :o4, 2386807200, 29618551, 12 + tz.transition 2046, 7, :o5, 2414023200, 29622331, 12 + tz.transition 2046, 8, :o4, 2417047200, 29622751, 12 + tz.transition 2047, 6, :o5, 2444868000, 29626615, 12 + tz.transition 2047, 7, :o4, 2447892000, 29627035, 12 + tz.transition 2048, 6, :o5, 2475108000, 29630815, 12 + tz.transition 2048, 7, :o4, 2478736800, 29631319, 12 + tz.transition 2049, 5, :o5, 2505952800, 29635099, 12 + tz.transition 2049, 7, :o4, 2508976800, 29635519, 12 + tz.transition 2050, 5, :o5, 2536192800, 29639299, 12 + tz.transition 2050, 6, :o4, 2539821600, 29639803, 12 + tz.transition 2051, 5, :o5, 2567037600, 29643583, 12 + tz.transition 2051, 6, :o4, 2570061600, 29644003, 12 + tz.transition 2052, 4, :o5, 2597882400, 29647867, 12 + tz.transition 2052, 6, :o4, 2600906400, 29648287, 12 + tz.transition 2053, 4, :o5, 2628122400, 29652067, 12 + tz.transition 2053, 5, :o4, 2631751200, 29652571, 12 + tz.transition 2054, 4, :o5, 2658967200, 29656351, 12 + tz.transition 2054, 5, :o4, 2661991200, 29656771, 12 + tz.transition 2055, 3, :o5, 2689812000, 29660635, 12 + tz.transition 2055, 5, :o4, 2692836000, 29661055, 12 + tz.transition 2056, 3, :o5, 2720052000, 29664835, 12 + tz.transition 2056, 4, :o4, 2723680800, 29665339, 12 + tz.transition 2057, 3, :o5, 2750896800, 29669119, 12 + tz.transition 2057, 4, :o4, 2753920800, 29669539, 12 + tz.transition 2058, 2, :o5, 2781136800, 29673319, 12 + tz.transition 2058, 3, :o4, 2784765600, 29673823, 12 + tz.transition 2059, 2, :o5, 2811981600, 29677603, 12 + tz.transition 2059, 3, :o4, 2815005600, 29678023, 12 + tz.transition 2060, 2, :o5, 2842826400, 29681887, 12 + tz.transition 2060, 3, :o4, 2845850400, 29682307, 12 + tz.transition 2061, 1, :o5, 2873066400, 29686087, 12 + tz.transition 2061, 2, :o4, 2876695200, 29686591, 12 + tz.transition 2062, 1, :o5, 2903911200, 29690371, 12 + tz.transition 2062, 2, :o4, 2906935200, 29690791, 12 + tz.transition 2062, 12, :o5, 2934756000, 29694655, 12 + tz.transition 2063, 2, :o4, 2937780000, 29695075, 12 + tz.transition 2063, 12, :o5, 2964996000, 29698855, 12 + tz.transition 2064, 1, :o4, 2968020000, 29699275, 12 + tz.transition 2064, 12, :o5, 2995840800, 29703139, 12 + tz.transition 2065, 1, :o4, 2998864800, 29703559, 12 + tz.transition 2065, 11, :o5, 3026080800, 29707339, 12 + tz.transition 2066, 1, :o4, 3029709600, 29707843, 12 + tz.transition 2066, 11, :o5, 3056925600, 29711623, 12 + tz.transition 2066, 12, :o4, 3059949600, 29712043, 12 + tz.transition 2067, 11, :o5, 3087770400, 29715907, 12 + tz.transition 2067, 12, :o4, 3090794400, 29716327, 12 + tz.transition 2068, 10, :o5, 3118010400, 29720107, 12 + tz.transition 2068, 12, :o4, 3121639200, 29720611, 12 + tz.transition 2069, 10, :o5, 3148855200, 29724391, 12 + tz.transition 2069, 11, :o4, 3151879200, 29724811, 12 end end end diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Campo_Grande.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Campo_Grande.rb index 88ea6ab55..ca0cb9889 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Campo_Grande.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Campo_Grande.rb @@ -106,106 +106,6 @@ module Campo_Grande tz.transition 2018, 2, :o1, 1518922800 tz.transition 2018, 11, :o2, 1541304000 tz.transition 2019, 2, :o1, 1550372400 - tz.transition 2019, 11, :o2, 1572753600 - tz.transition 2020, 2, :o1, 1581822000 - tz.transition 2020, 11, :o2, 1604203200 - tz.transition 2021, 2, :o1, 1613876400 - tz.transition 2021, 11, :o2, 1636257600 - tz.transition 2022, 2, :o1, 1645326000 - tz.transition 2022, 11, :o2, 1667707200 - tz.transition 2023, 2, :o1, 1677380400 - tz.transition 2023, 11, :o2, 1699156800 - tz.transition 2024, 2, :o1, 1708225200 - tz.transition 2024, 11, :o2, 1730606400 - tz.transition 2025, 2, :o1, 1739674800 - tz.transition 2025, 11, :o2, 1762056000 - tz.transition 2026, 2, :o1, 1771729200 - tz.transition 2026, 11, :o2, 1793505600 - tz.transition 2027, 2, :o1, 1803178800 - tz.transition 2027, 11, :o2, 1825560000 - tz.transition 2028, 2, :o1, 1834628400 - tz.transition 2028, 11, :o2, 1857009600 - tz.transition 2029, 2, :o1, 1866078000 - tz.transition 2029, 11, :o2, 1888459200 - tz.transition 2030, 2, :o1, 1897527600 - tz.transition 2030, 11, :o2, 1919908800 - tz.transition 2031, 2, :o1, 1928977200 - tz.transition 2031, 11, :o2, 1951358400 - tz.transition 2032, 2, :o1, 1960426800 - tz.transition 2032, 11, :o2, 1983412800 - tz.transition 2033, 2, :o1, 1992481200 - tz.transition 2033, 11, :o2, 2014862400 - tz.transition 2034, 2, :o1, 2024535600 - tz.transition 2034, 11, :o2, 2046312000 - tz.transition 2035, 2, :o1, 2055380400 - tz.transition 2035, 11, :o2, 2077761600 - tz.transition 2036, 2, :o1, 2086830000 - tz.transition 2036, 11, :o2, 2109211200 - tz.transition 2037, 2, :o1, 2118884400 - tz.transition 2037, 11, :o2, 2140660800 - tz.transition 2038, 2, :o1, 2150334000, 19723805, 8 - tz.transition 2038, 11, :o2, 2172715200, 7397204, 3 - tz.transition 2039, 2, :o1, 2181783600, 19726717, 8 - tz.transition 2039, 11, :o2, 2204164800, 7398296, 3 - tz.transition 2040, 2, :o1, 2213233200, 19729629, 8 - tz.transition 2040, 11, :o2, 2235614400, 7399388, 3 - tz.transition 2041, 2, :o1, 2244682800, 19732541, 8 - tz.transition 2041, 11, :o2, 2267064000, 7400480, 3 - tz.transition 2042, 2, :o1, 2276132400, 19735453, 8 - tz.transition 2042, 11, :o2, 2298513600, 7401572, 3 - tz.transition 2043, 2, :o1, 2307582000, 19738365, 8 - tz.transition 2043, 11, :o2, 2329963200, 7402664, 3 - tz.transition 2044, 2, :o1, 2339636400, 19741333, 8 - tz.transition 2044, 11, :o2, 2362017600, 7403777, 3 - tz.transition 2045, 2, :o1, 2371086000, 19744245, 8 - tz.transition 2045, 11, :o2, 2393467200, 7404869, 3 - tz.transition 2046, 2, :o1, 2402535600, 19747157, 8 - tz.transition 2046, 11, :o2, 2424916800, 7405961, 3 - tz.transition 2047, 2, :o1, 2433985200, 19750069, 8 - tz.transition 2047, 11, :o2, 2456366400, 7407053, 3 - tz.transition 2048, 2, :o1, 2465434800, 19752981, 8 - tz.transition 2048, 11, :o2, 2487816000, 7408145, 3 - tz.transition 2049, 2, :o1, 2497489200, 19755949, 8 - tz.transition 2049, 11, :o2, 2519870400, 7409258, 3 - tz.transition 2050, 2, :o1, 2528938800, 19758861, 8 - tz.transition 2050, 11, :o2, 2551320000, 7410350, 3 - tz.transition 2051, 2, :o1, 2560388400, 19761773, 8 - tz.transition 2051, 11, :o2, 2582769600, 7411442, 3 - tz.transition 2052, 2, :o1, 2591838000, 19764685, 8 - tz.transition 2052, 11, :o2, 2614219200, 7412534, 3 - tz.transition 2053, 2, :o1, 2623287600, 19767597, 8 - tz.transition 2053, 11, :o2, 2645668800, 7413626, 3 - tz.transition 2054, 2, :o1, 2654737200, 19770509, 8 - tz.transition 2054, 11, :o2, 2677118400, 7414718, 3 - tz.transition 2055, 2, :o1, 2686791600, 19773477, 8 - tz.transition 2055, 11, :o2, 2709172800, 7415831, 3 - tz.transition 2056, 2, :o1, 2718241200, 19776389, 8 - tz.transition 2056, 11, :o2, 2740622400, 7416923, 3 - tz.transition 2057, 2, :o1, 2749690800, 19779301, 8 - tz.transition 2057, 11, :o2, 2772072000, 7418015, 3 - tz.transition 2058, 2, :o1, 2781140400, 19782213, 8 - tz.transition 2058, 11, :o2, 2803521600, 7419107, 3 - tz.transition 2059, 2, :o1, 2812590000, 19785125, 8 - tz.transition 2059, 11, :o2, 2834971200, 7420199, 3 - tz.transition 2060, 2, :o1, 2844039600, 19788037, 8 - tz.transition 2060, 11, :o2, 2867025600, 7421312, 3 - tz.transition 2061, 2, :o1, 2876094000, 19791005, 8 - tz.transition 2061, 11, :o2, 2898475200, 7422404, 3 - tz.transition 2062, 2, :o1, 2907543600, 19793917, 8 - tz.transition 2062, 11, :o2, 2929924800, 7423496, 3 - tz.transition 2063, 2, :o1, 2938993200, 19796829, 8 - tz.transition 2063, 11, :o2, 2961374400, 7424588, 3 - tz.transition 2064, 2, :o1, 2970442800, 19799741, 8 - tz.transition 2064, 11, :o2, 2992824000, 7425680, 3 - tz.transition 2065, 2, :o1, 3001892400, 19802653, 8 - tz.transition 2065, 11, :o2, 3024273600, 7426772, 3 - tz.transition 2066, 2, :o1, 3033946800, 19805621, 8 - tz.transition 2066, 11, :o2, 3056328000, 7427885, 3 - tz.transition 2067, 2, :o1, 3065396400, 19808533, 8 - tz.transition 2067, 11, :o2, 3087777600, 7428977, 3 - tz.transition 2068, 2, :o1, 3096846000, 19811445, 8 - tz.transition 2068, 11, :o2, 3119227200, 7430069, 3 - tz.transition 2069, 2, :o1, 3128295600, 19814357, 8 end end end diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Cuiaba.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Cuiaba.rb index b4d53569a..55754b6a2 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Cuiaba.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Cuiaba.rb @@ -104,106 +104,6 @@ module Cuiaba tz.transition 2018, 2, :o1, 1518922800 tz.transition 2018, 11, :o2, 1541304000 tz.transition 2019, 2, :o1, 1550372400 - tz.transition 2019, 11, :o2, 1572753600 - tz.transition 2020, 2, :o1, 1581822000 - tz.transition 2020, 11, :o2, 1604203200 - tz.transition 2021, 2, :o1, 1613876400 - tz.transition 2021, 11, :o2, 1636257600 - tz.transition 2022, 2, :o1, 1645326000 - tz.transition 2022, 11, :o2, 1667707200 - tz.transition 2023, 2, :o1, 1677380400 - tz.transition 2023, 11, :o2, 1699156800 - tz.transition 2024, 2, :o1, 1708225200 - tz.transition 2024, 11, :o2, 1730606400 - tz.transition 2025, 2, :o1, 1739674800 - tz.transition 2025, 11, :o2, 1762056000 - tz.transition 2026, 2, :o1, 1771729200 - tz.transition 2026, 11, :o2, 1793505600 - tz.transition 2027, 2, :o1, 1803178800 - tz.transition 2027, 11, :o2, 1825560000 - tz.transition 2028, 2, :o1, 1834628400 - tz.transition 2028, 11, :o2, 1857009600 - tz.transition 2029, 2, :o1, 1866078000 - tz.transition 2029, 11, :o2, 1888459200 - tz.transition 2030, 2, :o1, 1897527600 - tz.transition 2030, 11, :o2, 1919908800 - tz.transition 2031, 2, :o1, 1928977200 - tz.transition 2031, 11, :o2, 1951358400 - tz.transition 2032, 2, :o1, 1960426800 - tz.transition 2032, 11, :o2, 1983412800 - tz.transition 2033, 2, :o1, 1992481200 - tz.transition 2033, 11, :o2, 2014862400 - tz.transition 2034, 2, :o1, 2024535600 - tz.transition 2034, 11, :o2, 2046312000 - tz.transition 2035, 2, :o1, 2055380400 - tz.transition 2035, 11, :o2, 2077761600 - tz.transition 2036, 2, :o1, 2086830000 - tz.transition 2036, 11, :o2, 2109211200 - tz.transition 2037, 2, :o1, 2118884400 - tz.transition 2037, 11, :o2, 2140660800 - tz.transition 2038, 2, :o1, 2150334000, 19723805, 8 - tz.transition 2038, 11, :o2, 2172715200, 7397204, 3 - tz.transition 2039, 2, :o1, 2181783600, 19726717, 8 - tz.transition 2039, 11, :o2, 2204164800, 7398296, 3 - tz.transition 2040, 2, :o1, 2213233200, 19729629, 8 - tz.transition 2040, 11, :o2, 2235614400, 7399388, 3 - tz.transition 2041, 2, :o1, 2244682800, 19732541, 8 - tz.transition 2041, 11, :o2, 2267064000, 7400480, 3 - tz.transition 2042, 2, :o1, 2276132400, 19735453, 8 - tz.transition 2042, 11, :o2, 2298513600, 7401572, 3 - tz.transition 2043, 2, :o1, 2307582000, 19738365, 8 - tz.transition 2043, 11, :o2, 2329963200, 7402664, 3 - tz.transition 2044, 2, :o1, 2339636400, 19741333, 8 - tz.transition 2044, 11, :o2, 2362017600, 7403777, 3 - tz.transition 2045, 2, :o1, 2371086000, 19744245, 8 - tz.transition 2045, 11, :o2, 2393467200, 7404869, 3 - tz.transition 2046, 2, :o1, 2402535600, 19747157, 8 - tz.transition 2046, 11, :o2, 2424916800, 7405961, 3 - tz.transition 2047, 2, :o1, 2433985200, 19750069, 8 - tz.transition 2047, 11, :o2, 2456366400, 7407053, 3 - tz.transition 2048, 2, :o1, 2465434800, 19752981, 8 - tz.transition 2048, 11, :o2, 2487816000, 7408145, 3 - tz.transition 2049, 2, :o1, 2497489200, 19755949, 8 - tz.transition 2049, 11, :o2, 2519870400, 7409258, 3 - tz.transition 2050, 2, :o1, 2528938800, 19758861, 8 - tz.transition 2050, 11, :o2, 2551320000, 7410350, 3 - tz.transition 2051, 2, :o1, 2560388400, 19761773, 8 - tz.transition 2051, 11, :o2, 2582769600, 7411442, 3 - tz.transition 2052, 2, :o1, 2591838000, 19764685, 8 - tz.transition 2052, 11, :o2, 2614219200, 7412534, 3 - tz.transition 2053, 2, :o1, 2623287600, 19767597, 8 - tz.transition 2053, 11, :o2, 2645668800, 7413626, 3 - tz.transition 2054, 2, :o1, 2654737200, 19770509, 8 - tz.transition 2054, 11, :o2, 2677118400, 7414718, 3 - tz.transition 2055, 2, :o1, 2686791600, 19773477, 8 - tz.transition 2055, 11, :o2, 2709172800, 7415831, 3 - tz.transition 2056, 2, :o1, 2718241200, 19776389, 8 - tz.transition 2056, 11, :o2, 2740622400, 7416923, 3 - tz.transition 2057, 2, :o1, 2749690800, 19779301, 8 - tz.transition 2057, 11, :o2, 2772072000, 7418015, 3 - tz.transition 2058, 2, :o1, 2781140400, 19782213, 8 - tz.transition 2058, 11, :o2, 2803521600, 7419107, 3 - tz.transition 2059, 2, :o1, 2812590000, 19785125, 8 - tz.transition 2059, 11, :o2, 2834971200, 7420199, 3 - tz.transition 2060, 2, :o1, 2844039600, 19788037, 8 - tz.transition 2060, 11, :o2, 2867025600, 7421312, 3 - tz.transition 2061, 2, :o1, 2876094000, 19791005, 8 - tz.transition 2061, 11, :o2, 2898475200, 7422404, 3 - tz.transition 2062, 2, :o1, 2907543600, 19793917, 8 - tz.transition 2062, 11, :o2, 2929924800, 7423496, 3 - tz.transition 2063, 2, :o1, 2938993200, 19796829, 8 - tz.transition 2063, 11, :o2, 2961374400, 7424588, 3 - tz.transition 2064, 2, :o1, 2970442800, 19799741, 8 - tz.transition 2064, 11, :o2, 2992824000, 7425680, 3 - tz.transition 2065, 2, :o1, 3001892400, 19802653, 8 - tz.transition 2065, 11, :o2, 3024273600, 7426772, 3 - tz.transition 2066, 2, :o1, 3033946800, 19805621, 8 - tz.transition 2066, 11, :o2, 3056328000, 7427885, 3 - tz.transition 2067, 2, :o1, 3065396400, 19808533, 8 - tz.transition 2067, 11, :o2, 3087777600, 7428977, 3 - tz.transition 2068, 2, :o1, 3096846000, 19811445, 8 - tz.transition 2068, 11, :o2, 3119227200, 7430069, 3 - tz.transition 2069, 2, :o1, 3128295600, 19814357, 8 end end end diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Sao_Paulo.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Sao_Paulo.rb index c8ef0577b..bd8b639c7 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Sao_Paulo.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/America/Sao_Paulo.rb @@ -106,106 +106,6 @@ module Sao_Paulo tz.transition 2018, 2, :o1, 1518919200 tz.transition 2018, 11, :o2, 1541300400 tz.transition 2019, 2, :o1, 1550368800 - tz.transition 2019, 11, :o2, 1572750000 - tz.transition 2020, 2, :o1, 1581818400 - tz.transition 2020, 11, :o2, 1604199600 - tz.transition 2021, 2, :o1, 1613872800 - tz.transition 2021, 11, :o2, 1636254000 - tz.transition 2022, 2, :o1, 1645322400 - tz.transition 2022, 11, :o2, 1667703600 - tz.transition 2023, 2, :o1, 1677376800 - tz.transition 2023, 11, :o2, 1699153200 - tz.transition 2024, 2, :o1, 1708221600 - tz.transition 2024, 11, :o2, 1730602800 - tz.transition 2025, 2, :o1, 1739671200 - tz.transition 2025, 11, :o2, 1762052400 - tz.transition 2026, 2, :o1, 1771725600 - tz.transition 2026, 11, :o2, 1793502000 - tz.transition 2027, 2, :o1, 1803175200 - tz.transition 2027, 11, :o2, 1825556400 - tz.transition 2028, 2, :o1, 1834624800 - tz.transition 2028, 11, :o2, 1857006000 - tz.transition 2029, 2, :o1, 1866074400 - tz.transition 2029, 11, :o2, 1888455600 - tz.transition 2030, 2, :o1, 1897524000 - tz.transition 2030, 11, :o2, 1919905200 - tz.transition 2031, 2, :o1, 1928973600 - tz.transition 2031, 11, :o2, 1951354800 - tz.transition 2032, 2, :o1, 1960423200 - tz.transition 2032, 11, :o2, 1983409200 - tz.transition 2033, 2, :o1, 1992477600 - tz.transition 2033, 11, :o2, 2014858800 - tz.transition 2034, 2, :o1, 2024532000 - tz.transition 2034, 11, :o2, 2046308400 - tz.transition 2035, 2, :o1, 2055376800 - tz.transition 2035, 11, :o2, 2077758000 - tz.transition 2036, 2, :o1, 2086826400 - tz.transition 2036, 11, :o2, 2109207600 - tz.transition 2037, 2, :o1, 2118880800 - tz.transition 2037, 11, :o2, 2140657200 - tz.transition 2038, 2, :o1, 2150330400, 29585707, 12 - tz.transition 2038, 11, :o2, 2172711600, 19725877, 8 - tz.transition 2039, 2, :o1, 2181780000, 29590075, 12 - tz.transition 2039, 11, :o2, 2204161200, 19728789, 8 - tz.transition 2040, 2, :o1, 2213229600, 29594443, 12 - tz.transition 2040, 11, :o2, 2235610800, 19731701, 8 - tz.transition 2041, 2, :o1, 2244679200, 29598811, 12 - tz.transition 2041, 11, :o2, 2267060400, 19734613, 8 - tz.transition 2042, 2, :o1, 2276128800, 29603179, 12 - tz.transition 2042, 11, :o2, 2298510000, 19737525, 8 - tz.transition 2043, 2, :o1, 2307578400, 29607547, 12 - tz.transition 2043, 11, :o2, 2329959600, 19740437, 8 - tz.transition 2044, 2, :o1, 2339632800, 29611999, 12 - tz.transition 2044, 11, :o2, 2362014000, 19743405, 8 - tz.transition 2045, 2, :o1, 2371082400, 29616367, 12 - tz.transition 2045, 11, :o2, 2393463600, 19746317, 8 - tz.transition 2046, 2, :o1, 2402532000, 29620735, 12 - tz.transition 2046, 11, :o2, 2424913200, 19749229, 8 - tz.transition 2047, 2, :o1, 2433981600, 29625103, 12 - tz.transition 2047, 11, :o2, 2456362800, 19752141, 8 - tz.transition 2048, 2, :o1, 2465431200, 29629471, 12 - tz.transition 2048, 11, :o2, 2487812400, 19755053, 8 - tz.transition 2049, 2, :o1, 2497485600, 29633923, 12 - tz.transition 2049, 11, :o2, 2519866800, 19758021, 8 - tz.transition 2050, 2, :o1, 2528935200, 29638291, 12 - tz.transition 2050, 11, :o2, 2551316400, 19760933, 8 - tz.transition 2051, 2, :o1, 2560384800, 29642659, 12 - tz.transition 2051, 11, :o2, 2582766000, 19763845, 8 - tz.transition 2052, 2, :o1, 2591834400, 29647027, 12 - tz.transition 2052, 11, :o2, 2614215600, 19766757, 8 - tz.transition 2053, 2, :o1, 2623284000, 29651395, 12 - tz.transition 2053, 11, :o2, 2645665200, 19769669, 8 - tz.transition 2054, 2, :o1, 2654733600, 29655763, 12 - tz.transition 2054, 11, :o2, 2677114800, 19772581, 8 - tz.transition 2055, 2, :o1, 2686788000, 29660215, 12 - tz.transition 2055, 11, :o2, 2709169200, 19775549, 8 - tz.transition 2056, 2, :o1, 2718237600, 29664583, 12 - tz.transition 2056, 11, :o2, 2740618800, 19778461, 8 - tz.transition 2057, 2, :o1, 2749687200, 29668951, 12 - tz.transition 2057, 11, :o2, 2772068400, 19781373, 8 - tz.transition 2058, 2, :o1, 2781136800, 29673319, 12 - tz.transition 2058, 11, :o2, 2803518000, 19784285, 8 - tz.transition 2059, 2, :o1, 2812586400, 29677687, 12 - tz.transition 2059, 11, :o2, 2834967600, 19787197, 8 - tz.transition 2060, 2, :o1, 2844036000, 29682055, 12 - tz.transition 2060, 11, :o2, 2867022000, 19790165, 8 - tz.transition 2061, 2, :o1, 2876090400, 29686507, 12 - tz.transition 2061, 11, :o2, 2898471600, 19793077, 8 - tz.transition 2062, 2, :o1, 2907540000, 29690875, 12 - tz.transition 2062, 11, :o2, 2929921200, 19795989, 8 - tz.transition 2063, 2, :o1, 2938989600, 29695243, 12 - tz.transition 2063, 11, :o2, 2961370800, 19798901, 8 - tz.transition 2064, 2, :o1, 2970439200, 29699611, 12 - tz.transition 2064, 11, :o2, 2992820400, 19801813, 8 - tz.transition 2065, 2, :o1, 3001888800, 29703979, 12 - tz.transition 2065, 11, :o2, 3024270000, 19804725, 8 - tz.transition 2066, 2, :o1, 3033943200, 29708431, 12 - tz.transition 2066, 11, :o2, 3056324400, 19807693, 8 - tz.transition 2067, 2, :o1, 3065392800, 29712799, 12 - tz.transition 2067, 11, :o2, 3087774000, 19810605, 8 - tz.transition 2068, 2, :o1, 3096842400, 29717167, 12 - tz.transition 2068, 11, :o2, 3119223600, 19813517, 8 - tz.transition 2069, 2, :o1, 3128292000, 29721535, 12 end end end diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Gaza.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Gaza.rb index 3ed810ec3..9fbbf6a0b 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Gaza.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Gaza.rb @@ -127,107 +127,107 @@ module Gaza tz.transition 2017, 10, :o1, 1509141600 tz.transition 2018, 3, :o2, 1521846000 tz.transition 2018, 10, :o1, 1540591200 - tz.transition 2019, 3, :o2, 1553900400 + tz.transition 2019, 3, :o2, 1553810400 tz.transition 2019, 10, :o1, 1572040800 - tz.transition 2020, 3, :o2, 1585350000 + tz.transition 2020, 3, :o2, 1585260000 tz.transition 2020, 10, :o1, 1604095200 - tz.transition 2021, 3, :o2, 1616799600 + tz.transition 2021, 3, :o2, 1616709600 tz.transition 2021, 10, :o1, 1635544800 - tz.transition 2022, 3, :o2, 1648249200 + tz.transition 2022, 3, :o2, 1648159200 tz.transition 2022, 10, :o1, 1666994400 - tz.transition 2023, 3, :o2, 1679698800 + tz.transition 2023, 3, :o2, 1680213600 tz.transition 2023, 10, :o1, 1698444000 - tz.transition 2024, 3, :o2, 1711753200 + tz.transition 2024, 3, :o2, 1711663200 tz.transition 2024, 10, :o1, 1729893600 - tz.transition 2025, 3, :o2, 1743202800 + tz.transition 2025, 3, :o2, 1743112800 tz.transition 2025, 10, :o1, 1761343200 - tz.transition 2026, 3, :o2, 1774652400 + tz.transition 2026, 3, :o2, 1774562400 tz.transition 2026, 10, :o1, 1793397600 - tz.transition 2027, 3, :o2, 1806102000 + tz.transition 2027, 3, :o2, 1806012000 tz.transition 2027, 10, :o1, 1824847200 - tz.transition 2028, 3, :o2, 1837551600 + tz.transition 2028, 3, :o2, 1838066400 tz.transition 2028, 10, :o1, 1856296800 - tz.transition 2029, 3, :o2, 1869001200 + tz.transition 2029, 3, :o2, 1869516000 tz.transition 2029, 10, :o1, 1887746400 - tz.transition 2030, 3, :o2, 1901055600 + tz.transition 2030, 3, :o2, 1900965600 tz.transition 2030, 10, :o1, 1919196000 - tz.transition 2031, 3, :o2, 1932505200 + tz.transition 2031, 3, :o2, 1932415200 tz.transition 2031, 10, :o1, 1950645600 - tz.transition 2032, 3, :o2, 1963954800 + tz.transition 2032, 3, :o2, 1963864800 tz.transition 2032, 10, :o1, 1982700000 - tz.transition 2033, 3, :o2, 1995404400 + tz.transition 2033, 3, :o2, 1995314400 tz.transition 2033, 10, :o1, 2014149600 - tz.transition 2034, 3, :o2, 2026854000 + tz.transition 2034, 3, :o2, 2027368800 tz.transition 2034, 10, :o1, 2045599200 - tz.transition 2035, 3, :o2, 2058303600 + tz.transition 2035, 3, :o2, 2058818400 tz.transition 2035, 10, :o1, 2077048800 - tz.transition 2036, 3, :o2, 2090358000 + tz.transition 2036, 3, :o2, 2090268000 tz.transition 2036, 10, :o1, 2108498400 - tz.transition 2037, 3, :o2, 2121807600 + tz.transition 2037, 3, :o2, 2121717600 tz.transition 2037, 10, :o1, 2140552800 - tz.transition 2038, 3, :o2, 2153257200, 59172227, 24 + tz.transition 2038, 3, :o2, 2153167200, 29586101, 12 tz.transition 2038, 10, :o1, 2172002400, 29588717, 12 - tz.transition 2039, 3, :o2, 2184706800, 59180963, 24 + tz.transition 2039, 3, :o2, 2184616800, 29590469, 12 tz.transition 2039, 10, :o1, 2203452000, 29593085, 12 - tz.transition 2040, 3, :o2, 2216156400, 59189699, 24 + tz.transition 2040, 3, :o2, 2216671200, 29594921, 12 tz.transition 2040, 10, :o1, 2234901600, 29597453, 12 - tz.transition 2041, 3, :o2, 2248210800, 59198603, 24 + tz.transition 2041, 3, :o2, 2248120800, 29599289, 12 tz.transition 2041, 10, :o1, 2266351200, 29601821, 12 - tz.transition 2042, 3, :o2, 2279660400, 59207339, 24 + tz.transition 2042, 3, :o2, 2279570400, 29603657, 12 tz.transition 2042, 10, :o1, 2297800800, 29606189, 12 - tz.transition 2043, 3, :o2, 2311110000, 59216075, 24 + tz.transition 2043, 3, :o2, 2311020000, 29608025, 12 tz.transition 2043, 10, :o1, 2329855200, 29610641, 12 - tz.transition 2044, 3, :o2, 2342559600, 59224811, 24 + tz.transition 2044, 3, :o2, 2342469600, 29612393, 12 tz.transition 2044, 10, :o1, 2361304800, 29615009, 12 - tz.transition 2045, 3, :o2, 2374009200, 59233547, 24 + tz.transition 2045, 3, :o2, 2374524000, 29616845, 12 tz.transition 2045, 10, :o1, 2392754400, 29619377, 12 - tz.transition 2046, 3, :o2, 2405458800, 59242283, 24 + tz.transition 2046, 3, :o2, 2405973600, 29621213, 12 tz.transition 2046, 10, :o1, 2424204000, 29623745, 12 - tz.transition 2047, 3, :o2, 2437513200, 59251187, 24 + tz.transition 2047, 3, :o2, 2437423200, 29625581, 12 tz.transition 2047, 10, :o1, 2455653600, 29628113, 12 - tz.transition 2048, 3, :o2, 2468962800, 59259923, 24 + tz.transition 2048, 3, :o2, 2468872800, 29629949, 12 tz.transition 2048, 10, :o1, 2487708000, 29632565, 12 - tz.transition 2049, 3, :o2, 2500412400, 59268659, 24 + tz.transition 2049, 3, :o2, 2500322400, 29634317, 12 tz.transition 2049, 10, :o1, 2519157600, 29636933, 12 - tz.transition 2050, 3, :o2, 2531862000, 59277395, 24 + tz.transition 2050, 3, :o2, 2531772000, 29638685, 12 tz.transition 2050, 10, :o1, 2550607200, 29641301, 12 - tz.transition 2051, 3, :o2, 2563311600, 59286131, 24 + tz.transition 2051, 3, :o2, 2563826400, 29643137, 12 tz.transition 2051, 10, :o1, 2582056800, 29645669, 12 - tz.transition 2052, 3, :o2, 2595366000, 59295035, 24 + tz.transition 2052, 3, :o2, 2595276000, 29647505, 12 tz.transition 2052, 10, :o1, 2613506400, 29650037, 12 - tz.transition 2053, 3, :o2, 2626815600, 59303771, 24 + tz.transition 2053, 3, :o2, 2626725600, 29651873, 12 tz.transition 2053, 10, :o1, 2644956000, 29654405, 12 - tz.transition 2054, 3, :o2, 2658265200, 59312507, 24 + tz.transition 2054, 3, :o2, 2658175200, 29656241, 12 tz.transition 2054, 10, :o1, 2677010400, 29658857, 12 - tz.transition 2055, 3, :o2, 2689714800, 59321243, 24 + tz.transition 2055, 3, :o2, 2689624800, 29660609, 12 tz.transition 2055, 10, :o1, 2708460000, 29663225, 12 - tz.transition 2056, 3, :o2, 2721164400, 59329979, 24 + tz.transition 2056, 3, :o2, 2721679200, 29665061, 12 tz.transition 2056, 10, :o1, 2739909600, 29667593, 12 - tz.transition 2057, 3, :o2, 2752614000, 59338715, 24 + tz.transition 2057, 3, :o2, 2753128800, 29669429, 12 tz.transition 2057, 10, :o1, 2771359200, 29671961, 12 - tz.transition 2058, 3, :o2, 2784668400, 59347619, 24 + tz.transition 2058, 3, :o2, 2784578400, 29673797, 12 tz.transition 2058, 10, :o1, 2802808800, 29676329, 12 - tz.transition 2059, 3, :o2, 2816118000, 59356355, 24 + tz.transition 2059, 3, :o2, 2816028000, 29678165, 12 tz.transition 2059, 10, :o1, 2834258400, 29680697, 12 - tz.transition 2060, 3, :o2, 2847567600, 59365091, 24 + tz.transition 2060, 3, :o2, 2847477600, 29682533, 12 tz.transition 2060, 10, :o1, 2866312800, 29685149, 12 - tz.transition 2061, 3, :o2, 2879017200, 59373827, 24 + tz.transition 2061, 3, :o2, 2878927200, 29686901, 12 tz.transition 2061, 10, :o1, 2897762400, 29689517, 12 - tz.transition 2062, 3, :o2, 2910466800, 59382563, 24 + tz.transition 2062, 3, :o2, 2910981600, 29691353, 12 tz.transition 2062, 10, :o1, 2929212000, 29693885, 12 - tz.transition 2063, 3, :o2, 2941916400, 59391299, 24 + tz.transition 2063, 3, :o2, 2942431200, 29695721, 12 tz.transition 2063, 10, :o1, 2960661600, 29698253, 12 - tz.transition 2064, 3, :o2, 2973970800, 59400203, 24 + tz.transition 2064, 3, :o2, 2973880800, 29700089, 12 tz.transition 2064, 10, :o1, 2992111200, 29702621, 12 - tz.transition 2065, 3, :o2, 3005420400, 59408939, 24 + tz.transition 2065, 3, :o2, 3005330400, 29704457, 12 tz.transition 2065, 10, :o1, 3024165600, 29707073, 12 - tz.transition 2066, 3, :o2, 3036870000, 59417675, 24 + tz.transition 2066, 3, :o2, 3036780000, 29708825, 12 tz.transition 2066, 10, :o1, 3055615200, 29711441, 12 - tz.transition 2067, 3, :o2, 3068319600, 59426411, 24 + tz.transition 2067, 3, :o2, 3068229600, 29713193, 12 tz.transition 2067, 10, :o1, 3087064800, 29715809, 12 - tz.transition 2068, 3, :o2, 3099769200, 59435147, 24 + tz.transition 2068, 3, :o2, 3100284000, 29717645, 12 tz.transition 2068, 10, :o1, 3118514400, 29720177, 12 - tz.transition 2069, 3, :o2, 3131823600, 59444051, 24 + tz.transition 2069, 3, :o2, 3131733600, 29722013, 12 tz.transition 2069, 10, :o1, 3149964000, 29724545, 12 end end diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Hebron.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Hebron.rb index 84664c458..02161c52a 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Hebron.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Hebron.rb @@ -129,107 +129,107 @@ module Hebron tz.transition 2017, 10, :o1, 1509141600 tz.transition 2018, 3, :o2, 1521846000 tz.transition 2018, 10, :o1, 1540591200 - tz.transition 2019, 3, :o2, 1553900400 + tz.transition 2019, 3, :o2, 1553810400 tz.transition 2019, 10, :o1, 1572040800 - tz.transition 2020, 3, :o2, 1585350000 + tz.transition 2020, 3, :o2, 1585260000 tz.transition 2020, 10, :o1, 1604095200 - tz.transition 2021, 3, :o2, 1616799600 + tz.transition 2021, 3, :o2, 1616709600 tz.transition 2021, 10, :o1, 1635544800 - tz.transition 2022, 3, :o2, 1648249200 + tz.transition 2022, 3, :o2, 1648159200 tz.transition 2022, 10, :o1, 1666994400 - tz.transition 2023, 3, :o2, 1679698800 + tz.transition 2023, 3, :o2, 1680213600 tz.transition 2023, 10, :o1, 1698444000 - tz.transition 2024, 3, :o2, 1711753200 + tz.transition 2024, 3, :o2, 1711663200 tz.transition 2024, 10, :o1, 1729893600 - tz.transition 2025, 3, :o2, 1743202800 + tz.transition 2025, 3, :o2, 1743112800 tz.transition 2025, 10, :o1, 1761343200 - tz.transition 2026, 3, :o2, 1774652400 + tz.transition 2026, 3, :o2, 1774562400 tz.transition 2026, 10, :o1, 1793397600 - tz.transition 2027, 3, :o2, 1806102000 + tz.transition 2027, 3, :o2, 1806012000 tz.transition 2027, 10, :o1, 1824847200 - tz.transition 2028, 3, :o2, 1837551600 + tz.transition 2028, 3, :o2, 1838066400 tz.transition 2028, 10, :o1, 1856296800 - tz.transition 2029, 3, :o2, 1869001200 + tz.transition 2029, 3, :o2, 1869516000 tz.transition 2029, 10, :o1, 1887746400 - tz.transition 2030, 3, :o2, 1901055600 + tz.transition 2030, 3, :o2, 1900965600 tz.transition 2030, 10, :o1, 1919196000 - tz.transition 2031, 3, :o2, 1932505200 + tz.transition 2031, 3, :o2, 1932415200 tz.transition 2031, 10, :o1, 1950645600 - tz.transition 2032, 3, :o2, 1963954800 + tz.transition 2032, 3, :o2, 1963864800 tz.transition 2032, 10, :o1, 1982700000 - tz.transition 2033, 3, :o2, 1995404400 + tz.transition 2033, 3, :o2, 1995314400 tz.transition 2033, 10, :o1, 2014149600 - tz.transition 2034, 3, :o2, 2026854000 + tz.transition 2034, 3, :o2, 2027368800 tz.transition 2034, 10, :o1, 2045599200 - tz.transition 2035, 3, :o2, 2058303600 + tz.transition 2035, 3, :o2, 2058818400 tz.transition 2035, 10, :o1, 2077048800 - tz.transition 2036, 3, :o2, 2090358000 + tz.transition 2036, 3, :o2, 2090268000 tz.transition 2036, 10, :o1, 2108498400 - tz.transition 2037, 3, :o2, 2121807600 + tz.transition 2037, 3, :o2, 2121717600 tz.transition 2037, 10, :o1, 2140552800 - tz.transition 2038, 3, :o2, 2153257200, 59172227, 24 + tz.transition 2038, 3, :o2, 2153167200, 29586101, 12 tz.transition 2038, 10, :o1, 2172002400, 29588717, 12 - tz.transition 2039, 3, :o2, 2184706800, 59180963, 24 + tz.transition 2039, 3, :o2, 2184616800, 29590469, 12 tz.transition 2039, 10, :o1, 2203452000, 29593085, 12 - tz.transition 2040, 3, :o2, 2216156400, 59189699, 24 + tz.transition 2040, 3, :o2, 2216671200, 29594921, 12 tz.transition 2040, 10, :o1, 2234901600, 29597453, 12 - tz.transition 2041, 3, :o2, 2248210800, 59198603, 24 + tz.transition 2041, 3, :o2, 2248120800, 29599289, 12 tz.transition 2041, 10, :o1, 2266351200, 29601821, 12 - tz.transition 2042, 3, :o2, 2279660400, 59207339, 24 + tz.transition 2042, 3, :o2, 2279570400, 29603657, 12 tz.transition 2042, 10, :o1, 2297800800, 29606189, 12 - tz.transition 2043, 3, :o2, 2311110000, 59216075, 24 + tz.transition 2043, 3, :o2, 2311020000, 29608025, 12 tz.transition 2043, 10, :o1, 2329855200, 29610641, 12 - tz.transition 2044, 3, :o2, 2342559600, 59224811, 24 + tz.transition 2044, 3, :o2, 2342469600, 29612393, 12 tz.transition 2044, 10, :o1, 2361304800, 29615009, 12 - tz.transition 2045, 3, :o2, 2374009200, 59233547, 24 + tz.transition 2045, 3, :o2, 2374524000, 29616845, 12 tz.transition 2045, 10, :o1, 2392754400, 29619377, 12 - tz.transition 2046, 3, :o2, 2405458800, 59242283, 24 + tz.transition 2046, 3, :o2, 2405973600, 29621213, 12 tz.transition 2046, 10, :o1, 2424204000, 29623745, 12 - tz.transition 2047, 3, :o2, 2437513200, 59251187, 24 + tz.transition 2047, 3, :o2, 2437423200, 29625581, 12 tz.transition 2047, 10, :o1, 2455653600, 29628113, 12 - tz.transition 2048, 3, :o2, 2468962800, 59259923, 24 + tz.transition 2048, 3, :o2, 2468872800, 29629949, 12 tz.transition 2048, 10, :o1, 2487708000, 29632565, 12 - tz.transition 2049, 3, :o2, 2500412400, 59268659, 24 + tz.transition 2049, 3, :o2, 2500322400, 29634317, 12 tz.transition 2049, 10, :o1, 2519157600, 29636933, 12 - tz.transition 2050, 3, :o2, 2531862000, 59277395, 24 + tz.transition 2050, 3, :o2, 2531772000, 29638685, 12 tz.transition 2050, 10, :o1, 2550607200, 29641301, 12 - tz.transition 2051, 3, :o2, 2563311600, 59286131, 24 + tz.transition 2051, 3, :o2, 2563826400, 29643137, 12 tz.transition 2051, 10, :o1, 2582056800, 29645669, 12 - tz.transition 2052, 3, :o2, 2595366000, 59295035, 24 + tz.transition 2052, 3, :o2, 2595276000, 29647505, 12 tz.transition 2052, 10, :o1, 2613506400, 29650037, 12 - tz.transition 2053, 3, :o2, 2626815600, 59303771, 24 + tz.transition 2053, 3, :o2, 2626725600, 29651873, 12 tz.transition 2053, 10, :o1, 2644956000, 29654405, 12 - tz.transition 2054, 3, :o2, 2658265200, 59312507, 24 + tz.transition 2054, 3, :o2, 2658175200, 29656241, 12 tz.transition 2054, 10, :o1, 2677010400, 29658857, 12 - tz.transition 2055, 3, :o2, 2689714800, 59321243, 24 + tz.transition 2055, 3, :o2, 2689624800, 29660609, 12 tz.transition 2055, 10, :o1, 2708460000, 29663225, 12 - tz.transition 2056, 3, :o2, 2721164400, 59329979, 24 + tz.transition 2056, 3, :o2, 2721679200, 29665061, 12 tz.transition 2056, 10, :o1, 2739909600, 29667593, 12 - tz.transition 2057, 3, :o2, 2752614000, 59338715, 24 + tz.transition 2057, 3, :o2, 2753128800, 29669429, 12 tz.transition 2057, 10, :o1, 2771359200, 29671961, 12 - tz.transition 2058, 3, :o2, 2784668400, 59347619, 24 + tz.transition 2058, 3, :o2, 2784578400, 29673797, 12 tz.transition 2058, 10, :o1, 2802808800, 29676329, 12 - tz.transition 2059, 3, :o2, 2816118000, 59356355, 24 + tz.transition 2059, 3, :o2, 2816028000, 29678165, 12 tz.transition 2059, 10, :o1, 2834258400, 29680697, 12 - tz.transition 2060, 3, :o2, 2847567600, 59365091, 24 + tz.transition 2060, 3, :o2, 2847477600, 29682533, 12 tz.transition 2060, 10, :o1, 2866312800, 29685149, 12 - tz.transition 2061, 3, :o2, 2879017200, 59373827, 24 + tz.transition 2061, 3, :o2, 2878927200, 29686901, 12 tz.transition 2061, 10, :o1, 2897762400, 29689517, 12 - tz.transition 2062, 3, :o2, 2910466800, 59382563, 24 + tz.transition 2062, 3, :o2, 2910981600, 29691353, 12 tz.transition 2062, 10, :o1, 2929212000, 29693885, 12 - tz.transition 2063, 3, :o2, 2941916400, 59391299, 24 + tz.transition 2063, 3, :o2, 2942431200, 29695721, 12 tz.transition 2063, 10, :o1, 2960661600, 29698253, 12 - tz.transition 2064, 3, :o2, 2973970800, 59400203, 24 + tz.transition 2064, 3, :o2, 2973880800, 29700089, 12 tz.transition 2064, 10, :o1, 2992111200, 29702621, 12 - tz.transition 2065, 3, :o2, 3005420400, 59408939, 24 + tz.transition 2065, 3, :o2, 3005330400, 29704457, 12 tz.transition 2065, 10, :o1, 3024165600, 29707073, 12 - tz.transition 2066, 3, :o2, 3036870000, 59417675, 24 + tz.transition 2066, 3, :o2, 3036780000, 29708825, 12 tz.transition 2066, 10, :o1, 3055615200, 29711441, 12 - tz.transition 2067, 3, :o2, 3068319600, 59426411, 24 + tz.transition 2067, 3, :o2, 3068229600, 29713193, 12 tz.transition 2067, 10, :o1, 3087064800, 29715809, 12 - tz.transition 2068, 3, :o2, 3099769200, 59435147, 24 + tz.transition 2068, 3, :o2, 3100284000, 29717645, 12 tz.transition 2068, 10, :o1, 3118514400, 29720177, 12 - tz.transition 2069, 3, :o2, 3131823600, 59444051, 24 + tz.transition 2069, 3, :o2, 3131733600, 29722013, 12 tz.transition 2069, 10, :o1, 3149964000, 29724545, 12 end end diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Hong_Kong.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Hong_Kong.rb index 388c45597..5a422f427 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Hong_Kong.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Asia/Hong_Kong.rb @@ -18,24 +18,24 @@ module Hong_Kong tz.offset :o4, 32400, 0, :JST tz.transition 1904, 10, :o1, -2056690800, 58002797, 24 - tz.transition 1941, 6, :o2, -900909000, 38882565, 16 + tz.transition 1941, 6, :o2, -900910800, 58323847, 24 tz.transition 1941, 9, :o3, -891579600, 58326439, 24 tz.transition 1941, 12, :o4, -884248200, 116656951, 48 - tz.transition 1945, 9, :o1, -766659600, 19453713, 8 - tz.transition 1946, 4, :o2, -747981000, 38910885, 16 - tz.transition 1946, 11, :o1, -728544600, 116743453, 48 + tz.transition 1945, 11, :o1, -761209200, 58362653, 24 + tz.transition 1946, 4, :o2, -747907200, 14591587, 6 + tz.transition 1946, 11, :o1, -728541000, 38914485, 16 tz.transition 1947, 4, :o2, -717049800, 38916613, 16 - tz.transition 1947, 12, :o1, -694503000, 116762365, 48 + tz.transition 1947, 11, :o1, -697091400, 38920309, 16 tz.transition 1948, 5, :o2, -683785800, 38922773, 16 - tz.transition 1948, 10, :o1, -668064600, 116777053, 48 + tz.transition 1948, 10, :o1, -668061000, 38925685, 16 tz.transition 1949, 4, :o2, -654755400, 38928149, 16 - tz.transition 1949, 10, :o1, -636615000, 116794525, 48 + tz.transition 1949, 10, :o1, -636611400, 38931509, 16 tz.transition 1950, 4, :o2, -623305800, 38933973, 16 - tz.transition 1950, 10, :o1, -605165400, 116811997, 48 + tz.transition 1950, 10, :o1, -605161800, 38937333, 16 tz.transition 1951, 3, :o2, -591856200, 38939797, 16 - tz.transition 1951, 10, :o1, -573715800, 116829469, 48 + tz.transition 1951, 10, :o1, -573712200, 38943157, 16 tz.transition 1952, 4, :o2, -559801800, 38945733, 16 - tz.transition 1952, 11, :o1, -541661400, 116847277, 48 + tz.transition 1952, 11, :o1, -541657800, 38949093, 16 tz.transition 1953, 4, :o2, -528352200, 38951557, 16 tz.transition 1953, 10, :o1, -510211800, 116864749, 48 tz.transition 1954, 3, :o2, -498112200, 38957157, 16 diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Europe/Rome.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Europe/Rome.rb index 37991f56c..674e0f626 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Europe/Rome.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/definitions/Europe/Rome.rb @@ -16,7 +16,7 @@ module Rome tz.offset :o2, 3600, 0, :CET tz.offset :o3, 3600, 3600, :CEST - tz.transition 1866, 9, :o1, -3259097396, 51901915651, 21600 + tz.transition 1866, 12, :o1, -3252098996, 51903665251, 21600 tz.transition 1893, 10, :o2, -2403565200, 57906443, 24 tz.transition 1916, 6, :o3, -1690765200, 58104443, 24 tz.transition 1916, 9, :o2, -1680487200, 29053649, 12 diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/indexes/countries.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/indexes/countries.rb index d1786aee6..f9740943f 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/indexes/countries.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/indexes/countries.rb @@ -843,6 +843,7 @@ module Countries c.timezone 'Europe/Kiev', 1513, 30, 1831, 60, 'Ukraine (most areas)' c.timezone 'Europe/Uzhgorod', 2917, 60, 223, 10, 'Ruthenia' c.timezone 'Europe/Zaporozhye', 287, 6, 211, 6, 'Zaporozh\'ye/Zaporizhia; Lugansk/Luhansk (east)' + c.timezone 'Europe/Simferopol', 899, 20, 341, 10, 'MSK+00 - Crimea' end country 'UG', 'Uganda' do |c| c.timezone 'Africa/Nairobi', -77, 60, 2209, 60 diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/tzdataparser.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/tzdataparser.rb index 91f5581f0..cce1f21bf 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/tzdataparser.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/tzdataparser.rb @@ -512,8 +512,9 @@ def activate(year) end def at_utc_time(year, utc_offset, std_offset) + absolute = @on_day.to_absolute(year, @in_month) @at_time.to_utc(utc_offset, std_offset, - year, @in_month, @on_day.to_absolute(year, @in_month)) + absolute.year, absolute.month, absolute.day) end private @@ -1085,7 +1086,8 @@ def to_utc(utc_offset, std_offset, year, month, day) end # A tz data day of the month reference. Can either be an absolute day, - # a last week day or a week day >= or <= than a specific day of month. + # a last week day or a week day >= or <= than a specific day of month. Can + # result in a day in the neighbouring month. # # @private class TZDataDayOfMonth #:nodoc: @@ -1111,30 +1113,23 @@ def initialize(spec) end end - # Returns the absolute day of month for the given year and month. + # Returns the absolute date for the given year and month. def to_absolute(year, month) case @type when :last last_day_in_month = (Date.new(year, month, 1) >> 1) - 1 offset = last_day_in_month.wday - @day_of_week offset = offset + 7 if offset < 0 - (last_day_in_month - offset).day + last_day_in_month - offset when :comparison pivot = Date.new(year, month, @day_of_month) offset = @day_of_week - pivot.wday offset = -offset if @operator == :less_equal offset = offset + 7 if offset < 0 offset = -offset if @operator == :less_equal - result = pivot + offset - if result.month != pivot.month - puts self.inspect - puts year - puts month - end - raise 'No suitable date found' if result.month != pivot.month - result.day + pivot + offset else #absolute - @day_of_month + Date.new(year, month, @day_of_month) end end @@ -1194,7 +1189,8 @@ def initialize(spec) # Converts the reference to a UTC DateTime. def to_utc(utc_offset, std_offset) - @time.to_utc(utc_offset, std_offset, @year, @month, @day.to_absolute(@year, @month)) + absolute = @day.to_absolute(@year, @month) + @time.to_utc(utc_offset, std_offset, absolute.year, absolute.month, absolute.day) end end diff --git a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/version.rb b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/version.rb index ceb60f88a..62f494c42 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/version.rb +++ b/fluentd/vendored_gem_src/tzinfo-data/lib/tzinfo/data/version.rb @@ -1,7 +1,7 @@ module TZInfo module Data # TZInfo::Data version number. - VERSION = '1.2019.1' + VERSION = '1.2019.2' # TZInfo::Data version information. module Version @@ -14,7 +14,7 @@ module Version # The version of the {IANA Time Zone Database}[http://www.iana.org/time-zones] # used to generate this version of TZInfo::Data. - TZDATA = '2019a' + TZDATA = '2019b' end end end diff --git a/fluentd/vendored_gem_src/tzinfo-data/tzinfo-data.gemspec b/fluentd/vendored_gem_src/tzinfo-data/tzinfo-data.gemspec index 38322fbf0..19d626ed7 100644 --- a/fluentd/vendored_gem_src/tzinfo-data/tzinfo-data.gemspec +++ b/fluentd/vendored_gem_src/tzinfo-data/tzinfo-data.gemspec @@ -1,15 +1,15 @@ # -*- encoding: utf-8 -*- -# stub: tzinfo-data 1.2019.1 ruby lib +# stub: tzinfo-data 1.2019.2 ruby lib Gem::Specification.new do |s| s.name = "tzinfo-data".freeze - s.version = "1.2019.1" + s.version = "1.2019.2" s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.require_paths = ["lib".freeze] s.authors = ["Philip Ross".freeze] s.cert_chain = ["-----BEGIN CERTIFICATE-----\nMIIDPDCCAiSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAkMSIwIAYDVQQDDBlwaGls\nLnJvc3MvREM9Z21haWwvREM9Y29tMB4XDTE4MTAyNzE3NTQyNVoXDTE5MTAyNzE3\nNTQyNVowJDEiMCAGA1UEAwwZcGhpbC5yb3NzL0RDPWdtYWlsL0RDPWNvbTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJGcwfqn4ZsmPl0b1Lt9dCzExrE5\nEeP/CRQjBdGHkF+mSpi69XysxdwLdfg5SPr9LfxthUug4nNFd5fDCiXM8hYe9jQD\nTmkIQKNBh4fFpGngn9gyy+SumCXi6b5L6d/aMc59NAOM6LJ88TOdH1648dh5rq3C\nULq82n3gg4+u0HHGjRPuR/pnCFQCZbANYdX+UBWd0qkOJn/EreNKROmEeHr/xKuh\n2/GlKFKt9KLcW3hwBB4fHHVYUzRau7D1m9KbEERdg//qNDC4B7fD2BFJuPbM5S7J\n41VwDAh1O8B/Qpg0f+S83K4Kodw4MiPGsug55UkNtd3mGR/zZJ9WM03DSwkCAwEA\nAaN5MHcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFA+Z8zvfzBuA\nesoHIfz7+jxfUOcfMB4GA1UdEQQXMBWBE3BoaWwucm9zc0BnbWFpbC5jb20wHgYD\nVR0SBBcwFYETcGhpbC5yb3NzQGdtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEA\nG7spOhX+wjEVvsn5KAqbeDXcRhnuAzz/DbAq8xkG84etG4HNNdGxe8z7DY0YuqQQ\nuau4AXpjQwtXRp6wYrzLjpn6Gsj0NGcv9TOcxHPPpr/cZnFuLdN5Sk7Q1sK8OuJ1\n7JSj/nRsuNVgoo5dSAghVbCUNd2Ch31oDGPQFzedmKo09mNTd72CfcjzrjXaHDIB\nObXSs1zIhlYXDJGC5Dpr1/fG2W7bd8xt4UwQBH8u53KKYbHjHcbF+9x3O9TDweZq\nlDDjxNrOZq4IuD3jrJI+T95Lo5RSCenQmPnJIGtfaoN+omC2q0HMFNx31TcWCcC8\nY2Wt5gQskVrMQo+j0zgJcw==\n-----END CERTIFICATE-----\n".freeze] - s.date = "2019-03-26" + s.date = "2019-07-02" s.description = "TZInfo::Data contains data from the IANA Time Zone database packaged as Ruby modules for use with TZInfo.".freeze s.email = "phil.ross@gmail.com".freeze s.extra_rdoc_files = ["README.md".freeze, "LICENSE".freeze] @@ -18,7 +18,7 @@ Gem::Specification.new do |s| s.licenses = ["MIT".freeze] s.rdoc_options = ["--title".freeze, "TZInfo::Data".freeze, "--main".freeze, "README.md".freeze, "--exclude".freeze, "definitions".freeze, "--exclude".freeze, "indexes".freeze] s.required_ruby_version = Gem::Requirement.new(">= 1.8.7".freeze) - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "Timezone Data for TZInfo".freeze if s.respond_to? :specification_version then diff --git a/fluentd/vendored_gem_src/uuidtools/uuidtools.gemspec b/fluentd/vendored_gem_src/uuidtools/uuidtools.gemspec index 153dbadb4..0a8f99d48 100644 --- a/fluentd/vendored_gem_src/uuidtools/uuidtools.gemspec +++ b/fluentd/vendored_gem_src/uuidtools/uuidtools.gemspec @@ -15,7 +15,7 @@ Gem::Specification.new do |s| s.files = ["CHANGELOG".freeze, "LICENSE.txt".freeze, "README.md".freeze, "Rakefile".freeze, "lib/compat/securerandom.rb".freeze, "lib/uuidtools.rb".freeze, "lib/uuidtools/version.rb".freeze, "spec/spec.opts".freeze, "spec/spec_helper.rb".freeze, "spec/uuidtools/mac_address_spec.rb".freeze, "spec/uuidtools/utility_spec.rb".freeze, "spec/uuidtools/uuid_creation_spec.rb".freeze, "spec/uuidtools/uuid_parsing_spec.rb".freeze, "tasks/benchmark.rake".freeze, "tasks/gem.rake".freeze, "tasks/git.rake".freeze, "tasks/metrics.rake".freeze, "tasks/rspec.rake".freeze, "tasks/yard.rake".freeze, "website/index.html".freeze] s.homepage = "https://github.com/sporkmonger/uuidtools".freeze s.rdoc_options = ["--main".freeze, "README.md".freeze] - s.rubygems_version = "3.0.3".freeze + s.rubygems_version = "2.6.12".freeze s.summary = "UUID generator".freeze if s.respond_to? :specification_version then