Skip to content

Commit

Permalink
Remove also the Nil vs Empty tests since in pdata they are equivalent.
Browse files Browse the repository at this point in the history
Signed-off-by: Bogdan Drutu <[email protected]>

Updates open-telemetry#3104
  • Loading branch information
bogdandrutu committed Jun 9, 2021
1 parent 3ac0f32 commit c876081
Showing 1 changed file with 49 additions and 167 deletions.
216 changes: 49 additions & 167 deletions testbed/tests/resource_processor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,113 +23,42 @@ import (
"github.com/stretchr/testify/require"

"go.opentelemetry.io/collector/consumer/pdata"
"go.opentelemetry.io/collector/internal"
otlpcollectormetrics "go.opentelemetry.io/collector/internal/data/protogen/collector/metrics/v1"
otlpcommon "go.opentelemetry.io/collector/internal/data/protogen/common/v1"
otlpmetrics "go.opentelemetry.io/collector/internal/data/protogen/metrics/v1"
otlpresource "go.opentelemetry.io/collector/internal/data/protogen/resource/v1"
"go.opentelemetry.io/collector/testbed/testbed"
)

var (
mockedConsumedResourceWithType = &otlpmetrics.ResourceMetrics{
Resource: otlpresource.Resource{
Attributes: []otlpcommon.KeyValue{
{
Key: "opencensus.resourcetype",
Value: otlpcommon.AnyValue{
Value: &otlpcommon.AnyValue_StringValue{
StringValue: "host",
},
},
},
{
Key: "label-key",
Value: otlpcommon.AnyValue{
Value: &otlpcommon.AnyValue_StringValue{
StringValue: "label-value",
},
},
},
},
},
InstrumentationLibraryMetrics: []*otlpmetrics.InstrumentationLibraryMetrics{
{
Metrics: []*otlpmetrics.Metric{
{
Name: "metric-name",
Description: "metric-description",
Unit: "metric-unit",
Data: &otlpmetrics.Metric_IntGauge{
IntGauge: &otlpmetrics.IntGauge{
DataPoints: []*otlpmetrics.IntDataPoint{
{
Value: 0,
},
},
},
},
},
},
},
},
}

mockedConsumedResourceNil = &otlpmetrics.ResourceMetrics{
InstrumentationLibraryMetrics: []*otlpmetrics.InstrumentationLibraryMetrics{
{
Metrics: []*otlpmetrics.Metric{
{
Name: "metric-name",
Description: "metric-description",
Unit: "metric-unit",
Data: &otlpmetrics.Metric_IntGauge{
IntGauge: &otlpmetrics.IntGauge{
DataPoints: []*otlpmetrics.IntDataPoint{
{
Value: 0,
},
},
},
},
},
},
},
},
}

mockedConsumedResourceWithoutAttributes = &otlpmetrics.ResourceMetrics{
Resource: otlpresource.Resource{
Attributes: []otlpcommon.KeyValue{},
},
InstrumentationLibraryMetrics: []*otlpmetrics.InstrumentationLibraryMetrics{
{
Metrics: []*otlpmetrics.Metric{
{
Name: "metric-name",
Description: "metric-description",
Unit: "metric-unit",
Data: &otlpmetrics.Metric_IntGauge{
IntGauge: &otlpmetrics.IntGauge{
DataPoints: []*otlpmetrics.IntDataPoint{
{
Value: 0,
},
},
},
},
},
},
},
},
}
mockedConsumedResourceWithType = func() pdata.Metrics {
md := pdata.NewMetrics()
rm := md.ResourceMetrics().AppendEmpty()
rm.Resource().Attributes().UpsertString("opencensus.resourcetype", "host")
rm.Resource().Attributes().UpsertString("label-key", "label-value")
m := rm.InstrumentationLibraryMetrics().AppendEmpty().Metrics().AppendEmpty()
m.SetName("metric-name")
m.SetDescription("metric-description")
m.SetUnit("metric-unit")
m.SetDataType(pdata.MetricDataTypeIntGauge)
m.IntGauge().DataPoints().AppendEmpty().SetValue(0)
return md
}()

mockedConsumedResourceEmpty = func() pdata.Metrics {
md := pdata.NewMetrics()
rm := md.ResourceMetrics().AppendEmpty()
m := rm.InstrumentationLibraryMetrics().AppendEmpty().Metrics().AppendEmpty()
m.SetName("metric-name")
m.SetDescription("metric-description")
m.SetUnit("metric-unit")
m.SetDataType(pdata.MetricDataTypeIntGauge)
m.IntGauge().DataPoints().AppendEmpty().SetValue(0)
return md
}()
)

type resourceProcessorTestCase struct {
name string
resourceProcessorConfig string
mockedConsumedMetricData pdata.Metrics
expectedMetricData pdata.Metrics
name string
resourceProcessorConfig string
mockedConsumedMetrics pdata.Metrics
expectedMetrics pdata.Metrics
}

