mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-02-03 13:11:53 +02:00
bugfix: fix baggage set member failed (#3165)
* fix baggage set member failed * add unittest * fix unittest * rewrite unittest code
This commit is contained in:
parent
e1a1f07e44
commit
30fcf786c3
@ -465,6 +465,7 @@ func (b Baggage) Member(key string) Member {
|
||||
key: key,
|
||||
value: v.Value,
|
||||
properties: fromInternalProperties(v.Properties),
|
||||
hasData: true,
|
||||
}
|
||||
}
|
||||
|
||||
@ -484,6 +485,7 @@ func (b Baggage) Members() []Member {
|
||||
key: k,
|
||||
value: v.Value,
|
||||
properties: fromInternalProperties(v.Properties),
|
||||
hasData: true,
|
||||
})
|
||||
}
|
||||
return members
|
||||
|
@ -589,6 +589,74 @@ func TestBaggageSetMember(t *testing.T) {
|
||||
assert.Equal(t, 2, len(b4.list))
|
||||
}
|
||||
|
||||
func TestBaggageSetFalseMember(t *testing.T) {
|
||||
b0 := Baggage{}
|
||||
|
||||
key := "k"
|
||||
m := Member{key: key, hasData: false}
|
||||
b1, err := b0.SetMember(m)
|
||||
assert.Error(t, err)
|
||||
assert.NotContains(t, b0.list, key)
|
||||
assert.Equal(t, baggage.Item{}, b1.list[key])
|
||||
assert.Equal(t, 0, len(b0.list))
|
||||
assert.Equal(t, 0, len(b1.list))
|
||||
|
||||
m.value = "v"
|
||||
b2, err := b1.SetMember(m)
|
||||
assert.Error(t, err)
|
||||
assert.Equal(t, baggage.Item{}, b1.list[key])
|
||||
assert.Equal(t, baggage.Item{Value: ""}, b2.list[key])
|
||||
assert.Equal(t, 0, len(b1.list))
|
||||
assert.Equal(t, 0, len(b2.list))
|
||||
}
|
||||
|
||||
func TestBaggageSetFalseMembers(t *testing.T) {
|
||||
b0 := Baggage{}
|
||||
|
||||
key := "k"
|
||||
m := Member{key: key, hasData: true}
|
||||
b1, err := b0.SetMember(m)
|
||||
assert.NoError(t, err)
|
||||
assert.NotContains(t, b0.list, key)
|
||||
assert.Equal(t, baggage.Item{}, b1.list[key])
|
||||
assert.Equal(t, 0, len(b0.list))
|
||||
assert.Equal(t, 1, len(b1.list))
|
||||
|
||||
m.value = "v"
|
||||
b2, err := b1.SetMember(m)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, baggage.Item{}, b1.list[key])
|
||||
assert.Equal(t, baggage.Item{Value: "v"}, b2.list[key])
|
||||
assert.Equal(t, 1, len(b1.list))
|
||||
assert.Equal(t, 1, len(b2.list))
|
||||
|
||||
p := properties{{key: "p", hasData: false}}
|
||||
m.properties = p
|
||||
b3, err := b2.SetMember(m)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, baggage.Item{Value: "v"}, b2.list[key])
|
||||
assert.Equal(t, baggage.Item{Value: "v", Properties: []baggage.Property{{Key: "p"}}}, b3.list[key])
|
||||
assert.Equal(t, 1, len(b2.list))
|
||||
assert.Equal(t, 1, len(b3.list))
|
||||
|
||||
// The returned baggage needs to be immutable and should use a copy of the
|
||||
// properties slice.
|
||||
p[0] = Property{key: "different", hasData: false}
|
||||
assert.Equal(t, baggage.Item{Value: "v", Properties: []baggage.Property{{Key: "p"}}}, b3.list[key])
|
||||
// Reset for below.
|
||||
p[0] = Property{key: "p", hasData: false}
|
||||
|
||||
m = Member{key: "another", hasData: false}
|
||||
b4, err := b3.SetMember(m)
|
||||
assert.Error(t, err)
|
||||
assert.Equal(t, baggage.Item{Value: "v", Properties: []baggage.Property{{Key: "p"}}}, b3.list[key])
|
||||
assert.NotContains(t, b3.list, m.key)
|
||||
assert.Equal(t, baggage.Item{Value: "v", Properties: []baggage.Property{{Key: "p"}}}, b4.list[key])
|
||||
assert.Equal(t, baggage.Item{}, b4.list[m.key])
|
||||
assert.Equal(t, 1, len(b3.list))
|
||||
assert.Equal(t, 1, len(b4.list))
|
||||
}
|
||||
|
||||
func TestNilBaggageMembers(t *testing.T) {
|
||||
assert.Nil(t, Baggage{}.Members())
|
||||
}
|
||||
@ -602,6 +670,7 @@ func TestBaggageMembers(t *testing.T) {
|
||||
{key: "state", value: "on", hasValue: true},
|
||||
{key: "red"},
|
||||
},
|
||||
hasData: true,
|
||||
},
|
||||
{
|
||||
key: "bar",
|
||||
@ -609,6 +678,7 @@ func TestBaggageMembers(t *testing.T) {
|
||||
properties: properties{
|
||||
{key: "yellow"},
|
||||
},
|
||||
hasData: true,
|
||||
},
|
||||
}
|
||||
|
||||
@ -631,7 +701,7 @@ func TestBaggageMembers(t *testing.T) {
|
||||
|
||||
func TestBaggageMember(t *testing.T) {
|
||||
bag := Baggage{list: baggage.List{"foo": {Value: "1"}}}
|
||||
assert.Equal(t, Member{key: "foo", value: "1"}, bag.Member("foo"))
|
||||
assert.Equal(t, Member{key: "foo", value: "1", hasData: true}, bag.Member("foo"))
|
||||
assert.Equal(t, Member{}, bag.Member("bar"))
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user