Skip to content

Commit 8cc2f84

Browse files
committed
cover case with invalid json/yaml
Signed-off-by: alex boten <[email protected]>
1 parent 761b483 commit 8cc2f84

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

otelconf/config_json.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@
33

44
package otelconf // import "go.opentelemetry.io/contrib/otelconf"
55

6-
import "encoding/json"
6+
import (
7+
"encoding/json"
8+
"errors"
9+
)
710

811
// UnmarshalJSON implements json.Unmarshaler.
912
func (j *CardinalityLimits) UnmarshalJSON(value []byte) error {
1013
type Plain CardinalityLimits
1114
var plain Plain
1215
if err := json.Unmarshal(value, &plain); err != nil {
13-
return err
16+
return errors.Join(errors.New("unmarshaling error cardinality_limit"))
1417
}
1518
if err := validateCardinalityLimits((*CardinalityLimits)(&plain)); err != nil {
1619
return err
@@ -24,7 +27,7 @@ func (j *SpanLimits) UnmarshalJSON(value []byte) error {
2427
type Plain SpanLimits
2528
var plain Plain
2629
if err := json.Unmarshal(value, &plain); err != nil {
27-
return err
30+
return errors.Join(errors.New("unmarshaling error span_limit"), err)
2831
}
2932
if err := validateSpanLimits((*SpanLimits)(&plain)); err != nil {
3033
return err

otelconf/config_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ func TestUnmarshalCardinalityLimits(t *testing.T) {
3232
jsonConfig: []byte(`{}`),
3333
yamlConfig: []byte("{}"),
3434
},
35+
{
36+
name: "invalid data",
37+
jsonConfig: []byte(`{:2000}`),
38+
yamlConfig: []byte("counter: !!str 2000"),
39+
wantErr: "unmarshaling error cardinality_limit",
40+
},
3541
{
3642
name: "invalid counter zero",
3743
jsonConfig: []byte(`{"counter":0}`),
@@ -172,6 +178,12 @@ func TestUnmarshalSpanLimits(t *testing.T) {
172178
jsonConfig: []byte(`{}`),
173179
yamlConfig: []byte("{}"),
174180
},
181+
{
182+
name: "invalid data",
183+
jsonConfig: []byte(`{:2000}`),
184+
yamlConfig: []byte("attribute_count_limit: !!str 2000"),
185+
wantErr: "unmarshaling error span_limit",
186+
},
175187
{
176188
name: "invalid attribute_count_limit negative",
177189
jsonConfig: []byte(`{"attribute_count_limit":-1}`),

otelconf/config_yaml.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@
33

44
package otelconf // import "go.opentelemetry.io/contrib/otelconf"
55

6-
import "go.yaml.in/yaml/v3"
6+
import (
7+
"errors"
8+
9+
"go.yaml.in/yaml/v3"
10+
)
711

812
// UnmarshalYAML implements yaml.Unmarshaler.
913
func (j *CardinalityLimits) UnmarshalYAML(node *yaml.Node) error {
1014
type Plain CardinalityLimits
1115
var plain Plain
1216
if err := node.Decode(&plain); err != nil {
13-
return err
17+
return errors.Join(errors.New("unmarshaling error cardinality_limit"), err)
1418
}
1519
if err := validateCardinalityLimits((*CardinalityLimits)(&plain)); err != nil {
1620
return err
@@ -24,7 +28,7 @@ func (j *SpanLimits) UnmarshalYAML(node *yaml.Node) error {
2428
type Plain SpanLimits
2529
var plain Plain
2630
if err := node.Decode(&plain); err != nil {
27-
return err
31+
return errors.Join(errors.New("unmarshaling error span_limit"), err)
2832
}
2933
if err := validateSpanLimits((*SpanLimits)(&plain)); err != nil {
3034
return err

0 commit comments

Comments
 (0)