Skip to content

Commit 40c439a

Browse files
authored
Remove internaldata.MetricsData, same APIs as for traces (#3156)
Signed-off-by: Bogdan Drutu <[email protected]>
1 parent 48f034a commit 40c439a

File tree

13 files changed

+178
-274
lines changed

13 files changed

+178
-274
lines changed

exporter/opencensusexporter/opencensus.go

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -207,23 +207,19 @@ func (oce *ocExporter) pushMetricsData(_ context.Context, md pdata.Metrics) erro
207207
}
208208
}
209209

210-
ocmds := internaldata.MetricsToOC(md)
211-
for _, ocmd := range ocmds {
210+
rms := md.ResourceMetrics()
211+
for i := 0; i < rms.Len(); i++ {
212+
ocReq := agentmetricspb.ExportMetricsServiceRequest{}
213+
ocReq.Node, ocReq.Resource, ocReq.Metrics = internaldata.ResourceMetricsToOC(rms.At(i))
214+
212215
// This is a hack because OC protocol expects a Node for the initial message.
213-
node := ocmd.Node
214-
if node == nil {
215-
node = &commonpb.Node{}
216-
}
217-
resource := ocmd.Resource
218-
if resource == nil {
219-
resource = &resourcepb.Resource{}
216+
if ocReq.Node == nil {
217+
ocReq.Node = &commonpb.Node{}
220218
}
221-
req := &agentmetricspb.ExportMetricsServiceRequest{
222-
Metrics: ocmd.Metrics,
223-
Resource: resource,
224-
Node: node,
219+
if ocReq.Resource == nil {
220+
ocReq.Resource = &resourcepb.Resource{}
225221
}
226-
if err := mClient.msec.Send(req); err != nil {
222+
if err := mClient.msec.Send(&ocReq); err != nil {
227223
// Error received, cancel the context used to create the RPC to free all resources,
228224
// put back nil to keep the number of workers constant.
229225
mClient.cancel()

exporter/prometheusexporter/prometheus_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,11 @@ func TestPrometheusExporter_endToEnd(t *testing.T) {
130130
require.NoError(t, exp.Start(context.Background(), componenttest.NewNopHost()))
131131

132132
// Should accumulate multiple metrics
133-
md := internaldata.OCToMetrics(internaldata.MetricsData{Metrics: metricBuilder(128, "metric_1_")})
133+
md := internaldata.OCToMetrics(nil, nil, metricBuilder(128, "metric_1_"))
134134
assert.NoError(t, exp.ConsumeMetrics(context.Background(), md))
135135

136136
for delta := 0; delta <= 20; delta += 10 {
137-
md := internaldata.OCToMetrics(internaldata.MetricsData{Metrics: metricBuilder(int64(delta), "metric_2_")})
137+
md := internaldata.OCToMetrics(nil, nil, metricBuilder(int64(delta), "metric_2_"))
138138
assert.NoError(t, exp.ConsumeMetrics(context.Background(), md))
139139

140140
res, err1 := http.Get("http://localhost:7777/metrics")
@@ -208,11 +208,11 @@ func TestPrometheusExporter_endToEndWithTimestamps(t *testing.T) {
208208

209209
// Should accumulate multiple metrics
210210

211-
md := internaldata.OCToMetrics(internaldata.MetricsData{Metrics: metricBuilder(128, "metric_1_")})
211+
md := internaldata.OCToMetrics(nil, nil, metricBuilder(128, "metric_1_"))
212212
assert.NoError(t, exp.ConsumeMetrics(context.Background(), md))
213213

214214
for delta := 0; delta <= 20; delta += 10 {
215-
md := internaldata.OCToMetrics(internaldata.MetricsData{Metrics: metricBuilder(int64(delta), "metric_2_")})
215+
md := internaldata.OCToMetrics(nil, nil, metricBuilder(int64(delta), "metric_2_"))
216216
assert.NoError(t, exp.ConsumeMetrics(context.Background(), md))
217217

218218
res, err1 := http.Get("http://localhost:7777/metrics")

receiver/opencensusreceiver/ocmetrics/opencensus.go

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121

2222
commonpb "github.com/census-instrumentation/opencensus-proto/gen-go/agent/common/v1"
2323
agentmetricspb "github.com/census-instrumentation/opencensus-proto/gen-go/agent/metrics/v1"
24+
ocmetrics "github.com/census-instrumentation/opencensus-proto/gen-go/metrics/v1"
2425
resourcepb "github.com/census-instrumentation/opencensus-proto/gen-go/resource/v1"
2526

2627
"go.opentelemetry.io/collector/component/componenterror"
@@ -116,36 +117,28 @@ func (ocr *Receiver) processReceivedMsg(
116117
resource = recv.Resource
117118
}
118119

119-
md := internaldata.MetricsData{
120-
Node: lastNonNilNode,
121-
Resource: resource,
122-
Metrics: recv.Metrics,
123-
}
124-
125-
err := ocr.sendToNextConsumer(longLivedRPCCtx, md)
120+
err := ocr.sendToNextConsumer(longLivedRPCCtx, lastNonNilNode, resource, recv.Metrics)
126121
return lastNonNilNode, resource, err
127122
}
128123

129-
func (ocr *Receiver) sendToNextConsumer(longLivedRPCCtx context.Context, md internaldata.MetricsData) error {
124+
func (ocr *Receiver) sendToNextConsumer(longLivedRPCCtx context.Context, node *commonpb.Node, resource *resourcepb.Resource, metrics []*ocmetrics.Metric) error {
130125
ctx := obsreport.StartMetricsReceiveOp(
131126
longLivedRPCCtx,
132127
ocr.id,
133128
receiverTransport,
134129
obsreport.WithLongLivedCtx())
135130

136-
numTimeSeries := 0
137131
numPoints := 0
138132
// Count number of time series and data points.
139-
for _, metric := range md.Metrics {
140-
numTimeSeries += len(metric.Timeseries)
133+
for _, metric := range metrics {
141134
for _, ts := range metric.GetTimeseries() {
142135
numPoints += len(ts.GetPoints())
143136
}
144137
}
145138

146139
var consumerErr error
147-
if len(md.Metrics) > 0 {
148-
consumerErr = ocr.nextConsumer.ConsumeMetrics(ctx, internaldata.OCToMetrics(md))
140+
if len(metrics) > 0 {
141+
consumerErr = ocr.nextConsumer.ConsumeMetrics(ctx, internaldata.OCToMetrics(node, resource, metrics))
149142
}
150143

151144
obsreport.EndMetricsReceiveOp(

receiver/opencensusreceiver/ocmetrics/opencensus_test.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,10 @@ func TestExportMultiplexing(t *testing.T) {
151151
// Examination time!
152152
resultsMapping := make(map[string][]*metricspb.Metric)
153153
for _, md := range metricSink.AllMetrics() {
154-
ocmds := internaldata.MetricsToOC(md)
155-
for _, ocmd := range ocmds {
156-
resultsMapping[nodeToKey(ocmd.Node)] = append(resultsMapping[nodeToKey(ocmd.Node)], ocmd.Metrics...)
154+
rms := md.ResourceMetrics()
155+
for i := 0; i < rms.Len(); i++ {
156+
node, _, metrics := internaldata.ResourceMetricsToOC(rms.At(i))
157+
resultsMapping[nodeToKey(node)] = append(resultsMapping[nodeToKey(node)], metrics...)
157158
}
158159
}
159160

@@ -292,9 +293,10 @@ func TestExportProtocolConformation_metricsInFirstMessage(t *testing.T) {
292293
// Examination time!
293294
resultsMapping := make(map[string][]*metricspb.Metric)
294295
for _, md := range metricSink.AllMetrics() {
295-
ocmds := internaldata.MetricsToOC(md)
296-
for _, ocmd := range ocmds {
297-
resultsMapping[nodeToKey(ocmd.Node)] = append(resultsMapping[nodeToKey(ocmd.Node)], ocmd.Metrics...)
296+
rms := md.ResourceMetrics()
297+
for i := 0; i < rms.Len(); i++ {
298+
node, _, metrics := internaldata.ResourceMetricsToOC(rms.At(i))
299+
resultsMapping[nodeToKey(node)] = append(resultsMapping[nodeToKey(node)], metrics...)
298300
}
299301
}
300302

receiver/prometheusreceiver/internal/transaction.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,7 @@ func (tr *transaction) Commit() error {
183183

184184
numPoints := 0
185185
if len(metrics) > 0 {
186-
md := internaldata.OCToMetrics(internaldata.MetricsData{
187-
Node: tr.node,
188-
Resource: tr.resource,
189-
Metrics: metrics,
190-
})
186+
md := internaldata.OCToMetrics(tr.node, tr.resource, metrics)
191187
_, numPoints = md.MetricAndDataPointCount()
192188
err = tr.sink.ConsumeMetrics(ctx, md)
193189
}

receiver/prometheusreceiver/internal/transaction_test.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@ import (
2020
"testing"
2121
"time"
2222

23+
agentmetricspb "github.com/census-instrumentation/opencensus-proto/gen-go/agent/metrics/v1"
2324
"github.com/prometheus/common/model"
2425
"github.com/prometheus/prometheus/pkg/labels"
2526
"github.com/prometheus/prometheus/scrape"
27+
"github.com/stretchr/testify/require"
2628
"google.golang.org/protobuf/proto"
2729

2830
"go.opentelemetry.io/collector/config"
@@ -117,10 +119,14 @@ func Test_transaction(t *testing.T) {
117119
if len(mds) != 1 {
118120
t.Fatalf("wanted one batch, got %v\n", sink.AllMetrics())
119121
}
120-
ocmds := internaldata.MetricsToOC(mds[0])
121-
if len(ocmds) != 1 {
122-
t.Fatalf("wanted one batch per node, got %v\n", sink.AllMetrics())
122+
var ocmds []*agentmetricspb.ExportMetricsServiceRequest
123+
rms := mds[0].ResourceMetrics()
124+
for i := 0; i < rms.Len(); i++ {
125+
ocmd := &agentmetricspb.ExportMetricsServiceRequest{}
126+
ocmd.Node, ocmd.Resource, ocmd.Metrics = internaldata.ResourceMetricsToOC(rms.At(i))
127+
ocmds = append(ocmds, ocmd)
123128
}
129+
require.Len(t, ocmds, 1)
124130
if !proto.Equal(ocmds[0].Node, expectedNode) {
125131
t.Errorf("generated node %v and expected node %v is different\n", ocmds[0].Node, expectedNode)
126132
}

0 commit comments

Comments
 (0)