You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-11-29 23:07:45 +02:00
Move core and key to kv package (#720)
* Move core to kv * Move kv.Value to kv.value.Value * Move key to kv
This commit is contained in:
@@ -17,7 +17,7 @@ package correlation
|
||||
import (
|
||||
"context"
|
||||
|
||||
"go.opentelemetry.io/otel/api/core"
|
||||
"go.opentelemetry.io/otel/api/kv"
|
||||
)
|
||||
|
||||
type correlationsType struct{}
|
||||
@@ -150,7 +150,7 @@ func ContextWithMap(ctx context.Context, m Map) context.Context {
|
||||
|
||||
// NewContext returns a context with the map from passed context
|
||||
// updated with the passed key-value pairs.
|
||||
func NewContext(ctx context.Context, keyvalues ...core.KeyValue) context.Context {
|
||||
func NewContext(ctx context.Context, keyvalues ...kv.KeyValue) context.Context {
|
||||
return ContextWithMap(ctx, MapFromContext(ctx).Apply(MapUpdate{
|
||||
MultiKV: keyvalues,
|
||||
}))
|
||||
|
||||
@@ -19,8 +19,7 @@ import (
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"go.opentelemetry.io/otel/api/core"
|
||||
"go.opentelemetry.io/otel/api/key"
|
||||
"go.opentelemetry.io/otel/api/kv"
|
||||
"go.opentelemetry.io/otel/api/propagation"
|
||||
)
|
||||
|
||||
@@ -44,7 +43,7 @@ func (CorrelationContext) Inject(ctx context.Context, supplier propagation.HTTPS
|
||||
correlationCtx := MapFromContext(ctx)
|
||||
firstIter := true
|
||||
var headerValueBuilder strings.Builder
|
||||
correlationCtx.Foreach(func(kv core.KeyValue) bool {
|
||||
correlationCtx.Foreach(func(kv kv.KeyValue) bool {
|
||||
if !firstIter {
|
||||
headerValueBuilder.WriteRune(',')
|
||||
}
|
||||
@@ -68,7 +67,7 @@ func (CorrelationContext) Extract(ctx context.Context, supplier propagation.HTTP
|
||||
}
|
||||
|
||||
contextValues := strings.Split(correlationContext, ",")
|
||||
keyValues := make([]core.KeyValue, 0, len(contextValues))
|
||||
keyValues := make([]kv.KeyValue, 0, len(contextValues))
|
||||
for _, contextValue := range contextValues {
|
||||
valueAndProps := strings.Split(contextValue, ";")
|
||||
if len(valueAndProps) < 1 {
|
||||
@@ -98,7 +97,7 @@ func (CorrelationContext) Extract(ctx context.Context, supplier propagation.HTTP
|
||||
trimmedValueWithProps.WriteString(prop)
|
||||
}
|
||||
|
||||
keyValues = append(keyValues, key.New(trimmedName).String(trimmedValueWithProps.String()))
|
||||
keyValues = append(keyValues, kv.NewKey(trimmedName).String(trimmedValueWithProps.String()))
|
||||
}
|
||||
return ContextWithMap(ctx, NewMap(MapUpdate{
|
||||
MultiKV: keyValues,
|
||||
|
||||
@@ -20,11 +20,12 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"go.opentelemetry.io/otel/api/kv/value"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
|
||||
"go.opentelemetry.io/otel/api/core"
|
||||
"go.opentelemetry.io/otel/api/correlation"
|
||||
"go.opentelemetry.io/otel/api/key"
|
||||
"go.opentelemetry.io/otel/api/kv"
|
||||
"go.opentelemetry.io/otel/api/propagation"
|
||||
)
|
||||
|
||||
@@ -33,54 +34,54 @@ func TestExtractValidDistributedContextFromHTTPReq(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
header string
|
||||
wantKVs []core.KeyValue
|
||||
wantKVs []kv.KeyValue
|
||||
}{
|
||||
{
|
||||
name: "valid w3cHeader",
|
||||
header: "key1=val1,key2=val2",
|
||||
wantKVs: []core.KeyValue{
|
||||
key.New("key1").String("val1"),
|
||||
key.New("key2").String("val2"),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.NewKey("key1").String("val1"),
|
||||
kv.NewKey("key2").String("val2"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "valid w3cHeader with spaces",
|
||||
header: "key1 = val1, key2 =val2 ",
|
||||
wantKVs: []core.KeyValue{
|
||||
key.New("key1").String("val1"),
|
||||
key.New("key2").String("val2"),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.NewKey("key1").String("val1"),
|
||||
kv.NewKey("key2").String("val2"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "valid w3cHeader with properties",
|
||||
header: "key1=val1,key2=val2;prop=1",
|
||||
wantKVs: []core.KeyValue{
|
||||
key.New("key1").String("val1"),
|
||||
key.New("key2").String("val2;prop=1"),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.NewKey("key1").String("val1"),
|
||||
kv.NewKey("key2").String("val2;prop=1"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "valid header with url-escaped comma",
|
||||
header: "key1=val1,key2=val2%2Cval3",
|
||||
wantKVs: []core.KeyValue{
|
||||
key.New("key1").String("val1"),
|
||||
key.New("key2").String("val2,val3"),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.NewKey("key1").String("val1"),
|
||||
kv.NewKey("key2").String("val2,val3"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "valid header with an invalid header",
|
||||
header: "key1=val1,key2=val2,a,val3",
|
||||
wantKVs: []core.KeyValue{
|
||||
key.New("key1").String("val1"),
|
||||
key.New("key2").String("val2"),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.NewKey("key1").String("val1"),
|
||||
kv.NewKey("key2").String("val2"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "valid header with no value",
|
||||
header: "key1=,key2=val2",
|
||||
wantKVs: []core.KeyValue{
|
||||
key.New("key1").String(""),
|
||||
key.New("key2").String("val2"),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.NewKey("key1").String(""),
|
||||
kv.NewKey("key2").String("val2"),
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -102,9 +103,9 @@ func TestExtractValidDistributedContextFromHTTPReq(t *testing.T) {
|
||||
)
|
||||
}
|
||||
totalDiff := ""
|
||||
wantCorCtx.Foreach(func(kv core.KeyValue) bool {
|
||||
val, _ := gotCorCtx.Value(kv.Key)
|
||||
diff := cmp.Diff(kv, core.KeyValue{Key: kv.Key, Value: val}, cmp.AllowUnexported(core.Value{}))
|
||||
wantCorCtx.Foreach(func(keyValue kv.KeyValue) bool {
|
||||
val, _ := gotCorCtx.Value(keyValue.Key)
|
||||
diff := cmp.Diff(keyValue, kv.KeyValue{Key: keyValue.Key, Value: val}, cmp.AllowUnexported(value.Value{}))
|
||||
if diff != "" {
|
||||
totalDiff += diff + "\n"
|
||||
}
|
||||
@@ -149,38 +150,38 @@ func TestInjectCorrelationContextToHTTPReq(t *testing.T) {
|
||||
props := propagation.New(propagation.WithInjectors(propagator))
|
||||
tests := []struct {
|
||||
name string
|
||||
kvs []core.KeyValue
|
||||
kvs []kv.KeyValue
|
||||
wantInHeader []string
|
||||
wantedLen int
|
||||
}{
|
||||
{
|
||||
name: "two simple values",
|
||||
kvs: []core.KeyValue{
|
||||
key.New("key1").String("val1"),
|
||||
key.New("key2").String("val2"),
|
||||
kvs: []kv.KeyValue{
|
||||
kv.NewKey("key1").String("val1"),
|
||||
kv.NewKey("key2").String("val2"),
|
||||
},
|
||||
wantInHeader: []string{"key1=val1", "key2=val2"},
|
||||
},
|
||||
{
|
||||
name: "two values with escaped chars",
|
||||
kvs: []core.KeyValue{
|
||||
key.New("key1").String("val1,val2"),
|
||||
key.New("key2").String("val3=4"),
|
||||
kvs: []kv.KeyValue{
|
||||
kv.NewKey("key1").String("val1,val2"),
|
||||
kv.NewKey("key2").String("val3=4"),
|
||||
},
|
||||
wantInHeader: []string{"key1=val1%2Cval2", "key2=val3%3D4"},
|
||||
},
|
||||
{
|
||||
name: "values of non-string types",
|
||||
kvs: []core.KeyValue{
|
||||
key.New("key1").Bool(true),
|
||||
key.New("key2").Int(123),
|
||||
key.New("key3").Int64(123),
|
||||
key.New("key4").Int32(123),
|
||||
key.New("key5").Uint(123),
|
||||
key.New("key6").Uint32(123),
|
||||
key.New("key7").Uint64(123),
|
||||
key.New("key8").Float64(123.567),
|
||||
key.New("key9").Float32(123.567),
|
||||
kvs: []kv.KeyValue{
|
||||
kv.NewKey("key1").Bool(true),
|
||||
kv.NewKey("key2").Int(123),
|
||||
kv.NewKey("key3").Int64(123),
|
||||
kv.NewKey("key4").Int32(123),
|
||||
kv.NewKey("key5").Uint(123),
|
||||
kv.NewKey("key6").Uint32(123),
|
||||
kv.NewKey("key7").Uint64(123),
|
||||
kv.NewKey("key8").Float64(123.567),
|
||||
kv.NewKey("key9").Float32(123.567),
|
||||
},
|
||||
wantInHeader: []string{
|
||||
"key1=true",
|
||||
|
||||
@@ -15,11 +15,12 @@
|
||||
package correlation
|
||||
|
||||
import (
|
||||
"go.opentelemetry.io/otel/api/core"
|
||||
"go.opentelemetry.io/otel/api/kv"
|
||||
"go.opentelemetry.io/otel/api/kv/value"
|
||||
)
|
||||
|
||||
type rawMap map[core.Key]core.Value
|
||||
type keySet map[core.Key]struct{}
|
||||
type rawMap map[kv.Key]value.Value
|
||||
type keySet map[kv.Key]struct{}
|
||||
|
||||
// Map is an immutable storage for correlations.
|
||||
type Map struct {
|
||||
@@ -32,18 +33,18 @@ type MapUpdate struct {
|
||||
// DropSingleK contains a single key to be dropped from
|
||||
// correlations. Use this to avoid an overhead of a slice
|
||||
// allocation if there is only one key to drop.
|
||||
DropSingleK core.Key
|
||||
DropSingleK kv.Key
|
||||
// DropMultiK contains all the keys to be dropped from
|
||||
// correlations.
|
||||
DropMultiK []core.Key
|
||||
DropMultiK []kv.Key
|
||||
|
||||
// SingleKV contains a single key-value pair to be added to
|
||||
// correlations. Use this to avoid an overhead of a slice
|
||||
// allocation if there is only one key-value pair to add.
|
||||
SingleKV core.KeyValue
|
||||
SingleKV kv.KeyValue
|
||||
// MultiKV contains all the key-value pairs to be added to
|
||||
// correlations.
|
||||
MultiKV []core.KeyValue
|
||||
MultiKV []kv.KeyValue
|
||||
}
|
||||
|
||||
func newMap(raw rawMap) Map {
|
||||
@@ -101,7 +102,7 @@ func getModificationSets(update MapUpdate) (delSet, addSet keySet) {
|
||||
deletionsCount++
|
||||
}
|
||||
if deletionsCount > 0 {
|
||||
delSet = make(map[core.Key]struct{}, deletionsCount)
|
||||
delSet = make(map[kv.Key]struct{}, deletionsCount)
|
||||
for _, k := range update.DropMultiK {
|
||||
delSet[k] = struct{}{}
|
||||
}
|
||||
@@ -115,7 +116,7 @@ func getModificationSets(update MapUpdate) (delSet, addSet keySet) {
|
||||
additionsCount++
|
||||
}
|
||||
if additionsCount > 0 {
|
||||
addSet = make(map[core.Key]struct{}, additionsCount)
|
||||
addSet = make(map[kv.Key]struct{}, additionsCount)
|
||||
for _, k := range update.MultiKV {
|
||||
addSet[k.Key] = struct{}{}
|
||||
}
|
||||
@@ -146,14 +147,14 @@ func getNewMapSize(m rawMap, delSet, addSet keySet) int {
|
||||
|
||||
// Value gets a value from correlations map and returns a boolean
|
||||
// value indicating whether the key exist in the map.
|
||||
func (m Map) Value(k core.Key) (core.Value, bool) {
|
||||
func (m Map) Value(k kv.Key) (value.Value, bool) {
|
||||
value, ok := m.m[k]
|
||||
return value, ok
|
||||
}
|
||||
|
||||
// HasValue returns a boolean value indicating whether the key exist
|
||||
// in the map.
|
||||
func (m Map) HasValue(k core.Key) bool {
|
||||
func (m Map) HasValue(k kv.Key) bool {
|
||||
_, has := m.Value(k)
|
||||
return has
|
||||
}
|
||||
@@ -166,9 +167,9 @@ func (m Map) Len() int {
|
||||
// Foreach calls a passed callback once on each key-value pair until
|
||||
// all the key-value pairs of the map were iterated or the callback
|
||||
// returns false, whichever happens first.
|
||||
func (m Map) Foreach(f func(kv core.KeyValue) bool) {
|
||||
func (m Map) Foreach(f func(kv kv.KeyValue) bool) {
|
||||
for k, v := range m.m {
|
||||
if !f(core.KeyValue{
|
||||
if !f(kv.KeyValue{
|
||||
Key: k,
|
||||
Value: v,
|
||||
}) {
|
||||
|
||||
@@ -18,15 +18,16 @@ import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"go.opentelemetry.io/otel/api/core"
|
||||
"go.opentelemetry.io/otel/api/key"
|
||||
"go.opentelemetry.io/otel/api/kv/value"
|
||||
|
||||
"go.opentelemetry.io/otel/api/kv"
|
||||
)
|
||||
|
||||
type testCase struct {
|
||||
name string
|
||||
value MapUpdate
|
||||
init []int
|
||||
wantKVs []core.KeyValue
|
||||
wantKVs []kv.KeyValue
|
||||
}
|
||||
|
||||
func TestMap(t *testing.T) {
|
||||
@@ -47,7 +48,7 @@ func TestMap(t *testing.T) {
|
||||
}
|
||||
}
|
||||
// test Foreach()
|
||||
got.Foreach(func(kv core.KeyValue) bool {
|
||||
got.Foreach(func(kv kv.KeyValue) bool {
|
||||
for _, want := range testcase.wantKVs {
|
||||
if kv == want {
|
||||
return false
|
||||
@@ -85,193 +86,193 @@ func TestSizeComputation(t *testing.T) {
|
||||
func getTestCases() []testCase {
|
||||
return []testCase{
|
||||
{
|
||||
name: "New map with MultiKV",
|
||||
value: MapUpdate{MultiKV: []core.KeyValue{
|
||||
key.Int64("key1", 1),
|
||||
key.String("key2", "val2")},
|
||||
name: "NewKey map with MultiKV",
|
||||
value: MapUpdate{MultiKV: []kv.KeyValue{
|
||||
kv.Int64("key1", 1),
|
||||
kv.String("key2", "val2")},
|
||||
},
|
||||
init: []int{},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.Int64("key1", 1),
|
||||
key.String("key2", "val2"),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.Int64("key1", 1),
|
||||
kv.String("key2", "val2"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "New map with SingleKV",
|
||||
value: MapUpdate{SingleKV: key.String("key1", "val1")},
|
||||
name: "NewKey map with SingleKV",
|
||||
value: MapUpdate{SingleKV: kv.String("key1", "val1")},
|
||||
init: []int{},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.String("key1", "val1"),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.String("key1", "val1"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "New map with both add fields",
|
||||
value: MapUpdate{SingleKV: key.Int64("key1", 3),
|
||||
MultiKV: []core.KeyValue{
|
||||
key.String("key1", ""),
|
||||
key.String("key2", "val2")},
|
||||
name: "NewKey map with both add fields",
|
||||
value: MapUpdate{SingleKV: kv.Int64("key1", 3),
|
||||
MultiKV: []kv.KeyValue{
|
||||
kv.String("key1", ""),
|
||||
kv.String("key2", "val2")},
|
||||
},
|
||||
init: []int{},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.String("key1", ""),
|
||||
key.String("key2", "val2"),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.String("key1", ""),
|
||||
kv.String("key2", "val2"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "New map with empty MapUpdate",
|
||||
name: "NewKey map with empty MapUpdate",
|
||||
value: MapUpdate{},
|
||||
init: []int{},
|
||||
wantKVs: []core.KeyValue{},
|
||||
wantKVs: []kv.KeyValue{},
|
||||
},
|
||||
{
|
||||
name: "New map with DropSingleK",
|
||||
value: MapUpdate{DropSingleK: core.Key("key1")},
|
||||
name: "NewKey map with DropSingleK",
|
||||
value: MapUpdate{DropSingleK: kv.Key("key1")},
|
||||
init: []int{},
|
||||
wantKVs: []core.KeyValue{},
|
||||
wantKVs: []kv.KeyValue{},
|
||||
},
|
||||
{
|
||||
name: "New map with DropMultiK",
|
||||
value: MapUpdate{DropMultiK: []core.Key{
|
||||
core.Key("key1"), core.Key("key2"),
|
||||
name: "NewKey map with DropMultiK",
|
||||
value: MapUpdate{DropMultiK: []kv.Key{
|
||||
kv.Key("key1"), kv.Key("key2"),
|
||||
}},
|
||||
init: []int{},
|
||||
wantKVs: []core.KeyValue{},
|
||||
wantKVs: []kv.KeyValue{},
|
||||
},
|
||||
{
|
||||
name: "New map with both drop fields",
|
||||
name: "NewKey map with both drop fields",
|
||||
value: MapUpdate{
|
||||
DropSingleK: core.Key("key1"),
|
||||
DropMultiK: []core.Key{
|
||||
core.Key("key1"),
|
||||
core.Key("key2"),
|
||||
DropSingleK: kv.Key("key1"),
|
||||
DropMultiK: []kv.Key{
|
||||
kv.Key("key1"),
|
||||
kv.Key("key2"),
|
||||
},
|
||||
},
|
||||
init: []int{},
|
||||
wantKVs: []core.KeyValue{},
|
||||
wantKVs: []kv.KeyValue{},
|
||||
},
|
||||
{
|
||||
name: "New map with all fields",
|
||||
name: "NewKey map with all fields",
|
||||
value: MapUpdate{
|
||||
DropSingleK: core.Key("key1"),
|
||||
DropMultiK: []core.Key{
|
||||
core.Key("key1"),
|
||||
core.Key("key2"),
|
||||
DropSingleK: kv.Key("key1"),
|
||||
DropMultiK: []kv.Key{
|
||||
kv.Key("key1"),
|
||||
kv.Key("key2"),
|
||||
},
|
||||
SingleKV: key.String("key4", "val4"),
|
||||
MultiKV: []core.KeyValue{
|
||||
key.String("key1", ""),
|
||||
key.String("key2", "val2"),
|
||||
key.String("key3", "val3"),
|
||||
SingleKV: kv.String("key4", "val4"),
|
||||
MultiKV: []kv.KeyValue{
|
||||
kv.String("key1", ""),
|
||||
kv.String("key2", "val2"),
|
||||
kv.String("key3", "val3"),
|
||||
},
|
||||
},
|
||||
init: []int{},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.String("key1", ""),
|
||||
key.String("key2", "val2"),
|
||||
key.String("key3", "val3"),
|
||||
key.String("key4", "val4"),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.String("key1", ""),
|
||||
kv.String("key2", "val2"),
|
||||
kv.String("key3", "val3"),
|
||||
kv.String("key4", "val4"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Existing map with MultiKV",
|
||||
value: MapUpdate{MultiKV: []core.KeyValue{
|
||||
key.Int64("key1", 1),
|
||||
key.String("key2", "val2")},
|
||||
value: MapUpdate{MultiKV: []kv.KeyValue{
|
||||
kv.Int64("key1", 1),
|
||||
kv.String("key2", "val2")},
|
||||
},
|
||||
init: []int{5},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.Int64("key1", 1),
|
||||
key.String("key2", "val2"),
|
||||
key.Int("key5", 5),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.Int64("key1", 1),
|
||||
kv.String("key2", "val2"),
|
||||
kv.Int("key5", 5),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Existing map with SingleKV",
|
||||
value: MapUpdate{SingleKV: key.String("key1", "val1")},
|
||||
value: MapUpdate{SingleKV: kv.String("key1", "val1")},
|
||||
init: []int{5},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.String("key1", "val1"),
|
||||
key.Int("key5", 5),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.String("key1", "val1"),
|
||||
kv.Int("key5", 5),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Existing map with both add fields",
|
||||
value: MapUpdate{SingleKV: key.Int64("key1", 3),
|
||||
MultiKV: []core.KeyValue{
|
||||
key.String("key1", ""),
|
||||
key.String("key2", "val2")},
|
||||
value: MapUpdate{SingleKV: kv.Int64("key1", 3),
|
||||
MultiKV: []kv.KeyValue{
|
||||
kv.String("key1", ""),
|
||||
kv.String("key2", "val2")},
|
||||
},
|
||||
init: []int{5},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.String("key1", ""),
|
||||
key.String("key2", "val2"),
|
||||
key.Int("key5", 5),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.String("key1", ""),
|
||||
kv.String("key2", "val2"),
|
||||
kv.Int("key5", 5),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Existing map with empty MapUpdate",
|
||||
value: MapUpdate{},
|
||||
init: []int{5},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.Int("key5", 5),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.Int("key5", 5),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Existing map with DropSingleK",
|
||||
value: MapUpdate{DropSingleK: core.Key("key1")},
|
||||
value: MapUpdate{DropSingleK: kv.Key("key1")},
|
||||
init: []int{1, 5},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.Int("key5", 5),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.Int("key5", 5),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Existing map with DropMultiK",
|
||||
value: MapUpdate{DropMultiK: []core.Key{
|
||||
core.Key("key1"), core.Key("key2"),
|
||||
value: MapUpdate{DropMultiK: []kv.Key{
|
||||
kv.Key("key1"), kv.Key("key2"),
|
||||
}},
|
||||
init: []int{1, 5},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.Int("key5", 5),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.Int("key5", 5),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Existing map with both drop fields",
|
||||
value: MapUpdate{
|
||||
DropSingleK: core.Key("key1"),
|
||||
DropMultiK: []core.Key{
|
||||
core.Key("key1"),
|
||||
core.Key("key2"),
|
||||
DropSingleK: kv.Key("key1"),
|
||||
DropMultiK: []kv.Key{
|
||||
kv.Key("key1"),
|
||||
kv.Key("key2"),
|
||||
},
|
||||
},
|
||||
init: []int{1, 2, 5},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.Int("key5", 5),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.Int("key5", 5),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Existing map with all the fields",
|
||||
value: MapUpdate{
|
||||
DropSingleK: core.Key("key1"),
|
||||
DropMultiK: []core.Key{
|
||||
core.Key("key1"),
|
||||
core.Key("key2"),
|
||||
core.Key("key5"),
|
||||
core.Key("key6"),
|
||||
DropSingleK: kv.Key("key1"),
|
||||
DropMultiK: []kv.Key{
|
||||
kv.Key("key1"),
|
||||
kv.Key("key2"),
|
||||
kv.Key("key5"),
|
||||
kv.Key("key6"),
|
||||
},
|
||||
SingleKV: key.String("key4", "val4"),
|
||||
MultiKV: []core.KeyValue{
|
||||
key.String("key1", ""),
|
||||
key.String("key2", "val2"),
|
||||
key.String("key3", "val3"),
|
||||
SingleKV: kv.String("key4", "val4"),
|
||||
MultiKV: []kv.KeyValue{
|
||||
kv.String("key1", ""),
|
||||
kv.String("key2", "val2"),
|
||||
kv.String("key3", "val3"),
|
||||
},
|
||||
},
|
||||
init: []int{5, 6, 7},
|
||||
wantKVs: []core.KeyValue{
|
||||
key.String("key1", ""),
|
||||
key.String("key2", "val2"),
|
||||
key.String("key3", "val3"),
|
||||
key.String("key4", "val4"),
|
||||
key.Int("key7", 7),
|
||||
wantKVs: []kv.KeyValue{
|
||||
kv.String("key1", ""),
|
||||
kv.String("key2", "val2"),
|
||||
kv.String("key3", "val3"),
|
||||
kv.String("key4", "val4"),
|
||||
kv.Int("key7", 7),
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -280,7 +281,7 @@ func getTestCases() []testCase {
|
||||
func makeTestMap(ints []int) Map {
|
||||
r := make(rawMap, len(ints))
|
||||
for _, v := range ints {
|
||||
r[core.Key(fmt.Sprintf("key%d", v))] = core.Int(v)
|
||||
r[kv.Key(fmt.Sprintf("key%d", v))] = value.Int(v)
|
||||
}
|
||||
return newMap(r)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user