etcdv3 0.11.4 → 0.11.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18d76403d57c3e56b75e603931345900a4583b2e94d773b33ca04aa1547e304d
4
- data.tar.gz: f1d1f9336f62f18b32fb9d3f055e0043bddb6076022b922b097c0104a7467c8b
3
+ metadata.gz: 03fa84076fc6d31e895bc80d55abb4501398a0be305cefa1f492b5e217e52277
4
+ data.tar.gz: 020aa912711d848ceb60a842a2d04bc1d5d3aacbf2714a380782cefd37c3b9c4
5
5
  SHA512:
6
- metadata.gz: 9633a47e982b7777ccda7e5472a663a661e4cf6368689cfbbd8d06a6ca862be47e7c3a75d075919b645611879513d4c88c7f59686b2a0eac15cc160e3ea7520f
7
- data.tar.gz: 5a330de810e02ebdec73c279e33b7c2ece0c2aa7c4c877da89a2b285976ce68578ca20b3c51206d9a14c9fccbf18ef6310254010053eaefa59b06b898e1c195a
6
+ metadata.gz: 7541f20326b9577fa7b595e371a0e94713b0b0d83ced62eaae120b5fe77c853625020425258ed941f49b345d40025f7c9d8398ba7bbb136e666f13d1b64e181b
7
+ data.tar.gz: 3e1226dcf9a6f7a3fcfce148148fcdcabe3f07bf92f24335a7a624b8af3e3b07176162a8f52f606b80dc9df864574ce8e430b95c456a54e79444f6466d3b37b4
data/lib/etcdv3/lock.rb CHANGED
@@ -10,12 +10,12 @@ class Etcdv3
10
10
 
11
11
  def lock(name, lease_id, timeout: nil)
12
12
  request = V3lockpb::LockRequest.new(name: name, lease: lease_id)
13
- @stub.lock(request, deadline: deadline(timeout))
13
+ @stub.lock(request, metadata: @metadata, deadline: deadline(timeout))
14
14
  end
15
15
 
16
16
  def unlock(key, timeout: nil)
17
17
  request = V3lockpb::UnlockRequest.new(key: key)
18
- @stub.unlock(request, deadline: deadline(timeout))
18
+ @stub.unlock(request, metadata: @metadata, deadline: deadline(timeout))
19
19
  end
20
20
 
21
21
  private
@@ -13,14 +13,14 @@ class Etcdv3::Namespace
13
13
  def lock(name, lease_id, timeout: nil)
14
14
  name = prepend_prefix(@namespace, name)
15
15
  request = V3lockpb::LockRequest.new(name: name, lease: lease_id)
16
- resp = @stub.lock(request, deadline: deadline(timeout))
16
+ resp = @stub.lock(request, metadata: @metadata, deadline: deadline(timeout))
17
17
  strip_prefix_from_lock(@namespace, resp)
18
18
  end
19
19
 
20
20
  def unlock(key, timeout: nil)
21
21
  key = prepend_prefix(@namespace, key)
22
22
  request = V3lockpb::UnlockRequest.new(key: key)
23
- @stub.unlock(request, deadline: deadline(timeout))
23
+ @stub.unlock(request, metadata: @metadata, deadline: deadline(timeout))
24
24
  end
25
25
 
26
26
  private
@@ -1,3 +1,3 @@
1
1
  class Etcdv3
2
- VERSION = '0.11.4'.freeze
2
+ VERSION = '0.11.5'.freeze
3
3
  end
@@ -10,14 +10,28 @@ unless $instance.version < Gem::Version.new("3.2.0")
10
10
  #it_should_behave_like "a method with a GRPC timeout", described_class, :lock, :lock, 'foo'
11
11
 
12
12
  describe '#lock' do
13
- let(:lease_id) { lease_stub.lease_grant(10)['ID'] }
14
- subject { stub.lock('foo', lease_id) }
15
- it { is_expected.to be_an_instance_of(V3lockpb::LockResponse) }
13
+ it 'returns a response' do
14
+ lease_id = lease_stub.lease_grant(10)['ID']
15
+
16
+ expect(stub.lock('example1', lease_id)).to be_an_instance_of(V3lockpb::LockResponse)
17
+ end
18
+
19
+ it 'passes metadata correctly' do
20
+ lease_id = lease_stub.lease_grant(10)['ID']
21
+ stub = expect_metadata_passthrough(described_class, :lock, :lock)
22
+ stub.lock('example2', lease_id)
23
+ end
16
24
  end
