diff --git a/receiver/prometheusreceiver/metrics_receiver.go b/receiver/prometheusreceiver/metrics_receiver.go index 462365886f4d..021c260f6380 100644 --- a/receiver/prometheusreceiver/metrics_receiver.go +++ b/receiver/prometheusreceiver/metrics_receiver.go @@ -12,9 +12,11 @@ import ( "net/http" "net/url" "os" + "reflect" "regexp" "sync" "time" + "unsafe" "github.com/go-kit/log" "github.com/mitchellh/hashstructure/v2" @@ -54,6 +56,7 @@ type pReceiver struct { httpClient *http.Client registerer prometheus.Registerer unregisterMetrics func() + skipOffsetting bool // for testing only } // New creates a new prometheus.Receiver reference. @@ -299,13 +302,24 @@ func (r *pReceiver) initPrometheusComponents(ctx context.Context, logger log.Log return err } - scrapeManager, err := scrape.NewManager(&scrape.Options{ + opts := &scrape.Options{ PassMetadataInContext: true, ExtraMetrics: r.cfg.ReportExtraScrapeMetrics, HTTPClientOptions: []commonconfig.HTTPClientOption{ commonconfig.WithUserAgent(r.settings.BuildInfo.Command + "/" + r.settings.BuildInfo.Version), }, - }, logger, store, r.registerer) + } + + // for testing only + if r.skipOffsetting { + optsValue := reflect.ValueOf(opts).Elem() + field := optsValue.FieldByName("skipOffsetting") + reflect.NewAt(field.Type(), unsafe.Pointer(field.UnsafeAddr())). + Elem(). + Set(reflect.ValueOf(true)) + } + + scrapeManager, err := scrape.NewManager(opts, logger, store, r.registerer) if err != nil { return err } diff --git a/receiver/prometheusreceiver/metrics_receiver_helper_test.go b/receiver/prometheusreceiver/metrics_receiver_helper_test.go index 41ed19989a0a..d70e22fe5210 100644 --- a/receiver/prometheusreceiver/metrics_receiver_helper_test.go +++ b/receiver/prometheusreceiver/metrics_receiver_helper_test.go @@ -660,6 +660,7 @@ func testComponent(t *testing.T, targets []*testData, alterConfig func(*Config), cms := new(consumertest.MetricsSink) receiver := newPrometheusReceiver(receivertest.NewNopCreateSettings(), config, cms) + receiver.skipOffsetting = true require.NoError(t, receiver.Start(ctx, componenttest.NewNopHost())) // verify state after shutdown is called