Deprecate all Scraper helpers in scraperhelper (#11732)
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
parent
c6828f0163
commit
e27c4aeae8
|
@ -0,0 +1,25 @@
|
|||
# Use this changelog template to create an entry for release notes.
|
||||
|
||||
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
|
||||
change_type: deprecation
|
||||
|
||||
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
|
||||
component: scraperhelper
|
||||
|
||||
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
|
||||
note: Deprecate all Scraper helpers in scraperhelper
|
||||
|
||||
# One or more tracking issues or pull requests related to the change
|
||||
issues: [11732]
|
||||
|
||||
# (Optional) One or more lines of additional information to render under the primary note.
|
||||
# These lines will be padded with 2 spaces and then inserted directly into the document.
|
||||
# Use pipe (|) for multiline entries.
|
||||
subtext: Deprecate ScrapeFunc, ScraperOption, WithStart, WithShutdown in favor of equivalent funcs in scraper package.
|
||||
|
||||
# Optional: The change log or logs in which this entry should be included.
|
||||
# e.g. '[user]' or '[user, api]'
|
||||
# Include 'user' if the change is relevant to end users.
|
||||
# Include 'api' if there is a change to a library API.
|
||||
# Default: '[user]'
|
||||
change_logs: [user]
|
|
@ -18,6 +18,7 @@ import (
|
|||
"go.opentelemetry.io/collector/receiver/internal"
|
||||
"go.opentelemetry.io/collector/receiver/scrapererror"
|
||||
"go.opentelemetry.io/collector/receiver/scraperhelper/internal/metadata"
|
||||
"go.opentelemetry.io/collector/scraper"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -31,7 +32,7 @@ const (
|
|||
erroredMetricPointsKey = "errored_metric_points"
|
||||
)
|
||||
|
||||
func newObsMetrics(delegate ScrapeFunc, receiverID component.ID, scraperID component.ID, telSettings component.TelemetrySettings) (ScrapeFunc, error) {
|
||||
func newObsMetrics(delegate scraper.ScrapeMetricsFunc, receiverID component.ID, scraperID component.ID, telSettings component.TelemetrySettings) (scraper.ScrapeMetricsFunc, error) {
|
||||
telemetryBuilder, errBuilder := metadata.NewTelemetryBuilder(telSettings)
|
||||
if errBuilder != nil {
|
||||
return nil, errBuilder
|
||||
|
|
|
@ -18,6 +18,7 @@ import (
|
|||
"go.opentelemetry.io/collector/pdata/pmetric"
|
||||
"go.opentelemetry.io/collector/pdata/testdata"
|
||||
"go.opentelemetry.io/collector/receiver/scrapererror"
|
||||
"go.opentelemetry.io/collector/scraper"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -47,7 +48,7 @@ func TestScrapeMetricsDataOp(t *testing.T) {
|
|||
{items: 15, err: nil},
|
||||
}
|
||||
for i := range params {
|
||||
var sf ScrapeFunc
|
||||
var sf scraper.ScrapeMetricsFunc
|
||||
sf, err = newObsMetrics(func(context.Context) (pmetric.Metrics, error) {
|
||||
return testdata.GenerateMetrics(params[i].items), params[i].err
|
||||
}, receiverID, scraperID, tt.TelemetrySettings())
|
||||
|
@ -94,7 +95,7 @@ func TestCheckScraperMetrics(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
t.Cleanup(func() { require.NoError(t, tt.Shutdown(context.Background())) })
|
||||
|
||||
var sf ScrapeFunc
|
||||
var sf scraper.ScrapeMetricsFunc
|
||||
sf, err = newObsMetrics(func(context.Context) (pmetric.Metrics, error) {
|
||||
return testdata.GenerateMetrics(7), nil
|
||||
}, receiverID, scraperID, tt.TelemetrySettings())
|
||||
|
|
|
@ -9,21 +9,15 @@ import (
|
|||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/collector/pdata/pmetric"
|
||||
"go.opentelemetry.io/collector/scraper"
|
||||
)
|
||||
|
||||
var errNilFunc = errors.New("nil scrape func")
|
||||
|
||||
// ScrapeFunc scrapes metrics.
|
||||
// Deprecated: [v0.115.0] use scraper.ScrapeMetricsFunc.
|
||||
type ScrapeFunc func(context.Context) (pmetric.Metrics, error)
|
||||
|
||||
func (sf ScrapeFunc) ScrapeMetrics(ctx context.Context) (pmetric.Metrics, error) {
|
||||
return sf(ctx)
|
||||
}
|
||||
|
||||
// Deprecated: [v0.115.0] use ScrapeMetrics.
|
||||
func (sf ScrapeFunc) Scrape(ctx context.Context) (pmetric.Metrics, error) {
|
||||
return sf.ScrapeMetrics(ctx)
|
||||
return sf(ctx)
|
||||
}
|
||||
|
||||
// Deprecated: [v0.115.0] use scraper.Metrics.
|
||||
|
@ -32,7 +26,7 @@ type Scraper interface {
|
|||
Scrape(context.Context) (pmetric.Metrics, error)
|
||||
}
|
||||
|
||||
// ScraperOption apply changes to internal options.
|
||||
// Deprecated: [v0.115.0] use scraper.Option.
|
||||
type ScraperOption interface {
|
||||
apply(*baseScraper)
|
||||
}
|
||||
|
@ -43,14 +37,14 @@ func (of scraperOptionFunc) apply(e *baseScraper) {
|
|||
of(e)
|
||||
}
|
||||
|
||||
// WithStart sets the function that will be called on startup.
|
||||
// Deprecated: [v0.115.0] use scraper.WithStart.
|
||||
func WithStart(start component.StartFunc) ScraperOption {
|
||||
return scraperOptionFunc(func(o *baseScraper) {
|
||||
o.StartFunc = start
|
||||
})
|
||||
}
|
||||
|
||||
// WithShutdown sets the function that will be called on shutdown.
|
||||
// Deprecated: [v0.115.0] use scraper.WithShutdown.
|
||||
func WithShutdown(shutdown component.ShutdownFunc) ScraperOption {
|
||||
return scraperOptionFunc(func(o *baseScraper) {
|
||||
o.ShutdownFunc = shutdown
|
||||
|
@ -63,14 +57,8 @@ type baseScraper struct {
|
|||
ScrapeFunc
|
||||
}
|
||||
|
||||
// NewScraper creates a scraper.Metrics that calls ScrapeMetrics at the specified collection interval,
|
||||
// reports observability information, and passes the scraped metrics to the next consumer.
|
||||
func NewScraper(scrape ScrapeFunc, options ...ScraperOption) (scraper.Metrics, error) {
|
||||
return newBaseScraper(scrape, options...)
|
||||
}
|
||||
|
||||
// TODO: Remove this and embed into NewScraper when NewScraperWithoutType is removed.
|
||||
func newBaseScraper(scrape ScrapeFunc, options ...ScraperOption) (*baseScraper, error) {
|
||||
// Deprecated: [v0.115.0] use scraper.NewMetrics.
|
||||
func NewScraperWithoutType(scrape ScrapeFunc, options ...ScraperOption) (Scraper, error) {
|
||||
if scrape == nil {
|
||||
return nil, errNilFunc
|
||||
}
|
||||
|
@ -83,8 +71,3 @@ func newBaseScraper(scrape ScrapeFunc, options ...ScraperOption) (*baseScraper,
|
|||
|
||||
return bs, nil
|
||||
}
|
||||
|
||||
// Deprecated: [v0.115.0] use NewScraper.
|
||||
func NewScraperWithoutType(scrape ScrapeFunc, options ...ScraperOption) (Scraper, error) {
|
||||
return newBaseScraper(scrape, options...)
|
||||
}
|
||||
|
|
|
@ -46,10 +46,10 @@ func AddScraper(t component.Type, scraper scraper.Metrics) ScraperControllerOpti
|
|||
}
|
||||
|
||||
// Deprecated: [v0.115.0] use AddScraper.
|
||||
func AddScraperWithType(t component.Type, scraper Scraper) ScraperControllerOption {
|
||||
func AddScraperWithType(t component.Type, scrp Scraper) ScraperControllerOption {
|
||||
// Ignore the error since it cannot happen because the Scrape func cannot be nil here.
|
||||
scrp, _ := NewScraper(scraper.Scrape, WithStart(scraper.Start), WithShutdown(scraper.Shutdown))
|
||||
return AddScraper(t, scrp)
|
||||
newScrp, _ := scraper.NewMetrics(scrp.Scrape, scraper.WithStart(scrp.Start), scraper.WithShutdown(scrp.Shutdown))
|
||||
return AddScraper(t, newScrp)
|
||||
}
|
||||
|
||||
// WithTickerChannel allows you to override the scraper controller's ticker
|
||||
|
@ -116,12 +116,12 @@ func NewScraperControllerReceiver(
|
|||
for i := range sc.scrapers {
|
||||
telSet := set.TelemetrySettings
|
||||
telSet.Logger = telSet.Logger.With(zap.String("scraper", sc.scrapers[i].id.String()))
|
||||
var obsScrp ScrapeFunc
|
||||
var obsScrp scraper.ScrapeMetricsFunc
|
||||
obsScrp, err = newObsMetrics(sc.scrapers[i].ScrapeMetrics, set.ID, sc.scrapers[i].id, telSet)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sc.obsScrapers[i], err = NewScraper(obsScrp, WithStart(sc.scrapers[i].Start), WithShutdown(sc.scrapers[i].Shutdown))
|
||||
sc.obsScrapers[i], err = scraper.NewMetrics(obsScrp, scraper.WithStart(sc.scrapers[i].Start), scraper.WithShutdown(sc.scrapers[i].Shutdown))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ import (
|
|||
"go.opentelemetry.io/collector/receiver"
|
||||
"go.opentelemetry.io/collector/receiver/receivertest"
|
||||
"go.opentelemetry.io/collector/receiver/scrapererror"
|
||||
"go.opentelemetry.io/collector/scraper"
|
||||
)
|
||||
|
||||
type testInitialize struct {
|
||||
|
@ -198,21 +199,21 @@ func configureMetricOptions(t *testing.T, test metricsTestCase, initializeChs []
|
|||
var metricOptions []ScraperControllerOption
|
||||
|
||||
for i := 0; i < test.scrapers; i++ {
|
||||
var scraperOptions []ScraperOption
|
||||
var scraperOptions []scraper.Option
|
||||
if test.initialize {
|
||||
initializeChs[i] = make(chan bool, 1)
|
||||
ti := &testInitialize{ch: initializeChs[i], err: test.initializeErr}
|
||||
scraperOptions = append(scraperOptions, WithStart(ti.start))
|
||||
scraperOptions = append(scraperOptions, scraper.WithStart(ti.start))
|
||||
}
|
||||
if test.close {
|
||||
closeChs[i] = make(chan bool, 1)
|
||||
tc := &testClose{ch: closeChs[i], err: test.closeErr}
|
||||
scraperOptions = append(scraperOptions, WithShutdown(tc.shutdown))
|
||||
scraperOptions = append(scraperOptions, scraper.WithShutdown(tc.shutdown))
|
||||
}
|
||||
|
||||
scrapeMetricsChs[i] = make(chan int)
|
||||
tsm := &testScrapeMetrics{ch: scrapeMetricsChs[i], err: test.scrapeErr}
|
||||
scp, err := NewScraper(tsm.scrape, scraperOptions...)
|
||||
scp, err := scraper.NewMetrics(tsm.scrape, scraperOptions...)
|
||||
require.NoError(t, err)
|
||||
|
||||
metricOptions = append(metricOptions, AddScraper(component.MustNewType("scraper"), scp))
|
||||
|
@ -314,7 +315,7 @@ func TestSingleScrapePerInterval(t *testing.T) {
|
|||
|
||||
tickerCh := make(chan time.Time)
|
||||
|
||||
scp, err := NewScraper(tsm.scrape)
|
||||
scp, err := scraper.NewMetrics(tsm.scrape)
|
||||
require.NoError(t, err)
|
||||
|
||||
recv, err := NewScraperControllerReceiver(
|
||||
|
@ -356,7 +357,7 @@ func TestScrapeControllerStartsOnInit(t *testing.T) {
|
|||
ch: make(chan int, 1),
|
||||
}
|
||||
|
||||
scp, err := NewScraper(tsm.scrape)
|
||||
scp, err := scraper.NewMetrics(tsm.scrape)
|
||||
require.NoError(t, err, "Must not error when creating scraper")
|
||||
|
||||
r, err := NewScraperControllerReceiver(
|
||||
|
@ -392,7 +393,7 @@ func TestScrapeControllerInitialDelay(t *testing.T) {
|
|||
}
|
||||
)
|
||||
|
||||
scp, err := NewScraper(func(context.Context) (pmetric.Metrics, error) {
|
||||
scp, err := scraper.NewMetrics(func(context.Context) (pmetric.Metrics, error) {
|
||||
elapsed <- time.Now()
|
||||
return pmetric.NewMetrics(), nil
|
||||
})
|
||||
|
@ -421,7 +422,7 @@ func TestShutdownBeforeScrapeCanStart(t *testing.T) {
|
|||
InitialDelay: 5 * time.Second,
|
||||
}
|
||||
|
||||
scp, err := NewScraper(func(context.Context) (pmetric.Metrics, error) {
|
||||
scp, err := scraper.NewMetrics(func(context.Context) (pmetric.Metrics, error) {
|
||||
// make the scraper wait for long enough it would disrupt a shutdown.
|
||||
time.Sleep(30 * time.Second)
|
||||
return pmetric.NewMetrics(), nil
|
||||
|
|
|
@ -87,5 +87,5 @@ func TestMakeFactoryMap(t *testing.T) {
|
|||
}
|
||||
|
||||
func createMetrics(context.Context, Settings, component.Config) (Metrics, error) {
|
||||
return NewMetrics(context.Background(), nopSettings(), newTestScrapeMetricsFunc(nil))
|
||||
return NewMetrics(newTestScrapeMetricsFunc(nil))
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ type metrics struct {
|
|||
}
|
||||
|
||||
// NewMetrics creates a new Metrics scraper.
|
||||
func NewMetrics(_ context.Context, _ Settings, scrape ScrapeMetricsFunc, options ...Option) (Metrics, error) {
|
||||
func NewMetrics(scrape ScrapeMetricsFunc, options ...Option) (Metrics, error) {
|
||||
if scrape == nil {
|
||||
return nil, errNilFunc
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ import (
|
|||
)
|
||||
|
||||
func TestNewMetrics(t *testing.T) {
|
||||
mp, err := NewMetrics(context.Background(), nopSettings(), newTestScrapeMetricsFunc(nil))
|
||||
mp, err := NewMetrics(newTestScrapeMetricsFunc(nil))
|
||||
require.NoError(t, err)
|
||||
|
||||
require.NoError(t, mp.Start(context.Background(), componenttest.NewNopHost()))
|
||||
|
@ -30,7 +30,7 @@ func TestNewMetrics(t *testing.T) {
|
|||
|
||||
func TestNewMetrics_WithOptions(t *testing.T) {
|
||||
want := errors.New("my_error")
|
||||
mp, err := NewMetrics(context.Background(), nopSettings(), newTestScrapeMetricsFunc(nil),
|
||||
mp, err := NewMetrics(newTestScrapeMetricsFunc(nil),
|
||||
WithStart(func(context.Context, component.Host) error { return want }),
|
||||
WithShutdown(func(context.Context) error { return want }))
|
||||
require.NoError(t, err)
|
||||
|
@ -40,13 +40,13 @@ func TestNewMetrics_WithOptions(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestNewMetrics_NilRequiredFields(t *testing.T) {
|
||||
_, err := NewMetrics(context.Background(), nopSettings(), nil)
|
||||
_, err := NewMetrics(nil)
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
func TestNewMetrics_ProcessMetricsError(t *testing.T) {
|
||||
want := errors.New("my_error")
|
||||
mp, err := NewMetrics(context.Background(), nopSettings(), newTestScrapeMetricsFunc(want))
|
||||
mp, err := NewMetrics(newTestScrapeMetricsFunc(want))
|
||||
require.NoError(t, err)
|
||||
_, err = mp.ScrapeMetrics(context.Background())
|
||||
require.ErrorIs(t, err, want)
|
||||
|
@ -60,7 +60,7 @@ func TestMetricsConcurrency(t *testing.T) {
|
|||
dps.AppendEmpty()
|
||||
dps.AppendEmpty()
|
||||
|
||||
mp, err := NewMetrics(context.Background(), nopSettings(), newTestScrapeMetricsFunc(nil))
|
||||
mp, err := NewMetrics(newTestScrapeMetricsFunc(nil))
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, mp.Start(context.Background(), componenttest.NewNopHost()))
|
||||
|
||||
|
|
Loading…
Reference in New Issue