Skip to content
This repository was archived by the owner on Nov 7, 2022. It is now read-only.

Commit 62b0ae5

Browse files
author
Bogdan Drutu
authored
Rename [Trace|Metrics]DataProcessor to [Trace|Metrics]Consumer, add TraceProcessor similar to receiver,exporter. (#473)
* Rename [Trace|Metrics]DataProcessor to [Trace|Metrics]Processor * Rename TraceProcessor to TraceConsumer as discussed. * Add empty_test for processor.
1 parent 8f26866 commit 62b0ae5

File tree

49 files changed

+420
-335
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+420
-335
lines changed

cmd/ocagent/main.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,13 @@ import (
3333
"go.uber.org/zap"
3434
"go.uber.org/zap/zapcore"
3535

36+
"github.com/census-instrumentation/opencensus-service/consumer"
3637
"github.com/census-instrumentation/opencensus-service/internal/config"
3738
"github.com/census-instrumentation/opencensus-service/internal/config/viperutils"
3839
"github.com/census-instrumentation/opencensus-service/internal/pprofserver"
3940
"github.com/census-instrumentation/opencensus-service/internal/version"
4041
"github.com/census-instrumentation/opencensus-service/observability"
41-
"github.com/census-instrumentation/opencensus-service/processor"
42+
"github.com/census-instrumentation/opencensus-service/processor/multiconsumer"
4243
"github.com/census-instrumentation/opencensus-service/receiver/jaegerreceiver"
4344
"github.com/census-instrumentation/opencensus-service/receiver/opencensusreceiver"
4445
"github.com/census-instrumentation/opencensus-service/receiver/prometheusreceiver"
@@ -117,8 +118,8 @@ func runOCAgent() {
117118
log.Fatalf("Config: failed to create exporters from YAML: %v", err)
118119
}
119120

120-
commonSpanSink := processor.NewMultiTraceDataProcessor(traceExporters)
121-
commonMetricsSink := processor.NewMultiMetricsDataProcessor(metricsExporters)
121+
commonSpanSink := multiconsumer.NewTraceProcessor(traceExporters)
122+
commonMetricsSink := multiconsumer.NewMetricsProcessor(metricsExporters)
122123

123124
// Add other receivers here as they are implemented
124125
ocReceiverDoneFn, err := runOCReceiver(logger, &agentConfig, commonSpanSink, commonMetricsSink)
@@ -213,7 +214,7 @@ func runZPages(port int) func() error {
213214
return srv.Close
214215
}
215216

216-
func runOCReceiver(logger *zap.Logger, acfg *config.Config, tdp processor.TraceDataProcessor, mdp processor.MetricsDataProcessor) (doneFn func() error, err error) {
217+
func runOCReceiver(logger *zap.Logger, acfg *config.Config, tdp consumer.TraceConsumer, mdp consumer.MetricsConsumer) (doneFn func() error, err error) {
217218
tlsCredsOption, hasTLSCreds, err := acfg.OpenCensusReceiverTLSCredentialsServerOption()
218219
if err != nil {
219220
return nil, fmt.Errorf("OpenCensus receiver TLS Credentials: %v", err)
@@ -270,7 +271,7 @@ func runOCReceiver(logger *zap.Logger, acfg *config.Config, tdp processor.TraceD
270271
return doneFn, nil
271272
}
272273

273-
func runJaegerReceiver(collectorThriftPort, collectorHTTPPort int, next processor.TraceDataProcessor) (doneFn func() error, err error) {
274+
func runJaegerReceiver(collectorThriftPort, collectorHTTPPort int, next consumer.TraceConsumer) (doneFn func() error, err error) {
274275
jtr, err := jaegerreceiver.New(context.Background(), &jaegerreceiver.Configuration{
275276
CollectorThriftPort: collectorThriftPort,
276277
CollectorHTTPPort: collectorHTTPPort,
@@ -292,7 +293,7 @@ func runJaegerReceiver(collectorThriftPort, collectorHTTPPort int, next processo
292293
return doneFn, nil
293294
}
294295

295-
func runZipkinReceiver(addr string, next processor.TraceDataProcessor) (doneFn func() error, err error) {
296+
func runZipkinReceiver(addr string, next consumer.TraceConsumer) (doneFn func() error, err error) {
296297
zi, err := zipkinreceiver.New(addr)
297298
if err != nil {
298299
return nil, fmt.Errorf("failed to create the Zipkin receiver: %v", err)
@@ -308,7 +309,7 @@ func runZipkinReceiver(addr string, next processor.TraceDataProcessor) (doneFn f
308309
return doneFn, nil
309310
}
310311

311-
func runZipkinScribeReceiver(config *config.ScribeReceiverConfig, next processor.TraceDataProcessor) (doneFn func() error, err error) {
312+
func runZipkinScribeReceiver(config *config.ScribeReceiverConfig, next consumer.TraceConsumer) (doneFn func() error, err error) {
312313
zs, err := scribe.NewReceiver(config.Address, config.Port, config.Category)
313314
if err != nil {
314315
return nil, fmt.Errorf("failed to create the Zipkin Scribe receiver: %v", err)
@@ -324,7 +325,7 @@ func runZipkinScribeReceiver(config *config.ScribeReceiverConfig, next processor
324325
return doneFn, nil
325326
}
326327

327-
func runPrometheusReceiver(v *viper.Viper, next processor.MetricsDataProcessor) (doneFn func() error, err error) {
328+
func runPrometheusReceiver(v *viper.Viper, next consumer.MetricsConsumer) (doneFn func() error, err error) {
328329
pmr, err := prometheusreceiver.New(v.Sub("receivers.prometheus"))
329330
if err != nil {
330331
return nil, err

cmd/occollector/app/collector/processors.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@ import (
2626

2727
"github.com/census-instrumentation/opencensus-service/cmd/occollector/app/builder"
2828
"github.com/census-instrumentation/opencensus-service/cmd/occollector/app/sender"
29+
"github.com/census-instrumentation/opencensus-service/consumer"
2930
"github.com/census-instrumentation/opencensus-service/exporter/loggingexporter"
3031
"github.com/census-instrumentation/opencensus-service/internal/collector/processor"
3132
"github.com/census-instrumentation/opencensus-service/internal/collector/processor/nodebatcher"
3233
"github.com/census-instrumentation/opencensus-service/internal/collector/processor/queued"
3334
"github.com/census-instrumentation/opencensus-service/internal/collector/processor/tailsampling"
3435
"github.com/census-instrumentation/opencensus-service/internal/collector/sampling"
3536
"github.com/census-instrumentation/opencensus-service/internal/config"
36-
mainprocessor "github.com/census-instrumentation/opencensus-service/processor"
3737
)
3838

39-
func createExporters(v *viper.Viper, logger *zap.Logger) ([]func(), []mainprocessor.TraceDataProcessor, []mainprocessor.MetricsDataProcessor) {
39+
func createExporters(v *viper.Viper, logger *zap.Logger) ([]func(), []consumer.TraceConsumer, []consumer.MetricsConsumer) {
4040
// TODO: (@pjanotti) this is slightly modified from agent but in the end duplication, need to consolidate style and visibility.
4141
traceExporters, metricsExporters, doneFns, err := config.ExportersFromViperConfig(logger, v)
4242
if err != nil {

consumer/consumer.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright 2019, OpenCensus Authors
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package consumer
16+
17+
import (
18+
"context"
19+
20+
"github.com/census-instrumentation/opencensus-service/data"
21+
)
22+
23+
// MetricsConsumer is an interface that receives data.MetricsData, process it as needed, and
24+
// sends it to the next processing node if any or to the destination.
25+
//
26+
// ConsumeMetricsData receives data.MetricsData for processing by the MetricsConsumer.
27+
type MetricsConsumer interface {
28+
ConsumeMetricsData(ctx context.Context, md data.MetricsData) error
29+
}
30+
31+
// TraceConsumer is an interface that receives data.TraceData, process it as needed, and
32+
// sends it to the next processing node if any or to the destination.
33+
//
34+
// ConsumeTraceData receives data.TraceData for processing by the TraceConsumer.
35+
type TraceConsumer interface {
36+
ConsumeTraceData(ctx context.Context, td data.TraceData) error
37+
}

consumer/empty_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright 2019, OpenCensus Authors
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package consumer
16+
17+
// Package with interface only.

exporter/awsexporter/aws_xray.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ import (
2626

2727
"github.com/spf13/viper"
2828

29+
"github.com/census-instrumentation/opencensus-service/consumer"
2930
"github.com/census-instrumentation/opencensus-service/data"
3031
"github.com/census-instrumentation/opencensus-service/exporter/exporterwrapper"
31-
"github.com/census-instrumentation/opencensus-service/processor"
3232
)
3333

3434
const defaultVersionForAWSXRayApplications = "latest"
@@ -57,11 +57,11 @@ type awsXRayExporter struct {
5757
defaultOptions []xray.Option
5858
}
5959

60-
var _ processor.TraceDataProcessor = (*awsXRayExporter)(nil)
60+
var _ consumer.TraceConsumer = (*awsXRayExporter)(nil)
6161

62-
// AWSXRayTraceExportersFromViper unmarshals the viper and returns an processor.TraceDataProcessor targeting
62+
// AWSXRayTraceExportersFromViper unmarshals the viper and returns an consumer.TraceConsumer targeting
6363
// AWS X-Ray according to the configuration settings.
64-
func AWSXRayTraceExportersFromViper(v *viper.Viper) (tdps []processor.TraceDataProcessor, mdps []processor.MetricsDataProcessor, doneFns []func() error, err error) {
64+
func AWSXRayTraceExportersFromViper(v *viper.Viper) (tps []consumer.TraceConsumer, mps []consumer.MetricsConsumer, doneFns []func() error, err error) {
6565
var cfg struct {
6666
AWSXRay *awsXRayConfig `mapstructure:"aws-xray"`
6767
}
@@ -84,7 +84,7 @@ func AWSXRayTraceExportersFromViper(v *viper.Viper) (tdps []processor.TraceDataP
8484
defaultServiceName: xc.DefaultServiceName,
8585
}
8686

87-
tdps = append(tdps, axe)
87+
tps = append(tps, axe)
8888
doneFns = append(doneFns, func() error {
8989
axe.Flush()
9090
return nil
@@ -146,7 +146,7 @@ func transformConfigToXRayOptions(axrCfg *awsXRayConfig) (xopts []xray.Option, e
146146

147147
// ExportSpans is the method that translates OpenCensus-Proto Traces into AWS X-Ray spans.
148148
// It uniquely maintains
149-
func (axe *awsXRayExporter) ProcessTraceData(ctx context.Context, td data.TraceData) (xerr error) {
149+
func (axe *awsXRayExporter) ConsumeTraceData(ctx context.Context, td data.TraceData) (xerr error) {
150150
ctx, span := trace.StartSpan(ctx,
151151
"opencensus.service.exporter.aws_xray.ExportSpans",
152152
trace.WithSampler(trace.NeverSample()))

exporter/datadogexporter/datadog.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import (
1818
datadog "github.com/DataDog/opencensus-go-exporter-datadog"
1919
"github.com/spf13/viper"
2020

21+
"github.com/census-instrumentation/opencensus-service/consumer"
2122
"github.com/census-instrumentation/opencensus-service/exporter/exporterwrapper"
22-
"github.com/census-instrumentation/opencensus-service/processor"
2323
)
2424

2525
type datadogConfig struct {
@@ -43,7 +43,7 @@ type datadogConfig struct {
4343

4444
// DatadogTraceExportersFromViper unmarshals the viper and returns an exporter.TraceExporter targeting
4545
// Datadog according to the configuration settings.
46-
func DatadogTraceExportersFromViper(v *viper.Viper) (tdps []processor.TraceDataProcessor, mdps []processor.MetricsDataProcessor, doneFns []func() error, err error) {
46+
func DatadogTraceExportersFromViper(v *viper.Viper) (tps []consumer.TraceConsumer, mps []consumer.MetricsConsumer, doneFns []func() error, err error) {
4747
var cfg struct {
4848
Datadog *datadogConfig `mapstructure:"datadog,omitempty"`
4949
}
@@ -74,7 +74,7 @@ func DatadogTraceExportersFromViper(v *viper.Viper) (tdps []processor.TraceDataP
7474
// TODO: Examine the Datadog exporter to see
7575
// if trace.ExportSpan was constraining and if perhaps the
7676
// upload can use the context and information from the Node.
77-
tdps = append(tdps, exporterwrapper.NewExporterWrapper("datadog", de))
77+
tps = append(tps, exporterwrapper.NewExporterWrapper("datadog", de))
7878

7979
// TODO: (@odeke-em, @songya23) implement ExportMetrics for Datadog.
8080
// mes = append(mes, oexp)

exporter/exporter.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Copyright 2019, OpenCensus Authors
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package exporter
16+
17+
import (
18+
"github.com/census-instrumentation/opencensus-service/consumer"
19+
)
20+
21+
// TraceExporter composes TraceConsumer with some additional exporter-specific functions.
22+
type TraceExporter interface {
23+
consumer.TraceConsumer
24+
25+
// TraceExportFormat gets the name of the format in which this exporter sends its data.
26+
// For exporters that can export multiple signals it is recommended to encode the signal
27+
// as suffix (e.g. "oc_trace").
28+
TraceExportFormat() string
29+
}
30+
31+
// MetricsExporter composes MetricsConsumer with some additional exporter-specific functions.
32+
type MetricsExporter interface {
33+
consumer.MetricsConsumer
34+
35+
// MetricsExportFormat gets the name of the format in which this exporter sends its data.
36+
// For exporters that can export multiple signals it is recommended to encode the signal
37+
// as suffix (e.g. "oc_metrics").
38+
MetricsExportFormat() string
39+
}

exporter/exportertest/nop_exporter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ type nopExporter int
2626
var _ exporter.TraceExporter = (*nopExporter)(nil)
2727
var _ exporter.MetricsExporter = (*nopExporter)(nil)
2828

29-
func (ne *nopExporter) ProcessTraceData(ctx context.Context, td data.TraceData) error {
29+
func (ne *nopExporter) ConsumeTraceData(ctx context.Context, td data.TraceData) error {
3030
return nil
3131
}
3232

33-
func (ne *nopExporter) ProcessMetricsData(ctx context.Context, md data.MetricsData) error {
33+
func (ne *nopExporter) ConsumeMetricsData(ctx context.Context, md data.MetricsData) error {
3434
return nil
3535
}
3636

exporter/exportertest/nop_exporter_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func TestNopTraceExporterNoErrors(t *testing.T) {
2727
td := data.TraceData{
2828
Spans: make([]*tracepb.Span, 7),
2929
}
30-
if err := nte.ProcessTraceData(context.Background(), td); err != nil {
30+
if err := nte.ConsumeTraceData(context.Background(), td); err != nil {
3131
t.Errorf("Wanted nil got error")
3232
return
3333
}
@@ -42,7 +42,7 @@ func TestNoopMetricsExporterNoErrors(t *testing.T) {
4242
md := data.MetricsData{
4343
Metrics: make([]*metricspb.Metric, 7),
4444
}
45-
if err := nme.ProcessMetricsData(context.Background(), md); err != nil {
45+
if err := nme.ConsumeMetricsData(context.Background(), md); err != nil {
4646
t.Errorf("Wanted nil got error")
4747
return
4848
}

exporter/exportertest/sink_exporter.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ type SinkTraceExporter struct {
3030

3131
var _ exporter.TraceExporter = (*SinkTraceExporter)(nil)
3232

33-
// ProcessTraceData stores traces for tests.
34-
func (ste *SinkTraceExporter) ProcessTraceData(ctx context.Context, td data.TraceData) error {
33+
// ConsumeTraceData stores traces for tests.
34+
func (ste *SinkTraceExporter) ConsumeTraceData(ctx context.Context, td data.TraceData) error {
3535
ste.mu.Lock()
3636
defer ste.mu.Unlock()
3737

@@ -66,8 +66,8 @@ type SinkMetricsExporter struct {
6666

6767
var _ exporter.MetricsExporter = (*SinkMetricsExporter)(nil)
6868

69-
// ProcessMetricsData stores traces for tests.
70-
func (sme *SinkMetricsExporter) ProcessMetricsData(ctx context.Context, md data.MetricsData) error {
69+
// ConsumeMetricsData stores traces for tests.
70+
func (sme *SinkMetricsExporter) ConsumeMetricsData(ctx context.Context, md data.MetricsData) error {
7171
sme.mu.Lock()
7272
defer sme.mu.Unlock()
7373

0 commit comments

Comments
 (0)