Skip to content

Commit e10a1b2

Browse files
sonalgaud12dmathieu
authored andcommitted
Added Test for http.Handler returned from zpages.NewTracezHandler (#8108)
Co-authored-by: Damien Mathieu <[email protected]>
1 parent 2714a67 commit e10a1b2

12 files changed

+354
-44
lines changed

otelconf/config_json.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,11 +194,6 @@ func (j *LogRecordExporter) UnmarshalJSON(b []byte) error {
194194
return nil
195195
}
196196

197-
// MarshalJSON implements json.Marshaler.
198-
func (j *AttributeType) MarshalJSON() ([]byte, error) {
199-
return json.Marshal(j.Value)
200-
}
201-
202197
// UnmarshalJSON implements json.Unmarshaler.
203198
func (j *TextMapPropagator) UnmarshalJSON(b []byte) error {
204199
type Plain TextMapPropagator

otelconf/config_test.go

Lines changed: 129 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,51 @@ func TestNewSDK(t *testing.T) {
394394
wantMeterProvider: metricnoop.NewMeterProvider(),
395395
wantLoggerProvider: lognoop.NewLoggerProvider(),
396396
},
397+
{
398+
name: "invalid resource",
399+
cfg: []ConfigurationOption{
400+
WithContext(t.Context()),
401+
WithOpenTelemetryConfiguration(OpenTelemetryConfiguration{
402+
TracerProvider: &TracerProviderJson{},
403+
MeterProvider: &MeterProviderJson{},
404+
LoggerProvider: &LoggerProviderJson{},
405+
Resource: &LoggerProviderJson{},
406+
}),
407+
},
408+
wantErr: newErrInvalid("resource"),
409+
wantTracerProvider: tracenoop.NewTracerProvider(),
410+
wantMeterProvider: metricnoop.NewMeterProvider(),
411+
wantLoggerProvider: lognoop.NewLoggerProvider(),
412+
},
413+
{
414+
name: "invalid logger provider",
415+
cfg: []ConfigurationOption{
416+
WithContext(t.Context()),
417+
WithOpenTelemetryConfiguration(OpenTelemetryConfiguration{
418+
TracerProvider: &TracerProviderJson{},
419+
MeterProvider: &MeterProviderJson{},
420+
LoggerProvider: &ResourceJson{},
421+
Resource: &ResourceJson{},
422+
}),
423+
},
424+
wantErr: newErrInvalid("logger_provider"),
425+
wantTracerProvider: tracenoop.NewTracerProvider(),
426+
wantMeterProvider: metricnoop.NewMeterProvider(),
427+
wantLoggerProvider: lognoop.NewLoggerProvider(),
428+
},
429+
{
430+
name: "invalid tracer provider",
431+
cfg: []ConfigurationOption{
432+
WithContext(t.Context()),
433+
WithOpenTelemetryConfiguration(OpenTelemetryConfiguration{
434+
TracerProvider: &ResourceJson{},
435+
}),
436+
},
437+
wantErr: newErrInvalid("tracer_provider"),
438+
wantTracerProvider: tracenoop.NewTracerProvider(),
439+
wantMeterProvider: metricnoop.NewMeterProvider(),
440+
wantLoggerProvider: lognoop.NewLoggerProvider(),
441+
},
397442
}
398443
for _, tt := range tests {
399444
sdk, err := NewSDK(tt.cfg...)
@@ -973,40 +1018,13 @@ var v100OpenTelemetryConfigEnvParsing = OpenTelemetryConfiguration{
9731018
},
9741019
}
9751020

976-
func TestUnmarshalOpenTelemetryConfiguration(t *testing.T) {
1021+
func TestParseFiles(t *testing.T) {
9771022
tests := []struct {
9781023
name string
9791024
input string
9801025
wantErr error
9811026
wantType *OpenTelemetryConfiguration
9821027
}{
983-
{
984-
name: "invalid config missing required file_format",
985-
input: `missing_file_format`,
986-
wantErr: newErrRequired(&OpenTelemetryConfiguration{}, "file_format"),
987-
wantType: &OpenTelemetryConfiguration{},
988-
},
989-
{
990-
name: "file_format invalid",
991-
input: `invalid_file_format`,
992-
wantErr: newErrUnmarshal(&OpenTelemetryConfiguration{}),
993-
wantType: &OpenTelemetryConfiguration{},
994-
},
995-
{
996-
name: "valid defaults config",
997-
input: `valid_defaults`,
998-
wantType: &OpenTelemetryConfiguration{
999-
Disabled: ptr(false),
1000-
FileFormat: "1.0",
1001-
LogLevel: ptr("info"),
1002-
},
1003-
},
1004-
{
1005-
name: "invalid config",
1006-
input: "invalid_bool",
1007-
wantErr: newErrUnmarshal(&OpenTelemetryConfiguration{}),
1008-
wantType: &OpenTelemetryConfiguration{},
1009-
},
10101028
{
10111029
name: "invalid nil name",
10121030
input: "v1.0.0_invalid_nil_name",
@@ -1061,6 +1079,89 @@ func TestUnmarshalOpenTelemetryConfiguration(t *testing.T) {
10611079
}
10621080
}
10631081

1082+
func TestUnmarshalOpenTelemetryConfiguration(t *testing.T) {
1083+
tests := []struct {
1084+
name string
1085+
jsonConfig []byte
1086+
yamlConfig []byte
1087+
wantErr error
1088+
wantType OpenTelemetryConfiguration
1089+
}{
1090+
{
1091+
name: "valid defaults config",
1092+
jsonConfig: []byte(`{"file_format": "1.0"}`),
1093+
yamlConfig: []byte("file_format: 1.0"),
1094+
wantType: OpenTelemetryConfiguration{
1095+
Disabled: ptr(false),
1096+
FileFormat: "1.0",
1097+
LogLevel: ptr("info"),
1098+
},
1099+
},
1100+
{
1101+
name: "invalid config missing required file_format",
1102+
jsonConfig: []byte(`{"disabled": false}`),
1103+
yamlConfig: []byte("disabled: false"),
1104+
wantErr: newErrRequired(&OpenTelemetryConfiguration{}, "file_format"),
1105+
},
1106+
{
1107+
name: "file_format invalid",
1108+
jsonConfig: []byte(`{"file_format":[], "disabled": false}`),
1109+
yamlConfig: []byte("file_format: []\ndisabled: false"),
1110+
wantErr: newErrUnmarshal(&OpenTelemetryConfiguration{}),
1111+
},
1112+
{
1113+
name: "invalid config",
1114+
jsonConfig: []byte(`{"file_format": "yaml", "disabled": "notabool"}`),
1115+
yamlConfig: []byte("file_format: []\ndisabled: notabool"),
1116+
wantErr: newErrUnmarshal(&OpenTelemetryConfiguration{}),
1117+
},
1118+
{
1119+
name: "invalid data",
1120+
jsonConfig: []byte(`{:2000}`),
1121+
yamlConfig: []byte("disabled: []\nconsole: {}\nfile_format: str"),
1122+
wantErr: newErrUnmarshal(&OpenTelemetryConfiguration{}),
1123+
},
1124+
{
1125+
name: "resource invalid",
1126+
jsonConfig: []byte(`{"resource":[], "file_format": "1.0"}`),
1127+
yamlConfig: []byte("resource: []\nfile_format: 1.0"),
1128+
wantErr: newErrUnmarshal(&OpenTelemetryConfiguration{}),
1129+
},
1130+
{
1131+
name: "attribute_limits invalid",
1132+
jsonConfig: []byte(`{"attribute_limits":[], "file_format": "1.0"}`),
1133+
yamlConfig: []byte("attribute_limits: []\nfile_format: 1.0"),
1134+
wantErr: newErrUnmarshal(&OpenTelemetryConfiguration{}),
1135+
},
1136+
{
1137+
name: "instrumentation invalid",
1138+
jsonConfig: []byte(`{"instrumentation/development":[], "file_format": "1.0"}`),
1139+
yamlConfig: []byte("instrumentation/development: []\nfile_format: 1.0"),
1140+
wantErr: newErrUnmarshal(&OpenTelemetryConfiguration{}),
1141+
},
1142+
{
1143+
name: "log_level invalid",
1144+
jsonConfig: []byte(`{"log_level":[], "file_format": "1.0"}`),
1145+
yamlConfig: []byte("log_level: []\nfile_format: 1.0"),
1146+
wantErr: newErrUnmarshal(&OpenTelemetryConfiguration{}),
1147+
},
1148+
}
1149+
1150+
for _, tt := range tests {
1151+
t.Run(tt.name, func(t *testing.T) {
1152+
got := OpenTelemetryConfiguration{}
1153+
err := got.UnmarshalJSON(tt.jsonConfig)
1154+
assert.ErrorIs(t, err, tt.wantErr)
1155+
assert.Equal(t, tt.wantType, got)
1156+
1157+
got = OpenTelemetryConfiguration{}
1158+
err = yaml.Unmarshal(tt.yamlConfig, &got)
1159+
assert.ErrorIs(t, err, tt.wantErr)
1160+
assert.Equal(t, tt.wantType, got)
1161+
})
1162+
}
1163+
}
1164+
10641165
func TestUnmarshalBatchSpanProcessor(t *testing.T) {
10651166
for _, tt := range []struct {
10661167
name string

otelconf/config_yaml.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ func (j *OpenTelemetryConfiguration) UnmarshalYAML(node *yaml.Node) error {
4949
type Plain OpenTelemetryConfiguration
5050
type shadow struct {
5151
Plain
52+
LogLevel *string `yaml:"log_level,omitempty"`
5253
AttributeLimits *AttributeLimits `yaml:"attribute_limits,omitempty"`
5354
Disabled *bool `yaml:"disabled,omitempty"`
5455
FileFormat string `yaml:"file_format"`
@@ -96,7 +97,9 @@ func (j *OpenTelemetryConfiguration) UnmarshalYAML(node *yaml.Node) error {
9697
sh.Plain.InstrumentationDevelopment = sh.InstrumentationDevelopment
9798
}
9899

99-
if sh.Plain.LogLevel == nil {
100+
if sh.LogLevel != nil {
101+
sh.Plain.LogLevel = sh.LogLevel
102+
} else {
100103
// Configure the log level of the internal logger used by the SDK.
101104
// If omitted, info is used.
102105
sh.Plain.LogLevel = ptr("info")

otelconf/example_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ import (
1212
"go.opentelemetry.io/otel"
1313
"go.opentelemetry.io/otel/log/global"
1414

15-
otelconf "go.opentelemetry.io/contrib/otelconf/v0.3.0"
15+
"go.opentelemetry.io/contrib/otelconf"
1616
)
1717

1818
func Example() {
19-
b, err := os.ReadFile(filepath.Join("testdata", "v0.3.yaml"))
19+
b, err := os.ReadFile(filepath.Join("testdata", "v1.0.0.yaml"))
2020
if err != nil {
2121
log.Fatal(err)
2222
}

otelconf/testdata/invalid_file_format.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

otelconf/testdata/invalid_file_format.yaml

Lines changed: 0 additions & 2 deletions
This file was deleted.

otelconf/testdata/missing_file_format.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

otelconf/testdata/missing_file_format.yaml

Lines changed: 0 additions & 1 deletion
This file was deleted.

otelconf/testdata/valid_defaults.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

otelconf/testdata/valid_defaults.yaml

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)