func getResourceProcessorTestCases() []resourceProcessorTestCase {
Expand All @@ -149,43 +78,14 @@ func getResourceProcessorTestCases() []resourceProcessorTestCase {
- key: opencensus.resourcetype
action: delete
`,
mockedConsumedMetricData: metricsFromResourceMetrics(mockedConsumedResourceWithType),
expectedMetricData: metricsFromResourceMetrics(&otlpmetrics.ResourceMetrics{
Resource: otlpresource.Resource{
Attributes: []otlpcommon.KeyValue{
{
Key: "resource-type",
Value: otlpcommon.AnyValue{Value: &otlpcommon.AnyValue_StringValue{StringValue: "host"}},
},
{
Key: "label-key",
Value: otlpcommon.AnyValue{Value: &otlpcommon.AnyValue_StringValue{StringValue: "new-label-value"}},
},
},
},
}),
},
{
name: "set_attribute_on_nil_resource",
resourceProcessorConfig: `
resource:
attributes:
- key: additional-label-key
value: additional-label-value
action: insert
`,
mockedConsumedMetricData: metricsFromResourceMetrics(mockedConsumedResourceNil),
expectedMetricData: metricsFromResourceMetrics(&otlpmetrics.ResourceMetrics{
Resource: otlpresource.Resource{
Attributes: []otlpcommon.KeyValue{
{
Key: "additional-label-key",
Value: otlpcommon.AnyValue{Value: &otlpcommon.AnyValue_StringValue{StringValue: "additional-label-value"}},
},
},
},
}),
mockedConsumedMetrics: mockedConsumedResourceWithType,
expectedMetrics: func() pdata.Metrics {
md := pdata.NewMetrics()
rm := md.ResourceMetrics().AppendEmpty()
rm.Resource().Attributes().UpsertString("resource-type", "host")
rm.Resource().Attributes().UpsertString("label-key", "new-label-value")
return md
}(),
},
{
name: "set_attribute_on_empty_resource",
Expand All @@ -195,30 +95,21 @@ func getResourceProcessorTestCases() []resourceProcessorTestCase {
- key: additional-label-key
value: additional-label-value
action: insert
`,
mockedConsumedMetricData: metricsFromResourceMetrics(mockedConsumedResourceWithoutAttributes),
expectedMetricData: metricsFromResourceMetrics(&otlpmetrics.ResourceMetrics{
Resource: otlpresource.Resource{
Attributes: []otlpcommon.KeyValue{
{
Key: "additional-label-key",
Value: otlpcommon.AnyValue{Value: &otlpcommon.AnyValue_StringValue{StringValue: "additional-label-value"}},
},
},
},
}),
mockedConsumedMetrics: mockedConsumedResourceEmpty,
expectedMetrics: func() pdata.Metrics {
md := pdata.NewMetrics()
rm := md.ResourceMetrics().AppendEmpty()
rm.Resource().Attributes().UpsertString("additional-label-key", "additional-label-value")
return md
}(),
},
}

return tests
}

func metricsFromResourceMetrics(rm *otlpmetrics.ResourceMetrics) pdata.Metrics {
return pdata.MetricsFromInternalRep(internal.MetricsFromOtlp(&otlpcollectormetrics.ExportMetricsServiceRequest{
ResourceMetrics: []*otlpmetrics.ResourceMetrics{rm},
}))
}

func TestMetricResourceProcessor(t *testing.T) {
sender := testbed.NewOTLPMetricDataSender(testbed.DefaultHost, testbed.GetAvailablePort(t))
receiver := testbed.NewOTLPDataReceiver(testbed.GetAvailablePort(t))
Expand Down Expand Up @@ -267,7 +158,7 @@ func TestMetricResourceProcessor(t *testing.T) {
sender, ok := tc.Sender.(testbed.MetricDataSender)
require.True(t, ok, "unsupported metric sender")

require.NoError(t, sender.ConsumeMetrics(context.Background(), test.mockedConsumedMetricData))
require.NoError(t, sender.ConsumeMetrics(context.Background(), test.mockedConsumedMetrics))

// We bypass the load generator in this test, but make sure to increment the
// counter since it is used in final reports.
Expand All @@ -281,20 +172,11 @@ func TestMetricResourceProcessor(t *testing.T) {
rm := m.ResourceMetrics()
require.Equal(t, 1, rm.Len())

expectidMD := test.expectedMetricData
expectidMD := test.expectedMetrics
require.Equal(t,
attributesToMap(expectidMD.ResourceMetrics().At(0).Resource().Attributes()),
attributesToMap(rm.At(0).Resource().Attributes()),
expectidMD.ResourceMetrics().At(0).Resource().Attributes().Sort(),
rm.At(0).Resource().Attributes().Sort(),
)
})
}
}

func attributesToMap(attributes pdata.AttributeMap) map[string]pdata.AttributeValue {
out := map[string]pdata.AttributeValue{}
attributes.Range(func(k string, v pdata.AttributeValue) bool {
out[k] = v
return true
})
return out
}

0 comments on commit c876081

Please sign in to comment.