17
25
 
18
26
  describe '#unlock' do
19
- subject { stub.unlock('foo') }
20
- it { is_expected.to be_an_instance_of(V3lockpb::UnlockResponse) }
27
+ it 'returns a response' do
28
+ expect(stub.unlock('example3')).to be_an_instance_of(V3lockpb::UnlockResponse)
29
+ end
30
+
31
+ it 'passes metadata correctly' do
32
+ stub = expect_metadata_passthrough(described_class, :unlock, :unlock)
33
+ stub.unlock('example4')
34
+ end
21
35
  end
22
36
  end
23
37
  end
@@ -2,22 +2,41 @@ require 'spec_helper'
2
2
 
3
3
  # Locking is not implemented in etcd v3.1.X
4
4
  unless $instance.version < Gem::Version.new("3.2.0")
5
- describe Etcdv3::Lock do
5
+ describe Etcdv3::Namespace::Lock do
6
6
  let(:stub) { local_namespace_stub(Etcdv3::Namespace::Lock, 1, '/namespace/') }
7
7
  let(:lease_stub) { local_stub(Etcdv3::Lease, 1) }
8
8
 
9
- it_should_behave_like "a method with a GRPC timeout", described_class, :unlock, :unlock, 'foo'
9
+ # NOTE: this was running duplicate tests against Etcdv3::Lock before, but it
10
+ # doesn't work with Etcdv3::Namespace::Lock
11
+ #
12
+ # it_should_behave_like "a method with a GRPC timeout", described_class, :unlock, :unlock, 'foo'
13
+
10
14
  # it_should_behave_like "a method with a GRPC timeout", described_class, :lock, :lock, 'foo'
11
15
 
12
16
  describe '#lock' do
13
- let(:lease_id) { lease_stub.lease_grant(10)['ID'] }
14
- subject { stub.lock('foo', lease_id) }
15
- it { is_expected.to be_an_instance_of(V3lockpb::LockResponse) }
17
+ it 'returns a response' do
18
+ lease_id = lease_stub.lease_grant(10)['ID']
19
+ expect(stub.lock('example1', lease_id)).to(
20
+ be_an_instance_of(V3lockpb::LockResponse)
21
+ )
22
+ end
23
+
24
+ it 'passes metadata correctly' do
25
+ lease_id = lease_stub.lease_grant(10)['ID']
26
+ stub = expect_metadata_passthrough_namespace(described_class, :lock, :lock, '/namespace/')
27
+ stub.lock('example2', lease_id)
28
+ end
16
29
  end
17
30
 
18
31
  describe '#unlock' do
19
- subject { stub.unlock('foo') }
20
- it { is_expected.to be_an_instance_of(V3lockpb::UnlockResponse) }
32
+ it 'returns a response' do
33
+ expect(stub.unlock('example3')).to be_an_instance_of(V3lockpb::UnlockResponse)
34
+ end
35
+
36
+ it 'passes metadata correctly' do
37
+ stub = expect_metadata_passthrough_namespace(described_class, :unlock, :unlock, '/namespace/')
38
+ stub.unlock('example4')
39
+ end
21
40
  end
22
41
  end
23
42
  end
@@ -21,10 +21,18 @@ module Helpers
21
21
  interface.new(local_url, :this_channel_is_insecure, timeout, {})
22
22
  end
23
23
 
24
+ def local_stub_with_metadata(interface, timeout: nil, metadata: {})
25
+ interface.new(local_url, :this_channel_is_insecure, timeout, metadata)
26
+ end
27
+
24
28
  def local_namespace_stub(interface, timeout=nil, namespace)
25
29
  interface.new(local_url, :this_channel_is_insecure, timeout, namespace, {})
26
30
  end
27
31
 
32
+ def local_namespace_stub_with_metadata(interface, timeout: nil, namespace:, metadata: {})
33
+ interface.new(local_url, :this_channel_is_insecure, timeout, namespace, metadata)
34
+ end
35
+
28
36
  def local_url
29
37
  "127.0.0.1:#{port}"
30
38
  end
