1package statsd 2 3import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/assert" 8) 9 10func TestDefaultOptions(t *testing.T) { 11 options, err := resolveOptions([]Option{}) 12 13 assert.NoError(t, err) 14 assert.Equal(t, options.Namespace, DefaultNamespace) 15 assert.Equal(t, options.Tags, DefaultTags) 16 assert.Equal(t, options.MaxBytesPerPayload, DefaultMaxBytesPerPayload) 17 assert.Equal(t, options.MaxMessagesPerPayload, DefaultMaxMessagesPerPayload) 18 assert.Equal(t, options.BufferPoolSize, DefaultBufferPoolSize) 19 assert.Equal(t, options.BufferFlushInterval, DefaultBufferFlushInterval) 20 assert.Equal(t, options.BufferShardCount, DefaultBufferShardCount) 21 assert.Equal(t, options.SenderQueueSize, DefaultSenderQueueSize) 22 assert.Equal(t, options.WriteTimeoutUDS, DefaultWriteTimeoutUDS) 23 assert.Equal(t, options.Telemetry, DefaultTelemetry) 24 assert.Equal(t, options.ReceiveMode, DefaultReceivingMode) 25 assert.Equal(t, options.ChannelModeBufferSize, DefaultChannelModeBufferSize) 26 assert.Equal(t, options.AggregationFlushInterval, DefaultAggregationFlushInterval) 27 assert.Equal(t, options.Aggregation, DefaultAggregation) 28 assert.Equal(t, options.ExtendedAggregation, DefaultExtendedAggregation) 29 assert.Zero(t, options.TelemetryAddr) 30 assert.False(t, options.DevMode) 31} 32 33func TestOptions(t *testing.T) { 34 testNamespace := "datadog." 35 testTags := []string{"rocks"} 36 testMaxBytesPerPayload := 2048 37 testMaxMessagePerPayload := 1024 38 testBufferPoolSize := 32 39 testBufferFlushInterval := 48 * time.Second 40 testBufferShardCount := 28 41 testSenderQueueSize := 64 42 testWriteTimeoutUDS := 1 * time.Minute 43 testChannelBufferSize := 500 44 testAggregationWindow := 10 * time.Second 45 testTelemetryAddr := "localhost:1234" 46 47 options, err := resolveOptions([]Option{ 48 WithNamespace(testNamespace), 49 WithTags(testTags), 50 WithMaxBytesPerPayload(testMaxBytesPerPayload), 51 WithMaxMessagesPerPayload(testMaxMessagePerPayload), 52 WithBufferPoolSize(testBufferPoolSize), 53 WithBufferFlushInterval(testBufferFlushInterval), 54 WithBufferShardCount(testBufferShardCount), 55 WithSenderQueueSize(testSenderQueueSize), 56 WithWriteTimeoutUDS(testWriteTimeoutUDS), 57 WithoutTelemetry(), 58 WithChannelMode(), 59 WithChannelModeBufferSize(testChannelBufferSize), 60 WithAggregationInterval(testAggregationWindow), 61 WithClientSideAggregation(), 62 WithTelemetryAddr(testTelemetryAddr), 63 WithDevMode(), 64 }) 65 66 assert.NoError(t, err) 67 assert.Equal(t, options.Namespace, testNamespace) 68 assert.Equal(t, options.Tags, testTags) 69 assert.Equal(t, options.MaxBytesPerPayload, testMaxBytesPerPayload) 70 assert.Equal(t, options.MaxMessagesPerPayload, testMaxMessagePerPayload) 71 assert.Equal(t, options.BufferPoolSize, testBufferPoolSize) 72 assert.Equal(t, options.BufferFlushInterval, testBufferFlushInterval) 73 assert.Equal(t, options.BufferShardCount, testBufferShardCount) 74 assert.Equal(t, options.SenderQueueSize, testSenderQueueSize) 75 assert.Equal(t, options.WriteTimeoutUDS, testWriteTimeoutUDS) 76 assert.Equal(t, options.Telemetry, false) 77 assert.Equal(t, options.ReceiveMode, ChannelMode) 78 assert.Equal(t, options.ChannelModeBufferSize, testChannelBufferSize) 79 assert.Equal(t, options.AggregationFlushInterval, testAggregationWindow) 80 assert.Equal(t, options.Aggregation, true) 81 assert.Equal(t, options.ExtendedAggregation, false) 82 assert.Equal(t, options.TelemetryAddr, testTelemetryAddr) 83 assert.True(t, options.DevMode) 84} 85 86func TestExtendedAggregation(t *testing.T) { 87 options, err := resolveOptions([]Option{ 88 WithExtendedClientSideAggregation(), 89 }) 90 91 assert.NoError(t, err) 92 assert.Equal(t, options.Aggregation, true) 93 assert.Equal(t, options.ExtendedAggregation, true) 94} 95 96func TestResetOptions(t *testing.T) { 97 options, err := resolveOptions([]Option{ 98 WithChannelMode(), 99 WithMutexMode(), 100 WithClientSideAggregation(), 101 WithoutClientSideAggregation(), 102 }) 103 104 assert.NoError(t, err) 105 assert.Equal(t, options.ReceiveMode, MutexMode) 106 assert.Equal(t, options.Aggregation, false) 107} 108func TestOptionsNamespaceWithoutDot(t *testing.T) { 109 testNamespace := "datadog" 110 111 options, err := resolveOptions([]Option{ 112 WithNamespace(testNamespace), 113 }) 114 115 assert.NoError(t, err) 116 assert.Equal(t, options.Namespace, testNamespace+".") 117} 118