diff --git a/.chloggen/update-azeventhub-stable.yaml b/.chloggen/update-azeventhub-stable.yaml new file mode 100644 index 0000000000000..71e937c4a5f35 --- /dev/null +++ b/.chloggen/update-azeventhub-stable.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: breaking + +# The name of the component, or a single word describing the area of concern, (e.g. receiver/filelog) +component: receiver/azureeventhub + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Upgrade `receiver.azureeventhubreceiver.UseAzeventhubs` feature gate to stable. + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [45527] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/receiver/azureeventhubreceiver/README.md b/receiver/azureeventhubreceiver/README.md index 7330d28673837..debc2d5727bc0 100644 --- a/receiver/azureeventhubreceiver/README.md +++ b/receiver/azureeventhubreceiver/README.md @@ -32,7 +32,7 @@ Event Hub, transforms them, and pushes them through the collector pipeline. A string describing the connection to an Azure event hub. Ignored if `auth` is specified. ### event_hub -This section is required when using `auth`. Only applicable when feature gate `receiver.azureeventhubreceiver.UseAzeventhubs` is enabled. +This section is required when using `auth`. #### name (Required when using auth) The name of the Event Hub. @@ -42,7 +42,7 @@ The fully qualified namespace (e.g., `namespace.servicebus.windows.net`). ### auth (Optional) The ID of an authentication extension to use. This can be used to authenticate using Azure Active Directory (AAD) pod identity, -managed identity, or service principal. Only supported when feature gate `receiver.azureeventhubreceiver.UseAzeventhubs` is enabled. +managed identity, or service principal. When this field is set, `connection` is ignored and `event_hub` section is required. ### group (Optional) @@ -93,13 +93,6 @@ these datapoints. Default: `nil` -> [!NOTE] -> You can opt out of using the [`azeventhubs`](https://github.com/Azure/azure-sdk-for-go/blob/main/sdk/messaging/azeventhubs) sdk by disabling the feature gate -> `receiver.azureeventhubreceiver.UseAzeventhubs` when you run the OpenTelemetry Collector. See the following page -> for more details: [Feature Gates](https://github.com/open-telemetry/opentelemetry-collector/tree/main/featuregate#controlling-gates) -> -> The following configuration options can only be used with this feature flag enabled - ### max_poll_events (optional) Specifies the maximum number of events to retrieve in a single poll from the Event Hub. diff --git a/receiver/azureeventhubreceiver/azure_event.go b/receiver/azureeventhubreceiver/azure_event.go index 27535184f8410..531c0dc6d9c23 100644 --- a/receiver/azureeventhubreceiver/azure_event.go +++ b/receiver/azureeventhubreceiver/azure_event.go @@ -6,19 +6,14 @@ package azureeventhubreceiver // import "github.com/open-telemetry/opentelemetry import ( "time" - eventhub "github.com/Azure/azure-event-hubs-go/v3" "github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs/v2" ) type azureEvent struct { - EventHubEvent *eventhub.Event - AzEventData *azeventhubs.ReceivedEventData + AzEventData *azeventhubs.ReceivedEventData } func (a *azureEvent) EnqueueTime() *time.Time { - if a.EventHubEvent != nil { - return a.EventHubEvent.SystemProperties.EnqueuedTime - } if a.AzEventData != nil { return a.AzEventData.EnqueuedTime } @@ -26,9 +21,6 @@ func (a *azureEvent) EnqueueTime() *time.Time { } func (a *azureEvent) Properties() map[string]any { - if a.EventHubEvent != nil { - return a.EventHubEvent.Properties - } if a.AzEventData != nil { return a.AzEventData.Properties } @@ -36,9 +28,6 @@ func (a *azureEvent) Properties() map[string]any { } func (a *azureEvent) Data() []byte { - if a.EventHubEvent != nil { - return a.EventHubEvent.Data - } if a.AzEventData != nil { return a.AzEventData.Body } diff --git a/receiver/azureeventhubreceiver/azure_event_test.go b/receiver/azureeventhubreceiver/azure_event_test.go index 5fc1a8fefbc3f..a7dd84b226228 100644 --- a/receiver/azureeventhubreceiver/azure_event_test.go +++ b/receiver/azureeventhubreceiver/azure_event_test.go @@ -7,22 +7,12 @@ import ( "testing" "time" - eventhub "github.com/Azure/azure-event-hubs-go/v3" "github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs/v2" "github.com/stretchr/testify/assert" ) func TestAzureEvent_EnqueueTime(t *testing.T) { now := time.Now() - t.Run("EventHubEvent non-nil", func(t *testing.T) { - ev := &eventhub.Event{ - SystemProperties: &eventhub.SystemProperties{ - EnqueuedTime: &now, - }, - } - a := azureEvent{EventHubEvent: ev} - assert.Equal(t, &now, a.EnqueueTime()) - }) t.Run("AzEventData non-nil", func(t *testing.T) { ev := &azeventhubs.ReceivedEventData{ EnqueuedTime: &now, @@ -41,13 +31,6 @@ func TestAzureEvent_Properties(t *testing.T) { "key1": "value1", "key2": 2, } - t.Run("EventHubEvent non-nil", func(t *testing.T) { - ev := &eventhub.Event{ - Properties: props, - } - a := azureEvent{EventHubEvent: ev} - assert.Equal(t, props, a.Properties()) - }) t.Run("AzEventData non-nil", func(t *testing.T) { ev := &azeventhubs.ReceivedEventData{ EventData: azeventhubs.EventData{ @@ -57,7 +40,7 @@ func TestAzureEvent_Properties(t *testing.T) { a := azureEvent{AzEventData: ev} assert.Equal(t, props, a.Properties()) }) - t.Run("Both nil", func(t *testing.T) { + t.Run("nil", func(t *testing.T) { a := azureEvent{} assert.Nil(t, a.Properties()) }) @@ -65,13 +48,6 @@ func TestAzureEvent_Properties(t *testing.T) { func TestAzureEvent_Data(t *testing.T) { data := []byte("Testing azure events") - t.Run("EventHubEvent non-nil", func(t *testing.T) { - ev := &eventhub.Event{ - Data: data, - } - a := azureEvent{EventHubEvent: ev} - assert.Equal(t, data, a.Data()) - }) t.Run("AzEventData non-nil", func(t *testing.T) { ev := &azeventhubs.ReceivedEventData{ EventData: azeventhubs.EventData{ @@ -81,7 +57,7 @@ func TestAzureEvent_Data(t *testing.T) { a := azureEvent{AzEventData: ev} assert.Equal(t, data, a.Data()) }) - t.Run("Both nil", func(t *testing.T) { + t.Run("nil", func(t *testing.T) { a := azureEvent{} assert.Nil(t, a.Data()) }) diff --git a/receiver/azureeventhubreceiver/azureresourcemetrics_unmarshaler_test.go b/receiver/azureeventhubreceiver/azureresourcemetrics_unmarshaler_test.go index 215a5febef099..72b2f383245bc 100644 --- a/receiver/azureeventhubreceiver/azureresourcemetrics_unmarshaler_test.go +++ b/receiver/azureeventhubreceiver/azureresourcemetrics_unmarshaler_test.go @@ -6,7 +6,7 @@ package azureeventhubreceiver import ( "testing" - eventhub "github.com/Azure/azure-event-hubs-go/v3" + "github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs/v2" "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/component" "go.uber.org/zap" @@ -56,7 +56,7 @@ var encodedMetrics = `{"records":[ ]}` func TestAzureResourceMetricsUnmarshaler_UnmarshalMixedMetrics(t *testing.T) { - event := azureEvent{EventHubEvent: &eventhub.Event{Data: []byte(encodedMetrics)}} + event := azureEvent{AzEventData: &azeventhubs.ReceivedEventData{EventData: azeventhubs.EventData{Body: []byte(encodedMetrics)}}} logger := zap.NewNop() unmarshaler := newAzureResourceMetricsUnmarshaler( component.BuildInfo{ @@ -74,7 +74,7 @@ func TestAzureResourceMetricsUnmarshaler_UnmarshalMixedMetrics(t *testing.T) { } func TestAzureResourceMetricsUnmarshaler_UnmarshalAppMetricsWithAttributes(t *testing.T) { - event := azureEvent{EventHubEvent: &eventhub.Event{Data: []byte(encodedMetrics)}} + event := azureEvent{AzEventData: &azeventhubs.ReceivedEventData{EventData: azeventhubs.EventData{Body: []byte(encodedMetrics)}}} logger := zap.NewNop() unmarshaler := newAzureResourceMetricsUnmarshaler( component.BuildInfo{ @@ -118,7 +118,7 @@ func TestAzureResourceMetricsUnmarshaler_UnmarshalAppMetricsWithAttributes(t *te } func TestAzureResourceMetricsUnmarshaler_UnmarshalAggregatedAppMetrics(t *testing.T) { - event := azureEvent{EventHubEvent: &eventhub.Event{Data: []byte(encodedMetrics)}} + event := azureEvent{AzEventData: &azeventhubs.ReceivedEventData{EventData: azeventhubs.EventData{Body: []byte(encodedMetrics)}}} logger := zap.NewNop() unmarshaler := newAzureResourceMetricsUnmarshaler( component.BuildInfo{ diff --git a/receiver/azureeventhubreceiver/config.go b/receiver/azureeventhubreceiver/config.go index 64600ab95dd73..0a5b5e4a901ba 100644 --- a/receiver/azureeventhubreceiver/config.go +++ b/receiver/azureeventhubreceiver/config.go @@ -7,7 +7,6 @@ import ( "errors" "fmt" - "github.com/Azure/azure-amqp-common-go/v4/conn" "github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs/v2" "go.opentelemetry.io/collector/component" ) @@ -21,9 +20,8 @@ const ( ) var ( - validFormats = []logFormat{defaultLogFormat, rawLogFormat, azureLogFormat} - errMissingConnection = errors.New("missing connection") - errFeatureGateRequired = fmt.Errorf("poll_rate and max_poll_events can only be used with %s enabled", azEventHubFeatureGateName) + validFormats = []logFormat{defaultLogFormat, rawLogFormat, azureLogFormat} + errMissingConnection = errors.New("missing connection") ) type Config struct { @@ -61,15 +59,7 @@ type TimeFormat struct { // Validate config func (config *Config) Validate() error { - if !azEventHubFeatureGate.IsEnabled() && - (config.PollRate != 0 || config.MaxPollEvents != 0) { - return errFeatureGateRequired - } - if config.Auth != nil { - if !azEventHubFeatureGate.IsEnabled() { - return fmt.Errorf("auth can only be used with %s enabled", azEventHubFeatureGateName) - } if config.EventHub.Name == "" { return errors.New("event_hub.name is required when using auth") } @@ -80,15 +70,8 @@ func (config *Config) Validate() error { if config.Connection == "" { return errMissingConnection } - - if azEventHubFeatureGate.IsEnabled() { - if _, err := azeventhubs.ParseConnectionString(config.Connection); err != nil { - return err - } - } else { - if _, err := conn.ParsedConnectionFromStr(config.Connection); err != nil { - return err - } + if _, err := azeventhubs.ParseConnectionString(config.Connection); err != nil { + return err } } diff --git a/receiver/azureeventhubreceiver/config_test.go b/receiver/azureeventhubreceiver/config_test.go index 985d909a1a77a..f5eae9dd4cacc 100644 --- a/receiver/azureeventhubreceiver/config_test.go +++ b/receiver/azureeventhubreceiver/config_test.go @@ -12,7 +12,6 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/confmap/confmaptest" "go.opentelemetry.io/collector/confmap/xconfmap" - "go.opentelemetry.io/collector/featuregate" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azureeventhubreceiver/internal/metadata" ) @@ -28,7 +27,6 @@ func TestLoadConfig(t *testing.T) { tests := []struct { id component.ID expected component.Config - featureGateEnabled bool expectedErrContains string }{ { @@ -38,8 +36,7 @@ func TestLoadConfig(t *testing.T) { }, }, { - id: component.NewIDWithName(metadata.Type, "auth"), - featureGateEnabled: true, + id: component.NewIDWithName(metadata.Type, "auth"), expected: &Config{ EventHub: EventHubConfig{ Name: "hubName", @@ -56,51 +53,34 @@ func TestLoadConfig(t *testing.T) { id: component.NewIDWithName(metadata.Type, "invalid_connection_string"), expectedErrContains: "failed parsing connection string", }, - { - id: component.NewIDWithName(metadata.Type, "invalid_connection_string_with_gate"), - featureGateEnabled: true, - expectedErrContains: "failed parsing connection string", - }, { id: component.NewIDWithName(metadata.Type, "invalid_format"), expectedErrContains: "invalid format", }, { - id: component.NewIDWithName(metadata.Type, "offset_with_partition"), + id: component.NewIDWithName(metadata.Type, "offset_without_partition"), expectedErrContains: "cannot use 'offset' without 'partition'", }, { - id: component.NewIDWithName(metadata.Type, "offset_without_partition"), + id: component.NewIDWithName(metadata.Type, "offset_with_partition"), expected: &Config{ Connection: "Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=superSecret1234=;EntityPath=hubName", Partition: "foo", Offset: "1234-5566", }, }, - { - id: component.NewIDWithName(metadata.Type, "feature_gate_exclusive_config"), - expectedErrContains: "poll_rate and max_poll_events can only be used with receiver.azureeventhubreceiver.UseAzeventhubs enabled", - }, { id: component.NewIDWithName(metadata.Type, "auth_missing_event_hub_name"), - featureGateEnabled: true, expectedErrContains: "event_hub.name is required when using auth", }, { id: component.NewIDWithName(metadata.Type, "auth_missing_namespace"), - featureGateEnabled: true, expectedErrContains: "event_hub.namespace is required when using auth", }, } for _, tt := range tests { t.Run(tt.id.String(), func(t *testing.T) { - prev := azEventHubFeatureGate.IsEnabled() - require.NoError(t, featuregate.GlobalRegistry().Set(azEventHubFeatureGateName, tt.featureGateEnabled)) - defer func() { - require.NoError(t, featuregate.GlobalRegistry().Set(azEventHubFeatureGateName, prev)) - }() - factory := NewFactory() cfg := factory.CreateDefaultConfig() diff --git a/receiver/azureeventhubreceiver/eventhubhandler.go b/receiver/azureeventhubreceiver/eventhubhandler.go index d329609a689b8..1664b64cbae84 100644 --- a/receiver/azureeventhubreceiver/eventhubhandler.go +++ b/receiver/azureeventhubreceiver/eventhubhandler.go @@ -64,19 +64,11 @@ func (h *eventhubHandler) run(ctx context.Context, host component.Host) error { } if h.hub == nil { // set manually for testing. - if azEventHubFeatureGate.IsEnabled() { - newHub, err := newAzeventhubWrapper(h, host) - if err != nil { - return err - } - h.hub = newHub - } else { - newHub, err := newLegacyHubWrapper(h) - if err != nil { - return err - } - h.hub = newHub + newHub, err := newAzeventhubWrapper(h, host) + if err != nil { + return err } + h.hub = newHub } if h.config.Partition != "" { diff --git a/receiver/azureeventhubreceiver/eventhubhandler_legacy.go b/receiver/azureeventhubreceiver/eventhubhandler_legacy.go deleted file mode 100644 index c8a83cb9b5eb2..0000000000000 --- a/receiver/azureeventhubreceiver/eventhubhandler_legacy.go +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package azureeventhubreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azureeventhubreceiver" - -import ( - "context" - - eventhub "github.com/Azure/azure-event-hubs-go/v3" - "github.com/Azure/azure-event-hubs-go/v3/persist" - "go.uber.org/zap" -) - -type legacyHubWrapper interface { - GetRuntimeInformation(ctx context.Context) (*eventhub.HubRuntimeInformation, error) - Receive(ctx context.Context, partitionID string, handler eventhub.Handler, opts ...eventhub.ReceiveOption) (*eventhub.ListenerHandle, error) - Close(ctx context.Context) error -} - -func newLegacyHubWrapper(h *eventhubHandler) (*hubWrapperLegacyImpl, error) { - options := []eventhub.HubOption{} - if h.storageClient != nil { - options = append(options, - eventhub.HubWithOffsetPersistence( - &storageCheckpointPersister[persist.Checkpoint]{ - storageClient: h.storageClient, - defaultValue: persist.NewCheckpointFromEndOfStream(), - }, - ), - ) - } - hub, newHubErr := eventhub.NewHubFromConnectionString( - h.config.Connection, - options..., - ) - if newHubErr != nil { - h.settings.Logger.Debug("Error connecting to Event Hub", zap.Error(newHubErr)) - return nil, newHubErr - } - return &hubWrapperLegacyImpl{ - hub: hub, - config: h.config, - }, nil -} - -type hubWrapperLegacyImpl struct { - hub legacyHubWrapper - config *Config -} - -func (h *hubWrapperLegacyImpl) GetRuntimeInformation(ctx context.Context) (*hubRuntimeInfo, error) { - if h.hub != nil { - info, err := h.hub.GetRuntimeInformation(ctx) - if err != nil { - return nil, err - } - return &hubRuntimeInfo{ - CreatedAt: info.CreatedAt, - PartitionCount: info.PartitionCount, - PartitionIDs: info.PartitionIDs, - Path: info.Path, - }, nil - } - return nil, errNoConfig -} - -func (h *hubWrapperLegacyImpl) Receive(ctx context.Context, partitionID string, handler hubHandler, applyOffset bool) (listenerHandleWrapper, error) { - receiverOptions := []eventhub.ReceiveOption{} - if applyOffset && h.config.Offset != "" { - receiverOptions = append(receiverOptions, eventhub.ReceiveWithStartingOffset(h.config.Offset)) - } - if h.config.ConsumerGroup != "" { - receiverOptions = append(receiverOptions, eventhub.ReceiveWithConsumerGroup(h.config.ConsumerGroup)) - } - if h.config.StorageID == nil && (!applyOffset || h.config.Offset == "") { - receiverOptions = append(receiverOptions, eventhub.ReceiveWithLatestOffset()) - } - - if h.hub != nil { - l, err := h.hub.Receive(ctx, partitionID, func(ctx context.Context, event *eventhub.Event) error { - return handler(ctx, &azureEvent{ - EventHubEvent: event, - }) - }, receiverOptions...) - - return l, err - } - return nil, errNoConfig -} - -func (h *hubWrapperLegacyImpl) Close(ctx context.Context) error { - if h.hub != nil { - return h.hub.Close(ctx) - } - return errNoConfig -} diff --git a/receiver/azureeventhubreceiver/eventhubhandler_legacy_test.go b/receiver/azureeventhubreceiver/eventhubhandler_legacy_test.go deleted file mode 100644 index 7cb3408fea3b7..0000000000000 --- a/receiver/azureeventhubreceiver/eventhubhandler_legacy_test.go +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package azureeventhubreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azureeventhubreceiver" - -import ( - "context" - "testing" - "time" - - eventhub "github.com/Azure/azure-event-hubs-go/v3" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -type mockLegacyHub struct { - eventHubProperties eventhub.HubRuntimeInformation - closed bool - receiveCalls int - receivePartitionID string - receiveOptions []eventhub.ReceiveOption -} - -func (h *mockLegacyHub) GetRuntimeInformation(_ context.Context) (*eventhub.HubRuntimeInformation, error) { - return &h.eventHubProperties, nil -} - -func (h *mockLegacyHub) Receive(_ context.Context, partitionID string, _ eventhub.Handler, opts ...eventhub.ReceiveOption) (*eventhub.ListenerHandle, error) { - h.receiveCalls++ - h.receiveOptions = opts - h.receivePartitionID = partitionID - return nil, nil -} - -func (h *mockLegacyHub) Close(_ context.Context) error { - h.closed = true - return nil -} - -func TestHubWrapperLegacyImpl_GetEventHubProperties(t *testing.T) { - createdOn := time.Now() - path := "test" - partitionIDs := []string{"p1", "p2"} - - mockHubWrapper := &hubWrapperLegacyImpl{ - hub: &mockLegacyHub{ - eventHubProperties: eventhub.HubRuntimeInformation{ - CreatedAt: createdOn, - Path: path, - PartitionCount: len(partitionIDs), - PartitionIDs: partitionIDs, - }, - }, - config: &Config{}, - } - - results, err := mockHubWrapper.GetRuntimeInformation(t.Context()) - require.NoError(t, err) - - assert.Equal(t, results.CreatedAt, createdOn) - assert.Equal(t, results.Path, path) - assert.Len(t, partitionIDs, results.PartitionCount) - assert.Equal(t, results.PartitionIDs, partitionIDs) -} - -func TestHubWrapperLegacyImpl_Receive(t *testing.T) { - tests := []struct { - name string - offset string - applyOffset bool - partitionID string - consumerGroup string - - shouldCallReceive bool - expectedPartitionID string - expectedOptionCount int - }{ - { - name: "simple", - expectedOptionCount: 1, // Default to latest offset when no storage and no offset - shouldCallReceive: true, - }, - { - name: "partition id", - partitionID: "partition1", - expectedPartitionID: "partition1", - shouldCallReceive: true, - expectedOptionCount: 1, // Default to latest offset when no storage and no offset - }, - { - name: "offset with apply", - offset: "1", - applyOffset: true, - shouldCallReceive: true, - expectedOptionCount: 1, - }, - { - name: "offset without apply", - offset: "1", - applyOffset: false, - shouldCallReceive: true, - expectedOptionCount: 1, // Default to latest offset when no storage and no offset - }, - { - name: "no offset with apply", - offset: "", - applyOffset: true, - shouldCallReceive: true, - expectedOptionCount: 1, // Default to latest offset when no storage and no offset - }, - { - name: "offset with partition id", - offset: "1", - partitionID: "partition1", - expectedPartitionID: "partition1", - applyOffset: true, - shouldCallReceive: true, - expectedOptionCount: 1, - }, - { - name: "consumer group", - consumerGroup: "cg1", - shouldCallReceive: true, - expectedOptionCount: 2, // Consumer group + latest offset - }, - { - name: "consumer group and offset", - offset: "1", - applyOffset: true, - consumerGroup: "cg1", - shouldCallReceive: true, - expectedOptionCount: 2, - }, - } - - for _, test := range tests { - t.Run("Receive-"+test.name, func(t *testing.T) { - hub := &mockLegacyHub{ - closed: false, - } - mockHubWrapper := &hubWrapperLegacyImpl{ - hub: hub, - config: &Config{ - Offset: test.offset, - ConsumerGroup: test.consumerGroup, - }, - } - - _, err := mockHubWrapper.Receive(t.Context(), test.partitionID, func(_ context.Context, _ *azureEvent) error { - return nil - }, test.applyOffset) - require.NoError(t, err) - - if test.shouldCallReceive { - assert.Equal(t, 1, hub.receiveCalls) - } else { - assert.Equal(t, 0, hub.receiveCalls) - } - - assert.Len(t, hub.receiveOptions, test.expectedOptionCount) - assert.Equal(t, test.expectedPartitionID, hub.receivePartitionID) - }) - } -} - -func TestHubWrapperLegacyImpl_Close(t *testing.T) { - hub := &mockLegacyHub{ - closed: false, - } - mockHubWrapper := &hubWrapperLegacyImpl{ - hub: hub, - config: &Config{}, - } - - err := mockHubWrapper.Close(t.Context()) - require.NoError(t, err) - assert.True(t, hub.closed) -} diff --git a/receiver/azureeventhubreceiver/eventhubhandler_test.go b/receiver/azureeventhubreceiver/eventhubhandler_test.go index 8459969e915f5..a851003ab87f4 100644 --- a/receiver/azureeventhubreceiver/eventhubhandler_test.go +++ b/receiver/azureeventhubreceiver/eventhubhandler_test.go @@ -8,7 +8,6 @@ import ( "testing" "time" - eventhub "github.com/Azure/azure-event-hubs-go/v3" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs/v2" "github.com/stretchr/testify/assert" @@ -253,19 +252,14 @@ func TestEventhubHandler_newLegacyMessageHandler(t *testing.T) { now := time.Now() err = ehHandler.newMessageHandler(t.Context(), &azureEvent{ - EventHubEvent: &eventhub.Event{ - Data: []byte("hello"), - PartitionKey: nil, - Properties: map[string]any{"foo": "bar"}, - ID: "11234", - SystemProperties: &eventhub.SystemProperties{ - SequenceNumber: nil, - EnqueuedTime: &now, - Offset: nil, - PartitionID: nil, - PartitionKey: nil, - Annotations: nil, + AzEventData: &azeventhubs.ReceivedEventData{ + EventData: azeventhubs.EventData{ + Body: []byte("hello"), + Properties: map[string]any{"foo": "bar"}, }, + EnqueuedTime: &now, + Offset: "", + PartitionKey: nil, }, }) diff --git a/receiver/azureeventhubreceiver/feature_flags.go b/receiver/azureeventhubreceiver/feature_flags.go index 45d013b72be29..f5234e216f920 100644 --- a/receiver/azureeventhubreceiver/feature_flags.go +++ b/receiver/azureeventhubreceiver/feature_flags.go @@ -12,7 +12,8 @@ const azEventHubFeatureGateName = "receiver.azureeventhubreceiver.UseAzeventhubs // uses the new azeventhub library or the deprecated azure-event-hubs library // for consuming messages. When enabled, the azureeventhub receiver will use the new azeventhub library. var azEventHubFeatureGate = featuregate.GlobalRegistry().MustRegister( - azEventHubFeatureGateName, featuregate.StageBeta, + azEventHubFeatureGateName, featuregate.StageStable, featuregate.WithRegisterDescription("When enabled, the Azure Event Hubs receiver will use the azeventhub library."), featuregate.WithRegisterFromVersion("v0.129.0"), + featuregate.WithRegisterToVersion("v0.144.0"), ) diff --git a/receiver/azureeventhubreceiver/feature_flags_test.go b/receiver/azureeventhubreceiver/feature_flags_test.go index 8272268ff5f02..5d1f5b27fce86 100644 --- a/receiver/azureeventhubreceiver/feature_flags_test.go +++ b/receiver/azureeventhubreceiver/feature_flags_test.go @@ -16,7 +16,7 @@ func TestAzEventHubFeatureGateRegistration(t *testing.T) { if azEventHubFeatureGate.ID() != azEventHubFeatureGateName { t.Errorf("expected gate ID %q, got %q", azEventHubFeatureGateName, azEventHubFeatureGate.ID()) } - if azEventHubFeatureGate.Stage() != featuregate.StageBeta { + if azEventHubFeatureGate.Stage() != featuregate.StageStable { t.Errorf("expected stage %q, got %q", featuregate.StageBeta, azEventHubFeatureGate.Stage()) } expectedDesc := "When enabled, the Azure Event Hubs receiver will use the azeventhub library." diff --git a/receiver/azureeventhubreceiver/go.mod b/receiver/azureeventhubreceiver/go.mod index 62ba34ec1eca0..7aca40da8cf98 100644 --- a/receiver/azureeventhubreceiver/go.mod +++ b/receiver/azureeventhubreceiver/go.mod @@ -3,8 +3,6 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azuree go 1.24.0 require ( - github.com/Azure/azure-amqp-common-go/v4 v4.2.0 - github.com/Azure/azure-event-hubs-go/v3 v3.6.2 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0 github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs/v2 v2.0.1 github.com/goccy/go-json v0.10.5 @@ -33,31 +31,19 @@ require ( ) require ( - github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect github.com/Azure/go-amqp v1.4.0 // indirect - github.com/Azure/go-autorest v14.2.0+incompatible // indirect - github.com/Azure/go-autorest/autorest v0.11.28 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect - github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect - github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect - github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect - github.com/Azure/go-autorest/logger v0.2.1 // indirect - github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/devigned/tab v0.1.1 // indirect github.com/elastic/lunes v0.2.0 // indirect github.com/expr-lang/expr v1.17.7 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.8.0 // indirect - github.com/jpillora/backoff v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect @@ -66,7 +52,6 @@ require ( github.com/leodido/ragel-machinery v0.0.0-20190525184631-5f46317e436b // indirect github.com/magefile/mage v1.15.0 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect @@ -87,7 +72,6 @@ require ( go.opentelemetry.io/otel/trace v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.47.0 // indirect golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect diff --git a/receiver/azureeventhubreceiver/go.sum b/receiver/azureeventhubreceiver/go.sum index 0fc0d250348e5..833f49b2e63cb 100644 --- a/receiver/azureeventhubreceiver/go.sum +++ b/receiver/azureeventhubreceiver/go.sum @@ -1,9 +1,3 @@ -github.com/Azure/azure-amqp-common-go/v4 v4.2.0 h1:q/jLx1KJ8xeI8XGfkOWMN9XrXzAfVTkyvCxPvHCjd2I= -github.com/Azure/azure-amqp-common-go/v4 v4.2.0/go.mod h1:GD3m/WPPma+621UaU6KNjKEo5Hl09z86viKwQjTpV0Q= -github.com/Azure/azure-event-hubs-go/v3 v3.6.2 h1:7rNj1/iqS/i3mUKokA2n2eMYO72TB7lO7OmpbKoakKY= -github.com/Azure/azure-event-hubs-go/v3 v3.6.2/go.mod h1:n+ocYr9j2JCLYqUqz9eI+lx/TEAtL/g6rZzyTFSuIpc= -github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= -github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0 h1:fou+2+WFTib47nS+nz/ozhEBnvU96bKHy6LjRsY4E28= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0/go.mod h1:t76Ruy8AHvUAC8GfMWJMa0ElSbuIcO03NLpynfbgsPA= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= @@ -18,30 +12,6 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.1 h1:lhZdRq7TIx0GJQvSy github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.1/go.mod h1:8cl44BDmi+effbARHMQjgOKA2AYvcohNm7KEt42mSV8= github.com/Azure/go-amqp v1.4.0 h1:Xj3caqi4comOF/L1Uc5iuBxR/pB6KumejC01YQOqOR4= github.com/Azure/go-amqp v1.4.0/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM= -github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA= -github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk= -github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U= -github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 h1:iM6UAvjR97ZIeR93qTcwpKNMpV+/FTWjwEbuPD495Tk= -github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= -github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 h1:LXl088ZQlP0SBppGFsRZonW6hSvwgL5gRByMbvUbx8U= -github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw= -github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= -github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= -github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= -github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -53,10 +23,6 @@ github.com/coder/websocket v1.8.13/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3C github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/devigned/tab v0.1.1 h1:3mD6Kb1mUOYeLpJvTVSDwSg5ZsfSxfvxGRTxRsJsITA= -github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= -github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4= -github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/elastic/lunes v0.2.0 h1:WI3bsdOTuaYXVe2DS1KbqA7u7FOHN4o8qJw80ZyZoQs= github.com/elastic/lunes v0.2.0/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/expr-lang/expr v1.17.7 h1:Q0xY/e/2aCIp8g9s/LGvMDCC5PxYlvHgDZRQ4y16JX8= @@ -74,10 +40,6 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= -github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= @@ -94,8 +56,6 @@ github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bP github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= @@ -118,10 +78,6 @@ github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= -github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -138,8 +94,6 @@ github.com/relvacode/iso8601 v1.7.0 h1:BXy+V60stMP6cpswc+a93Mq3e65PfXCgDFfhvNNGr github.com/relvacode/iso8601 v1.7.0/go.mod h1:FlNp+jz+TXpyRqgmM7tnzHHzBnz776kmAH2h3sZCn0I= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= @@ -218,27 +172,16 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= diff --git a/receiver/azureeventhubreceiver/persister_test.go b/receiver/azureeventhubreceiver/persister_test.go index ffd9815895f69..469b61a143d0e 100644 --- a/receiver/azureeventhubreceiver/persister_test.go +++ b/receiver/azureeventhubreceiver/persister_test.go @@ -8,18 +8,16 @@ import ( "errors" "sync" "testing" - "time" - "github.com/Azure/azure-event-hubs-go/v3/persist" "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/extension/xextension/storage" ) func TestStorageOffsetPersisterUnknownCheckpoint(t *testing.T) { client := newMockClient() - s := storageCheckpointPersister[persist.Checkpoint]{ + s := storageCheckpointPersister[checkpointSeqNumber]{ storageClient: client, - defaultValue: persist.NewCheckpointFromStartOfStream(), + defaultValue: checkpointSeqNumber{Offset: "-1"}, } // check we have no match checkpoint, err := s.Read("foo", "bar", "foobar", "foobarfoo") @@ -30,14 +28,13 @@ func TestStorageOffsetPersisterUnknownCheckpoint(t *testing.T) { func TestStorageOffsetPersisterWithKnownCheckpoint(t *testing.T) { client := newMockClient() - s := storageCheckpointPersister[persist.Checkpoint]{ + s := storageCheckpointPersister[checkpointSeqNumber]{ storageClient: client, - defaultValue: persist.NewCheckpointFromStartOfStream(), + defaultValue: checkpointSeqNumber{Offset: "-1"}, } - checkpoint := persist.Checkpoint{ + checkpoint := checkpointSeqNumber{ Offset: "foo", SequenceNumber: 2, - EnqueueTime: time.Now(), } err := s.Write("foo", "bar", "foobar", "foobarfoo", checkpoint) assert.NoError(t, err) @@ -45,7 +42,6 @@ func TestStorageOffsetPersisterWithKnownCheckpoint(t *testing.T) { assert.NoError(t, err) assert.Equal(t, checkpoint.Offset, read.Offset) assert.Equal(t, checkpoint.SequenceNumber, read.SequenceNumber) - assert.True(t, checkpoint.EnqueueTime.Equal(read.EnqueueTime)) } // copied from pkg/stanza/adapter/mocks_test.go diff --git a/receiver/azureeventhubreceiver/testdata/config.yaml b/receiver/azureeventhubreceiver/testdata/config.yaml index 0e896cc2830a2..ecab4775fe5a7 100644 --- a/receiver/azureeventhubreceiver/testdata/config.yaml +++ b/receiver/azureeventhubreceiver/testdata/config.yaml @@ -1,28 +1,20 @@ azureeventhub: connection: Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=superSecret1234=;EntityPath=hubName -azureeventhub/feature_gate_exclusive_config: - connection: Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=superSecret1234=;EntityPath=hubName - poll_rate: 10 - max_poll_events: 100 - azureeventhub/missing_connection: azureeventhub/invalid_connection_string: connection: invalid -azureeventhub/invalid_connection_string_with_gate: - connection: invalid - azureeventhub/invalid_format: connection: Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=superSecret1234=;EntityPath=hubName format: invalid -azureeventhub/offset_with_partition: +azureeventhub/offset_without_partition: connection: Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=superSecret1234=;EntityPath=hubName offset: "1234-5566" -azureeventhub/offset_without_partition: +azureeventhub/offset_with_partition: connection: Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=superSecret1234=;EntityPath=hubName partition: foo offset: "1234-5566"