@@ -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 ... )
@@ -975,38 +1020,69 @@ var v100OpenTelemetryConfigEnvParsing = OpenTelemetryConfiguration{
9751020
9761021func TestUnmarshalOpenTelemetryConfiguration (t * testing.T ) {
9771022 tests := []struct {
978- name string
979- input string
980- wantErr error
981- wantType * OpenTelemetryConfiguration
1023+ name string
1024+ jsonConfig []byte
1025+ yamlConfig []byte
1026+ wantErr error
1027+ wantType * OpenTelemetryConfiguration
9821028 }{
9831029 {
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` ,
1030+ name : "valid defaults config" ,
1031+ jsonConfig : []byte (`{"file_format": "1.0"}` ),
1032+ yamlConfig : []byte ("file_format: 1.0" ),
9981033 wantType : & OpenTelemetryConfiguration {
9991034 Disabled : ptr (false ),
10001035 FileFormat : "1.0" ,
10011036 LogLevel : ptr ("info" ),
10021037 },
10031038 },
10041039 {
1005- name : "invalid config" ,
1006- input : "invalid_bool" ,
1007- wantErr : newErrUnmarshal (& OpenTelemetryConfiguration {}),
1008- wantType : & OpenTelemetryConfiguration {},
1040+ name : "invalid config missing required file_format" ,
1041+ jsonConfig : []byte (`{"disabled": false}` ),
1042+ yamlConfig : []byte ("disabled: false" ),
1043+ wantErr : newErrRequired (& OpenTelemetryConfiguration {}, "file_format" ),
1044+ wantType : & OpenTelemetryConfiguration {},
1045+ },
1046+ {
1047+ name : "file_format invalid" ,
1048+ jsonConfig : []byte (`{"file_format":[], "disabled": false}` ),
1049+ yamlConfig : []byte ("file_format: []\n disabled: false" ),
1050+ wantErr : newErrUnmarshal (& OpenTelemetryConfiguration {}),
1051+ wantType : & OpenTelemetryConfiguration {},
10091052 },
1053+ {
1054+ name : "invalid config" ,
1055+ jsonConfig : []byte (`{"file_format": "yaml", "disabled": "notabool"}` ),
1056+ yamlConfig : []byte ("file_format: []\n disabled: notabool" ),
1057+ wantErr : newErrUnmarshal (& OpenTelemetryConfiguration {}),
1058+ wantType : & OpenTelemetryConfiguration {},
1059+ },
1060+ }
1061+
1062+ for _ , tt := range tests {
1063+ t .Run ("yaml " + tt .name , func (t * testing.T ) {
1064+ got , err := ParseYAML (tt .yamlConfig )
1065+ require .ErrorIs (t , err , tt .wantErr )
1066+ if tt .wantErr == nil {
1067+ assert .Equal (t , tt .wantType , got )
1068+ }
1069+ })
1070+ t .Run ("json " + tt .name , func (t * testing.T ) {
1071+ var got OpenTelemetryConfiguration
1072+ err := json .Unmarshal (tt .jsonConfig , & got )
1073+ require .ErrorIs (t , err , tt .wantErr )
1074+ assert .Equal (t , tt .wantType , & got )
1075+ })
1076+ }
1077+ }
1078+
1079+ func TestParseFiles (t * testing.T ) {
1080+ tests := []struct {
1081+ name string
1082+ input string
1083+ wantErr error
1084+ wantType * OpenTelemetryConfiguration
1085+ }{
10101086 {
10111087 name : "invalid nil name" ,
10121088 input : "v1.0.0_invalid_nil_name" ,
0 commit comments