forked from open-telemetry/opentelemetry-collector-contrib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
blobeventhandler_test.go
74 lines (59 loc) · 3.4 KB
/
blobeventhandler_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Copyright 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:https://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 azureblobreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azureblobreceiver"
import (
"context"
"testing"
eventhub "github.com/Azure/azure-event-hubs-go/v3"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.uber.org/zap/zaptest"
)
const (
eventHubString = "Endpoint=sb:https://oteldata.servicebus.windows.net/;SharedAccessKeyName=oteldatahubpolicy;SharedAccessKey=sharedAccessKey;EntityPath=otelddatahub"
)
var (
logEventData = []byte(`[{"topic":"someTopic","subject":"/blobServices/default/containers/logs/blobs/logs-1","eventType":"Microsoft.Storage.BlobCreated","id":"1","data":{"api":"PutBlob","clientRequestId":"1","requestId":"1","eTag":"1","contentType":"text","contentLength":10,"blobType":"BlockBlob","url":"https://oteldata.blob.core.windows.net/logs/logs-1","sequencer":"1","storageDiagnostics":{"batchId":"1"}},"dataVersion":"","metadataVersion":"1","eventTime":"2022-03-25T15:59:50.9251748Z"}]`)
traceEventData = []byte(`[{"topic":"someTopic","subject":"/blobServices/default/containers/traces/blobs/traces-1","eventType":"Microsoft.Storage.BlobCreated","id":"1","data":{"api":"PutBlob","clientRequestId":"1","requestId":"1","eTag":"1","contentType":"text","contentLength":10,"blobType":"BlockBlob","url":"https://oteldata.blob.core.windows.net/traces/traces-1","sequencer":"1","storageDiagnostics":{"batchId":"1"}},"dataVersion":"","metadataVersion":"1","eventTime":"2022-03-25T15:59:50.9251748Z"}]`)
)
func TestNewBlobEventHandler(t *testing.T) {
blobClient := newMockBlobClient()
blobEventHandler := getBlobEventHandler(t, blobClient)
require.NotNil(t, blobEventHandler)
assert.Equal(t, blobClient, blobEventHandler.blobClient)
}
func TestNewMessageHangdler(t *testing.T) {
blobClient := newMockBlobClient()
blobEventHandler := getBlobEventHandler(t, blobClient)
logsDataConsumer := newMockLogsDataConsumer()
tracesDataConsumer := newMockTracesDataConsumer()
blobEventHandler.setLogsDataConsumer(logsDataConsumer)
blobEventHandler.setTracesDataConsumer(tracesDataConsumer)
logEvent := getEvent(logEventData)
err := blobEventHandler.newMessageHandler(context.Background(), logEvent)
require.NoError(t, err)
traceEvent := getEvent(traceEventData)
err = blobEventHandler.newMessageHandler(context.Background(), traceEvent)
require.NoError(t, err)
logsDataConsumer.AssertNumberOfCalls(t, "consumeLogsJSON", 1)
tracesDataConsumer.AssertNumberOfCalls(t, "consumeTracesJSON", 1)
blobClient.AssertNumberOfCalls(t, "readBlob", 2)
}
func getEvent(eventData []byte) *eventhub.Event {
return &eventhub.Event{Data: eventData}
}
func getBlobEventHandler(tb testing.TB, blobClient blobClient) *azureBlobEventHandler {
blobEventHandler := newBlobEventHandler(eventHubString, logsContainerName, tracesContainerName, blobClient, zaptest.NewLogger(tb))
return blobEventHandler
}