Skip to content

Commit

Permalink
fix(metainfo): old kvs missed after WithValues()
Browse files Browse the repository at this point in the history
  • Loading branch information
AsterDY committed Jul 27, 2023
1 parent a129727 commit 8555f20
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
4 changes: 2 additions & 2 deletions cloud/metainfo/info.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ func WithPersistentValues(ctx context.Context, kvs ...string) context.Context {
if m := getNode(ctx); m != nil {
nn := *m
n = &nn
n.persistent = make([]kv, 0, len(m.persistent)+kvLen)
n.persistent = make([]kv, len(m.persistent), len(m.persistent)+kvLen)
copy(n.persistent, m.persistent)
} else {
n = &node{
Expand Down Expand Up @@ -276,7 +276,7 @@ func WithValues(ctx context.Context, kvs ...string) context.Context {
if m := getNode(ctx); m != nil {
nn := *m
n = &nn
n.transient = make([]kv, 0, len(m.transient)+kvLen)
n.transient = make([]kv, len(m.transient), len(m.transient)+kvLen)
copy(n.transient, m.transient)
} else {
n = &node{
Expand Down
21 changes: 19 additions & 2 deletions cloud/metainfo/info_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,37 @@ func TestWithValue(t *testing.T) {
func TestWithValues(t *testing.T) {
ctx := context.Background()

k, v := "Key", "Value"
k, v := "Key-0", "Value-0"
ctx = metainfo.WithValue(ctx, k, v)

kvs := []string{"Key-1", "Value-1", "Key-2", "Value-2", "Key-3", "Value-3"}
ctx = metainfo.WithValues(ctx, kvs...)
assert(t, ctx != nil)

for i := 1; i <= 3; i++ {
for i := 0; i <= 3; i++ {
x, ok := metainfo.GetValue(ctx, fmt.Sprintf("Key-%d", i))
assert(t, ok)
assert(t, x == fmt.Sprintf("Value-%d", i))
}
}

func TestWithPersistValues(t *testing.T) {
ctx := context.Background()

k, v := "Key-0", "Value-0"
ctx = metainfo.WithPersistentValue(ctx, k, v)

kvs := []string{"Key-1", "Value-1", "Key-2", "Value-2", "Key-3", "Value-3"}
ctx = metainfo.WithPersistentValues(ctx, kvs...)
assert(t, ctx != nil)

for i := 0; i <= 3; i++ {
x, ok := metainfo.GetPersistentValue(ctx, fmt.Sprintf("Key-%d", i))
assert(t, ok)
assert(t, x == fmt.Sprintf("Value-%d", i))
}
}

func TestWithEmpty(t *testing.T) {
ctx := context.Background()

Expand Down

0 comments on commit 8555f20

Please sign in to comment.