207 lines
6.3 KiB
Go
207 lines
6.3 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package processor
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"go.opentelemetry.io/collector/consumer"
|
|
"go.opentelemetry.io/collector/consumer/pdatautil"
|
|
"go.opentelemetry.io/collector/exporter/exportertest"
|
|
"go.opentelemetry.io/collector/internal/data/testdata"
|
|
"go.opentelemetry.io/collector/internal/dataold/testdataold"
|
|
)
|
|
|
|
func TestTracesProcessorNotMultiplexing(t *testing.T) {
|
|
nop := exportertest.NewNopTraceExporter()
|
|
tfc := NewTracesFanOutConnector([]consumer.TraceConsumer{nop})
|
|
assert.Same(t, nop, tfc)
|
|
}
|
|
|
|
func TestTracesProcessorMultiplexing(t *testing.T) {
|
|
processors := make([]consumer.TraceConsumer, 3)
|
|
for i := range processors {
|
|
processors[i] = new(exportertest.SinkTraceExporter)
|
|
}
|
|
|
|
tfc := NewTracesFanOutConnector(processors)
|
|
td := testdata.GenerateTraceDataOneSpan()
|
|
|
|
var wantSpansCount = 0
|
|
for i := 0; i < 2; i++ {
|
|
wantSpansCount += td.SpanCount()
|
|
err := tfc.ConsumeTraces(context.Background(), td)
|
|
if err != nil {
|
|
t.Errorf("Wanted nil got error")
|
|
return
|
|
}
|
|
}
|
|
|
|
for _, p := range processors {
|
|
m := p.(*exportertest.SinkTraceExporter)
|
|
assert.Equal(t, wantSpansCount, m.SpansCount())
|
|
assert.EqualValues(t, td, m.AllTraces()[0])
|
|
}
|
|
}
|
|
|
|
func TestTraceProcessorWhenOneErrors(t *testing.T) {
|
|
processors := make([]consumer.TraceConsumer, 3)
|
|
for i := range processors {
|
|
processors[i] = new(exportertest.SinkTraceExporter)
|
|
}
|
|
|
|
// Make one processor return error
|
|
processors[1].(*exportertest.SinkTraceExporter).SetConsumeTraceError(errors.New("my_error"))
|
|
|
|
tfc := NewTracesFanOutConnector(processors)
|
|
td := testdata.GenerateTraceDataOneSpan()
|
|
|
|
var wantSpansCount = 0
|
|
for i := 0; i < 2; i++ {
|
|
wantSpansCount += td.SpanCount()
|
|
err := tfc.ConsumeTraces(context.Background(), td)
|
|
if err == nil {
|
|
t.Errorf("Wanted error got nil")
|
|
return
|
|
}
|
|
}
|
|
|
|
assert.Equal(t, 0, processors[1].(*exportertest.SinkTraceExporter).SpansCount())
|
|
assert.Equal(t, wantSpansCount, processors[0].(*exportertest.SinkTraceExporter).SpansCount())
|
|
assert.Equal(t, wantSpansCount, processors[2].(*exportertest.SinkTraceExporter).SpansCount())
|
|
}
|
|
|
|
func TestMetricsProcessorNotMultiplexing(t *testing.T) {
|
|
nop := exportertest.NewNopMetricsExporter()
|
|
mfc := NewMetricsFanOutConnector([]consumer.MetricsConsumer{nop})
|
|
assert.Same(t, nop, mfc)
|
|
}
|
|
|
|
func TestMetricsProcessorMultiplexing(t *testing.T) {
|
|
processors := make([]consumer.MetricsConsumer, 3)
|
|
for i := range processors {
|
|
processors[i] = new(exportertest.SinkMetricsExporter)
|
|
}
|
|
|
|
mfc := NewMetricsFanOutConnector(processors)
|
|
md := testdataold.GenerateMetricDataOneMetric()
|
|
|
|
var wantMetricsCount = 0
|
|
for i := 0; i < 2; i++ {
|
|
wantMetricsCount += md.MetricCount()
|
|
err := mfc.ConsumeMetrics(context.Background(), pdatautil.MetricsFromOldInternalMetrics(md))
|
|
if err != nil {
|
|
t.Errorf("Wanted nil got error")
|
|
return
|
|
}
|
|
}
|
|
|
|
for _, p := range processors {
|
|
m := p.(*exportertest.SinkMetricsExporter)
|
|
assert.Equal(t, wantMetricsCount, m.MetricsCount())
|
|
assert.EqualValues(t, md, pdatautil.MetricsToOldInternalMetrics(m.AllMetrics()[0]))
|
|
}
|
|
}
|
|
|
|
func TestMetricsProcessorWhenOneErrors(t *testing.T) {
|
|
processors := make([]consumer.MetricsConsumer, 3)
|
|
for i := range processors {
|
|
processors[i] = new(exportertest.SinkMetricsExporter)
|
|
}
|
|
|
|
// Make one processor return error
|
|
processors[1].(*exportertest.SinkMetricsExporter).SetConsumeMetricsError(errors.New("my_error"))
|
|
|
|
mfc := NewMetricsFanOutConnector(processors)
|
|
md := testdataold.GenerateMetricDataOneMetric()
|
|
|
|
var wantMetricsCount = 0
|
|
for i := 0; i < 2; i++ {
|
|
wantMetricsCount += md.MetricCount()
|
|
err := mfc.ConsumeMetrics(context.Background(), pdatautil.MetricsFromOldInternalMetrics(md))
|
|
if err == nil {
|
|
t.Errorf("Wanted error got nil")
|
|
return
|
|
}
|
|
}
|
|
|
|
assert.Equal(t, 0, processors[1].(*exportertest.SinkMetricsExporter).MetricsCount())
|
|
assert.Equal(t, wantMetricsCount, processors[0].(*exportertest.SinkMetricsExporter).MetricsCount())
|
|
assert.Equal(t, wantMetricsCount, processors[2].(*exportertest.SinkMetricsExporter).MetricsCount())
|
|
}
|
|
|
|
func TestLogsProcessorNotMultiplexing(t *testing.T) {
|
|
nop := exportertest.NewNopLogsExporter()
|
|
lfc := NewLogsFanOutConnector([]consumer.LogsConsumer{nop})
|
|
assert.Same(t, nop, lfc)
|
|
}
|
|
|
|
func TestLogsProcessorMultiplexing(t *testing.T) {
|
|
processors := make([]consumer.LogsConsumer, 3)
|
|
for i := range processors {
|
|
processors[i] = new(exportertest.SinkLogsExporter)
|
|
}
|
|
|
|
lfc := NewLogsFanOutConnector(processors)
|
|
ld := testdata.GenerateLogDataOneLog()
|
|
|
|
var wantMetricsCount = 0
|
|
for i := 0; i < 2; i++ {
|
|
wantMetricsCount += ld.LogRecordCount()
|
|
err := lfc.ConsumeLogs(context.Background(), ld)
|
|
if err != nil {
|
|
t.Errorf("Wanted nil got error")
|
|
return
|
|
}
|
|
}
|
|
|
|
for _, p := range processors {
|
|
m := p.(*exportertest.SinkLogsExporter)
|
|
assert.Equal(t, wantMetricsCount, m.LogRecordsCount())
|
|
assert.EqualValues(t, ld, m.AllLogs()[0])
|
|
}
|
|
}
|
|
|
|
func TestLogsProcessorWhenOneErrors(t *testing.T) {
|
|
processors := make([]consumer.LogsConsumer, 3)
|
|
for i := range processors {
|
|
processors[i] = new(exportertest.SinkLogsExporter)
|
|
}
|
|
|
|
// Make one processor return error
|
|
processors[1].(*exportertest.SinkLogsExporter).SetConsumeLogError(errors.New("my_error"))
|
|
|
|
lfc := NewLogsFanOutConnector(processors)
|
|
ld := testdata.GenerateLogDataOneLog()
|
|
|
|
var wantMetricsCount = 0
|
|
for i := 0; i < 2; i++ {
|
|
wantMetricsCount += ld.LogRecordCount()
|
|
err := lfc.ConsumeLogs(context.Background(), ld)
|
|
if err == nil {
|
|
t.Errorf("Wanted error got nil")
|
|
return
|
|
}
|
|
}
|
|
|
|
assert.Equal(t, 0, processors[1].(*exportertest.SinkLogsExporter).LogRecordsCount())
|
|
assert.Equal(t, wantMetricsCount, processors[0].(*exportertest.SinkLogsExporter).LogRecordsCount())
|
|
assert.Equal(t, wantMetricsCount, processors[2].(*exportertest.SinkLogsExporter).LogRecordsCount())
|
|
}
|