Skip to content

Commit

Permalink
Made the "transport" parameter optional for obsreport receiver functi…
Browse files Browse the repository at this point in the history
…ons and added a note about MetricCount when using the new internal data structure (open-telemetry#942)
  • Loading branch information
james-bebbington authored and wyTrivail committed Jul 13, 2020
1 parent 55b8369 commit 5b4718e
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 24 deletions.
3 changes: 2 additions & 1 deletion obsreport/obsreport.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ func Configure(
return views
}

// CountMetricPoints is a helper to count the "amount" of metrics data.
// CountMetricPoints is a helper to count the "amount" of metrics data. For code using the
// internal data structure, pdatautil.MetricAndDataPointCount should be used instead
func CountMetricPoints(md consumerdata.MetricsData) (numTimeSeries int, numPoints int) {
for _, metric := range md.Metrics {
tss := metric.GetTimeseries()
Expand Down
13 changes: 8 additions & 5 deletions obsreport/obsreport_receiver.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,10 +237,12 @@ func ReceiverContext(
}

if useNew {
mutators := []tag.Mutator{
tag.Upsert(tagKeyReceiver, receiver, tag.WithTTL(tag.TTLNoPropagation)),
tag.Upsert(tagKeyTransport, transport, tag.WithTTL(tag.TTLNoPropagation)),
mutators := make([]tag.Mutator, 0, 2)
mutators = append(mutators, tag.Upsert(tagKeyReceiver, receiver, tag.WithTTL(tag.TTLNoPropagation)))
if transport != "" {
mutators = append(mutators, tag.Upsert(tagKeyTransport, transport, tag.WithTTL(tag.TTLNoPropagation)))
}

ctx, _ = tag.New(ctx, mutators...)
}

Expand Down Expand Up @@ -278,8 +280,9 @@ func traceReceiveOp(
ctx = trace.NewContext(receiverCtx, span)
}

span.AddAttributes(trace.StringAttribute(
TransportKey, transport))
if transport != "" {
span.AddAttributes(trace.StringAttribute(TransportKey, transport))
}
return ctx
}

Expand Down
57 changes: 39 additions & 18 deletions obsreport/obsreport_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ var (
errFake = errors.New("errFake")
)

type receiveTestParams struct {
transport string
err error
}

func TestConfigure(t *testing.T) {
type args struct {
generateLegacy bool
Expand Down Expand Up @@ -106,27 +111,29 @@ func Test_obsreport_ReceiveTraceDataOp(t *testing.T) {
defer parentSpan.End()

receiverCtx := ReceiverContext(parentCtx, receiver, transport, legacyName)
errs := []error{nil, errFake}
params := []receiveTestParams{
{transport, errFake},
{"", nil},
}
rcvdSpans := []int{13, 42}
for i, err := range errs {
ctx := StartTraceDataReceiveOp(receiverCtx, receiver, transport)
for i, param := range params {
ctx := StartTraceDataReceiveOp(receiverCtx, receiver, param.transport)
assert.NotNil(t, ctx)

EndTraceDataReceiveOp(
ctx,
format,
rcvdSpans[i],
err)
param.err)
}

spans := ss.PullAllSpans()
require.Equal(t, len(errs), len(spans))
require.Equal(t, len(params), len(spans))

var acceptedSpans, refusedSpans int
for i, span := range spans {
assert.Equal(t, receiverPrefix+receiver+receiveTraceDataOperationSuffix, span.Name)
assert.Equal(t, transport, span.Attributes[TransportKey])
switch errs[i] {
switch params[i].err {
case nil:
acceptedSpans += rcvdSpans[i]
assert.Equal(t, int64(rcvdSpans[i]), span.Attributes[AcceptedSpansKey])
Expand All @@ -136,9 +143,15 @@ func Test_obsreport_ReceiveTraceDataOp(t *testing.T) {
refusedSpans += rcvdSpans[i]
assert.Equal(t, int64(0), span.Attributes[AcceptedSpansKey])
assert.Equal(t, int64(rcvdSpans[i]), span.Attributes[RefusedSpansKey])
assert.Equal(t, errs[i].Error(), span.Status.Message)
assert.Equal(t, params[i].err.Error(), span.Status.Message)
default:
t.Fatalf("unexpected error: %v", errs[i])
t.Fatalf("unexpected param: %v", params[i])
}
switch params[i].transport {
case "":
assert.NotContains(t, span.Attributes, TransportKey)
default:
assert.Equal(t, params[i].transport, span.Attributes[TransportKey])
}
}

Expand All @@ -165,30 +178,32 @@ func Test_obsreport_ReceiveMetricsOp(t *testing.T) {
defer parentSpan.End()

receiverCtx := ReceiverContext(parentCtx, receiver, transport, legacyName)
errs := []error{errFake, nil}
params := []receiveTestParams{
{transport, errFake},
{"", nil},
}
rcvdMetricPts := []int{23, 29}
rcvdTimeSeries := []int{2, 3}
for i, err := range errs {
ctx := StartMetricsReceiveOp(receiverCtx, receiver, transport)
for i, param := range params {
ctx := StartMetricsReceiveOp(receiverCtx, receiver, param.transport)
assert.NotNil(t, ctx)

EndMetricsReceiveOp(
ctx,
format,
rcvdMetricPts[i],
rcvdTimeSeries[i],
err)
param.err)
}

spans := ss.PullAllSpans()
require.Equal(t, len(errs), len(spans))
require.Equal(t, len(params), len(spans))

var receivedTimeSeries, droppedTimeSeries int
var acceptedMetricPoints, refusedMetricPoints int
for i, span := range spans {
assert.Equal(t, receiverPrefix+receiver+receiverMetricsOperationSuffix, span.Name)
assert.Equal(t, transport, span.Attributes[TransportKey])
switch errs[i] {
switch params[i].err {
case nil:
receivedTimeSeries += rcvdTimeSeries[i]
acceptedMetricPoints += rcvdMetricPts[i]
Expand All @@ -200,9 +215,15 @@ func Test_obsreport_ReceiveMetricsOp(t *testing.T) {
refusedMetricPoints += rcvdMetricPts[i]
assert.Equal(t, int64(0), span.Attributes[AcceptedMetricPointsKey])
assert.Equal(t, int64(rcvdMetricPts[i]), span.Attributes[RefusedMetricPointsKey])
assert.Equal(t, errs[i].Error(), span.Status.Message)
assert.Equal(t, params[i].err.Error(), span.Status.Message)
default:
t.Fatalf("unexpected error: %v", errs[i])
t.Fatalf("unexpected param: %v", params[i])
}
switch params[i].transport {
case "":
assert.NotContains(t, span.Attributes, TransportKey)
default:
assert.Equal(t, params[i].transport, span.Attributes[TransportKey])
}
}

Expand Down

0 comments on commit 5b4718e

Please sign in to comment.