@@ -0,0 +1,21 @@
1
+ module Helpers
2
+ module MetadataPassthrough
3
+ include Connections
4
+
5
+ def expect_metadata_passthrough(stub_class, method_name, expectation_target)
6
+ metadata = { user: "foo", password: "bar" }
7
+ handler = local_stub_with_metadata(stub_class, metadata: metadata, timeout: 1)
8
+ inner_stub = handler.instance_variable_get("@stub")
9
+ expect(inner_stub).to receive(expectation_target).with(anything, hash_including(metadata: metadata)).and_call_original
10
+ return handler
11
+ end
12
+
13
+ def expect_metadata_passthrough_namespace(stub_class, method_name, expectation_target, namespace)
14
+ metadata = { user: "foo", password: "bar" }
15
+ handler = local_namespace_stub_with_metadata(stub_class, metadata: metadata, timeout: 1, namespace: namespace)
16
+ inner_stub = handler.instance_variable_get("@stub")
17
+ expect(inner_stub).to receive(expectation_target).with(anything, hash_including(metadata: metadata)).and_call_original
18
+ return handler
19
+ end
20
+ end
21
+ end
@@ -3,10 +3,12 @@ require 'tmpdir'
3
3
  require 'socket'
4
4
  require 'timeout'
5
5
  require 'helpers/connections'
6
+ require 'helpers/metadata_passthrough'
6
7
 
7
8
  module Helpers
8
9
  class TestInstance
9
10
  include Helpers::Connections
11
+ include Helpers::MetadataPassthrough
10
12
 
11
13
  class InvalidVersionException < StandardError; end
12
14
  class PortInUseException < StandardError; end
data/spec/spec_helper.rb CHANGED
@@ -3,20 +3,22 @@ $LOAD_PATH.unshift File.expand_path('./helpers', __FILE__)
3
3
  $LOAD_PATH.unshift File.expand_path('./namespace', __FILE__)
4
4
 
5
5
 
6
- # require 'simplecov'
7
- # require 'codecov'
8
- # SimpleCov.start
9
- # SimpleCov.formatter = SimpleCov::Formatter::Codecov
6
+ require 'simplecov'
7
+ require 'codecov'
8
+ SimpleCov.start
9
+ SimpleCov.formatter = SimpleCov::Formatter::Codecov
10
10
 
11
11
  require 'etcdv3'
12
12
  require 'helpers/test_instance'
13
13
  require 'helpers/connections'
14
+ require 'helpers/metadata_passthrough'
14
15
  require 'helpers/shared_examples_for_timeout'
15
16
 
16
17
  $instance = Helpers::TestInstance.new
17
18
 
18
19
  RSpec.configure do |config|
19
20
  config.include(Helpers::Connections)
21
+ config.include(Helpers::MetadataPassthrough)
20
22
 
21
23
  config.expect_with :rspec do |expectations|
22
24
  expectations.include_chain_clauses_in_custom_matcher_descriptions = true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: etcdv3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.4
4
+ version: 0.11.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shaun Davis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-23 00:00:00.000000000 Z
11
+ date: 2021-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grpc
@@ -126,6 +126,7 @@ files:
126
126
  - spec/etcdv3/watch_spec.rb
127
127
  - spec/etcdv3_spec.rb
128
128
  - spec/helpers/connections.rb
129
+ - spec/helpers/metadata_passthrough.rb
129
130
  - spec/helpers/shared_examples_for_timeout.rb
130
131
  - spec/helpers/test_instance.rb
131
132
  - spec/spec_helper.rb
@@ -148,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
149
  - !ruby/object:Gem::Version
149
150
  version: '0'
150
151
  requirements: []
151
- rubygems_version: 3.2.20
152
+ rubygems_version: 3.1.6
152
153
  signing_key:
153
154
  specification_version: 4
154
155
  summary: A Etcd client library for Version 3
@@ -166,6 +167,7 @@ test_files:
166
167
  - spec/etcdv3/watch_spec.rb
167
168
  - spec/etcdv3_spec.rb
168
169
  - spec/helpers/connections.rb
170
+ - spec/helpers/metadata_passthrough.rb
169
171
  - spec/helpers/shared_examples_for_timeout.rb
170
172
  - spec/helpers/test_instance.rb
171
173
  - spec/spec_helper.rb