VictoriaMetrics/lib/promscrape/scraper_test.go

82 lines
2.2 KiB
Go
Raw Permalink Normal View History

package promscrape
import (
"fmt"
"math/rand"
"testing"
"github.com/VictoriaMetrics/VictoriaMetrics/lib/auth"
"github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal"
)
func TestScraperReload(t *testing.T) {
f := func(oldCfgData, newCfgData string, reloadExpected bool) {
pushData := func(_ *auth.Token, _ *prompbmarshal.WriteRequest) {}
globalStopChan = make(chan struct{})
defer close(globalStopChan)
randName := rand.Int()
sg := newScraperGroup(fmt.Sprintf("static_configs_%d", randName), pushData, globalStopChan)
defer sg.stop()
scrapeConfigPath := "test-scrape.yaml"
var oldCfg, newCfg Config
if err := oldCfg.parseData([]byte(oldCfgData), scrapeConfigPath); err != nil {
t.Fatalf("cannot create old config: %s", err)
}
oldSws := oldCfg.getStaticScrapeWork()
sg.update(oldSws)
oldChangesCount := sg.changesCount.Get()
if err := newCfg.parseData([]byte(newCfgData), scrapeConfigPath); err != nil {
t.Fatalf("cannot create new config: %s", err)
}
doReload := (&newCfg).mustRestart(&oldCfg)
if doReload != reloadExpected {
t.Errorf("unexpected reload behaviour:\nexpected: %t\nactual: %t\n", reloadExpected, doReload)
}
newSws := newCfg.getStaticScrapeWork()
sg.update(newSws)
newChangesCount := sg.changesCount.Get()
if (newChangesCount != oldChangesCount) != reloadExpected {
t.Errorf("expected reload behaviour:\nexpected reload happen: %t\nactual reload happen: %t", reloadExpected, newChangesCount != oldChangesCount)
}
}
f(`
scrape_configs:
- job_name: node-exporter
static_configs:
- targets:
- localhost:8429`, `
scrape_configs:
- job_name: node-exporter
static_configs:
- targets:
- localhost:8429`, false)
f(`
scrape_configs:
- job_name: node-exporter
static_configs:
- targets:
- localhost:8429`, `
scrape_configs:
- job_name: node-exporter
static_configs:
- targets:
- localhost:8429
- localhost:8428`, true)
f(`
scrape_configs:
- job_name: node-exporter
max_scrape_size: 1KiB
static_configs:
- targets:
- localhost:8429`, `
scrape_configs:
- job_name: node-exporter
max_scrape_size: 2KiB
static_configs:
- targets:
- localhost:8429`, true)
}