mirror of
https://github.com/hanzoai/telemetry.git
synced 2026-10-30 20:01:49 +00:00
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description <!-- Issue number if applicable --> Uses `configoptional.Optional` for `exporterhelper.QueueBatchConfig`. #### Link to tracking issue Updates #14021 --------- Co-authored-by: Evan Bradley <[email protected]> Co-authored-by: Joshua MacDonald <[email protected]>
62 lines
2.2 KiB
Go
62 lines
2.2 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package internal
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zaptest/observer"
|
|
|
|
"go.opentelemetry.io/collector/component"
|
|
"go.opentelemetry.io/collector/component/componenttest"
|
|
"go.opentelemetry.io/collector/config/configoptional"
|
|
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/queuebatch"
|
|
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/request"
|
|
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/requesttest"
|
|
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/sender"
|
|
"go.opentelemetry.io/collector/exporter/exportertest"
|
|
"go.opentelemetry.io/collector/pipeline"
|
|
)
|
|
|
|
func TestNewQueueSenderFailedRequestDropped(t *testing.T) {
|
|
qSet := queuebatch.AllSettings[request.Request]{
|
|
Signal: pipeline.SignalMetrics,
|
|
ID: component.NewID(exportertest.NopType),
|
|
Telemetry: componenttest.NewNopTelemetrySettings(),
|
|
}
|
|
logger, observed := observer.New(zap.ErrorLevel)
|
|
qSet.Telemetry.Logger = zap.New(logger)
|
|
qCfg := NewDefaultQueueConfig()
|
|
be, err := NewQueueSender(
|
|
qSet, qCfg, "", sender.NewSender(func(context.Context, request.Request) error { return errors.New("some error") }))
|
|
require.NoError(t, err)
|
|
|
|
require.NoError(t, be.Start(context.Background(), componenttest.NewNopHost()))
|
|
require.NoError(t, be.Send(context.Background(), &requesttest.FakeRequest{Items: 2}))
|
|
require.NoError(t, be.Shutdown(context.Background()))
|
|
assert.Len(t, observed.All(), 1)
|
|
assert.Equal(t, "Exporting failed. Dropping data.", observed.All()[0].Message)
|
|
}
|
|
|
|
func TestQueueConfig_Validate(t *testing.T) {
|
|
qCfg := NewDefaultQueueConfig()
|
|
require.NoError(t, qCfg.Validate())
|
|
|
|
qCfg.NumConsumers = 0
|
|
require.EqualError(t, qCfg.Validate(), "`num_consumers` must be positive")
|
|
|
|
qCfg = NewDefaultQueueConfig()
|
|
qCfg.QueueSize = 0
|
|
require.EqualError(t, qCfg.Validate(), "`queue_size` must be positive")
|
|
|
|
// Confirm Validate doesn't return error with invalid config when feature is disabled
|
|
noCfg := configoptional.None[queuebatch.Config]()
|
|
assert.NoError(t, noCfg.Validate())
|
|
}
|