diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml new file mode 100644 index 0000000..f39166a --- /dev/null +++ b/.github/workflows/run-tests.yml @@ -0,0 +1,30 @@ +name: Run Tests +on: push + +jobs: + test: + strategy: + matrix: + ruby_version: ['3.2', '3.3', '3.4', '4.0'] + runs-on: ubuntu-24.04 + steps: + - name: Install NSQ + shell: bash + run: | + wget https://github.com/nsqio/nsq/releases/download/v1.3.0/nsq-1.3.0.linux-amd64.go1.21.5.tar.gz + tar xvzf nsq-1.3.0.linux-amd64.go1.21.5.tar.gz + mv nsq-1.3.0.linux-amd64.go1.21.5/bin/* /usr/local/bin + + - name: Check out Git repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + + - uses: ruby/setup-ruby@0cb964fd540e0a24c900370abf38a33466142735 # v1.305.0 + with: + ruby-version: ${{ matrix.ruby_version }} + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + + - name: Run tests + shell: bash + run: | + echo "path: $PATH" + bundle exec rspec spec diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index 6a81b4c..0000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.7.8 diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..974865f --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +ruby 2.7.6 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1927879..0000000 --- a/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: ruby - -dist: trusty -sudo: false - -cache: bundler - -rvm: - - 2.3.3 - -env: - matrix: - - "NSQ=nsq-1.0.0-compat.linux-amd64.go1.8" - - "NSQ=nsq-0.3.8.linux-amd64.go1.6.2" - -before_install: - - wget https://s3.amazonaws.com/bitly-downloads/nsq/$NSQ.tar.gz -O /tmp/nsq.tar.gz - - tar -xvf /tmp/nsq.tar.gz - - export PATH=$PATH:$PWD/$NSQ/bin/ - -script: - - bundle exec rake spec diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bcdec3..37ab35a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,17 @@ # Changelog -## To be Released +## 2.4.1 -* Bump nokogiri from 1.11.5 to 1.13.4 -* Bump git from 1.3.0 to 1.11.0 +* Client version connection string should also read from the VERSION file + +## 2.4.0 + +* Remove jeweler gem in favor of using a dynamic gemspec [#66](https://github.com/wistia/nsq-ruby/pull/66) +* Use `URI.encode_www_form_component` instead of `URI.escape` to ensure compatibility with Ruby 3.0+ and fix deprecation warnings in Ruby 2.7. [#65](https://github.com/wistia/nsq-ruby/pull/65) +* Update version of `nsq-cluster` used for tests [#66](https://github.com/wistia/nsq-ruby/pull/66) +* Update TLS certificates used for tests [#66](https://github.com/wistia/nsq-ruby/pull/66) +* GitHub Actions workflow for testing the gem against a matrix of Ruby versions (2.7, 3.0, 3.1, 3.2) introduced [#66](https://github.com/wistia/nsq-ruby/pull/66) +* Support specifying multiple nsqd's when creating a consumer. [#54](https://github.com/wistia/nsq-ruby/pull/54) ## 2.3.1 diff --git a/Gemfile b/Gemfile index 53f474f..327b1c6 100644 --- a/Gemfile +++ b/Gemfile @@ -1,8 +1,8 @@ source 'http://rubygems.org' +gem 'logger', '~> 1.6' + group :development do - gem 'bundler', '~> 1.0' - gem 'jeweler', '~> 2.0' - gem 'nsq-cluster', '~> 2.1' - gem 'rspec', '~> 3.0' + gem 'nsq-cluster', '~> 2.2' + gem 'rspec', '~> 3.10' end diff --git a/Gemfile.lock b/Gemfile.lock index 67e9a82..90db107 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,87 +1,34 @@ GEM remote: http://rubygems.org/ specs: - addressable (2.4.0) - builder (3.2.3) - descendants_tracker (0.0.4) - thread_safe (~> 0.3, >= 0.3.1) - diff-lcs (1.5.0) - faraday (0.9.2) - multipart-post (>= 1.2, < 3) - ffi (1.16.3) - git (1.11.0) - rchardet (~> 1.8) - github_api (0.16.0) - addressable (~> 2.4.0) - descendants_tracker (~> 0.0.4) - faraday (~> 0.8, < 0.10) - hashie (>= 3.4) - mime-types (>= 1.16, < 3.0) - oauth2 (~> 1.0) - hashie (3.5.7) - highline (1.7.10) - jeweler (2.3.9) - builder - bundler - git (>= 1.2.5) - github_api (~> 0.16.0) - highline (>= 1.6.15) - nokogiri (>= 1.5.10) - psych - rake - rdoc - semver2 - jwt (1.5.6) - mime-types (2.99.3) - multi_json (1.13.1) - multi_xml (0.6.0) - multipart-post (2.0.0) - nokogiri (1.16.2-x86_64-darwin) - racc (~> 1.4) - nokogiri (1.16.2-x86_64-linux) - racc (~> 1.4) + diff-lcs (1.6.2) + ffi (1.17.4) + logger (1.7.0) nsq-cluster (2.2.0) sys-proctable (~> 1.3) - oauth2 (1.4.0) - faraday (>= 0.8, < 0.13) - jwt (~> 1.0) - multi_json (~> 1.3) - multi_xml (~> 0.5) - rack (>= 1.2, < 3) - psych (3.0.2) - racc (1.7.3) - rack (2.2.6.4) - rake (13.0.3) - rchardet (1.8.0) - rdoc (6.3.2) - rspec (3.12.0) - rspec-core (~> 3.12.0) - rspec-expectations (~> 3.12.0) - rspec-mocks (~> 3.12.0) - rspec-core (3.12.0) - rspec-support (~> 3.12.0) - rspec-expectations (3.12.0) + rspec (3.13.2) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.6) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-mocks (3.12.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.8) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-support (3.12.0) - semver2 (3.4.2) + rspec-support (~> 3.13.0) + rspec-support (3.13.7) sys-proctable (1.3.0) ffi (~> 1.1) - thread_safe (0.3.6) PLATFORMS - x86_64-darwin-16 - x86_64-darwin-17 - x86_64-linux + ruby DEPENDENCIES - bundler (~> 1.0) - jeweler (~> 2.0) - nsq-cluster (~> 2.1) - rspec (~> 3.0) + logger (~> 1.6) + nsq-cluster (~> 2.2) + rspec (~> 3.10) BUNDLED WITH - 2.4.13 + 2.6.3 diff --git a/README.md b/README.md index 50c32ea..60773f4 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ nsq-ruby is a simple NSQ client library written in Ruby. ```Ruby require 'nsq' producer = Nsq::Producer.new( - nsqd: '127.0.0.1:4150', + nsqd: '127.0.0.1:4150', # or ['127.0.0.1:4150'] topic: 'some-topic' ) @@ -77,7 +77,7 @@ For example, if you'd like to publish messages to a single nsqd. ```Ruby producer = Nsq::Producer.new( - nsqd: '6.7.8.9:4150', + nsqd: '6.7.8.9:4150', # or ['6.7.8.9:4150'] topic: 'topic-of-great-esteem' ) ``` @@ -418,4 +418,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/Rakefile b/Rakefile index 763c553..e9f607a 100644 --- a/Rakefile +++ b/Rakefile @@ -10,26 +10,6 @@ end require 'rake' -########### -# Jeweler # -########### -require 'jeweler' -require_relative 'lib/version' -Jeweler::Tasks.new do |gem| - # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options - gem.name = "nsq-ruby" - gem.version = Nsq::Version::STRING - gem.homepage = "http://github.com/wistia/nsq-ruby" - gem.license = "MIT" - gem.summary = %Q{Ruby client library for NSQ} - gem.description = %Q{} - gem.email = "dev@wistia.com" - gem.authors = ["Wistia"] - gem.files = Dir.glob('lib/**/*.rb') + ['README.md'] - # dependencies defined in Gemfile -end -Jeweler::RubygemsDotOrgTasks.new - ######### # Rspec # ######### diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..437459c --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +2.5.0 diff --git a/catalog-info.yaml b/catalog-info.yaml new file mode 100644 index 0000000..b668f49 --- /dev/null +++ b/catalog-info.yaml @@ -0,0 +1,18 @@ +# this is a catalog entity descriptor file for our Backstage instance (https://backstage.wistia.cloud) + +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: nsq-ruby + description: A worker framework for processing messages from an NSQ topic and channel. + annotations: + github.com/project-slug: wistia/nsq-ruby + backstage.io/techdocs-ref: dir:. + tags: + - lang#ruby + - pkg#rubygem +spec: + type: library + owner: infrastructure + lifecycle: production + system: VMA diff --git a/lib/nsq/consumer.rb b/lib/nsq/consumer.rb index 62504d1..e1eeeea 100644 --- a/lib/nsq/consumer.rb +++ b/lib/nsq/consumer.rb @@ -36,10 +36,14 @@ def initialize(opts = {}) topic: @topic, interval: @discovery_interval ) + + elsif opts[:nsqd] + nsqds = [opts[:nsqd]].flatten + max_per_conn = max_in_flight_per_connection(nsqds.size) + nsqds.each{|d| add_connection(d, max_in_flight: max_per_conn)} + else - # normally, we find nsqd instances to connect to via nsqlookupd(s) - # in this case let's connect to an nsqd instance directly - add_connection(opts[:nsqd] || '127.0.0.1:4150', max_in_flight: @max_in_flight) + add_connection('127.0.0.1:4150', max_in_flight: @max_in_flight) end end diff --git a/lib/version.rb b/lib/version.rb index e40592e..54e8878 100644 --- a/lib/version.rb +++ b/lib/version.rb @@ -1,9 +1,5 @@ module Nsq module Version - MAJOR = 2 - MINOR = 3 - PATCH = 1 - BUILD = nil - STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.') + STRING = File.read(File.expand_path('../../VERSION', __FILE__)).strip end end diff --git a/mkdocs.yaml b/mkdocs.yaml new file mode 100644 index 0000000..e112932 --- /dev/null +++ b/mkdocs.yaml @@ -0,0 +1,10 @@ +# this file exists to generate techdocs for Backstage (https://backstage.wistia.cloud) + +site_name: nsq-ruby +docs_dir: . +plugins: + - techdocs-core + - same-dir + - exclude: + glob: + - node_modules/* diff --git a/nsq-ruby.gemspec b/nsq-ruby.gemspec index 1ecddf3..12eed86 100644 --- a/nsq-ruby.gemspec +++ b/nsq-ruby.gemspec @@ -1,12 +1,6 @@ -# Generated by jeweler -# DO NOT EDIT THIS FILE DIRECTLY -# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec' -# -*- encoding: utf-8 -*- -# stub: nsq-ruby 2.3.1 ruby lib - Gem::Specification.new do |s| s.name = "nsq-ruby".freeze - s.version = "2.3.1" + s.version = File.read('VERSION') s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.require_paths = ["lib".freeze] @@ -18,46 +12,14 @@ Gem::Specification.new do |s| "LICENSE.txt", "README.md" ] - s.files = [ - "README.md", - "lib/nsq.rb", - "lib/nsq/client_base.rb", - "lib/nsq/connection.rb", - "lib/nsq/consumer.rb", - "lib/nsq/discovery.rb", - "lib/nsq/exceptions.rb", - "lib/nsq/frames/error.rb", - "lib/nsq/frames/frame.rb", - "lib/nsq/frames/message.rb", - "lib/nsq/frames/response.rb", - "lib/nsq/logger.rb", - "lib/nsq/producer.rb", - "lib/version.rb" - ] + s.files = Dir.glob('lib/**/*.rb') + ['README.md', 'VERSION'] s.homepage = "http://github.com/wistia/nsq-ruby".freeze s.licenses = ["MIT".freeze] s.rubygems_version = "2.6.8".freeze s.summary = "Ruby client library for NSQ".freeze - if s.respond_to? :specification_version then - s.specification_version = 4 + s.add_dependency(%q.freeze) - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_development_dependency(%q.freeze, ["~> 1.0"]) - s.add_development_dependency(%q.freeze, ["~> 2.0"]) - s.add_development_dependency(%q.freeze, ["~> 2.1"]) - s.add_development_dependency(%q.freeze, ["~> 3.0"]) - else - s.add_dependency(%q.freeze, ["~> 1.0"]) - s.add_dependency(%q.freeze, ["~> 2.0"]) - s.add_dependency(%q.freeze, ["~> 2.1"]) - s.add_dependency(%q.freeze, ["~> 3.0"]) - end - else - s.add_dependency(%q.freeze, ["~> 1.0"]) - s.add_dependency(%q.freeze, ["~> 2.0"]) - s.add_dependency(%q.freeze, ["~> 2.1"]) - s.add_dependency(%q.freeze, ["~> 3.0"]) - end + s.add_development_dependency(%q.freeze, ["~> 2.1"]) + s.add_development_dependency(%q.freeze, ["~> 3.0"]) end - diff --git a/spec/lib/nsq/nsqds_producer_spec.rb b/spec/lib/nsq/nsqds_producer_spec.rb index 431b4a4..5430ef5 100644 --- a/spec/lib/nsq/nsqds_producer_spec.rb +++ b/spec/lib/nsq/nsqds_producer_spec.rb @@ -49,6 +49,13 @@ def new_consumer(topic = TOPIC) end describe '#connected?' do + before do + @producer = new_nsqds_producer(@cluster.nsqd, synchronous: true, retry_attempts: 1, ok_timeout: 1) + end + after do + @producer.terminate if @producer + end + it 'returns true when all nsqds are connected' do expect(@producer.connected?).to eq(true) end @@ -143,14 +150,21 @@ def new_consumer(topic = TOPIC) @producer.write 'second' @cluster.nsqd.first.start - sleep 0.5 + sleep 1 # buy some time for nsqd to start @producer.write 'three' @producer.write 'four' - wait_for{message_count(@cluster.nsqd.last)==3} - expect(message_count(@cluster.nsqd.last)).to eq(3) - wait_for{message_count(@cluster.nsqd.first)==1} - expect(message_count(@cluster.nsqd.first)).to eq(1) + @producer.write 'five' + @producer.write 'six' + @producer.write 'seven' + @producer.write 'eight' + @producer.write 'nine' + @producer.write 'ten' + + wait_for{message_count(@cluster.nsqd.last)>=2} + expect(message_count(@cluster.nsqd.last)).to be >= 2 + wait_for{message_count(@cluster.nsqd.first)>=1} + expect(message_count(@cluster.nsqd.first)).to be >= 1 end end diff --git a/spec/lib/nsq/producer_synchronous_spec.rb b/spec/lib/nsq/producer_synchronous_spec.rb index 46b8a43..e06667a 100644 --- a/spec/lib/nsq/producer_synchronous_spec.rb +++ b/spec/lib/nsq/producer_synchronous_spec.rb @@ -40,7 +40,7 @@ it 'shouldn\'t raise an error when nsqd is down' do @nsqd.stop - Thread.new { sleep 3 ; @nsqd.start } + Thread.new { sleep 1 ; @nsqd.start } expect{ @producer.write('fail') }.not_to raise_error end diff --git a/spec/support/tls_certs/nsq-ca-cert.pem b/spec/support/tls_certs/nsq-ca-cert.pem index d94f338..e9cfe03 100644 --- a/spec/support/tls_certs/nsq-ca-cert.pem +++ b/spec/support/tls_certs/nsq-ca-cert.pem @@ -1,16 +1,20 @@ -----BEGIN CERTIFICATE----- -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 -----END CERTIFICATE----- diff --git a/spec/support/tls_certs/nsq-ca-key.pem b/spec/support/tls_certs/nsq-ca-key.pem index c36c817..eaf091f 100644 --- a/spec/support/tls_certs/nsq-ca-key.pem +++ b/spec/support/tls_certs/nsq-ca-key.pem @@ -1,15 +1,28 @@ ------BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQDTS4bpbln5lHkmnMtBuaU1ozPOX8s2F0fqUd4dssQesm727Qv0 -REsObq2c8lvEWw1cukDL4aqLrzhj2Cgv3zHDePlYOlX+PlSAMEmGP1uuk0QLf6nR -0q7nJdpR58+pEJsMX4SH9vyUYlpY05sulY0U9tluwABIZl+AUd7q68BZGQIDAQAB -AoGAD0gzJcb5cveuG4DToplOvaZkJNUA2ZSteuEY84TuclntdKaIas5Vr2GJ5QQS -Zw0+1ioSbayQrTGrHm2P2oaGDr96v7vewkeO8CtP6ewTwvWTKDizf43qpVmP9atU -S4+qpAkAcPoKxV7dDkl/NTJ0rFFILoVYZ5E4kyp6ld7HeNECQQD8wgpRkI//2Xt5 -vssSpxeJYztA/k3MBgA/rspXJFnriStuUSx+VKs3ZEk1XtLZioYpkxHvmhnHMlmn -gABM2BVvAkEA1gFWoAybDc6jYFcITJZltfFZ3a+bR//JgdwSFMaW3r1s840e2QVE -5NXPUXaKvWvVH46HSkzbXGoNOYGt12+F9wJAXiKGZUpJ1yfQbM86IoBIq8phTxtn -Lg0uGommoj3Pn4E+w59HyuUNv1uCSHZAYPTOcr1reKkT4LRH37I0amov0QJAAf+Z -M31qpUJcvDWT2kM9R+mtESjmplF5LEFF2fPQzNuv/MZAl345Gnn0qaoVuZccMmM+ -WC9HjSFgZj0TxoNAGQJAX8RCeouJ0gx/gYcKyZQjeaNOT9MaBVKmQOJ0BaxUs8Zh -2YCOF6o4ikcSYoiT511toUqnvjfhzsbD5mq0Niimsg== ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDQRWNhJu3IAu6l +6p/yHMltu7YTWJyoURHY/5nSI7jOl7HBdoPMYHQ4tHIWQGOnNMAGIC4NLcNhNaYW +bLDEALYTQz5+mXTt39M6srAXJJk0Qqalar3+LxiT51VXeKpDQJQ3FI2IuyDOmDz3 +bDhNH1AG469wMnWNU3rqW23eomh+rC7WleQiPrhd4RbiVJmRvJAROEniqVUd0/rS +PZ1/cT/NS+DAfH/5ZuffyY3cGdq9PDVSo0hSMQfL4poctxIzX3OvBEtnAu31NIjx +LJdMo3bQNn+OG1kRXhLpSDP1BBBpmKWWmg4BeBaWCXlJ51RI96eY7mfmQsRexKF8 +9ZD0WOrJAgMBAAECggEAPwq53bb4Y8ILddpyxskS6a3Xm7yHUuWTNvGLoJGih5pg +OnTCyVLq6x0nqXedEohDlbcY6XFQQjUIjKIi0Xl7o5IHsS+HNte46vwalC7GVwzT +v59zWiTsVhzAduU1+HxsQM3uV5R5BkALuEMgOawAP82claQYdApwWs8JD0puweSV +v/+Cwv771/5vuQqlkBoCKzdSvq++S2bDOdhqfUYj9C5XRP1Ooj/CUmKg1lvmlbec +wwaEI7+Ixbs+Z1aS3cIQbgkbTx2Ub8g8Hg/Ngg9tBDdl7Z6MENY6SsMIBtZkyUTz +yvYoEgSwszlQutF4g9gjHH8D9RjWvCSwtUvLsy1QTwKBgQDuJdaRu0kszLWNbcb2 +TdugYFGS2TMk8uf/iwGD2fJs0pLlerGewZw6tCh3+H9xDhAzRKlQZylViAXhmNn9 +bZebuvn+aOr1ZU08EGywqi671fUo7MafITPtLJMMRvO+3W27TttoK6iYohHmfV2u +afWkTLHGbXs8NlM8FZWyETzWjwKBgQDf4jOrLleoCRQNwzdrSYK9g5lORM+tVh68 +FPFWisE/uXPWhZSHhaRAV4nkgkJBCfYhawX2G6WX6PKCRLu9I02RUuClWWWbGbtI +fIgUgA1wX24sqC1j01glJMZO6ziKl2D9/LDVLku0cDpKyB8jz9yvqORctppNcpUR +KT55Ex2VJwKBgQDA9xnwxa+aRFlLusq/owC157XRZnshkk1X69uTadMcSFfM5+jq +eXjMvFQaOdmR0tJfqGAFDUIZ0vjo/oCL7/QrtIqCkaLoqme1pp1bXNo3Szu2KH0c +TbwUjsyr4wX3/tW+MzxnIREgdBpLCAQTojnvIlHeNbHobSBujBLa0UrZkwKBgE4y +CW3ej8sm8JQl/PNCB6H9lswZiJe4Hp/+iJR7fiettGHW4hu7d7TpXkYroMxqmEbv +xHNDEMFQIXOSYigbbno1gjT+Vlin0hvtMvJGD2uSST7bto7JQF4ozALAcU0mtj+/ +xFuRAewRzqpT31x4u1G3IZuoQ5iNTrdhumo7XPe9AoGAcU9FFg83QLw0yUDihWsf +83TmO7ocXK9cpcqvDDc3st0q/122ABLUHAfS8k4pjF+EMq2orahKXaXcO93d9cb0 +UR09axBEuESqwetQBVUWQP0zZaMnmoad0ORRuLG6DmzwItr2oYBBauBBnWYow9dp +zebpxkZK13uVDNRrJGirnCw= +-----END PRIVATE KEY----- diff --git a/spec/support/tls_certs/nsq-client-cert.pem b/spec/support/tls_certs/nsq-client-cert.pem index a3d46a8..7b34741 100644 --- a/spec/support/tls_certs/nsq-client-cert.pem +++ b/spec/support/tls_certs/nsq-client-cert.pem @@ -1,17 +1,19 @@ -----BEGIN CERTIFICATE----- -MIICpTCCAg6gAwIBAgIEMoanvTANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQGEwJV -UzEWMBQGA1UECBMNU2FuIEZyYW5jaXNjbzEJMAcGA1UEBxMAMREwDwYDVQQKEwhu -c3EgcnVieTEUMBIGA1UEAxMLbnNxIHJ1YnkgQ0ExEjAQBgNVBAUTCTg0NzY4NTU2 -NDAeFw0xNjA0MTgyMjE0MzRaFw00OTEyMzEyMzU5NTlaMGsxCzAJBgNVBAYTAlVT -MRYwFAYDVQQIEw1TYW4gRnJhbmNpc2NvMQkwBwYDVQQHEwAxETAPBgNVBAoTCG5z -cSBydWJ5MRIwEAYDVQQDEwlsb2NhbGhvc3QxEjAQBgNVBAUTCTg0NzY4NTU2NTCB -nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA9JV79IJrbDnuDytYijCWVL8wCEYt -4Ym1U4BQIJxxlbOv1EW9T4YPYdDI03jB3MVInmSCK7DPiVm64eSooNH7Svz0v4ya -HOgzSq25Xmd85jPGBX1g5jZPeXMU9BeV5LEMNvdOzvSzMYdy5C2ShvdKrjc7AF6X -VhoNvnf61HFERDcCAwEAAaNUMFIwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoG -CCsGAQUFBwMCMA8GA1UdEwEB/wQFMAMCAQEwGgYDVR0RBBMwEYIJbG9jYWxob3N0 -hwR/AAABMA0GCSqGSIb3DQEBCwUAA4GBAHK88HlMHiC0HkpJZKrgfwtqFttnOUlG -hD8eo8zl6N4kbZZIFBu0zCyjmzDynxAtOwwit9jcU8jrWVTxqCc57a+kCghvciuI -iV2NmOTgZdIpkBzlTO9Fbl+r3boAtT+q144VmAjHPrEpyI/aD13hbUmVCiBj1/w0 -cGU0qIz5LnUe +MIIDATCCAekCFG154o9A2LtbtwtQgte40glpcMTyMA0GCSqGSIb3DQEBCwUAMD0x +CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk +Z2l0cyBQdHkgTHRkMB4XDTIzMTEyNzExNTc0NloXDTMzMTAwNTExNTc0NlowPTEL +MAkGA1UEBhMCVVMxCzAJBgNVBAgMAk1BMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn +aXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvqu+N +dKWerAjeuAVgocWGYheI/dQ+UVqcqo3WgP1+LQnBWM4VCjlkes6Y/iyhHaarnjE/ +TtbGIAhMes12Ex+/BB6tUj+zgZBledRdWRK+EQq/1X92h2+beWtMDyGdBuniQe4x ++FQb99X2zyNqz6jDsRpUmpf9MBJcssWWZvZ9N9DFz66epWKG1W36tyDrha/1Ayx9 +c1ilBZZ4wq4Mivzil4moTIk5gC/MPhWqDrygLouJFR9p5MDk1vdSQCoQtKP4pdD+ +Fe/4b2k4XhEvWdA4iC9mssqw2E6L0wgnT/+mPG4Bwrdm41P4Uw7cmWCfk+JDxEde +mNYp3vlZ1sURlyT5AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAFmX4D8+FrEgzuYM +fdZtRcD4g1QnJ8ED9fAO01znyYG4S/xo680xNiRsS3CYk5ZI3ZzcPrKEDMWAtFAl ++4T+4FTWHB5ReIJAO/ElvP1aEaTdRhvsduJjo/gudWW6WLndtMoRPgZzl5HqMcQc +dzCV9DKZisKlbX4RRejr8nw4Hncuvf8TBmSuHMiryLt0CdkPdHYF/ReexlhBqceL +DzoGAYEMdjr+p17FOZNbsRcAtxZUo6Az/i6P/w2GhcfvCS02S5N00W42nmIH7WGr +VKhH8GPE6DmT5WPDxQx7pOww/yV6/KscqHen4X4HFhA6WzCq7uErLCA0Fjkn/rW5 +EsQ/49s= -----END CERTIFICATE----- diff --git a/spec/support/tls_certs/nsq-client-key.pem b/spec/support/tls_certs/nsq-client-key.pem index 70776b6..9aa0142 100644 --- a/spec/support/tls_certs/nsq-client-key.pem +++ b/spec/support/tls_certs/nsq-client-key.pem @@ -1,15 +1,28 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQD0lXv0gmtsOe4PK1iKMJZUvzAIRi3hibVTgFAgnHGVs6/URb1P -hg9h0MjTeMHcxUieZIIrsM+JWbrh5Kig0ftK/PS/jJoc6DNKrbleZ3zmM8YFfWDm -Nk95cxT0F5XksQw2907O9LMxh3LkLZKG90quNzsAXpdWGg2+d/rUcURENwIDAQAB -AoGAeVS6lBYqshqexPmsx4jI2qupaUFfO1Y0FIM/vJ2/HxNvcy9RdWS8trp7FaT/ -DsTzfFfB12iz26AevDbRjE3+iUFb87j7cWqcd3wLVrA++5+OgJIcbPrgq+eFAA6k -6+6WGwfr+svF0zk5ENdihViceJ27xEKpmmD4m5pELOEwWMECQQD+mnMMCQJcvboX -UvlP5TPoREtldl3svZhfzXX84eR/yeAVQ1h6eYX/gv5DnaK+xcMYstHM30HyDpAi -LZjBwP4XAkEA9ez20KeS3O1e8bQRlL+kw0HptkyK5DEHDSVeb9T3Oj5Niz0mzsIn -kuVSjS3jMjKXXfbGoi1loG0Bsm2nfTve4QJBAIxkSlA2n5DYJcc6v7MopgjLr++Q -55XlriIVv5vkTAWTIfdXnXBblmIgr2hFgjpD/qKd6EZaTZjWIvBVyEf+zZ0CQDUY -8rleVQFKZwN8w4cAUcyuwI1RvXNDeqhF9zviGXcD2K5Fh8mAdhbrWIWO8Mz3y2LI -U17UumqG3qTttAoAEUECQQDAXFSDV8RZ+Y90Fo50/lhQHG+GVXxgEa+bM+rn+vXa -RPnY1CaB4AaAP7ulPEefdwcf9GX22AekLALISKECzq6s ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCvqu+NdKWerAje +uAVgocWGYheI/dQ+UVqcqo3WgP1+LQnBWM4VCjlkes6Y/iyhHaarnjE/TtbGIAhM +es12Ex+/BB6tUj+zgZBledRdWRK+EQq/1X92h2+beWtMDyGdBuniQe4x+FQb99X2 +zyNqz6jDsRpUmpf9MBJcssWWZvZ9N9DFz66epWKG1W36tyDrha/1Ayx9c1ilBZZ4 +wq4Mivzil4moTIk5gC/MPhWqDrygLouJFR9p5MDk1vdSQCoQtKP4pdD+Fe/4b2k4 +XhEvWdA4iC9mssqw2E6L0wgnT/+mPG4Bwrdm41P4Uw7cmWCfk+JDxEdemNYp3vlZ +1sURlyT5AgMBAAECggEAVwtibDtyna8tLf8NWxaN48rTUqRD+SUiuyKf6bw837q9 +bLruUuqgCbP4j0LTJnqkzcEzMeWE8uOIeS0Yhftv7ZzC/qsUuYPn4wB9REwQx3F2 +XBwUbs0pdmaxzhxpUX/NgLmep9AfDUS/Fu8I47JGM8GcBHQd/+1EC/7hfWdDmEOv +LBAA2T4ODuujxvwYutJsHdVCknzqW7SSO/MfrBAlg28kPdhyvygIkJQ0A9GaaDJR +s7VgiOsdocUK/fSKf1bQ6+I0U6nHFFbcVHHzJ9HrZBGyYWeTQdza4Fqrj0dOYz/g +h1vSM/X1+PeNm8ibawnCMVRyN/AUBWe/IIs5ItJDqQKBgQDl75Yj2fRJBg8WcUh+ +8QPso+yvAxPb+Py1FTlcrAj/PHCpzVwyWkEo5uJaezR1x9i7+ed88GYSoKx0EFD1 +3Pq0iT6tivr+sI42a4rbWZ//vmHmc0S3KryBTgVP76Fp4XGYAjbauNknWtlkzkbC +b9HjAyPg4IHeIhcsf9le5zdpgwKBgQDDlJBgZN80zYc9M7H1L8nW/cRcBglNBVgn +l76EUyevEoJy1pDqgyXtzoG1OR6fYBQk7zgR9Pb5dx4xcAH2YfmI/rYMRiNzVl6Z +fhXLkhxcZ5FuJqvcG/O/xG/cz9ZVvJuBu4buOskfVRxmsOunSV54MDly7eMpHY5H +q4HvORa60wKBgQCyCrRdClVHffOM0ybpdEIvqDaKxX1JJSC4Lrj98w/8YpZyRNuQ ++aXev/ihSykx0g8Wbsk6SwMehV9Dd6bY2cUeqe7ofecf8yILLXaVpm5nnsk7oiGh +Guxfy0P9w3VfAPvuUjibX+p1uLkAf2D3CZKhjzrm07B7ijYbdNuhyrNzdQKBgQCy +Bt5w0AEZKGiM/ixj2c8pYq9FcL0wncfDqm3iN2stAnU5oTQiM6Tn1Yzd8BN+0U8k +25e3SLszEwmpyKIQqtggqnH9tC56w0izAUFHn0Uvm5qWoJ7ZaZwzl9SXM5yPSHJo +4dENsvb2DVwf4bVv/en/Dy6L/hxDhcLIXEaXAek9vwKBgAFgpiSNXAROW3LjrSe6 +fy6zd3vpRgEjapq6gRCMPmMtE2Bm9dTFeZccFjBQfzKrJ+h8xwHrgzj4+QL2XImP +mvvgyhh9nE1DfYNZJM68FBZZ0nONiGfhxM2lx7aIpKOq0YCk15NWVNtLyfBEIQc7 +q4AoVfDjqZz6yy3bCfJD+Kiw +-----END PRIVATE KEY----- diff --git a/spec/support/tls_certs/nsq-server-cert.pem b/spec/support/tls_certs/nsq-server-cert.pem index 319edaf..4453a95 100644 --- a/spec/support/tls_certs/nsq-server-cert.pem +++ b/spec/support/tls_certs/nsq-server-cert.pem @@ -1,17 +1,19 @@ -----BEGIN CERTIFICATE----- -MIICpTCCAg6gAwIBAgIEMoanvjANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQGEwJV -UzEWMBQGA1UECBMNU2FuIEZyYW5jaXNjbzEJMAcGA1UEBxMAMREwDwYDVQQKEwhu -c3EgcnVieTEUMBIGA1UEAxMLbnNxIHJ1YnkgQ0ExEjAQBgNVBAUTCTg0NzY4NTU2 -NDAeFw0xNjA0MTgyMjE0MzRaFw00OTEyMzEyMzU5NTlaMGsxCzAJBgNVBAYTAlVT -MRYwFAYDVQQIEw1TYW4gRnJhbmNpc2NvMQkwBwYDVQQHEwAxETAPBgNVBAoTCG5z -cSBydWJ5MRIwEAYDVQQDEwlsb2NhbGhvc3QxEjAQBgNVBAUTCTg0NzY4NTU2NjCB -nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArJdqH6v0Kzetji6IClhRXnzlonuw -A4FaJEJWzkWGzQ0sJwJXwcGeT7q5rKJ+kMKrBkXb8n+GQBihU4NuIilxyzmIYYH/ -oIMa2GzLtgO72k//XWST47DcSTTXvmWKpfJDCFT+iyjUvyEpNgeKwnZuVp/ag9oY -LDZyFctcndZsGWsCAwEAAaNUMFIwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoG -CCsGAQUFBwMBMA8GA1UdEwEB/wQFMAMCAQEwGgYDVR0RBBMwEYIJbG9jYWxob3N0 -hwR/AAABMA0GCSqGSIb3DQEBCwUAA4GBAAs2ae0DC+qFaUaVS/yCljTff8WWdVlu -50I9JCA9S18KPz6MprLY4opERS5McaJELIWojfGr2gRRXrFtT9Qo7sNM7N+RaIM/ -6G2MsM/aKIqjn9DDbeIg7XWMiBq66l5htoAyDFyEhRwwIaBVOuuP3dR/62iSx7A7 -GTxUMQiVJijX +MIIDATCCAekCFG154o9A2LtbtwtQgte40glpcMTzMA0GCSqGSIb3DQEBCwUAMD0x +CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk +Z2l0cyBQdHkgTHRkMB4XDTIzMTEyNzExNTg1MloXDTMzMTAwNTExNTg1MlowPTEL +MAkGA1UEBhMCVVMxCzAJBgNVBAgMAk1BMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn +aXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjHYgh +4kEdMMrSKGiBGLxunpVhHgxKOzVdiVYhrFAkS+4HnLbnXAvvPR89Snrt1ZGObFaX +rFPqDrkcdeEWEK7UfH0fP4I6HEcSoMfuQ+pLQN4I2HE7kSA4dRT+/TbA26xmyzJm +IRZ3wbqVv7ki4rAPWC1XDeNZUS/xZGZTMZQ9ZjxIg8mzhdMnRXSf49McD72yLneZ +kt3GQL0N31ln10qjsJIQt6Tv9E1wvvmu/3iyAoT96/pdxawTv0Hm3B9fWXOSkVg2 +E27yAfCsPXeqCqqec7x+AH3oY2IX7jRD9z79VbOJH2090SXZjAf6spjLfpkZHmEa +4RM7QCjRSF579z3fAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAKk68POof9KvbV4/ +J7zgiBExr8vThccREpsfBqK4yZ+llBNhwT9sVMTo4YChLOfChqDWM4+5Rbfh5SF4 +hsTNbHUPsSp6Zo7AjYOX8bi/0NAUgqfkZh7cs9nN2rvf/6jkXwO8CdVWdnKkZrW7 +ldQZ81T8bLo/Flmp5QeIyS/JaFVyXS3zV48/wjxlHwbSBOLEpvhCsbNv2YO7vycA +PQTKa5IrvXo+i6rpAeJB3aPClcZ6NQxpiy8afvQVcDZR3tVsdXAOiPizc/6TsP/D +Now6HxRCm6/0Gj1lxGuq8Uq4Q77p7jIqEh5wllbnURB935ifpenGvvgGzR0ulCuc +pYVCbrk= -----END CERTIFICATE----- diff --git a/spec/support/tls_certs/nsq-server-key.pem b/spec/support/tls_certs/nsq-server-key.pem index 506bdd2..e62fb97 100644 --- a/spec/support/tls_certs/nsq-server-key.pem +++ b/spec/support/tls_certs/nsq-server-key.pem @@ -1,15 +1,28 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQCsl2ofq/QrN62OLogKWFFefOWie7ADgVokQlbORYbNDSwnAlfB -wZ5Purmson6QwqsGRdvyf4ZAGKFTg24iKXHLOYhhgf+ggxrYbMu2A7vaT/9dZJPj -sNxJNNe+ZYql8kMIVP6LKNS/ISk2B4rCdm5Wn9qD2hgsNnIVy1yd1mwZawIDAQAB -AoGBAIJIypOd+nOlVB5AgfFNOh9ZqP8+31/GBYXZji2nzlp71xibbCOXRSpqij8H -awNb8D6L/bzRB0bbUOz6Cek/3+WK/D+1mwl+B1zeRYLTgVR5nIjdWBeYMkC0yWkM -lXqxbCEsA/NexUc5L+0S/RSrkHnFkN6GBhv7JzgUt+y/lXwBAkEA4xXuISrHeddA -ctDY4R737DLBwHPMsGqG5yZdMMvfuUTgen4ldROd3XI8wdjB1QoL1caCvJlz84td -WVJkH2SvIwJBAMKRMeDbzqPWKn5F3qlhZY/sY19msBZASOP+uIXkKOCy4dmlqGuY -h5sw+um9uDk1u/AbxA9lX9SaSNwZc7cEdRkCQH1yY/ZWl5OrYaML1IOog/UrpPUY -A3+Bmbyf6ONH/PNwJUIF5dNjXtYygXXktE9oGVmjLB3b974Wwx7Q8RaWnFkCQEpf -7k0iOQ9v4rZ6Ru9Ah+5IUoQ5YL5gvHxK9oZX/ThHqQXlyUe3+r5cLs4C89UKsVjL -hFrOSZ+fipJ4OD+RuKECQQCVN94YugH50j5xT29pURr/acuBy0a8cjrnxW4B+lSY -yngt1+qmXjZHh4rdsMRsvTCPmnpWxCl/EitwnxaxkDkd ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjHYgh4kEdMMrS +KGiBGLxunpVhHgxKOzVdiVYhrFAkS+4HnLbnXAvvPR89Snrt1ZGObFaXrFPqDrkc +deEWEK7UfH0fP4I6HEcSoMfuQ+pLQN4I2HE7kSA4dRT+/TbA26xmyzJmIRZ3wbqV +v7ki4rAPWC1XDeNZUS/xZGZTMZQ9ZjxIg8mzhdMnRXSf49McD72yLneZkt3GQL0N +31ln10qjsJIQt6Tv9E1wvvmu/3iyAoT96/pdxawTv0Hm3B9fWXOSkVg2E27yAfCs +PXeqCqqec7x+AH3oY2IX7jRD9z79VbOJH2090SXZjAf6spjLfpkZHmEa4RM7QCjR +SF579z3fAgMBAAECggEACF4hd6uFr5urK/DKu6SrNfmIrDzAYKZ87Fl5Q6z1R4dl +pJpTf7bnHdTC34AMolrMZsQEBS/f9iffMyiQ7XLZpSjluk6lvZlpw/jfiMePI2Em +gsmntWiSgJLxCsuunWIni/ZslXSpFGepzLjTJIkAgykA2nBp81EI5pdB8I6gji21 +evlrnIP9DGD85wQXlNt4WJkUN1ML1B/rWF+oFQPEcRp+V+2bPMZaP6bLSLFU8J57 +eeJrrR7KcwxRuZUOdqVq9qym5+kaSNYC75U41IsE14ILw+ETIn+rbC73XRdukKc+ +5BJmeASYxqT1h3IW5c59mswI2G/yjIm4tE+ZxtBr0QKBgQDUF35d1huzbiv2MNtx +MbgTtz+nRXhjd0ojtvGc80IGeclpixU71MxRO2r1CNuVj19QvnS4DOCnT6f1WlZE +LVwEizbSagEdTmVqn0Ft1CBwxO2YKUiwES6K2hkqn9smOY6Wg6c2LJ10JAcsR/2T +MJ8dgf/USRopqDTO3N7toDKtQwKBgQDE4l7sZx2OGwT9So9EJYDX0HzWsap0454o +n1eyDG2PVCsfMz/KPP7w8ELj8hYOirIfDTfJlbG6w+FUUr7PL93wd+zn1EtptKU4 +t9ecDVwvmytup3/9FUeUF7rg0qZnCRWT3BnBAqc42SzSOapV3rBRTs8U7ljiOj0O +Q5RhSxO1NQKBgQDGAtElxnnCQX+lr+OQgLy9G37AKmnFY1/CjFBzGeFwrk9OzF0c +qQXAaVroPkbUETEJ72aFVvB/BC1pMdgMetTIITkjpXg45jJlIx4w7bUD07eHMjP8 +vW3YkNqiIvC1dVMcTvnT6D9waRqRSv0BaImFQROaHE3iynnTD/7Jl6D4hQKBgH1k +GsZ/CcC2jp/uu33QUNWiL8/giUo2qUT/7q8z4RcWqPwO/MKFxGyY6FEanleWl8jU +90HIt8/V7w1wQZvcxYHgLx6bA4iIB24vD/+QNrUPI0MvJIF/6v1ze46yOk6G55oq +5LAbS3sWPciJ92UHFc5C3fpbrnouUzJhcf/g++U9AoGASzn+Nq9KfKnSzk2z72Vb +pBwzwx2WXY071weRIx5C/DqPCsIHRXVCiS39+5evPu8t5aSJ7ML7nL6KbsiA5Nsp +Q7bCjyWnZLLjpnvTjiOFP9EzUt6spGZpN3HmMNkqguO0wWDQdY2rTCtDFQ0N8SMm +6DxmUTjhvyOMWhgZ60zAGeM= +-----END PRIVATE KEY-----