|
|
|
|
@ -50,6 +50,7 @@ import ( |
|
|
|
|
"go.opentelemetry.io/otel" |
|
|
|
|
"go.opentelemetry.io/otel/propagation" |
|
|
|
|
sdktrace "go.opentelemetry.io/otel/sdk/trace" |
|
|
|
|
"go.uber.org/atomic" |
|
|
|
|
|
|
|
|
|
"github.com/prometheus/prometheus/config" |
|
|
|
|
"github.com/prometheus/prometheus/discovery" |
|
|
|
|
@ -5897,3 +5898,47 @@ func TestScrapeLoopAppendSampleLimitReplaceAllSamples(t *testing.T) { |
|
|
|
|
}...) |
|
|
|
|
requireEqual(t, want, resApp.resultFloats, "Appended samples not as expected:\n%s", slApp) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestScrapeLoopDisableStalenessMarkerInjection(t *testing.T) { |
|
|
|
|
var ( |
|
|
|
|
loopDone = atomic.NewBool(false) |
|
|
|
|
appender = &collectResultAppender{} |
|
|
|
|
scraper = &testScraper{} |
|
|
|
|
app = func(_ context.Context) storage.Appender { return appender } |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
sl := newBasicScrapeLoop(t, context.Background(), scraper, app, 10*time.Millisecond) |
|
|
|
|
scraper.scrapeFunc = func(ctx context.Context, w io.Writer) error { |
|
|
|
|
if _, err := w.Write([]byte("metric_a 42\n")); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
return ctx.Err() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Start the scrape loop.
|
|
|
|
|
go func() { |
|
|
|
|
sl.run(nil) |
|
|
|
|
loopDone.Store(true) |
|
|
|
|
}() |
|
|
|
|
|
|
|
|
|
// Wait for some samples to be appended.
|
|
|
|
|
require.Eventually(t, func() bool { |
|
|
|
|
appender.mtx.Lock() |
|
|
|
|
defer appender.mtx.Unlock() |
|
|
|
|
return len(appender.resultFloats) > 2 |
|
|
|
|
}, 5*time.Second, 100*time.Millisecond, "Scrape loop didn't append any samples.") |
|
|
|
|
|
|
|
|
|
// Disable end of run staleness markers and stop the loop.
|
|
|
|
|
sl.disableEndOfRunStalenessMarkers() |
|
|
|
|
sl.stop() |
|
|
|
|
require.Eventually(t, func() bool { |
|
|
|
|
return loopDone.Load() |
|
|
|
|
}, 5*time.Second, 100*time.Millisecond, "Scrape loop didn't stop.") |
|
|
|
|
|
|
|
|
|
// No stale markers should be appended, since they were disabled.
|
|
|
|
|
for _, s := range appender.resultFloats { |
|
|
|
|
if value.IsStaleNaN(s.f) { |
|
|
|
|
t.Fatalf("Got stale NaN samples while end of run staleness is disabled: %x", math.Float64bits(s.f)) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|