diff --git a/exporters/prometheus/confg_test.go b/exporters/prometheus/confg_test.go index 0a409e07cd7..fda6641bcaa 100644 --- a/exporters/prometheus/confg_test.go +++ b/exporters/prometheus/confg_test.go @@ -15,62 +15,33 @@ package prometheus // import "go.opentelemetry.io/otel/exporters/prometheus" import ( - "context" "testing" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/assert" - - "go.opentelemetry.io/otel/sdk/metric" - "go.opentelemetry.io/otel/sdk/metric/metricdata" ) -type testExporter struct{} - -func (e testExporter) Export(_ context.Context, _ metricdata.ResourceMetrics) error { - return nil -} - -func (e testExporter) ForceFlush(_ context.Context) error { - return nil -} - -func (e testExporter) Shutdown(_ context.Context) error { - return nil -} - func TestNewConfig(t *testing.T) { registry := prometheus.NewRegistry() testCases := []struct { name string options []Option - wantReaderType metric.Reader wantRegisterer prometheus.Registerer wantGatherer prometheus.Gatherer }{ { name: "Default", options: nil, - wantReaderType: metric.NewManualReader(), - wantRegisterer: prometheus.DefaultRegisterer, - wantGatherer: prometheus.DefaultGatherer, - }, - { - name: "WithReader", - options: []Option{ - WithReader(metric.NewPeriodicReader(testExporter{})), - }, - wantReaderType: metric.NewPeriodicReader(testExporter{}), wantRegisterer: prometheus.DefaultRegisterer, wantGatherer: prometheus.DefaultGatherer, }, + { name: "WithGatherer", options: []Option{ WithGatherer(registry), }, - wantReaderType: metric.NewManualReader(), wantRegisterer: prometheus.DefaultRegisterer, wantGatherer: registry, }, @@ -79,29 +50,24 @@ func TestNewConfig(t *testing.T) { options: []Option{ WithRegisterer(registry), }, - wantReaderType: metric.NewManualReader(), wantRegisterer: registry, wantGatherer: prometheus.DefaultGatherer, }, { name: "Multiple Options", options: []Option{ - WithReader(metric.NewPeriodicReader(testExporter{})), WithGatherer(registry), WithRegisterer(registry), }, - wantReaderType: metric.NewPeriodicReader(testExporter{}), wantRegisterer: registry, wantGatherer: registry, }, { name: "nil options do nothing", options: []Option{ - WithReader(nil), WithGatherer(nil), WithRegisterer(nil), }, - wantReaderType: metric.NewManualReader(), wantRegisterer: prometheus.DefaultRegisterer, wantGatherer: prometheus.DefaultGatherer, }, @@ -110,9 +76,6 @@ func TestNewConfig(t *testing.T) { t.Run(tt.name, func(t *testing.T) { cfg := newConfig(tt.options...) - // If no reader is provided you should get a new ManualReader. - assert.IsType(t, tt.wantReaderType, cfg.reader) - // If no Registry is provided you should get the DefaultRegisterer and DefaultGatherer. assert.Equal(t, tt.wantRegisterer, cfg.registerer) assert.Equal(t, tt.wantGatherer, cfg.gatherer) diff --git a/exporters/prometheus/config.go b/exporters/prometheus/config.go index 37cae9a742d..65e85d675d6 100644 --- a/exporters/prometheus/config.go +++ b/exporters/prometheus/config.go @@ -16,12 +16,8 @@ package prometheus // import "go.opentelemetry.io/otel/exporters/prometheus" import ( "github.com/prometheus/client_golang/prometheus" - - "go.opentelemetry.io/otel/sdk/metric" ) // config is added here to allow for options expansion in the future. type config struct { - reader metric.Reader - registerer prometheus.Registerer gatherer prometheus.Gatherer } @@ -32,10 +28,6 @@ func newConfig(opts ...Option) config { cfg = opt.apply(cfg) } - if cfg.reader == nil { - cfg.reader = metric.NewManualReader() - } - if cfg.gatherer == nil { cfg.gatherer = prometheus.DefaultGatherer } @@ -57,15 +49,6 @@ func (fn optionFunc) apply(cfg config) config { return fn(cfg) } -// WithReader controls where the Exporter reader Collects() from. If no reader -// is passed a ManualReader will be used. -func WithReader(rdr metric.Reader) Option { - return optionFunc(func(cfg config) config { - cfg.reader = rdr - return cfg - }) -} - // WithRegisterer configures which prometheus Registerer the Exporter will // register with. If no registerer is used the prometheus DefaultRegisterer is // used. diff --git a/exporters/prometheus/exporter.go b/exporters/prometheus/exporter.go index 7f48603ad88..47467468d44 100644 --- a/exporters/prometheus/exporter.go +++ b/exporters/prometheus/exporter.go @@ -52,9 +52,12 @@ type collector struct { func New(opts ...Option) (*Exporter, error) { cfg := newConfig(opts...) + // TODO (#????): Enable some way to configure the reader, but not change temporality. + reader := metric.NewManualReader() + handler := promhttp.HandlerFor(cfg.gatherer, promhttp.HandlerOpts{}) collector := &collector{ - reader: cfg.reader, + reader: reader, } if err := cfg.registerer.Register(collector); err != nil { @@ -62,7 +65,7 @@ func New(opts ...Option) (*Exporter, error) { } e := &Exporter{ - Reader: cfg.reader, + Reader: reader, Collector: collector, handler: handler,