diff --git a/service/telemetry/config_test.go b/service/telemetry/config_test.go index 7fc33f7ae5f..d07e2014b83 100644 --- a/service/telemetry/config_test.go +++ b/service/telemetry/config_test.go @@ -66,20 +66,58 @@ func TestLoadConfig(t *testing.T) { func TestUnmarshalMetricReaders(t *testing.T) { tests := []struct { - name string - cfg *confmap.Conf - success bool - err string + name string + cfg *confmap.Conf + err string }{ { name: "invalid config", cfg: confmap.NewFromStringMap(map[string]any{"invalid": "invalid"}), err: "unsupported metric reader type: invalid", }, + { + name: "valid reader type, invalid config", + cfg: confmap.NewFromStringMap(map[string]any{"pull": "garbage"}), + err: "invalid pull metric reader configuration: '' expected a map, got 'string'", + }, + { + name: "valid pull reader type, no exporter", + cfg: confmap.NewFromStringMap(map[string]any{"pull": PullMetricReader{}}), + }, + { + name: "valid pull reader type, invalid exporter", + cfg: confmap.NewFromStringMap(map[string]any{"pull": PullMetricReader{ + Exporter: MetricExporter{ + "invalid": "invalid", + }, + }}), + err: "unsupported metric exporter type: invalid", + }, + { + name: "valid pull reader type, invalid prometheus exporter", + cfg: confmap.NewFromStringMap(map[string]any{"pull": PullMetricReader{ + Exporter: MetricExporter{ + "prometheus": "invalid", + }, + }}), + err: "invalid exporter configuration: '' expected a map, got 'string'", + }, + { + name: "valid pull reader type, valid prometheus exporter", + cfg: confmap.NewFromStringMap(map[string]any{"pull": PullMetricReader{ + Exporter: MetricExporter{ + "prometheus": Prometheus{}, + }, + }}), + }, } for _, tt := range tests { reader := make(MeterProviderJsonMetricReaders) err := reader.Unmarshal(tt.cfg) - assert.ErrorContains(t, err, tt.err) + if len(tt.err) > 0 { + assert.ErrorContains(t, err, tt.err) + } else { + assert.NoError(t, err) + } } }