diff --git a/CHANGELOG.md b/CHANGELOG.md index cdfa4ea2a9a..e5956b5b8a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ### Deprecated - The `TextMapCarrier` and `TextMapPropagator` from the `go.opentelemetry.io/otel/oteltest` package and their associated creation functions (`TextMapCarrier`, `NewTextMapPropagator`) are deprecated. (#2114) +- The `TraceStateFromKeyValues` function from the `go.opentelemetry.io/otel/oteltest` package is deprecated. + Use the `trace.ParseTraceState` function instead. (#2122) ### Removed diff --git a/exporters/otlp/otlptrace/go.mod b/exporters/otlp/otlptrace/go.mod index 5ffbc3fb39b..1489dc47a77 100644 --- a/exporters/otlp/otlptrace/go.mod +++ b/exporters/otlp/otlptrace/go.mod @@ -7,7 +7,6 @@ require ( github.com/google/go-cmp v0.5.6 github.com/stretchr/testify v1.7.0 go.opentelemetry.io/otel v1.0.0-RC1 - go.opentelemetry.io/otel/oteltest v1.0.0-RC1 go.opentelemetry.io/otel/sdk v1.0.0-RC1 go.opentelemetry.io/otel/trace v1.0.0-RC1 go.opentelemetry.io/proto/otlp v0.9.0 diff --git a/exporters/otlp/otlptrace/internal/tracetransform/span_test.go b/exporters/otlp/otlptrace/internal/tracetransform/span_test.go index d220d770ab3..335218dfa6c 100644 --- a/exporters/otlp/otlptrace/internal/tracetransform/span_test.go +++ b/exporters/otlp/otlptrace/internal/tracetransform/span_test.go @@ -19,8 +19,6 @@ import ( "testing" "time" - "go.opentelemetry.io/otel/oteltest" - "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -205,7 +203,7 @@ func TestSpanData(t *testing.T) { // March 31, 2020 5:01:26 1234nanos (UTC) startTime := time.Unix(1585674086, 1234) endTime := startTime.Add(10 * time.Second) - traceState, _ := oteltest.TraceStateFromKeyValues(attribute.String("key1", "val1"), attribute.String("key2", "val2")) + traceState, _ := trace.ParseTraceState("key1=val1,key2=val2") spanData := tracetest.SpanStub{ SpanContext: trace.NewSpanContext(trace.SpanContextConfig{ TraceID: trace.TraceID{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}, diff --git a/exporters/stdout/stdouttrace/go.mod b/exporters/stdout/stdouttrace/go.mod index 6e043bdc9ea..a3a483e907d 100644 --- a/exporters/stdout/stdouttrace/go.mod +++ b/exporters/stdout/stdouttrace/go.mod @@ -10,7 +10,6 @@ replace ( require ( github.com/stretchr/testify v1.7.0 go.opentelemetry.io/otel v1.0.0-RC1 - go.opentelemetry.io/otel/oteltest v1.0.0-RC1 go.opentelemetry.io/otel/sdk v1.0.0-RC1 go.opentelemetry.io/otel/trace v1.0.0-RC1 ) diff --git a/exporters/stdout/stdouttrace/trace_test.go b/exporters/stdout/stdouttrace/trace_test.go index e54571b0e73..a8627a61bdb 100644 --- a/exporters/stdout/stdouttrace/trace_test.go +++ b/exporters/stdout/stdouttrace/trace_test.go @@ -27,7 +27,6 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/exporters/stdout/stdouttrace" - "go.opentelemetry.io/otel/oteltest" "go.opentelemetry.io/otel/sdk/resource" tracesdk "go.opentelemetry.io/otel/sdk/trace" "go.opentelemetry.io/otel/sdk/trace/tracetest" @@ -46,7 +45,7 @@ func TestExporter_ExportSpan(t *testing.T) { now := time.Now() traceID, _ := trace.TraceIDFromHex("0102030405060708090a0b0c0d0e0f10") spanID, _ := trace.SpanIDFromHex("0102030405060708") - traceState, _ := oteltest.TraceStateFromKeyValues(attribute.String("key", "val")) + traceState, _ := trace.ParseTraceState("key=val") keyValue := "value" doubleValue := 123.456 resource := resource.NewSchemaless(attribute.String("rk1", "rv11")) diff --git a/oteltest/tracestate.go b/oteltest/tracestate.go index b12743fd35f..4c5d029a311 100644 --- a/oteltest/tracestate.go +++ b/oteltest/tracestate.go @@ -28,6 +28,8 @@ import ( // by definition from the W3C tracecontext specification, stores values as // opaque strings. Therefore, it is not possible to decode the original value // type from TraceState. Be sure to not use this outside of testing purposes. +// +// Deprecated: use trace.ParseTraceState instead. func TraceStateFromKeyValues(kvs ...attribute.KeyValue) (trace.TraceState, error) { if len(kvs) == 0 { return trace.TraceState{}, nil diff --git a/sdk/trace/sampling_test.go b/sdk/trace/sampling_test.go index 6db9cfcfa23..28e3e7736b3 100644 --- a/sdk/trace/sampling_test.go +++ b/sdk/trace/sampling_test.go @@ -23,8 +23,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/oteltest" "go.opentelemetry.io/otel/trace" ) @@ -241,7 +239,7 @@ func TestTracestateIsPassed(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - traceState, err := oteltest.TraceStateFromKeyValues(attribute.String("k", "v")) + traceState, err := trace.ParseTraceState("k=v") if err != nil { t.Error(err) } diff --git a/sdk/trace/trace_test.go b/sdk/trace/trace_test.go index e7e2084c883..df463cd1fae 100644 --- a/sdk/trace/trace_test.go +++ b/sdk/trace/trace_test.go @@ -63,9 +63,6 @@ var ( sc trace.SpanContext handler = &storingHandler{} - - k1, k2, k3 attribute.Key - kv1, kv2, kv3 attribute.KeyValue ) func init() { @@ -77,13 +74,6 @@ func init() { TraceFlags: 0x1, }) - k1 = attribute.Key("k1") - kv1 = k1.String("v1") - k2 = attribute.Key("k2") - kv2 = k2.String("v2") - k3 = attribute.Key("k3") - kv3 = k3.String("v3") - otel.SetErrorHandler(handler) } @@ -354,7 +344,7 @@ func TestStartSpanWithParent(t *testing.T) { t.Error(err) } - ts, err := oteltest.TraceStateFromKeyValues(attribute.String("k", "v")) + ts, err := trace.ParseTraceState("k=v") if err != nil { t.Error(err) } @@ -1625,17 +1615,20 @@ func (s stateSampler) Description() string { // Check that a new span propagates the SamplerResult.TraceState func TestSamplerTraceState(t *testing.T) { - mustTS := func(t trace.TraceState, err error) trace.TraceState { return t } - makeInserter := func(k attribute.KeyValue, prefix string) Sampler { + mustTS := func(ts trace.TraceState, err error) trace.TraceState { + require.NoError(t, err) + return ts + } + makeInserter := func(k, v, prefix string) Sampler { return &stateSampler{ prefix: prefix, - f: func(t trace.TraceState) trace.TraceState { return mustTS(t.Insert(string(k.Key), k.Value.Emit())) }, + f: func(t trace.TraceState) trace.TraceState { return mustTS(t.Insert(k, v)) }, } } - makeDeleter := func(k attribute.Key, prefix string) Sampler { + makeDeleter := func(k, prefix string) Sampler { return &stateSampler{ prefix: prefix, - f: func(t trace.TraceState) trace.TraceState { return t.Delete(string(k)) }, + f: func(t trace.TraceState) trace.TraceState { return t.Delete(k) }, } } clearer := func(prefix string) Sampler { @@ -1656,55 +1649,55 @@ func TestSamplerTraceState(t *testing.T) { { name: "alwaysOn", sampler: AlwaysSample(), - input: mustTS(oteltest.TraceStateFromKeyValues(kv1)), - want: mustTS(oteltest.TraceStateFromKeyValues(kv1)), + input: mustTS(trace.ParseTraceState("k1=v1")), + want: mustTS(trace.ParseTraceState("k1=v1")), exportSpan: true, }, { name: "alwaysOff", sampler: NeverSample(), - input: mustTS(oteltest.TraceStateFromKeyValues(kv1)), - want: mustTS(oteltest.TraceStateFromKeyValues(kv1)), + input: mustTS(trace.ParseTraceState("k1=v1")), + want: mustTS(trace.ParseTraceState("k1=v1")), exportSpan: false, }, { name: "insertKeySampled", - sampler: makeInserter(kv2, "span"), + sampler: makeInserter("k2", "v2", "span"), spanName: "span0", - input: mustTS(oteltest.TraceStateFromKeyValues(kv1)), - want: mustTS(oteltest.TraceStateFromKeyValues(kv2, kv1)), + input: mustTS(trace.ParseTraceState("k1=v1")), + want: mustTS(trace.ParseTraceState("k2=v2,k1=v1")), exportSpan: true, }, { name: "insertKeyDropped", - sampler: makeInserter(kv2, "span"), + sampler: makeInserter("k2", "v2", "span"), spanName: "nospan0", - input: mustTS(oteltest.TraceStateFromKeyValues(kv1)), - want: mustTS(oteltest.TraceStateFromKeyValues(kv2, kv1)), + input: mustTS(trace.ParseTraceState("k1=v1")), + want: mustTS(trace.ParseTraceState("k2=v2,k1=v1")), exportSpan: false, }, { name: "deleteKeySampled", - sampler: makeDeleter(k1, "span"), + sampler: makeDeleter("k1", "span"), spanName: "span0", - input: mustTS(oteltest.TraceStateFromKeyValues(kv1, kv2)), - want: mustTS(oteltest.TraceStateFromKeyValues(kv2)), + input: mustTS(trace.ParseTraceState("k1=v1,k2=v2")), + want: mustTS(trace.ParseTraceState("k2=v2")), exportSpan: true, }, { name: "deleteKeyDropped", - sampler: makeDeleter(k1, "span"), + sampler: makeDeleter("k1", "span"), spanName: "nospan0", - input: mustTS(oteltest.TraceStateFromKeyValues(kv1, kv2, kv3)), - want: mustTS(oteltest.TraceStateFromKeyValues(kv2, kv3)), + input: mustTS(trace.ParseTraceState("k1=v1,k2=v2,k3=v3")), + want: mustTS(trace.ParseTraceState("k2=v2,k3=v3")), exportSpan: false, }, { name: "clearer", sampler: clearer("span"), spanName: "span0", - input: mustTS(oteltest.TraceStateFromKeyValues(kv1, kv3)), - want: mustTS(oteltest.TraceStateFromKeyValues()), + input: mustTS(trace.ParseTraceState("k1=v1,k3=v3")), + want: mustTS(trace.ParseTraceState("")), exportSpan: true, }, }