Skip to content

Commit

Permalink
fix: it should upgrade version to use a new protobuf format: bitstr i…
Browse files Browse the repository at this point in the history
…s only available in 0.5.12
  • Loading branch information
drmingdrmer committed Jan 27, 2021
1 parent 2233d9d commit 1e05180
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 16 deletions.
1 change: 1 addition & 0 deletions trie/slimtrie.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ func (st *SlimTrie) compatibleVersions() []string {
"==0.5.8",
"==0.5.9",
"==0.5.10",
"==0.5.11",
"==" + slimtrieVersion,
}
}
Expand Down
6 changes: 4 additions & 2 deletions trie/slimtrie_marshal.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,15 @@ func (st *SlimTrie) Unmarshal(buf []byte) error {

// 0.5.10 and 0.5.11 share the same protobuf format:

if vers.Check(ver, slimtrieVersion, "0.5.10") {
if vers.Check(ver, slimtrieVersion, "==0.5.10", "==0.5.11") {
_, _, err := pbcmpl.Unmarshal(reader, st.inner)
if err != nil {
return errors.WithMessage(err, "failed to unmarshal inner")
}

before000512InnerPrefixTobitstr(st)
if vers.Check(ver, "<0.5.12") {
before000512InnerPrefixTobitstr(st)
}

st.init()
return nil
Expand Down
51 changes: 38 additions & 13 deletions trie/slimtrie_marshal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func TestSlimTrie_Unmarshal_incompatible(t *testing.T) {
want error
}{
{slimtrieVersion, nil},
{"0.5.12", ErrIncompatible},
{"0.5.13", ErrIncompatible},
{"0.6.0", ErrIncompatible},
{"0.9.9", ErrIncompatible},
{"1.0.1", ErrIncompatible},
Expand Down Expand Up @@ -157,23 +157,48 @@ func TestSlimTrie_Marshal_allkeys(t *testing.T) {
ta := require.New(t)

values := makeI32s(len(keys))
st, err := NewSlimTrie(encode.I32{}, keys, values)
ta.NoError(err)

testUnknownKeysGRS(t, st, testutil.RandStrSlice(100, 0, 10))
testPresentKeysGet(t, st, keys, values)
t.Run("Default", func(t *testing.T) {
st, err := NewSlimTrie(encode.I32{}, keys, values)
ta.NoError(err)

testUnknownKeysGRS(t, st, testutil.RandStrSlice(100, 0, 10))
testPresentKeysGet(t, st, keys, values)

buf, err := proto.Marshal(st)
ta.NoError(err)

st2, err := NewSlimTrie(encode.I32{}, nil, nil)
ta.NoError(err)

err = proto.Unmarshal(buf, st2)
ta.NoError(err)

testUnknownKeysGRS(t, st2, testutil.RandStrSlice(100, 0, 10))
testPresentKeysGet(t, st2, keys, values)
})

buf, err := proto.Marshal(st)
ta.NoError(err)
t.Run("Complete", func(t *testing.T) {
st, err := NewSlimTrie(encode.I32{}, keys, values,
Opt{Complete: Bool(true)})
ta.NoError(err)

st2, err := NewSlimTrie(encode.I32{}, nil, nil)
ta.NoError(err)
testAbsentKeysGRS(t, st, keys)
testPresentKeysGet(t, st, keys, values)

err = proto.Unmarshal(buf, st2)
ta.NoError(err)
buf, err := proto.Marshal(st)
ta.NoError(err)

st2, err := NewSlimTrie(encode.I32{}, nil, nil)
ta.NoError(err)

err = proto.Unmarshal(buf, st2)
ta.NoError(err)

testAbsentKeysGRS(t, st2, keys)
testPresentKeysGet(t, st2, keys, values)
})

testUnknownKeysGRS(t, st2, testutil.RandStrSlice(100, 0, 10))
testPresentKeysGet(t, st2, keys, values)
})
}

Expand Down
2 changes: 1 addition & 1 deletion trie/slimtrie_ver.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
package trie

const slimtrieVersion = "0.5.11"
const slimtrieVersion = "0.5.12"

0 comments on commit 1e05180

Please sign in to comment.