From 8b89ab01738b978f122d3542d619979598e79d10 Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Fri, 13 Apr 2018 14:21:41 +0200 Subject: [PATCH] scrape: add test detecting data races Signed-off-by: Simon Pasquier --- scrape/scrape_test.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/scrape/scrape_test.go b/scrape/scrape_test.go index 3115a566b..132c2739d 100644 --- a/scrape/scrape_test.go +++ b/scrape/scrape_test.go @@ -333,6 +333,44 @@ func TestScrapePoolAppender(t *testing.T) { } } +func TestScrapePoolRaces(t *testing.T) { + interval, _ := model.ParseDuration("500ms") + timeout, _ := model.ParseDuration("1s") + newConfig := func() *config.ScrapeConfig { + return &config.ScrapeConfig{ScrapeInterval: interval, ScrapeTimeout: timeout} + } + sp := newScrapePool(newConfig(), &nopAppendable{}, nil) + tgts := []*targetgroup.Group{ + &targetgroup.Group{ + Targets: []model.LabelSet{ + model.LabelSet{model.AddressLabel: "127.0.0.1:9090"}, + model.LabelSet{model.AddressLabel: "127.0.0.2:9090"}, + model.LabelSet{model.AddressLabel: "127.0.0.3:9090"}, + model.LabelSet{model.AddressLabel: "127.0.0.4:9090"}, + model.LabelSet{model.AddressLabel: "127.0.0.5:9090"}, + model.LabelSet{model.AddressLabel: "127.0.0.6:9090"}, + model.LabelSet{model.AddressLabel: "127.0.0.7:9090"}, + model.LabelSet{model.AddressLabel: "127.0.0.8:9090"}, + }, + }, + } + + active, dropped := sp.Sync(tgts) + expectedActive, expectedDropped := len(tgts[0].Targets), 0 + if len(active) != expectedActive { + t.Fatalf("Invalid number of active targets: expected %v, got %v", expectedActive, len(active)) + } + if len(dropped) != expectedDropped { + t.Fatalf("Invalid number of dropped targets: expected %v, got %v", expectedDropped, len(dropped)) + } + + for i := 0; i < 20; i++ { + time.Sleep(time.Duration(10 * time.Millisecond)) + sp.reload(newConfig()) + } + sp.stop() +} + func TestScrapeLoopStopBeforeRun(t *testing.T) { scraper := &testScraper{}