@@ -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: []\n disabled: false" ),
1110+ wantErr : newErrUnmarshal (& OpenTelemetryConfiguration {}),
1111+ },
1112+ {
1113+ name : "invalid config" ,
1114+ jsonConfig : []byte (`{"file_format": "yaml", "disabled": "notabool"}` ),
1115+ yamlConfig : []byte ("file_format: []\n disabled: notabool" ),
1116+ wantErr : newErrUnmarshal (& OpenTelemetryConfiguration {}),
1117+ },
1118+ {
1119+ name : "invalid data" ,
1120+ jsonConfig : []byte (`{:2000}` ),
1121+ yamlConfig : []byte ("disabled: []\n console: {}\n file_format: str" ),
1122+ wantErr : newErrUnmarshal (& OpenTelemetryConfiguration {}),
1123+ },
1124+ {
1125+ name : "resource invalid" ,
1126+ jsonConfig : []byte (`{"resource":[], "file_format": "1.0"}` ),
1127+ yamlConfig : []byte ("resource: []\n file_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: []\n file_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: []\n file_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: []\n file_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+
10641165func TestUnmarshalBatchSpanProcessor (t * testing.T ) {
10651166 for _ , tt := range []struct {
10661167 name string
0 commit comments