From 1c65bce3b514323c544b0afb76ed435ffabebbd7 Mon Sep 17 00:00:00 2001 From: manabu-s Date: Thu, 7 Dec 2023 18:32:10 +0900 Subject: [PATCH 1/2] range_end is string --- lib/etcdv3/namespace/kv/requests.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/etcdv3/namespace/kv/requests.rb b/lib/etcdv3/namespace/kv/requests.rb index e5bfa59..9aa29f2 100644 --- a/lib/etcdv3/namespace/kv/requests.rb +++ b/lib/etcdv3/namespace/kv/requests.rb @@ -32,14 +32,14 @@ def get_request(key, opts) Etcdserverpb::RangeRequest.new(opts) end - def del_request(key, range_end=nil) + def del_request(key, range_end='') key = prepend_prefix(@namespace, key) # In order to enforce the scope of the specified namespace, we are going to # intercept the zero-byte reference and re-target everything under the given namespace. if range_end =~ /\x00/ range_end = (@namespace[0..-2] + (@namespace[-1].ord + 1).chr) else - range_end = prepend_prefix(@namespace, range_end) if range_end + range_end = prepend_prefix(@namespace, range_end) unless range_end.empty? end Etcdserverpb::DeleteRangeRequest.new(key: key, range_end: range_end) end From 9d1cb670882b2a5b2ba1a0ae8c600c2011f2bcb9 Mon Sep 17 00:00:00 2001 From: manabu-s Date: Fri, 8 Dec 2023 10:36:51 +0900 Subject: [PATCH 2/2] add: update namespeced delete testsuite --- spec/etcdv3_spec.rb | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/spec/etcdv3_spec.rb b/spec/etcdv3_spec.rb index e23b67a..8715a9d 100644 --- a/spec/etcdv3_spec.rb +++ b/spec/etcdv3_spec.rb @@ -578,8 +578,11 @@ context 'no range' do before { del_conn.put('test', 'value') } - subject { del_conn.del('test') } - it { is_expected.to_not be_nil } + it 'deleting key should be scoped to namespace' do + resp = del_conn.del('test') + expect(resp.deleted).to eq(1) + expect(del_conn.get('test').kvs).to be_empty + end end context 'ranged del' do @@ -587,8 +590,11 @@ del_conn.put('test', 'value') del_conn.put('testt', 'value') end - subject { del_conn.del('test', range_end: 'testtt') } - it { is_expected.to_not be_nil } + it 'deleting keys should be scoped to namespace' do + resp = del_conn.del('test', range_end: 'testtt') + expect(resp.deleted).to eq(2) + expect(del_conn.get('test', range_end: 'testtt').kvs).to be_empty + end end end