| |   |
| 30 | 30 | when /^0000000000000000#{UUID_RE}/ # first version |
| 31 | 31 | return nil unless chunk_node = chunk.find_node(uuid) |
| 32 | 32 | chunk_node = chunk.find_next_node(chunk_node) |
| 33 | return nil if chunk_node.key[0,uuid.length] != uuid |
| 33 | 34 | raw_doc = chunk_node.value |
| 34 | 35 | when /^#{VERSION_RE}/, nil # any other or no version |
| 35 | 36 | raw_doc = chunk.find(uuid_version) |
| toggle raw diff |
--- a/strokedb-ruby/lib/stores/skiplist_store/skiplist_store.rb
+++ b/strokedb-ruby/lib/stores/skiplist_store/skiplist_store.rb
@@ -30,6 +30,7 @@ module StrokeDB
when /^0000000000000000#{UUID_RE}/ # first version
return nil unless chunk_node = chunk.find_node(uuid)
chunk_node = chunk.find_next_node(chunk_node)
+ return nil if chunk_node.key[0,uuid.length] != uuid
raw_doc = chunk_node.value
when /^#{VERSION_RE}/, nil # any other or no version
raw_doc = chunk.find(uuid_version) |
| |   |
| 79 | 79 | describe "Chunks" do |
| 80 | 80 | |
| 81 | 81 | before(:each) do |
| 82 | | head_chunk = Chunk.new(3) |
| 82 | @head_chunk = Chunk.new(3) |
| 83 | 83 | @docs_by_uuid = {} |
| 84 | 84 | @all_chunks = {} # uuid => chunk |
| 85 | 85 | 20.times do |i| |
| 86 | 86 | uuid = "K#{100+i}" |
| 87 | 87 | doc = {:i => i, :text => "Text."} |
| 88 | 88 | @docs_by_uuid[uuid] = doc |
| 89 | | a, b = head_chunk.insert(uuid, doc) |
| 89 | a, b = @head_chunk.insert(uuid, doc) |
| 90 | 90 | head_chunk = b || a |
| 91 | 91 | [a, b].each do |c| |
| 92 | 92 | @all_chunks[c.uuid] = c if c |
| … | … | |
| 94 | 94 | end |
| 95 | 95 | end |
| 96 | 96 | |
| 97 | it "should find next chunk node to given node" do |
| 98 | pending |
| 99 | @head_chunk.find_next_node(@head_chunk.find_node("K100")).key.should == "K101" |
| 100 | end |
| 101 | |
| 102 | it "should find next chunk node to given node if that node is just before tail node" do |
| 103 | pending |
| 104 | node = @head_chunk.find_node("K100") |
| 105 | node = node.next until node.next.is_a?(Skiplist::TailNode) |
| 106 | node.next.should be_a_kind_of(Skiplist::TailNode) |
| 107 | @head_chunk.find_next_node(node).key.should == "K#{node.key[1,3].to_i+1}" |
| 108 | end |
| 109 | |
| 97 | 110 | it "should be serialized well" do |
| 98 | 111 | @all_chunks.each do |k,v| |
| 99 | 112 | rawv = v.to_raw |
| … | … | |
| 128 | 128 | end |
| 129 | 129 | |
| 130 | 130 | end |
| 131 | |
| toggle raw diff |
--- a/strokedb-ruby/spec/stores/skiplist_store/chunk_spec.rb
+++ b/strokedb-ruby/spec/stores/skiplist_store/chunk_spec.rb
@@ -79,14 +79,14 @@ end
describe "Chunks" do
before(:each) do
- head_chunk = Chunk.new(3)
+ @head_chunk = Chunk.new(3)
@docs_by_uuid = {}
@all_chunks = {} # uuid => chunk
20.times do |i|
uuid = "K#{100+i}"
doc = {:i => i, :text => "Text."}
@docs_by_uuid[uuid] = doc
- a, b = head_chunk.insert(uuid, doc)
+ a, b = @head_chunk.insert(uuid, doc)
head_chunk = b || a
[a, b].each do |c|
@all_chunks[c.uuid] = c if c
@@ -94,6 +94,19 @@ describe "Chunks" do
end
end
+ it "should find next chunk node to given node" do
+ pending
+ @head_chunk.find_next_node(@head_chunk.find_node("K100")).key.should == "K101"
+ end
+
+ it "should find next chunk node to given node if that node is just before tail node" do
+ pending
+ node = @head_chunk.find_node("K100")
+ node = node.next until node.next.is_a?(Skiplist::TailNode)
+ node.next.should be_a_kind_of(Skiplist::TailNode)
+ @head_chunk.find_next_node(node).key.should == "K#{node.key[1,3].to_i+1}"
+ end
+
it "should be serialized well" do
@all_chunks.each do |k,v|
rawv = v.to_raw
@@ -115,3 +128,4 @@ describe "Chunks" do
end
end
+ |