Skip to content

Commit c4c0814

Browse files
[chore] Fix small nits in persistent queue metadata sizer conversion and add tests (#13124)
Signed-off-by: Bogdan Drutu <[email protected]> Co-authored-by: Alex Boten <[email protected]>
1 parent 8cd0191 commit c4c0814

File tree

2 files changed

+110
-13
lines changed

2 files changed

+110
-13
lines changed

exporter/exporterhelper/internal/queuebatch/internal/persistentqueue/sizer_conversion.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,33 @@ import (
1111

1212
// Numeric constants for protobuf serialization
1313
const (
14-
SizerTypeBytesValue int32 = iota // 0
15-
SizerTypeItemsValue // 1
16-
SizerTypeRequestsValue // 2
14+
SizerTypeBytes int32 = iota // 0
15+
SizerTypeItems // 1
16+
SizerTypeRequests // 2
1717
)
1818

19-
// SizerTypeToInt32 converts SizerType to int32 for protobuf serialization
20-
func SizerTypeToInt32(sizerType request.SizerType) (int32, error) {
19+
// SizerTypeToProto converts SizerType to int32 for protobuf serialization
20+
func SizerTypeToProto(sizerType request.SizerType) (int32, error) {
2121
switch sizerType {
2222
case request.SizerTypeBytes:
23-
return SizerTypeBytesValue, nil
23+
return SizerTypeBytes, nil
2424
case request.SizerTypeItems:
25-
return SizerTypeItemsValue, nil
25+
return SizerTypeItems, nil
2626
case request.SizerTypeRequests:
27-
return SizerTypeRequestsValue, nil
27+
return SizerTypeRequests, nil
2828
default:
2929
return -1, fmt.Errorf("invalid sizer type: %v", sizerType)
3030
}
3131
}
3232

33-
// SizerTypeFromInt32 creates SizerType from int32 representation
34-
func SizerTypeFromInt32(value int32) (request.SizerType, error) {
33+
// SizerTypeFromProto creates SizerType from int32 representation
34+
func SizerTypeFromProto(value int32) (request.SizerType, error) {
3535
switch value {
36-
case SizerTypeBytesValue:
36+
case SizerTypeBytes:
3737
return request.SizerTypeBytes, nil
38-
case SizerTypeItemsValue:
38+
case SizerTypeItems:
3939
return request.SizerTypeItems, nil
40-
case SizerTypeRequestsValue:
40+
case SizerTypeRequests:
4141
return request.SizerTypeRequests, nil
4242
default:
4343
return request.SizerType{}, fmt.Errorf("invalid sizer type value: %d", value)
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package persistentqueue
5+
6+
import (
7+
"testing"
8+
9+
"github.com/stretchr/testify/assert"
10+
"github.com/stretchr/testify/require"
11+
12+
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/request"
13+
)
14+
15+
func TestSizerTypeToProto(t *testing.T) {
16+
tests := []struct {
17+
name string
18+
sizerType request.SizerType
19+
protoSizerType int32
20+
wantErr bool
21+
}{
22+
{
23+
name: "requests",
24+
sizerType: request.SizerTypeRequests,
25+
protoSizerType: SizerTypeRequests,
26+
},
27+
{
28+
name: "items",
29+
sizerType: request.SizerTypeItems,
30+
protoSizerType: SizerTypeItems,
31+
},
32+
{
33+
name: "bytes",
34+
sizerType: request.SizerTypeBytes,
35+
protoSizerType: SizerTypeBytes,
36+
},
37+
{
38+
name: "invalid",
39+
sizerType: request.SizerType{},
40+
protoSizerType: -1,
41+
wantErr: true,
42+
},
43+
}
44+
for _, tt := range tests {
45+
t.Run(tt.name, func(t *testing.T) {
46+
got, err := SizerTypeToProto(tt.sizerType)
47+
if tt.wantErr {
48+
require.Error(t, err)
49+
return
50+
}
51+
require.NoError(t, err)
52+
assert.Equal(t, tt.protoSizerType, got)
53+
})
54+
}
55+
}
56+
57+
func TestSizerTypeFromProto(t *testing.T) {
58+
tests := []struct {
59+
name string
60+
sizerType request.SizerType
61+
protoSizerType int32
62+
wantErr bool
63+
}{
64+
{
65+
name: "requests",
66+
sizerType: request.SizerTypeRequests,
67+
protoSizerType: SizerTypeRequests,
68+
},
69+
{
70+
name: "items",
71+
sizerType: request.SizerTypeItems,
72+
protoSizerType: SizerTypeItems,
73+
},
74+
{
75+
name: "bytes",
76+
sizerType: request.SizerTypeBytes,
77+
protoSizerType: SizerTypeBytes,
78+
},
79+
{
80+
name: "invalid",
81+
sizerType: request.SizerType{},
82+
protoSizerType: 3,
83+
wantErr: true,
84+
},
85+
}
86+
for _, tt := range tests {
87+
t.Run(tt.name, func(t *testing.T) {
88+
got, err := SizerTypeFromProto(tt.protoSizerType)
89+
if tt.wantErr {
90+
require.Error(t, err)
91+
return
92+
}
93+
require.NoError(t, err)
94+
assert.Equal(t, tt.sizerType, got)
95+
})
96+
}
97+
}

0 commit comments

Comments
 (0)