Testify: move to require (#8122)
* Testify: move to require Moving testify to require to fail tests early in case of errors. Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu> * More moves Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
This commit is contained in:
		
							parent
							
								
									3d8826a3d4
								
							
						
					
					
						commit
						6c56a1faaa
					
				|  | @ -28,7 +28,7 @@ import ( | |||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/notifier" | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
|  | @ -98,9 +98,9 @@ func TestComputeExternalURL(t *testing.T) { | |||
| 	for _, test := range tests { | ||||
| 		_, err := computeExternalURL(test.input, "0.0.0.0:9090") | ||||
| 		if test.valid { | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		} else { | ||||
| 			assert.Error(t, err, "input=%q", test.input) | ||||
| 			require.Error(t, err, "input=%q", test.input) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -116,11 +116,11 @@ func TestFailedStartupExitCode(t *testing.T) { | |||
| 
 | ||||
| 	prom := exec.Command(promPath, "-test.main", "--config.file="+fakeInputFile) | ||||
| 	err := prom.Run() | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| 
 | ||||
| 	if exitError, ok := err.(*exec.ExitError); ok { | ||||
| 		status := exitError.Sys().(syscall.WaitStatus) | ||||
| 		assert.Equal(t, expectedExitStatus, status.ExitStatus()) | ||||
| 		require.Equal(t, expectedExitStatus, status.ExitStatus()) | ||||
| 	} else { | ||||
| 		t.Errorf("unable to retrieve the exit status for prometheus: %v", err) | ||||
| 	} | ||||
|  | @ -189,7 +189,7 @@ func TestSendAlerts(t *testing.T) { | |||
| 				if len(tc.in) == 0 { | ||||
| 					t.Fatalf("sender called with 0 alert") | ||||
| 				} | ||||
| 				assert.Equal(t, tc.exp, alerts) | ||||
| 				require.Equal(t, tc.exp, alerts) | ||||
| 			}) | ||||
| 			sendAlerts(senderFunc, "http://localhost:9090")(context.TODO(), "up", tc.in...) | ||||
| 		}) | ||||
|  | @ -206,14 +206,14 @@ func TestWALSegmentSizeBounds(t *testing.T) { | |||
| 
 | ||||
| 		// Log stderr in case of failure.
 | ||||
| 		stderr, err := prom.StderrPipe() | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		go func() { | ||||
| 			slurp, _ := ioutil.ReadAll(stderr) | ||||
| 			t.Log(string(slurp)) | ||||
| 		}() | ||||
| 
 | ||||
| 		err = prom.Start() | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		if expectedExitStatus == 0 { | ||||
| 			done := make(chan error, 1) | ||||
|  | @ -228,10 +228,10 @@ func TestWALSegmentSizeBounds(t *testing.T) { | |||
| 		} | ||||
| 
 | ||||
| 		err = prom.Wait() | ||||
| 		assert.Error(t, err) | ||||
| 		require.Error(t, err) | ||||
| 		if exitError, ok := err.(*exec.ExitError); ok { | ||||
| 			status := exitError.Sys().(syscall.WaitStatus) | ||||
| 			assert.Equal(t, expectedExitStatus, status.ExitStatus()) | ||||
| 			require.Equal(t, expectedExitStatus, status.ExitStatus()) | ||||
| 		} else { | ||||
| 			t.Errorf("unable to retrieve the exit status for prometheus: %v", err) | ||||
| 		} | ||||
|  | @ -240,21 +240,21 @@ func TestWALSegmentSizeBounds(t *testing.T) { | |||
| 
 | ||||
| func TestTimeMetrics(t *testing.T) { | ||||
| 	tmpDir, err := ioutil.TempDir("", "time_metrics_e2e") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpDir)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpDir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	reg := prometheus.NewRegistry() | ||||
| 	db, err := openDBWithMetrics(tmpDir, log.NewNopLogger(), reg, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, db.Close()) | ||||
| 		require.NoError(t, db.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	// Check initial values.
 | ||||
| 	assert.Equal(t, map[string]float64{ | ||||
| 	require.Equal(t, map[string]float64{ | ||||
| 		"prometheus_tsdb_lowest_timestamp_seconds": float64(math.MaxInt64) / 1000, | ||||
| 		"prometheus_tsdb_head_min_time_seconds":    float64(math.MaxInt64) / 1000, | ||||
| 		"prometheus_tsdb_head_max_time_seconds":    float64(math.MinInt64) / 1000, | ||||
|  | @ -266,14 +266,14 @@ func TestTimeMetrics(t *testing.T) { | |||
| 
 | ||||
| 	app := db.Appender(context.Background()) | ||||
| 	_, err = app.Add(labels.FromStrings(model.MetricNameLabel, "a"), 1000, 1) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	_, err = app.Add(labels.FromStrings(model.MetricNameLabel, "a"), 2000, 1) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	_, err = app.Add(labels.FromStrings(model.MetricNameLabel, "a"), 3000, 1) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, app.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, app.Commit()) | ||||
| 
 | ||||
| 	assert.Equal(t, map[string]float64{ | ||||
| 	require.Equal(t, map[string]float64{ | ||||
| 		"prometheus_tsdb_lowest_timestamp_seconds": 1.0, | ||||
| 		"prometheus_tsdb_head_min_time_seconds":    1.0, | ||||
| 		"prometheus_tsdb_head_max_time_seconds":    3.0, | ||||
|  | @ -286,7 +286,7 @@ func TestTimeMetrics(t *testing.T) { | |||
| 
 | ||||
| func getCurrentGaugeValuesFor(t *testing.T, reg prometheus.Gatherer, metricNames ...string) map[string]float64 { | ||||
| 	f, err := reg.Gather() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	res := make(map[string]float64, len(metricNames)) | ||||
| 	for _, g := range f { | ||||
|  | @ -295,7 +295,7 @@ func getCurrentGaugeValuesFor(t *testing.T, reg prometheus.Gatherer, metricNames | |||
| 				continue | ||||
| 			} | ||||
| 
 | ||||
| 			assert.Equal(t, 1, len(g.GetMetric())) | ||||
| 			require.Equal(t, 1, len(g.GetMetric())) | ||||
| 			if _, ok := res[m]; ok { | ||||
| 				t.Error("expected only one metric family for", m) | ||||
| 				t.FailNow() | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ import ( | |||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| type origin int | ||||
|  | @ -82,22 +82,22 @@ func (p *queryLogTest) waitForPrometheus() error { | |||
| // then reloads the configuration if needed.
 | ||||
| func (p *queryLogTest) setQueryLog(t *testing.T, queryLogFile string) { | ||||
| 	err := p.configFile.Truncate(0) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	_, err = p.configFile.Seek(0, 0) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	if queryLogFile != "" { | ||||
| 		_, err = p.configFile.Write([]byte(fmt.Sprintf("global:\n  query_log_file: %s\n", queryLogFile))) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	} | ||||
| 	_, err = p.configFile.Write([]byte(p.configuration())) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| // reloadConfig reloads the configuration using POST.
 | ||||
| func (p *queryLogTest) reloadConfig(t *testing.T) { | ||||
| 	r, err := http.Post(fmt.Sprintf("http://%s:%d%s/-/reload", p.host, p.port, p.prefix), "text/plain", nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 200, r.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 200, r.StatusCode) | ||||
| } | ||||
| 
 | ||||
| // query runs a query according to the test origin.
 | ||||
|  | @ -111,8 +111,8 @@ func (p *queryLogTest) query(t *testing.T) { | |||
| 			p.prefix, | ||||
| 			url.QueryEscape("query_with_api"), | ||||
| 		)) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, 200, r.StatusCode) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, 200, r.StatusCode) | ||||
| 	case consoleOrigin: | ||||
| 		r, err := http.Get(fmt.Sprintf( | ||||
| 			"http://%s:%d%s/consoles/test.html", | ||||
|  | @ -120,8 +120,8 @@ func (p *queryLogTest) query(t *testing.T) { | |||
| 			p.port, | ||||
| 			p.prefix, | ||||
| 		)) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, 200, r.StatusCode) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, 200, r.StatusCode) | ||||
| 	case ruleOrigin: | ||||
| 		time.Sleep(2 * time.Second) | ||||
| 	default: | ||||
|  | @ -147,15 +147,15 @@ func (p *queryLogTest) queryString() string { | |||
| // test parameters.
 | ||||
| func (p *queryLogTest) validateLastQuery(t *testing.T, ql []queryLogLine) { | ||||
| 	q := ql[len(ql)-1] | ||||
| 	assert.Equal(t, p.queryString(), q.Params.Query) | ||||
| 	require.Equal(t, p.queryString(), q.Params.Query) | ||||
| 
 | ||||
| 	switch p.origin { | ||||
| 	case apiOrigin: | ||||
| 		assert.Equal(t, 5, q.Params.Step) | ||||
| 		assert.Equal(t, "1970-01-01T00:00:00.000Z", q.Params.Start) | ||||
| 		assert.Equal(t, "1970-01-01T01:00:00.000Z", q.Params.End) | ||||
| 		require.Equal(t, 5, q.Params.Step) | ||||
| 		require.Equal(t, "1970-01-01T00:00:00.000Z", q.Params.Start) | ||||
| 		require.Equal(t, "1970-01-01T01:00:00.000Z", q.Params.End) | ||||
| 	default: | ||||
| 		assert.Equal(t, 0, q.Params.Step) | ||||
| 		require.Equal(t, 0, q.Params.Step) | ||||
| 	} | ||||
| 
 | ||||
| 	if p.origin != ruleOrigin { | ||||
|  | @ -163,17 +163,17 @@ func (p *queryLogTest) validateLastQuery(t *testing.T, ql []queryLogLine) { | |||
| 		if host == "[::1]" { | ||||
| 			host = "::1" | ||||
| 		} | ||||
| 		assert.Equal(t, host, q.Request.ClientIP) | ||||
| 		require.Equal(t, host, q.Request.ClientIP) | ||||
| 	} | ||||
| 
 | ||||
| 	switch p.origin { | ||||
| 	case apiOrigin: | ||||
| 		assert.Equal(t, p.prefix+"/api/v1/query_range", q.Request.Path) | ||||
| 		require.Equal(t, p.prefix+"/api/v1/query_range", q.Request.Path) | ||||
| 	case consoleOrigin: | ||||
| 		assert.Equal(t, p.prefix+"/consoles/test.html", q.Request.Path) | ||||
| 		require.Equal(t, p.prefix+"/consoles/test.html", q.Request.Path) | ||||
| 	case ruleOrigin: | ||||
| 		assert.Equal(t, "querylogtest", q.RuleGroup.Name) | ||||
| 		assert.Equal(t, filepath.Join(p.cwd, "testdata", "rules", "test.yml"), q.RuleGroup.File) | ||||
| 		require.Equal(t, "querylogtest", q.RuleGroup.Name) | ||||
| 		require.Equal(t, filepath.Join(p.cwd, "testdata", "rules", "test.yml"), q.RuleGroup.File) | ||||
| 	default: | ||||
| 		panic("unknown origin") | ||||
| 	} | ||||
|  | @ -234,10 +234,10 @@ func (p *queryLogTest) run(t *testing.T) { | |||
| 
 | ||||
| 	// Setup temporary files for this test.
 | ||||
| 	queryLogFile, err := ioutil.TempFile("", "query") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer os.Remove(queryLogFile.Name()) | ||||
| 	p.configFile, err = ioutil.TempFile("", "config") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer os.Remove(p.configFile.Name()) | ||||
| 
 | ||||
| 	if p.enabledAtStart { | ||||
|  | @ -247,9 +247,9 @@ func (p *queryLogTest) run(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "query_log_test") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	params := append([]string{ | ||||
|  | @ -264,7 +264,7 @@ func (p *queryLogTest) run(t *testing.T) { | |||
| 
 | ||||
| 	// Log stderr in case of failure.
 | ||||
| 	stderr, err := prom.StderrPipe() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// We use a WaitGroup to avoid calling t.Log after the test is done.
 | ||||
| 	var wg sync.WaitGroup | ||||
|  | @ -276,17 +276,17 @@ func (p *queryLogTest) run(t *testing.T) { | |||
| 		wg.Done() | ||||
| 	}() | ||||
| 
 | ||||
| 	assert.NoError(t, prom.Start()) | ||||
| 	require.NoError(t, prom.Start()) | ||||
| 
 | ||||
| 	defer func() { | ||||
| 		prom.Process.Kill() | ||||
| 		prom.Wait() | ||||
| 	}() | ||||
| 	assert.NoError(t, p.waitForPrometheus()) | ||||
| 	require.NoError(t, p.waitForPrometheus()) | ||||
| 
 | ||||
| 	if !p.enabledAtStart { | ||||
| 		p.query(t) | ||||
| 		assert.Equal(t, 0, len(readQueryLog(t, queryLogFile.Name()))) | ||||
| 		require.Equal(t, 0, len(readQueryLog(t, queryLogFile.Name()))) | ||||
| 		p.setQueryLog(t, queryLogFile.Name()) | ||||
| 		p.reloadConfig(t) | ||||
| 	} | ||||
|  | @ -296,9 +296,9 @@ func (p *queryLogTest) run(t *testing.T) { | |||
| 	ql := readQueryLog(t, queryLogFile.Name()) | ||||
| 	qc := len(ql) | ||||
| 	if p.exactQueryCount() { | ||||
| 		assert.Equal(t, 1, qc) | ||||
| 		require.Equal(t, 1, qc) | ||||
| 	} else { | ||||
| 		assert.Greater(t, qc, 0, "no queries logged") | ||||
| 		require.Greater(t, qc, 0, "no queries logged") | ||||
| 	} | ||||
| 	p.validateLastQuery(t, ql) | ||||
| 
 | ||||
|  | @ -311,7 +311,7 @@ func (p *queryLogTest) run(t *testing.T) { | |||
| 	p.query(t) | ||||
| 
 | ||||
| 	ql = readQueryLog(t, queryLogFile.Name()) | ||||
| 	assert.Equal(t, qc, len(ql)) | ||||
| 	require.Equal(t, qc, len(ql)) | ||||
| 
 | ||||
| 	qc = len(ql) | ||||
| 	p.setQueryLog(t, queryLogFile.Name()) | ||||
|  | @ -322,9 +322,9 @@ func (p *queryLogTest) run(t *testing.T) { | |||
| 
 | ||||
| 	ql = readQueryLog(t, queryLogFile.Name()) | ||||
| 	if p.exactQueryCount() { | ||||
| 		assert.Equal(t, qc, len(ql)) | ||||
| 		require.Equal(t, qc, len(ql)) | ||||
| 	} else { | ||||
| 		assert.Greater(t, len(ql), qc, "no queries logged") | ||||
| 		require.Greater(t, len(ql), qc, "no queries logged") | ||||
| 	} | ||||
| 	p.validateLastQuery(t, ql) | ||||
| 	qc = len(ql) | ||||
|  | @ -336,13 +336,13 @@ func (p *queryLogTest) run(t *testing.T) { | |||
| 	} | ||||
| 	// Move the file, Prometheus should still write to the old file.
 | ||||
| 	newFile, err := ioutil.TempFile("", "newLoc") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, newFile.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, newFile.Close()) | ||||
| 	defer os.Remove(newFile.Name()) | ||||
| 	assert.NoError(t, os.Rename(queryLogFile.Name(), newFile.Name())) | ||||
| 	require.NoError(t, os.Rename(queryLogFile.Name(), newFile.Name())) | ||||
| 	ql = readQueryLog(t, newFile.Name()) | ||||
| 	if p.exactQueryCount() { | ||||
| 		assert.Equal(t, qc, len(ql)) | ||||
| 		require.Equal(t, qc, len(ql)) | ||||
| 	} | ||||
| 	p.validateLastQuery(t, ql) | ||||
| 	qc = len(ql) | ||||
|  | @ -353,9 +353,9 @@ func (p *queryLogTest) run(t *testing.T) { | |||
| 
 | ||||
| 	ql = readQueryLog(t, newFile.Name()) | ||||
| 	if p.exactQueryCount() { | ||||
| 		assert.Equal(t, qc, len(ql)) | ||||
| 		require.Equal(t, qc, len(ql)) | ||||
| 	} else { | ||||
| 		assert.Greater(t, len(ql), qc, "no queries logged") | ||||
| 		require.Greater(t, len(ql), qc, "no queries logged") | ||||
| 	} | ||||
| 	p.validateLastQuery(t, ql) | ||||
| 
 | ||||
|  | @ -366,9 +366,9 @@ func (p *queryLogTest) run(t *testing.T) { | |||
| 	ql = readQueryLog(t, queryLogFile.Name()) | ||||
| 	qc = len(ql) | ||||
| 	if p.exactQueryCount() { | ||||
| 		assert.Equal(t, 1, qc) | ||||
| 		require.Equal(t, 1, qc) | ||||
| 	} else { | ||||
| 		assert.Greater(t, qc, 0, "no queries logged") | ||||
| 		require.Greater(t, qc, 0, "no queries logged") | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -393,12 +393,12 @@ type queryLogLine struct { | |||
| func readQueryLog(t *testing.T, path string) []queryLogLine { | ||||
| 	ql := []queryLogLine{} | ||||
| 	file, err := os.Open(path) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer file.Close() | ||||
| 	scanner := bufio.NewScanner(file) | ||||
| 	for scanner.Scan() { | ||||
| 		var q queryLogLine | ||||
| 		assert.NoError(t, json.Unmarshal(scanner.Bytes(), &q)) | ||||
| 		require.NoError(t, json.Unmarshal(scanner.Bytes(), &q)) | ||||
| 		ql = append(ql, q) | ||||
| 	} | ||||
| 	return ql | ||||
|  | @ -410,7 +410,7 @@ func TestQueryLog(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	cwd, err := os.Getwd() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	port := 15000 | ||||
| 	for _, host := range []string{"127.0.0.1", "[::1]"} { | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestQueryRange(t *testing.T) { | ||||
|  | @ -29,18 +29,18 @@ func TestQueryRange(t *testing.T) { | |||
| 
 | ||||
| 	p := &promqlPrinter{} | ||||
| 	exitCode := QueryRange(s.URL, map[string]string{}, "up", "0", "300", 0, p) | ||||
| 	assert.Equal(t, "/api/v1/query_range", getRequest().URL.Path) | ||||
| 	require.Equal(t, "/api/v1/query_range", getRequest().URL.Path) | ||||
| 	form := getRequest().Form | ||||
| 	assert.Equal(t, "up", form.Get("query")) | ||||
| 	assert.Equal(t, "1", form.Get("step")) | ||||
| 	assert.Equal(t, 0, exitCode) | ||||
| 	require.Equal(t, "up", form.Get("query")) | ||||
| 	require.Equal(t, "1", form.Get("step")) | ||||
| 	require.Equal(t, 0, exitCode) | ||||
| 
 | ||||
| 	exitCode = QueryRange(s.URL, map[string]string{}, "up", "0", "300", 10*time.Millisecond, p) | ||||
| 	assert.Equal(t, "/api/v1/query_range", getRequest().URL.Path) | ||||
| 	require.Equal(t, "/api/v1/query_range", getRequest().URL.Path) | ||||
| 	form = getRequest().Form | ||||
| 	assert.Equal(t, "up", form.Get("query")) | ||||
| 	assert.Equal(t, "0.01", form.Get("step")) | ||||
| 	assert.Equal(t, 0, exitCode) | ||||
| 	require.Equal(t, "up", form.Get("query")) | ||||
| 	require.Equal(t, "0.01", form.Get("step")) | ||||
| 	require.Equal(t, 0, exitCode) | ||||
| } | ||||
| 
 | ||||
| func TestQueryInstant(t *testing.T) { | ||||
|  | @ -49,11 +49,11 @@ func TestQueryInstant(t *testing.T) { | |||
| 
 | ||||
| 	p := &promqlPrinter{} | ||||
| 	exitCode := QueryInstant(s.URL, "up", "300", p) | ||||
| 	assert.Equal(t, "/api/v1/query", getRequest().URL.Path) | ||||
| 	require.Equal(t, "/api/v1/query", getRequest().URL.Path) | ||||
| 	form := getRequest().Form | ||||
| 	assert.Equal(t, "up", form.Get("query")) | ||||
| 	assert.Equal(t, "300", form.Get("time")) | ||||
| 	assert.Equal(t, 0, exitCode) | ||||
| 	require.Equal(t, "up", form.Get("query")) | ||||
| 	require.Equal(t, "300", form.Get("time")) | ||||
| 	require.Equal(t, 0, exitCode) | ||||
| } | ||||
| 
 | ||||
| func mockServer(code int, body string) (*httptest.Server, func() *http.Request) { | ||||
|  |  | |||
|  | @ -24,7 +24,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/prometheus/common/config" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"gopkg.in/yaml.v2" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/discovery" | ||||
|  | @ -719,77 +719,77 @@ var expectedConf = &Config{ | |||
| 
 | ||||
| func TestYAMLRoundtrip(t *testing.T) { | ||||
| 	want, err := LoadFile("testdata/roundtrip.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	out, err := yaml.Marshal(want) | ||||
| 
 | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	got := &Config{} | ||||
| 	assert.NoError(t, yaml.UnmarshalStrict(out, got)) | ||||
| 	require.NoError(t, yaml.UnmarshalStrict(out, got)) | ||||
| 
 | ||||
| 	assert.Equal(t, want, got) | ||||
| 	require.Equal(t, want, got) | ||||
| } | ||||
| 
 | ||||
| func TestLoadConfig(t *testing.T) { | ||||
| 	// Parse a valid file that sets a global scrape timeout. This tests whether parsing
 | ||||
| 	// an overwritten default field in the global config permanently changes the default.
 | ||||
| 	_, err := LoadFile("testdata/global_timeout.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	c, err := LoadFile("testdata/conf.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, expectedConf, c) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, expectedConf, c) | ||||
| } | ||||
| 
 | ||||
| func TestScrapeIntervalLarger(t *testing.T) { | ||||
| 	c, err := LoadFile("testdata/scrape_interval_larger.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 1, len(c.ScrapeConfigs)) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 1, len(c.ScrapeConfigs)) | ||||
| 	for _, sc := range c.ScrapeConfigs { | ||||
| 		assert.Equal(t, true, sc.ScrapeInterval >= sc.ScrapeTimeout) | ||||
| 		require.Equal(t, true, sc.ScrapeInterval >= sc.ScrapeTimeout) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // YAML marshaling must not reveal authentication credentials.
 | ||||
| func TestElideSecrets(t *testing.T) { | ||||
| 	c, err := LoadFile("testdata/conf.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	secretRe := regexp.MustCompile(`\\u003csecret\\u003e|<secret>`) | ||||
| 
 | ||||
| 	config, err := yaml.Marshal(c) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	yamlConfig := string(config) | ||||
| 
 | ||||
| 	matches := secretRe.FindAllStringIndex(yamlConfig, -1) | ||||
| 	assert.Equal(t, 10, len(matches), "wrong number of secret matches found") | ||||
| 	assert.NotContains(t, yamlConfig, "mysecret", | ||||
| 	require.Equal(t, 10, len(matches), "wrong number of secret matches found") | ||||
| 	require.NotContains(t, yamlConfig, "mysecret", | ||||
| 		"yaml marshal reveals authentication credentials.") | ||||
| } | ||||
| 
 | ||||
| func TestLoadConfigRuleFilesAbsolutePath(t *testing.T) { | ||||
| 	// Parse a valid file that sets a rule files with an absolute path
 | ||||
| 	c, err := LoadFile(ruleFilesConfigFile) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, ruleFilesExpectedConf, c) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, ruleFilesExpectedConf, c) | ||||
| } | ||||
| 
 | ||||
| func TestKubernetesEmptyAPIServer(t *testing.T) { | ||||
| 	_, err := LoadFile("testdata/kubernetes_empty_apiserver.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestKubernetesSelectors(t *testing.T) { | ||||
| 	_, err := LoadFile("testdata/kubernetes_selectors_endpoints.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	_, err = LoadFile("testdata/kubernetes_selectors_node.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	_, err = LoadFile("testdata/kubernetes_selectors_ingress.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	_, err = LoadFile("testdata/kubernetes_selectors_pod.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	_, err = LoadFile("testdata/kubernetes_selectors_service.good.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| var expectedErrors = []struct { | ||||
|  | @ -1025,40 +1025,40 @@ var expectedErrors = []struct { | |||
| func TestBadConfigs(t *testing.T) { | ||||
| 	for _, ee := range expectedErrors { | ||||
| 		_, err := LoadFile("testdata/" + ee.filename) | ||||
| 		assert.Error(t, err, "%s", ee.filename) | ||||
| 		assert.Contains(t, err.Error(), ee.errMsg, | ||||
| 		require.Error(t, err, "%s", ee.filename) | ||||
| 		require.Contains(t, err.Error(), ee.errMsg, | ||||
| 			"Expected error for %s to contain %q but got: %s", ee.filename, ee.errMsg, err) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestBadStaticConfigsJSON(t *testing.T) { | ||||
| 	content, err := ioutil.ReadFile("testdata/static_config.bad.json") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	var tg targetgroup.Group | ||||
| 	err = json.Unmarshal(content, &tg) | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestBadStaticConfigsYML(t *testing.T) { | ||||
| 	content, err := ioutil.ReadFile("testdata/static_config.bad.yml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	var tg targetgroup.Group | ||||
| 	err = yaml.UnmarshalStrict(content, &tg) | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestEmptyConfig(t *testing.T) { | ||||
| 	c, err := Load("") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	exp := DefaultConfig | ||||
| 	assert.Equal(t, exp, *c) | ||||
| 	require.Equal(t, exp, *c) | ||||
| } | ||||
| 
 | ||||
| func TestEmptyGlobalBlock(t *testing.T) { | ||||
| 	c, err := Load("global:\n") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	exp := DefaultConfig | ||||
| 	assert.Equal(t, exp, *c) | ||||
| 	require.Equal(t, exp, *c) | ||||
| } | ||||
| 
 | ||||
| func kubernetesSDHostURL() config.URL { | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-10-01/compute" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/goleak" | ||||
| ) | ||||
| 
 | ||||
|  | @ -63,7 +63,7 @@ func TestMapFromVMWithEmptyTags(t *testing.T) { | |||
| 
 | ||||
| 	actualVM := mapFromVM(testVM) | ||||
| 
 | ||||
| 	assert.Equal(t, expectedVM, actualVM) | ||||
| 	require.Equal(t, expectedVM, actualVM) | ||||
| } | ||||
| 
 | ||||
| func TestMapFromVMWithTags(t *testing.T) { | ||||
|  | @ -107,7 +107,7 @@ func TestMapFromVMWithTags(t *testing.T) { | |||
| 
 | ||||
| 	actualVM := mapFromVM(testVM) | ||||
| 
 | ||||
| 	assert.Equal(t, expectedVM, actualVM) | ||||
| 	require.Equal(t, expectedVM, actualVM) | ||||
| } | ||||
| 
 | ||||
| func TestMapFromVMScaleSetVMWithEmptyTags(t *testing.T) { | ||||
|  | @ -150,7 +150,7 @@ func TestMapFromVMScaleSetVMWithEmptyTags(t *testing.T) { | |||
| 
 | ||||
| 	actualVM := mapFromVMScaleSetVM(testVM, scaleSet) | ||||
| 
 | ||||
| 	assert.Equal(t, expectedVM, actualVM) | ||||
| 	require.Equal(t, expectedVM, actualVM) | ||||
| } | ||||
| 
 | ||||
| func TestMapFromVMScaleSetVMWithTags(t *testing.T) { | ||||
|  | @ -196,7 +196,7 @@ func TestMapFromVMScaleSetVMWithTags(t *testing.T) { | |||
| 
 | ||||
| 	actualVM := mapFromVMScaleSetVM(testVM, scaleSet) | ||||
| 
 | ||||
| 	assert.Equal(t, expectedVM, actualVM) | ||||
| 	require.Equal(t, expectedVM, actualVM) | ||||
| } | ||||
| 
 | ||||
| func TestNewAzureResourceFromID(t *testing.T) { | ||||
|  | @ -214,6 +214,6 @@ func TestNewAzureResourceFromID(t *testing.T) { | |||
| 		}, | ||||
| 	} { | ||||
| 		actual, _ := newAzureResourceFromID(tc.id, nil) | ||||
| 		assert.Equal(t, tc.expected, actual) | ||||
| 		require.Equal(t, tc.expected, actual) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/goleak" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/discovery/targetgroup" | ||||
|  | @ -251,7 +251,7 @@ func newServer(t *testing.T) (*httptest.Server, *SDConfig) { | |||
| 		w.Write([]byte(response)) | ||||
| 	})) | ||||
| 	stuburl, err := url.Parse(stub.URL) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	config := &SDConfig{ | ||||
| 		Server:          stuburl.Host, | ||||
|  | @ -264,18 +264,18 @@ func newServer(t *testing.T) (*httptest.Server, *SDConfig) { | |||
| func newDiscovery(t *testing.T, config *SDConfig) *Discovery { | ||||
| 	logger := log.NewNopLogger() | ||||
| 	d, err := NewDiscovery(config, logger) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	return d | ||||
| } | ||||
| 
 | ||||
| func checkOneTarget(t *testing.T, tg []*targetgroup.Group) { | ||||
| 	assert.Equal(t, 1, len(tg)) | ||||
| 	require.Equal(t, 1, len(tg)) | ||||
| 	target := tg[0] | ||||
| 	assert.Equal(t, "test-dc", string(target.Labels["__meta_consul_dc"])) | ||||
| 	assert.Equal(t, target.Source, string(target.Labels["__meta_consul_service"])) | ||||
| 	require.Equal(t, "test-dc", string(target.Labels["__meta_consul_dc"])) | ||||
| 	require.Equal(t, target.Source, string(target.Labels["__meta_consul_service"])) | ||||
| 	if target.Source == "test" { | ||||
| 		// test service should have one node.
 | ||||
| 		assert.Greater(t, len(target.Targets), 0, "Test service should have one node") | ||||
| 		require.Greater(t, len(target.Targets), 0, "Test service should have one node") | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -359,7 +359,7 @@ func TestGetDatacenterShouldReturnError(t *testing.T) { | |||
| 	} { | ||||
| 		stub := httptest.NewServer(http.HandlerFunc(tc.handler)) | ||||
| 		stuburl, err := url.Parse(stub.URL) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		config := &SDConfig{ | ||||
| 			Server:          stuburl.Host, | ||||
|  | @ -370,13 +370,13 @@ func TestGetDatacenterShouldReturnError(t *testing.T) { | |||
| 		d := newDiscovery(t, config) | ||||
| 
 | ||||
| 		// Should be empty if not initialized.
 | ||||
| 		assert.Equal(t, "", d.clientDatacenter) | ||||
| 		require.Equal(t, "", d.clientDatacenter) | ||||
| 
 | ||||
| 		err = d.getDatacenter() | ||||
| 
 | ||||
| 		// An error should be returned.
 | ||||
| 		assert.Equal(t, tc.errMessage, err.Error()) | ||||
| 		require.Equal(t, tc.errMessage, err.Error()) | ||||
| 		// Should still be empty.
 | ||||
| 		assert.Equal(t, "", d.clientDatacenter) | ||||
| 		require.Equal(t, "", d.clientDatacenter) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| type DigitalOceanSDTestSuite struct { | ||||
|  | @ -47,21 +47,21 @@ func TestDigitalOceanSDRefresh(t *testing.T) { | |||
| 	cfg := DefaultSDConfig | ||||
| 	cfg.HTTPClientConfig.BearerToken = tokenID | ||||
| 	d, err := NewDiscovery(&cfg, log.NewNopLogger()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	endpoint, err := url.Parse(sdmock.Mock.Endpoint()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	d.client.BaseURL = endpoint | ||||
| 
 | ||||
| 	ctx := context.Background() | ||||
| 	tgs, err := d.refresh(ctx) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	assert.Equal(t, 1, len(tgs)) | ||||
| 	require.Equal(t, 1, len(tgs)) | ||||
| 
 | ||||
| 	tg := tgs[0] | ||||
| 	assert.NotNil(t, tg) | ||||
| 	assert.NotNil(t, tg.Targets) | ||||
| 	assert.Equal(t, 4, len(tg.Targets)) | ||||
| 	require.NotNil(t, tg) | ||||
| 	require.NotNil(t, tg.Targets) | ||||
| 	require.Equal(t, 4, len(tg.Targets)) | ||||
| 
 | ||||
| 	for i, lbls := range []model.LabelSet{ | ||||
| 		{ | ||||
|  | @ -119,7 +119,7 @@ func TestDigitalOceanSDRefresh(t *testing.T) { | |||
| 		}, | ||||
| 	} { | ||||
| 		t.Run(fmt.Sprintf("item %d", i), func(t *testing.T) { | ||||
| 			assert.Equal(t, lbls, tg.Targets[i]) | ||||
| 			require.Equal(t, lbls, tg.Targets[i]) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ import ( | |||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/miekg/dns" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/goleak" | ||||
| 	"gopkg.in/yaml.v2" | ||||
| 
 | ||||
|  | @ -205,8 +205,8 @@ func TestDNS(t *testing.T) { | |||
| 			sd.lookupFn = tc.lookup | ||||
| 
 | ||||
| 			tgs, err := sd.refresh(context.Background()) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, tc.expected, tgs) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, tc.expected, tgs) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -296,7 +296,7 @@ func TestSDConfigUnmarshalYAML(t *testing.T) { | |||
| 			var config SDConfig | ||||
| 			d := marshal(c.input) | ||||
| 			err := config.UnmarshalYAML(unmarshal(d)) | ||||
| 			assert.Equal(t, c.expectErr, err != nil) | ||||
| 			require.Equal(t, c.expectErr, err != nil) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ import ( | |||
| 	"strings" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"gopkg.in/yaml.v2" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/util/strutil" | ||||
|  | @ -64,7 +64,7 @@ func (m *SDMock) Setup() { | |||
| func (m *SDMock) SetupHandlers() { | ||||
| 	headers := make(map[string]string) | ||||
| 	rawHeaders, err := ioutil.ReadFile(filepath.Join("testdata", m.directory, "headers.yml")) | ||||
| 	assert.NoError(m.t, err) | ||||
| 	require.NoError(m.t, err) | ||||
| 	yaml.Unmarshal(rawHeaders, &headers) | ||||
| 
 | ||||
| 	prefix := "/" | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"gopkg.in/yaml.v2" | ||||
| ) | ||||
| 
 | ||||
|  | @ -36,21 +36,21 @@ role: nodes | |||
| host: %s | ||||
| `, url) | ||||
| 	var cfg SDConfig | ||||
| 	assert.NoError(t, yaml.Unmarshal([]byte(cfgString), &cfg)) | ||||
| 	require.NoError(t, yaml.Unmarshal([]byte(cfgString), &cfg)) | ||||
| 
 | ||||
| 	d, err := NewDiscovery(&cfg, log.NewNopLogger()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	ctx := context.Background() | ||||
| 	tgs, err := d.refresh(ctx) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	assert.Equal(t, 1, len(tgs)) | ||||
| 	require.Equal(t, 1, len(tgs)) | ||||
| 
 | ||||
| 	tg := tgs[0] | ||||
| 	assert.NotNil(t, tg) | ||||
| 	assert.NotNil(t, tg.Targets) | ||||
| 	assert.Equal(t, 5, len(tg.Targets)) | ||||
| 	require.NotNil(t, tg) | ||||
| 	require.NotNil(t, tg.Targets) | ||||
| 	require.Equal(t, 5, len(tg.Targets)) | ||||
| 
 | ||||
| 	for i, lbls := range []model.LabelSet{ | ||||
| 		{ | ||||
|  | @ -124,7 +124,7 @@ host: %s | |||
| 		}, | ||||
| 	} { | ||||
| 		t.Run(fmt.Sprintf("item %d", i), func(t *testing.T) { | ||||
| 			assert.Equal(t, lbls, tg.Targets[i]) | ||||
| 			require.Equal(t, lbls, tg.Targets[i]) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"gopkg.in/yaml.v2" | ||||
| ) | ||||
| 
 | ||||
|  | @ -36,21 +36,21 @@ role: services | |||
| host: %s | ||||
| `, url) | ||||
| 	var cfg SDConfig | ||||
| 	assert.NoError(t, yaml.Unmarshal([]byte(cfgString), &cfg)) | ||||
| 	require.NoError(t, yaml.Unmarshal([]byte(cfgString), &cfg)) | ||||
| 
 | ||||
| 	d, err := NewDiscovery(&cfg, log.NewNopLogger()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	ctx := context.Background() | ||||
| 	tgs, err := d.refresh(ctx) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	assert.Equal(t, 1, len(tgs)) | ||||
| 	require.Equal(t, 1, len(tgs)) | ||||
| 
 | ||||
| 	tg := tgs[0] | ||||
| 	assert.NotNil(t, tg) | ||||
| 	assert.NotNil(t, tg.Targets) | ||||
| 	assert.Equal(t, 15, len(tg.Targets)) | ||||
| 	require.NotNil(t, tg) | ||||
| 	require.NotNil(t, tg.Targets) | ||||
| 	require.Equal(t, 15, len(tg.Targets)) | ||||
| 
 | ||||
| 	for i, lbls := range []model.LabelSet{ | ||||
| 		{ | ||||
|  | @ -310,7 +310,7 @@ host: %s | |||
| 		}, | ||||
| 	} { | ||||
| 		t.Run(fmt.Sprintf("item %d", i), func(t *testing.T) { | ||||
| 			assert.Equal(t, lbls, tg.Targets[i]) | ||||
| 			require.Equal(t, lbls, tg.Targets[i]) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"gopkg.in/yaml.v2" | ||||
| ) | ||||
| 
 | ||||
|  | @ -36,21 +36,21 @@ role: tasks | |||
| host: %s | ||||
| `, url) | ||||
| 	var cfg SDConfig | ||||
| 	assert.NoError(t, yaml.Unmarshal([]byte(cfgString), &cfg)) | ||||
| 	require.NoError(t, yaml.Unmarshal([]byte(cfgString), &cfg)) | ||||
| 
 | ||||
| 	d, err := NewDiscovery(&cfg, log.NewNopLogger()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	ctx := context.Background() | ||||
| 	tgs, err := d.refresh(ctx) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	assert.Equal(t, 1, len(tgs)) | ||||
| 	require.Equal(t, 1, len(tgs)) | ||||
| 
 | ||||
| 	tg := tgs[0] | ||||
| 	assert.NotNil(t, tg) | ||||
| 	assert.NotNil(t, tg.Targets) | ||||
| 	assert.Equal(t, 27, len(tg.Targets)) | ||||
| 	require.NotNil(t, tg) | ||||
| 	require.NotNil(t, tg.Targets) | ||||
| 	require.Equal(t, 27, len(tg.Targets)) | ||||
| 
 | ||||
| 	for i, lbls := range []model.LabelSet{ | ||||
| 		{ | ||||
|  | @ -787,7 +787,7 @@ host: %s | |||
| 		}, | ||||
| 	} { | ||||
| 		t.Run(fmt.Sprintf("item %d", i), func(t *testing.T) { | ||||
| 			assert.Equal(t, lbls, tg.Targets[i]) | ||||
| 			require.Equal(t, lbls, tg.Targets[i]) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 	"net/http/httptest" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestFetchApps(t *testing.T) { | ||||
|  | @ -182,19 +182,19 @@ func TestFetchApps(t *testing.T) { | |||
| 	defer ts.Close() | ||||
| 
 | ||||
| 	apps, err := fetchApps(context.TODO(), ts.URL, &http.Client{}) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	assert.Equal(t, len(apps.Applications), 2) | ||||
| 	assert.Equal(t, apps.Applications[0].Name, "CONFIG-SERVICE") | ||||
| 	assert.Equal(t, apps.Applications[1].Name, "META-SERVICE") | ||||
| 	require.Equal(t, len(apps.Applications), 2) | ||||
| 	require.Equal(t, apps.Applications[0].Name, "CONFIG-SERVICE") | ||||
| 	require.Equal(t, apps.Applications[1].Name, "META-SERVICE") | ||||
| 
 | ||||
| 	assert.Equal(t, len(apps.Applications[1].Instances), 2) | ||||
| 	assert.Equal(t, apps.Applications[1].Instances[0].InstanceID, "meta-service002.test.com:meta-service:8080") | ||||
| 	assert.Equal(t, apps.Applications[1].Instances[0].Metadata.Items[0].XMLName.Local, "project") | ||||
| 	assert.Equal(t, apps.Applications[1].Instances[0].Metadata.Items[0].Content, "meta-service") | ||||
| 	assert.Equal(t, apps.Applications[1].Instances[0].Metadata.Items[1].XMLName.Local, "management.port") | ||||
| 	assert.Equal(t, apps.Applications[1].Instances[0].Metadata.Items[1].Content, "8090") | ||||
| 	assert.Equal(t, apps.Applications[1].Instances[1].InstanceID, "meta-service001.test.com:meta-service:8080") | ||||
| 	require.Equal(t, len(apps.Applications[1].Instances), 2) | ||||
| 	require.Equal(t, apps.Applications[1].Instances[0].InstanceID, "meta-service002.test.com:meta-service:8080") | ||||
| 	require.Equal(t, apps.Applications[1].Instances[0].Metadata.Items[0].XMLName.Local, "project") | ||||
| 	require.Equal(t, apps.Applications[1].Instances[0].Metadata.Items[0].Content, "meta-service") | ||||
| 	require.Equal(t, apps.Applications[1].Instances[0].Metadata.Items[1].XMLName.Local, "management.port") | ||||
| 	require.Equal(t, apps.Applications[1].Instances[0].Metadata.Items[1].Content, "8090") | ||||
| 	require.Equal(t, apps.Applications[1].Instances[1].InstanceID, "meta-service001.test.com:meta-service:8080") | ||||
| } | ||||
| 
 | ||||
| func Test500ErrorHttpResponse(t *testing.T) { | ||||
|  | @ -209,5 +209,5 @@ func Test500ErrorHttpResponse(t *testing.T) { | |||
| 	defer ts.Close() | ||||
| 
 | ||||
| 	_, err := fetchApps(context.TODO(), ts.URL, &http.Client{}) | ||||
| 	assert.Error(t, err, "5xx HTTP response") | ||||
| 	require.Error(t, err, "5xx HTTP response") | ||||
| } | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/discovery/targetgroup" | ||||
| ) | ||||
|  | @ -54,8 +54,8 @@ func TestEurekaSDHandleError(t *testing.T) { | |||
| 	) | ||||
| 	tgs, err := testUpdateServices(respHandler) | ||||
| 
 | ||||
| 	assert.EqualError(t, err, errTesting) | ||||
| 	assert.Equal(t, len(tgs), 0) | ||||
| 	require.EqualError(t, err, errTesting) | ||||
| 	require.Equal(t, len(tgs), 0) | ||||
| } | ||||
| 
 | ||||
| func TestEurekaSDEmptyList(t *testing.T) { | ||||
|  | @ -71,8 +71,8 @@ func TestEurekaSDEmptyList(t *testing.T) { | |||
| 		} | ||||
| 	) | ||||
| 	tgs, err := testUpdateServices(respHandler) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, len(tgs), 1) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, len(tgs), 1) | ||||
| } | ||||
| 
 | ||||
| func TestEurekaSDSendGroup(t *testing.T) { | ||||
|  | @ -231,16 +231,16 @@ func TestEurekaSDSendGroup(t *testing.T) { | |||
| 	) | ||||
| 
 | ||||
| 	tgs, err := testUpdateServices(respHandler) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, len(tgs), 1) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, len(tgs), 1) | ||||
| 
 | ||||
| 	tg := tgs[0] | ||||
| 	assert.Equal(t, tg.Source, "eureka") | ||||
| 	assert.Equal(t, len(tg.Targets), 4) | ||||
| 	require.Equal(t, tg.Source, "eureka") | ||||
| 	require.Equal(t, len(tg.Targets), 4) | ||||
| 
 | ||||
| 	tgt := tg.Targets[0] | ||||
| 	assert.Equal(t, tgt[model.AddressLabel], model.LabelValue("config-service001.test.com:8080")) | ||||
| 	require.Equal(t, tgt[model.AddressLabel], model.LabelValue("config-service001.test.com:8080")) | ||||
| 
 | ||||
| 	tgt = tg.Targets[2] | ||||
| 	assert.Equal(t, tgt[model.AddressLabel], model.LabelValue("meta-service002.test.com:8080")) | ||||
| 	require.Equal(t, tgt[model.AddressLabel], model.LabelValue("meta-service002.test.com:8080")) | ||||
| } | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/goleak" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/discovery/targetgroup" | ||||
|  | @ -54,7 +54,7 @@ func newTestRunner(t *testing.T) *testRunner { | |||
| 	t.Helper() | ||||
| 
 | ||||
| 	tmpDir, err := ioutil.TempDir("", "prometheus-file-sd") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	return &testRunner{ | ||||
| 		T:       t, | ||||
|  | @ -77,19 +77,19 @@ func (t *testRunner) copyFileTo(src string, name string) string { | |||
| 	t.Helper() | ||||
| 
 | ||||
| 	newf, err := ioutil.TempFile(t.dir, "") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	f, err := os.Open(src) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	_, err = io.Copy(newf, f) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, f.Close()) | ||||
| 	assert.NoError(t, newf.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, f.Close()) | ||||
| 	require.NoError(t, newf.Close()) | ||||
| 
 | ||||
| 	dst := filepath.Join(t.dir, name) | ||||
| 	err = os.Rename(newf.Name(), dst) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	return dst | ||||
| } | ||||
|  | @ -99,14 +99,14 @@ func (t *testRunner) writeString(file string, data string) { | |||
| 	t.Helper() | ||||
| 
 | ||||
| 	newf, err := ioutil.TempFile(t.dir, "") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	_, err = newf.WriteString(data) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, newf.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, newf.Close()) | ||||
| 
 | ||||
| 	err = os.Rename(newf.Name(), file) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| // appendString appends a string to a file.
 | ||||
|  | @ -114,11 +114,11 @@ func (t *testRunner) appendString(file, data string) { | |||
| 	t.Helper() | ||||
| 
 | ||||
| 	f, err := os.OpenFile(file, os.O_WRONLY|os.O_APPEND, 0) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer f.Close() | ||||
| 
 | ||||
| 	_, err = f.WriteString(data) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| // run starts the file SD and the loop receiving target groups updates.
 | ||||
|  | @ -230,7 +230,7 @@ func (t *testRunner) requireTargetGroups(expected, got []*targetgroup.Group) { | |||
| 		panic(err) | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, string(b1), string(b2)) | ||||
| 	require.Equal(t, string(b1), string(b2)) | ||||
| } | ||||
| 
 | ||||
| // validTg() maps to fixtures/valid.{json,yml}.
 | ||||
|  | @ -468,7 +468,7 @@ func TestRemoveFile(t *testing.T) { | |||
| 
 | ||||
| 	// Verify that we receive the update about the target groups being removed.
 | ||||
| 	ref := runner.lastReceive() | ||||
| 	assert.NoError(t, os.Remove(sdFile)) | ||||
| 	require.NoError(t, os.Remove(sdFile)) | ||||
| 	runner.requireUpdate( | ||||
| 		ref, | ||||
| 		[]*targetgroup.Group{ | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| type hcloudSDTestSuite struct { | ||||
|  | @ -44,16 +44,16 @@ func TestHCloudSDRefresh(t *testing.T) { | |||
| 	cfg.hcloudEndpoint = suite.Mock.Endpoint() | ||||
| 
 | ||||
| 	d, err := newHcloudDiscovery(&cfg, log.NewNopLogger()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	targetGroups, err := d.refresh(context.Background()) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 1, len(targetGroups)) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 1, len(targetGroups)) | ||||
| 
 | ||||
| 	targetGroup := targetGroups[0] | ||||
| 	assert.NotNil(t, targetGroup, "targetGroup should not be nil") | ||||
| 	assert.NotNil(t, targetGroup.Targets, "targetGroup.targets should not be nil") | ||||
| 	assert.Equal(t, 3, len(targetGroup.Targets)) | ||||
| 	require.NotNil(t, targetGroup, "targetGroup should not be nil") | ||||
| 	require.NotNil(t, targetGroup.Targets, "targetGroup.targets should not be nil") | ||||
| 	require.Equal(t, 3, len(targetGroup.Targets)) | ||||
| 
 | ||||
| 	for i, labelSet := range []model.LabelSet{ | ||||
| 		{ | ||||
|  | @ -119,7 +119,7 @@ func TestHCloudSDRefresh(t *testing.T) { | |||
| 		}, | ||||
| 	} { | ||||
| 		t.Run(fmt.Sprintf("item %d", i), func(t *testing.T) { | ||||
| 			assert.Equal(t, labelSet, targetGroup.Targets[i]) | ||||
| 			require.Equal(t, labelSet, targetGroup.Targets[i]) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ import ( | |||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/prometheus/common/config" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| type robotSDTestSuite struct { | ||||
|  | @ -43,16 +43,16 @@ func TestRobotSDRefresh(t *testing.T) { | |||
| 	cfg.robotEndpoint = suite.Mock.Endpoint() | ||||
| 
 | ||||
| 	d, err := newRobotDiscovery(&cfg, log.NewNopLogger()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	targetGroups, err := d.refresh(context.Background()) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 1, len(targetGroups)) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 1, len(targetGroups)) | ||||
| 
 | ||||
| 	targetGroup := targetGroups[0] | ||||
| 	assert.NotNil(t, targetGroup, "targetGroup should not be nil") | ||||
| 	assert.NotNil(t, targetGroup.Targets, "targetGroup.targets should not be nil") | ||||
| 	assert.Equal(t, 2, len(targetGroup.Targets)) | ||||
| 	require.NotNil(t, targetGroup, "targetGroup should not be nil") | ||||
| 	require.NotNil(t, targetGroup.Targets, "targetGroup.targets should not be nil") | ||||
| 	require.Equal(t, 2, len(targetGroup.Targets)) | ||||
| 
 | ||||
| 	for i, labelSet := range []model.LabelSet{ | ||||
| 		{ | ||||
|  | @ -80,7 +80,7 @@ func TestRobotSDRefresh(t *testing.T) { | |||
| 		}, | ||||
| 	} { | ||||
| 		t.Run(fmt.Sprintf("item %d", i), func(t *testing.T) { | ||||
| 			assert.Equal(t, labelSet, targetGroup.Targets[i]) | ||||
| 			require.Equal(t, labelSet, targetGroup.Targets[i]) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -92,11 +92,11 @@ func TestRobotSDRefreshHandleError(t *testing.T) { | |||
| 	cfg.robotEndpoint = suite.Mock.Endpoint() | ||||
| 
 | ||||
| 	d, err := newRobotDiscovery(&cfg, log.NewNopLogger()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	targetGroups, err := d.refresh(context.Background()) | ||||
| 	assert.Error(t, err) | ||||
| 	assert.Equal(t, "non 2xx status '401' response during hetzner service discovery with role robot", err.Error()) | ||||
| 	require.Error(t, err) | ||||
| 	require.Equal(t, "non 2xx status '401' response during hetzner service discovery with role robot", err.Error()) | ||||
| 
 | ||||
| 	assert.Equal(t, 0, len(targetGroups)) | ||||
| 	require.Equal(t, 0, len(targetGroups)) | ||||
| } | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"k8s.io/apimachinery/pkg/runtime" | ||||
| 	"k8s.io/client-go/kubernetes" | ||||
| 	"k8s.io/client-go/kubernetes/fake" | ||||
|  | @ -151,7 +151,7 @@ func requireTargetGroups(t *testing.T, expected, res map[string]*targetgroup.Gro | |||
| 		panic(err) | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, string(b1), string(b2)) | ||||
| 	require.Equal(t, string(b1), string(b2)) | ||||
| } | ||||
| 
 | ||||
| type hasSynced interface { | ||||
|  |  | |||
|  | @ -24,7 +24,7 @@ import ( | |||
| 	"github.com/go-kit/kit/log" | ||||
| 	client_testutil "github.com/prometheus/client_golang/prometheus/testutil" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/discovery/targetgroup" | ||||
| 	"github.com/prometheus/prometheus/util/testutil" | ||||
|  | @ -702,7 +702,7 @@ func assertEqualGroups(t *testing.T, got, expected []*targetgroup.Group, msg fun | |||
| 	sort.Sort(byGroupSource(got)) | ||||
| 	sort.Sort(byGroupSource(expected)) | ||||
| 
 | ||||
| 	assert.Equal(t, expected, got) | ||||
| 	require.Equal(t, expected, got) | ||||
| } | ||||
| 
 | ||||
| func staticConfig(addrs ...string) StaticConfig { | ||||
|  | @ -882,7 +882,7 @@ func TestApplyConfigDoesNotModifyStaticTargets(t *testing.T) { | |||
| 	<-discoveryManager.SyncCh() | ||||
| 
 | ||||
| 	for _, cfg := range cfgs { | ||||
| 		assert.Equal(t, originalConfig, cfg) | ||||
| 		require.Equal(t, originalConfig, cfg) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| type OpenstackSDHypervisorTestSuite struct { | ||||
|  | @ -54,12 +54,12 @@ func TestOpenstackSDHypervisorRefresh(t *testing.T) { | |||
| 	hypervisor, _ := mock.openstackAuthSuccess() | ||||
| 	ctx := context.Background() | ||||
| 	tgs, err := hypervisor.refresh(ctx) | ||||
| 	assert.Equal(t, 1, len(tgs)) | ||||
| 	require.Equal(t, 1, len(tgs)) | ||||
| 	tg := tgs[0] | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotNil(t, tg) | ||||
| 	assert.NotNil(t, tg.Targets) | ||||
| 	assert.Equal(t, 2, len(tg.Targets)) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotNil(t, tg) | ||||
| 	require.NotNil(t, tg.Targets) | ||||
| 	require.Equal(t, 2, len(tg.Targets)) | ||||
| 
 | ||||
| 	for l, v := range map[string]string{ | ||||
| 		"__address__":                          "172.16.70.14:0", | ||||
|  | @ -70,7 +70,7 @@ func TestOpenstackSDHypervisorRefresh(t *testing.T) { | |||
| 		"__meta_openstack_hypervisor_status":   "enabled", | ||||
| 		"__meta_openstack_hypervisor_id":       "1", | ||||
| 	} { | ||||
| 		assert.Equal(t, model.LabelValue(v), tg.Targets[0][model.LabelName(l)]) | ||||
| 		require.Equal(t, model.LabelValue(v), tg.Targets[0][model.LabelName(l)]) | ||||
| 	} | ||||
| 
 | ||||
| 	for l, v := range map[string]string{ | ||||
|  | @ -82,7 +82,7 @@ func TestOpenstackSDHypervisorRefresh(t *testing.T) { | |||
| 		"__meta_openstack_hypervisor_status":   "enabled", | ||||
| 		"__meta_openstack_hypervisor_id":       "721", | ||||
| 	} { | ||||
| 		assert.Equal(t, model.LabelValue(v), tg.Targets[1][model.LabelName(l)]) | ||||
| 		require.Equal(t, model.LabelValue(v), tg.Targets[1][model.LabelName(l)]) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -94,6 +94,6 @@ func TestOpenstackSDHypervisorRefreshWithDoneContext(t *testing.T) { | |||
| 	ctx, cancel := context.WithCancel(context.Background()) | ||||
| 	cancel() | ||||
| 	_, err := hypervisor.refresh(ctx) | ||||
| 	assert.Error(t, err) | ||||
| 	assert.Contains(t, err.Error(), context.Canceled.Error(), "%q doesn't contain %q", err, context.Canceled) | ||||
| 	require.Error(t, err) | ||||
| 	require.Contains(t, err.Error(), context.Canceled.Error(), "%q doesn't contain %q", err, context.Canceled) | ||||
| } | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| type OpenstackSDInstanceTestSuite struct { | ||||
|  | @ -56,18 +56,18 @@ func TestOpenstackSDInstanceRefresh(t *testing.T) { | |||
| 	mock.SetupTest(t) | ||||
| 
 | ||||
| 	instance, err := mock.openstackAuthSuccess() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	ctx := context.Background() | ||||
| 	tgs, err := instance.refresh(ctx) | ||||
| 
 | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 1, len(tgs)) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 1, len(tgs)) | ||||
| 
 | ||||
| 	tg := tgs[0] | ||||
| 	assert.NotNil(t, tg) | ||||
| 	assert.NotNil(t, tg.Targets) | ||||
| 	assert.Equal(t, 4, len(tg.Targets)) | ||||
| 	require.NotNil(t, tg) | ||||
| 	require.NotNil(t, tg.Targets) | ||||
| 	require.Equal(t, 4, len(tg.Targets)) | ||||
| 
 | ||||
| 	for i, lbls := range []model.LabelSet{ | ||||
| 		{ | ||||
|  | @ -120,7 +120,7 @@ func TestOpenstackSDInstanceRefresh(t *testing.T) { | |||
| 		}, | ||||
| 	} { | ||||
| 		t.Run(fmt.Sprintf("item %d", i), func(t *testing.T) { | ||||
| 			assert.Equal(t, lbls, tg.Targets[i]) | ||||
| 			require.Equal(t, lbls, tg.Targets[i]) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -133,6 +133,6 @@ func TestOpenstackSDInstanceRefreshWithDoneContext(t *testing.T) { | |||
| 	ctx, cancel := context.WithCancel(context.Background()) | ||||
| 	cancel() | ||||
| 	_, err := hypervisor.refresh(ctx) | ||||
| 	assert.Error(t, err) | ||||
| 	assert.Contains(t, err.Error(), context.Canceled.Error(), "%q doesn't contain %q", err, context.Canceled) | ||||
| 	require.Error(t, err) | ||||
| 	require.Contains(t, err.Error(), context.Canceled.Error(), "%q doesn't contain %q", err, context.Canceled) | ||||
| } | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/goleak" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/discovery/targetgroup" | ||||
|  | @ -73,10 +73,10 @@ func TestRefresh(t *testing.T) { | |||
| 	go d.Run(ctx, ch) | ||||
| 
 | ||||
| 	tg := <-ch | ||||
| 	assert.Equal(t, tg1, tg) | ||||
| 	require.Equal(t, tg1, tg) | ||||
| 
 | ||||
| 	tg = <-ch | ||||
| 	assert.Equal(t, tg2, tg) | ||||
| 	require.Equal(t, tg2, tg) | ||||
| 
 | ||||
| 	tick := time.NewTicker(2 * interval) | ||||
| 	defer tick.Stop() | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"gopkg.in/yaml.v2" | ||||
| ) | ||||
| 
 | ||||
|  | @ -53,8 +53,8 @@ func TestTargetGroupStrictJsonUnmarshal(t *testing.T) { | |||
| 	for _, test := range tests { | ||||
| 		tg := Group{} | ||||
| 		actual := tg.UnmarshalJSON([]byte(test.json)) | ||||
| 		assert.Equal(t, test.expectedReply, actual) | ||||
| 		assert.Equal(t, test.expectedGroup, tg) | ||||
| 		require.Equal(t, test.expectedReply, actual) | ||||
| 		require.Equal(t, test.expectedGroup, tg) | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  | @ -92,8 +92,8 @@ func TestTargetGroupYamlMarshal(t *testing.T) { | |||
| 
 | ||||
| 	for _, test := range tests { | ||||
| 		actual, err := test.group.MarshalYAML() | ||||
| 		assert.Equal(t, test.expectedErr, err) | ||||
| 		assert.Equal(t, test.expectedYaml, string(marshal(actual))) | ||||
| 		require.Equal(t, test.expectedErr, err) | ||||
| 		require.Equal(t, test.expectedYaml, string(marshal(actual))) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -132,8 +132,8 @@ func TestTargetGroupYamlUnmarshal(t *testing.T) { | |||
| 	for _, test := range tests { | ||||
| 		tg := Group{} | ||||
| 		actual := tg.UnmarshalYAML(unmarshal([]byte(test.yaml))) | ||||
| 		assert.Equal(t, test.expectedReply, actual) | ||||
| 		assert.Equal(t, test.expectedGroup, tg) | ||||
| 		require.Equal(t, test.expectedReply, actual) | ||||
| 		require.Equal(t, test.expectedGroup, tg) | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  | @ -150,7 +150,7 @@ func TestString(t *testing.T) { | |||
| 		Group{Targets: []model.LabelSet{}, | ||||
| 			Source: "<source>", | ||||
| 			Labels: model.LabelSet{}} | ||||
| 	assert.Equal(t, "<source>", group1.String()) | ||||
| 	assert.Equal(t, "<source>", group2.String()) | ||||
| 	assert.Equal(t, group1.String(), group2.String()) | ||||
| 	require.Equal(t, "<source>", group1.String()) | ||||
| 	require.Equal(t, "<source>", group2.String()) | ||||
| 	require.Equal(t, group1.String(), group2.String()) | ||||
| } | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/prometheus/common/config" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
|  | @ -84,54 +84,54 @@ func newTritonDiscovery(c SDConfig) (*Discovery, error) { | |||
| 
 | ||||
| func TestTritonSDNew(t *testing.T) { | ||||
| 	td, err := newTritonDiscovery(conf) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotNil(t, td) | ||||
| 	assert.NotNil(t, td.client) | ||||
| 	assert.NotZero(t, td.interval) | ||||
| 	assert.NotNil(t, td.sdConfig) | ||||
| 	assert.Equal(t, conf.Account, td.sdConfig.Account) | ||||
| 	assert.Equal(t, conf.DNSSuffix, td.sdConfig.DNSSuffix) | ||||
| 	assert.Equal(t, conf.Endpoint, td.sdConfig.Endpoint) | ||||
| 	assert.Equal(t, conf.Port, td.sdConfig.Port) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotNil(t, td) | ||||
| 	require.NotNil(t, td.client) | ||||
| 	require.NotZero(t, td.interval) | ||||
| 	require.NotNil(t, td.sdConfig) | ||||
| 	require.Equal(t, conf.Account, td.sdConfig.Account) | ||||
| 	require.Equal(t, conf.DNSSuffix, td.sdConfig.DNSSuffix) | ||||
| 	require.Equal(t, conf.Endpoint, td.sdConfig.Endpoint) | ||||
| 	require.Equal(t, conf.Port, td.sdConfig.Port) | ||||
| } | ||||
| 
 | ||||
| func TestTritonSDNewBadConfig(t *testing.T) { | ||||
| 	td, err := newTritonDiscovery(badconf) | ||||
| 	assert.Error(t, err) | ||||
| 	assert.Nil(t, td) | ||||
| 	require.Error(t, err) | ||||
| 	require.Nil(t, td) | ||||
| } | ||||
| 
 | ||||
| func TestTritonSDNewGroupsConfig(t *testing.T) { | ||||
| 	td, err := newTritonDiscovery(groupsconf) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotNil(t, td) | ||||
| 	assert.NotNil(t, td.client) | ||||
| 	assert.NotZero(t, td.interval) | ||||
| 	assert.NotNil(t, td.sdConfig) | ||||
| 	assert.Equal(t, groupsconf.Account, td.sdConfig.Account) | ||||
| 	assert.Equal(t, groupsconf.DNSSuffix, td.sdConfig.DNSSuffix) | ||||
| 	assert.Equal(t, groupsconf.Endpoint, td.sdConfig.Endpoint) | ||||
| 	assert.Equal(t, groupsconf.Groups, td.sdConfig.Groups) | ||||
| 	assert.Equal(t, groupsconf.Port, td.sdConfig.Port) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotNil(t, td) | ||||
| 	require.NotNil(t, td.client) | ||||
| 	require.NotZero(t, td.interval) | ||||
| 	require.NotNil(t, td.sdConfig) | ||||
| 	require.Equal(t, groupsconf.Account, td.sdConfig.Account) | ||||
| 	require.Equal(t, groupsconf.DNSSuffix, td.sdConfig.DNSSuffix) | ||||
| 	require.Equal(t, groupsconf.Endpoint, td.sdConfig.Endpoint) | ||||
| 	require.Equal(t, groupsconf.Groups, td.sdConfig.Groups) | ||||
| 	require.Equal(t, groupsconf.Port, td.sdConfig.Port) | ||||
| } | ||||
| 
 | ||||
| func TestTritonSDNewCNConfig(t *testing.T) { | ||||
| 	td, err := newTritonDiscovery(cnconf) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotNil(t, td) | ||||
| 	assert.NotNil(t, td.client) | ||||
| 	assert.NotZero(t, td.interval) | ||||
| 	assert.NotZero(t, td.sdConfig) | ||||
| 	assert.Equal(t, cnconf.Role, td.sdConfig.Role) | ||||
| 	assert.Equal(t, cnconf.Account, td.sdConfig.Account) | ||||
| 	assert.Equal(t, cnconf.DNSSuffix, td.sdConfig.DNSSuffix) | ||||
| 	assert.Equal(t, cnconf.Endpoint, td.sdConfig.Endpoint) | ||||
| 	assert.Equal(t, cnconf.Port, td.sdConfig.Port) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotNil(t, td) | ||||
| 	require.NotNil(t, td.client) | ||||
| 	require.NotZero(t, td.interval) | ||||
| 	require.NotZero(t, td.sdConfig) | ||||
| 	require.Equal(t, cnconf.Role, td.sdConfig.Role) | ||||
| 	require.Equal(t, cnconf.Account, td.sdConfig.Account) | ||||
| 	require.Equal(t, cnconf.DNSSuffix, td.sdConfig.DNSSuffix) | ||||
| 	require.Equal(t, cnconf.Endpoint, td.sdConfig.Endpoint) | ||||
| 	require.Equal(t, cnconf.Port, td.sdConfig.Port) | ||||
| } | ||||
| 
 | ||||
| func TestTritonSDRefreshNoTargets(t *testing.T) { | ||||
| 	tgts := testTritonSDRefresh(t, conf, "{\"containers\":[]}") | ||||
| 	assert.Nil(t, tgts) | ||||
| 	require.Nil(t, tgts) | ||||
| } | ||||
| 
 | ||||
| func TestTritonSDRefreshMultipleTargets(t *testing.T) { | ||||
|  | @ -156,8 +156,8 @@ func TestTritonSDRefreshMultipleTargets(t *testing.T) { | |||
| 	) | ||||
| 
 | ||||
| 	tgts := testTritonSDRefresh(t, conf, dstr) | ||||
| 	assert.NotNil(t, tgts) | ||||
| 	assert.Equal(t, 2, len(tgts)) | ||||
| 	require.NotNil(t, tgts) | ||||
| 	require.Equal(t, 2, len(tgts)) | ||||
| } | ||||
| 
 | ||||
| func TestTritonSDRefreshNoServer(t *testing.T) { | ||||
|  | @ -166,8 +166,8 @@ func TestTritonSDRefreshNoServer(t *testing.T) { | |||
| 	) | ||||
| 
 | ||||
| 	_, err := td.refresh(context.Background()) | ||||
| 	assert.Error(t, err) | ||||
| 	assert.Equal(t, strings.Contains(err.Error(), "an error occurred when requesting targets from the discovery endpoint"), true) | ||||
| 	require.Error(t, err) | ||||
| 	require.Equal(t, strings.Contains(err.Error(), "an error occurred when requesting targets from the discovery endpoint"), true) | ||||
| } | ||||
| 
 | ||||
| func TestTritonSDRefreshCancelled(t *testing.T) { | ||||
|  | @ -178,8 +178,8 @@ func TestTritonSDRefreshCancelled(t *testing.T) { | |||
| 	ctx, cancel := context.WithCancel(context.Background()) | ||||
| 	cancel() | ||||
| 	_, err := td.refresh(ctx) | ||||
| 	assert.Error(t, err) | ||||
| 	assert.Equal(t, strings.Contains(err.Error(), context.Canceled.Error()), true) | ||||
| 	require.Error(t, err) | ||||
| 	require.Equal(t, strings.Contains(err.Error(), context.Canceled.Error()), true) | ||||
| } | ||||
| 
 | ||||
| func TestTritonSDRefreshCNsUUIDOnly(t *testing.T) { | ||||
|  | @ -195,8 +195,8 @@ func TestTritonSDRefreshCNsUUIDOnly(t *testing.T) { | |||
| 	) | ||||
| 
 | ||||
| 	tgts := testTritonSDRefresh(t, cnconf, dstr) | ||||
| 	assert.NotNil(t, tgts) | ||||
| 	assert.Equal(t, 2, len(tgts)) | ||||
| 	require.NotNil(t, tgts) | ||||
| 	require.Equal(t, 2, len(tgts)) | ||||
| } | ||||
| 
 | ||||
| func TestTritonSDRefreshCNsWithHostname(t *testing.T) { | ||||
|  | @ -214,8 +214,8 @@ func TestTritonSDRefreshCNsWithHostname(t *testing.T) { | |||
| 	) | ||||
| 
 | ||||
| 	tgts := testTritonSDRefresh(t, cnconf, dstr) | ||||
| 	assert.NotNil(t, tgts) | ||||
| 	assert.Equal(t, 2, len(tgts)) | ||||
| 	require.NotNil(t, tgts) | ||||
| 	require.Equal(t, 2, len(tgts)) | ||||
| } | ||||
| 
 | ||||
| func testTritonSDRefresh(t *testing.T, c SDConfig, dstr string) []model.LabelSet { | ||||
|  | @ -229,25 +229,25 @@ func testTritonSDRefresh(t *testing.T, c SDConfig, dstr string) []model.LabelSet | |||
| 	defer s.Close() | ||||
| 
 | ||||
| 	u, err := url.Parse(s.URL) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotNil(t, u) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotNil(t, u) | ||||
| 
 | ||||
| 	host, strport, err := net.SplitHostPort(u.Host) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotEmpty(t, host) | ||||
| 	assert.NotEmpty(t, strport) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotEmpty(t, host) | ||||
| 	require.NotEmpty(t, strport) | ||||
| 
 | ||||
| 	port, err := strconv.Atoi(strport) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotZero(t, port) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotZero(t, port) | ||||
| 
 | ||||
| 	td.sdConfig.Port = port | ||||
| 
 | ||||
| 	tgs, err := td.refresh(context.Background()) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 1, len(tgs)) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 1, len(tgs)) | ||||
| 	tg := tgs[0] | ||||
| 	assert.NotNil(t, tg) | ||||
| 	require.NotNil(t, tg) | ||||
| 
 | ||||
| 	return tg.Targets | ||||
| } | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/discovery/targetgroup" | ||||
| ) | ||||
|  | @ -232,9 +232,9 @@ func TestGenerateTargetGroups(t *testing.T) { | |||
| func TestWriteOutput(t *testing.T) { | ||||
| 	ctx := context.Background() | ||||
| 	tmpfile, err := ioutil.TempFile("", "sd_adapter_test") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer os.Remove(tmpfile.Name()) | ||||
| 	tmpfile.Close() | ||||
| 	adapter := NewAdapter(ctx, tmpfile.Name(), "test_sd", nil, nil) | ||||
| 	assert.NoError(t, adapter.writeOutput()) | ||||
| 	require.NoError(t, adapter.writeOutput()) | ||||
| } | ||||
|  |  | |||
|  | @ -29,7 +29,7 @@ import ( | |||
| 	"github.com/prometheus/alertmanager/api/v2/models" | ||||
| 	config_util "github.com/prometheus/common/config" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/atomic" | ||||
| 	yaml "gopkg.in/yaml.v2" | ||||
| 
 | ||||
|  | @ -65,7 +65,7 @@ func TestPostPath(t *testing.T) { | |||
| 		}, | ||||
| 	} | ||||
| 	for _, c := range cases { | ||||
| 		assert.Equal(t, c.out, postPath(c.in, config.AlertmanagerAPIVersionV1)) | ||||
| 		require.Equal(t, c.out, postPath(c.in, config.AlertmanagerAPIVersionV1)) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -80,10 +80,10 @@ func TestHandlerNextBatch(t *testing.T) { | |||
| 
 | ||||
| 	expected := append([]*Alert{}, h.queue...) | ||||
| 
 | ||||
| 	assert.NoError(t, alertsEqual(expected[0:maxBatchSize], h.nextBatch())) | ||||
| 	assert.NoError(t, alertsEqual(expected[maxBatchSize:2*maxBatchSize], h.nextBatch())) | ||||
| 	assert.NoError(t, alertsEqual(expected[2*maxBatchSize:], h.nextBatch())) | ||||
| 	assert.Equal(t, 0, len(h.queue), "Expected queue to be empty but got %d alerts", len(h.queue)) | ||||
| 	require.NoError(t, alertsEqual(expected[0:maxBatchSize], h.nextBatch())) | ||||
| 	require.NoError(t, alertsEqual(expected[maxBatchSize:2*maxBatchSize], h.nextBatch())) | ||||
| 	require.NoError(t, alertsEqual(expected[2*maxBatchSize:], h.nextBatch())) | ||||
| 	require.Equal(t, 0, len(h.queue), "Expected queue to be empty but got %d alerts", len(h.queue)) | ||||
| } | ||||
| 
 | ||||
| func alertsEqual(a, b []*Alert) error { | ||||
|  | @ -188,20 +188,20 @@ func TestHandlerSendAll(t *testing.T) { | |||
| 		t.Helper() | ||||
| 		select { | ||||
| 		case err := <-errc: | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		default: | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	assert.True(t, h.sendAll(h.queue...), "all sends failed unexpectedly") | ||||
| 	require.True(t, h.sendAll(h.queue...), "all sends failed unexpectedly") | ||||
| 	checkNoErr() | ||||
| 
 | ||||
| 	status1.Store(int32(http.StatusNotFound)) | ||||
| 	assert.True(t, h.sendAll(h.queue...), "all sends failed unexpectedly") | ||||
| 	require.True(t, h.sendAll(h.queue...), "all sends failed unexpectedly") | ||||
| 	checkNoErr() | ||||
| 
 | ||||
| 	status2.Store(int32(http.StatusInternalServerError)) | ||||
| 	assert.False(t, h.sendAll(h.queue...), "all sends succeeded unexpectedly") | ||||
| 	require.False(t, h.sendAll(h.queue...), "all sends succeeded unexpectedly") | ||||
| 	checkNoErr() | ||||
| } | ||||
| 
 | ||||
|  | @ -215,11 +215,11 @@ func TestCustomDo(t *testing.T) { | |||
| 			received = true | ||||
| 			body, err := ioutil.ReadAll(req.Body) | ||||
| 
 | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			assert.Equal(t, testBody, string(body)) | ||||
| 			require.Equal(t, testBody, string(body)) | ||||
| 
 | ||||
| 			assert.Equal(t, testURL, req.URL.String()) | ||||
| 			require.Equal(t, testURL, req.URL.String()) | ||||
| 
 | ||||
| 			return &http.Response{ | ||||
| 				Body: ioutil.NopCloser(bytes.NewBuffer(nil)), | ||||
|  | @ -229,7 +229,7 @@ func TestCustomDo(t *testing.T) { | |||
| 
 | ||||
| 	h.sendOne(context.Background(), nil, testURL, []byte(testBody)) | ||||
| 
 | ||||
| 	assert.True(t, received, "Expected to receive an alert, but didn't") | ||||
| 	require.True(t, received, "Expected to receive an alert, but didn't") | ||||
| } | ||||
| 
 | ||||
| func TestExternalLabels(t *testing.T) { | ||||
|  | @ -263,7 +263,7 @@ func TestExternalLabels(t *testing.T) { | |||
| 		{Labels: labels.FromStrings("alertname", "externalrelabelthis", "a", "c")}, | ||||
| 	} | ||||
| 
 | ||||
| 	assert.NoError(t, alertsEqual(expected, h.queue)) | ||||
| 	require.NoError(t, alertsEqual(expected, h.queue)) | ||||
| } | ||||
| 
 | ||||
| func TestHandlerRelabel(t *testing.T) { | ||||
|  | @ -299,7 +299,7 @@ func TestHandlerRelabel(t *testing.T) { | |||
| 		{Labels: labels.FromStrings("alertname", "renamed")}, | ||||
| 	} | ||||
| 
 | ||||
| 	assert.NoError(t, alertsEqual(expected, h.queue)) | ||||
| 	require.NoError(t, alertsEqual(expected, h.queue)) | ||||
| } | ||||
| 
 | ||||
| func TestHandlerQueuing(t *testing.T) { | ||||
|  | @ -375,7 +375,7 @@ func TestHandlerQueuing(t *testing.T) { | |||
| 			case <-called: | ||||
| 				expectedc <- expected | ||||
| 			case err := <-errc: | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				return | ||||
| 			case <-time.After(5 * time.Second): | ||||
| 				t.Fatalf("Alerts were not pushed") | ||||
|  | @ -408,7 +408,7 @@ func TestHandlerQueuing(t *testing.T) { | |||
| 	expectedc <- alerts[:maxBatchSize] | ||||
| 	select { | ||||
| 	case err := <-errc: | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	case <-time.After(5 * time.Second): | ||||
| 		t.Fatalf("Alerts were not pushed") | ||||
| 	} | ||||
|  | @ -435,10 +435,10 @@ func TestLabelSetNotReused(t *testing.T) { | |||
| 	tg := makeInputTargetGroup() | ||||
| 	_, _, err := alertmanagerFromGroup(tg, &config.AlertmanagerConfig{}) | ||||
| 
 | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Target modified during alertmanager extraction
 | ||||
| 	assert.Equal(t, tg, makeInputTargetGroup()) | ||||
| 	require.Equal(t, tg, makeInputTargetGroup()) | ||||
| } | ||||
| 
 | ||||
| func TestReload(t *testing.T) { | ||||
|  | @ -469,7 +469,7 @@ alerting: | |||
| 	if err := yaml.UnmarshalStrict([]byte(s), cfg); err != nil { | ||||
| 		t.Fatalf("Unable to load YAML config: %s", err) | ||||
| 	} | ||||
| 	assert.Equal(t, 1, len(cfg.AlertingConfig.AlertmanagerConfigs)) | ||||
| 	require.Equal(t, 1, len(cfg.AlertingConfig.AlertmanagerConfigs)) | ||||
| 
 | ||||
| 	if err := n.ApplyConfig(cfg); err != nil { | ||||
| 		t.Fatalf("Error Applying the config:%v", err) | ||||
|  | @ -486,7 +486,7 @@ alerting: | |||
| 		n.reload(tgs) | ||||
| 		res := n.Alertmanagers()[0].String() | ||||
| 
 | ||||
| 		assert.Equal(t, tt.out, res) | ||||
| 		require.Equal(t, tt.out, res) | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  | @ -523,7 +523,7 @@ alerting: | |||
| 	if err := yaml.UnmarshalStrict([]byte(s), cfg); err != nil { | ||||
| 		t.Fatalf("Unable to load YAML config: %s", err) | ||||
| 	} | ||||
| 	assert.Equal(t, 1, len(cfg.AlertingConfig.AlertmanagerConfigs)) | ||||
| 	require.Equal(t, 1, len(cfg.AlertingConfig.AlertmanagerConfigs)) | ||||
| 
 | ||||
| 	if err := n.ApplyConfig(cfg); err != nil { | ||||
| 		t.Fatalf("Error Applying the config:%v", err) | ||||
|  | @ -541,7 +541,7 @@ alerting: | |||
| 		n.reload(tgs) | ||||
| 		res := n.DroppedAlertmanagers()[0].String() | ||||
| 
 | ||||
| 		assert.Equal(t, res, tt.out) | ||||
| 		require.Equal(t, res, tt.out) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -561,5 +561,5 @@ func makeInputTargetGroup() *targetgroup.Group { | |||
| } | ||||
| 
 | ||||
| func TestLabelsToOpenAPILabelSet(t *testing.T) { | ||||
| 	assert.Equal(t, models.LabelSet{"aaa": "111", "bbb": "222"}, labelsToOpenAPILabelSet(labels.Labels{{Name: "aaa", Value: "111"}, {Name: "bbb", Value: "222"}})) | ||||
| 	require.Equal(t, models.LabelSet{"aaa": "111", "bbb": "222"}, labelsToOpenAPILabelSet(labels.Labels{{Name: "aaa", Value: "111"}, {Name: "bbb", Value: "222"}})) | ||||
| } | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ import ( | |||
| 	"strings" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestLabels_String(t *testing.T) { | ||||
|  | @ -50,7 +50,7 @@ func TestLabels_String(t *testing.T) { | |||
| 	} | ||||
| 	for _, c := range cases { | ||||
| 		str := c.lables.String() | ||||
| 		assert.Equal(t, c.expected, str) | ||||
| 		require.Equal(t, c.expected, str) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -181,7 +181,7 @@ func TestLabels_MatchLabels(t *testing.T) { | |||
| 
 | ||||
| 	for i, test := range tests { | ||||
| 		got := labels.MatchLabels(test.on, test.providedNames...) | ||||
| 		assert.Equal(t, test.expected, got, "unexpected labelset for test case %d", i) | ||||
| 		require.Equal(t, test.expected, got, "unexpected labelset for test case %d", i) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -206,8 +206,8 @@ func TestLabels_HasDuplicateLabelNames(t *testing.T) { | |||
| 
 | ||||
| 	for i, c := range cases { | ||||
| 		l, d := c.Input.HasDuplicateLabelNames() | ||||
| 		assert.Equal(t, c.Duplicate, d, "test %d: incorrect duplicate bool", i) | ||||
| 		assert.Equal(t, c.LabelName, l, "test %d: incorrect label name", i) | ||||
| 		require.Equal(t, c.Duplicate, d, "test %d: incorrect duplicate bool", i) | ||||
| 		require.Equal(t, c.LabelName, l, "test %d: incorrect label name", i) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -287,7 +287,7 @@ func TestLabels_WithoutEmpty(t *testing.T) { | |||
| 		}, | ||||
| 	} { | ||||
| 		t.Run("", func(t *testing.T) { | ||||
| 			assert.Equal(t, test.expected, test.input.WithoutEmpty()) | ||||
| 			require.Equal(t, test.expected, test.input.WithoutEmpty()) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -368,7 +368,7 @@ func TestLabels_Equal(t *testing.T) { | |||
| 
 | ||||
| 	for i, test := range tests { | ||||
| 		got := Equal(labels, test.compared) | ||||
| 		assert.Equal(t, test.expected, got, "unexpected comparison result for test case %d", i) | ||||
| 		require.Equal(t, test.expected, got, "unexpected comparison result for test case %d", i) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -385,9 +385,9 @@ func TestLabels_FromStrings(t *testing.T) { | |||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, expected, labels, "unexpected labelset") | ||||
| 	require.Equal(t, expected, labels, "unexpected labelset") | ||||
| 
 | ||||
| 	assert.Panics(t, func() { FromStrings("aaa", "111", "bbb") }) | ||||
| 	require.Panics(t, func() { FromStrings("aaa", "111", "bbb") }) | ||||
| } | ||||
| 
 | ||||
| func TestLabels_Compare(t *testing.T) { | ||||
|  | @ -505,7 +505,7 @@ func TestLabels_Compare(t *testing.T) { | |||
| 
 | ||||
| 	for i, test := range tests { | ||||
| 		got := Compare(labels, test.compared) | ||||
| 		assert.Equal(t, test.expected, got, "unexpected comparison result for test case %d", i) | ||||
| 		require.Equal(t, test.expected, got, "unexpected comparison result for test case %d", i) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -537,34 +537,34 @@ func TestLabels_Has(t *testing.T) { | |||
| 
 | ||||
| 	for i, test := range tests { | ||||
| 		got := labelsSet.Has(test.input) | ||||
| 		assert.Equal(t, test.expected, got, "unexpected comparison result for test case %d", i) | ||||
| 		require.Equal(t, test.expected, got, "unexpected comparison result for test case %d", i) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestLabels_Get(t *testing.T) { | ||||
| 	assert.Equal(t, "", Labels{{"aaa", "111"}, {"bbb", "222"}}.Get("foo")) | ||||
| 	assert.Equal(t, "111", Labels{{"aaa", "111"}, {"bbb", "222"}}.Get("aaa")) | ||||
| 	require.Equal(t, "", Labels{{"aaa", "111"}, {"bbb", "222"}}.Get("foo")) | ||||
| 	require.Equal(t, "111", Labels{{"aaa", "111"}, {"bbb", "222"}}.Get("aaa")) | ||||
| } | ||||
| 
 | ||||
| func TestLabels_Copy(t *testing.T) { | ||||
| 	assert.Equal(t, Labels{{"aaa", "111"}, {"bbb", "222"}}, Labels{{"aaa", "111"}, {"bbb", "222"}}.Copy()) | ||||
| 	require.Equal(t, Labels{{"aaa", "111"}, {"bbb", "222"}}, Labels{{"aaa", "111"}, {"bbb", "222"}}.Copy()) | ||||
| } | ||||
| 
 | ||||
| func TestLabels_Map(t *testing.T) { | ||||
| 	assert.Equal(t, map[string]string{"aaa": "111", "bbb": "222"}, Labels{{"aaa", "111"}, {"bbb", "222"}}.Map()) | ||||
| 	require.Equal(t, map[string]string{"aaa": "111", "bbb": "222"}, Labels{{"aaa", "111"}, {"bbb", "222"}}.Map()) | ||||
| } | ||||
| 
 | ||||
| func TestLabels_WithLabels(t *testing.T) { | ||||
| 	assert.Equal(t, Labels{{"aaa", "111"}, {"bbb", "222"}}, Labels{{"aaa", "111"}, {"bbb", "222"}, {"ccc", "333"}}.WithLabels("aaa", "bbb")) | ||||
| 	require.Equal(t, Labels{{"aaa", "111"}, {"bbb", "222"}}, Labels{{"aaa", "111"}, {"bbb", "222"}, {"ccc", "333"}}.WithLabels("aaa", "bbb")) | ||||
| } | ||||
| 
 | ||||
| func TestLabels_WithoutLabels(t *testing.T) { | ||||
| 	assert.Equal(t, Labels{{"aaa", "111"}}, Labels{{"aaa", "111"}, {"bbb", "222"}, {"ccc", "333"}}.WithoutLabels("bbb", "ccc")) | ||||
| 	assert.Equal(t, Labels{{"aaa", "111"}}, Labels{{"aaa", "111"}, {"bbb", "222"}, {MetricName, "333"}}.WithoutLabels("bbb")) | ||||
| 	require.Equal(t, Labels{{"aaa", "111"}}, Labels{{"aaa", "111"}, {"bbb", "222"}, {"ccc", "333"}}.WithoutLabels("bbb", "ccc")) | ||||
| 	require.Equal(t, Labels{{"aaa", "111"}}, Labels{{"aaa", "111"}, {"bbb", "222"}, {MetricName, "333"}}.WithoutLabels("bbb")) | ||||
| } | ||||
| 
 | ||||
| func TestBulider_NewBulider(t *testing.T) { | ||||
| 	assert.Equal( | ||||
| 	require.Equal( | ||||
| 		t, | ||||
| 		&Builder{ | ||||
| 			base: Labels{{"aaa", "111"}}, | ||||
|  | @ -576,7 +576,7 @@ func TestBulider_NewBulider(t *testing.T) { | |||
| } | ||||
| 
 | ||||
| func TestBuilder_Del(t *testing.T) { | ||||
| 	assert.Equal( | ||||
| 	require.Equal( | ||||
| 		t, | ||||
| 		&Builder{ | ||||
| 			del: []string{"bbb"}, | ||||
|  | @ -590,7 +590,7 @@ func TestBuilder_Del(t *testing.T) { | |||
| } | ||||
| 
 | ||||
| func TestBuilder_Set(t *testing.T) { | ||||
| 	assert.Equal( | ||||
| 	require.Equal( | ||||
| 		t, | ||||
| 		&Builder{ | ||||
| 			base: Labels{{"aaa", "111"}}, | ||||
|  | @ -604,7 +604,7 @@ func TestBuilder_Set(t *testing.T) { | |||
| 		}).Set("bbb", "222"), | ||||
| 	) | ||||
| 
 | ||||
| 	assert.Equal( | ||||
| 	require.Equal( | ||||
| 		t, | ||||
| 		&Builder{ | ||||
| 			base: Labels{{"aaa", "111"}}, | ||||
|  | @ -620,7 +620,7 @@ func TestBuilder_Set(t *testing.T) { | |||
| } | ||||
| 
 | ||||
| func TestBuilder_Labels(t *testing.T) { | ||||
| 	assert.Equal( | ||||
| 	require.Equal( | ||||
| 		t, | ||||
| 		Labels{{"aaa", "111"}, {"ccc", "333"}, {"ddd", "444"}}, | ||||
| 		(&Builder{ | ||||
|  | @ -636,9 +636,9 @@ func TestLabels_Hash(t *testing.T) { | |||
| 		{Name: "foo", Value: "bar"}, | ||||
| 		{Name: "baz", Value: "qux"}, | ||||
| 	} | ||||
| 	assert.Equal(t, lbls.Hash(), lbls.Hash()) | ||||
| 	assert.NotEqual(t, lbls.Hash(), Labels{lbls[1], lbls[0]}.Hash(), "unordered labels match.") | ||||
| 	assert.NotEqual(t, lbls.Hash(), Labels{lbls[0]}.Hash(), "different labels match.") | ||||
| 	require.Equal(t, lbls.Hash(), lbls.Hash()) | ||||
| 	require.NotEqual(t, lbls.Hash(), Labels{lbls[1], lbls[0]}.Hash(), "unordered labels match.") | ||||
| 	require.NotEqual(t, lbls.Hash(), Labels{lbls[0]}.Hash(), "different labels match.") | ||||
| } | ||||
| 
 | ||||
| var benchmarkLabelsResult uint64 | ||||
|  |  | |||
|  | @ -16,12 +16,12 @@ package labels | |||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func mustNewMatcher(t *testing.T, mType MatchType, value string) *Matcher { | ||||
| 	m, err := NewMatcher(mType, "", value) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	return m | ||||
| } | ||||
| 
 | ||||
|  | @ -84,7 +84,7 @@ func TestMatcher(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	for _, test := range tests { | ||||
| 		assert.Equal(t, test.matcher.Matches(test.value), test.match) | ||||
| 		require.Equal(t, test.matcher.Matches(test.value), test.match) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -113,7 +113,7 @@ func TestInverse(t *testing.T) { | |||
| 
 | ||||
| 	for _, test := range tests { | ||||
| 		result, err := test.matcher.Inverse() | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, test.expected.Type, result.Type) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, test.expected.Type, result.Type) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ import ( | |||
| 	"regexp/syntax" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestNewFastRegexMatcher(t *testing.T) { | ||||
|  | @ -54,8 +54,8 @@ func TestNewFastRegexMatcher(t *testing.T) { | |||
| 
 | ||||
| 	for _, c := range cases { | ||||
| 		m, err := NewFastRegexMatcher(c.regex) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, c.expected, m.MatchString(c.value)) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, c.expected, m.MatchString(c.value)) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -88,11 +88,11 @@ func TestOptimizeConcatRegex(t *testing.T) { | |||
| 
 | ||||
| 	for _, c := range cases { | ||||
| 		parsed, err := syntax.Parse(c.regex, syntax.Perl) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		prefix, suffix, contains := optimizeConcatRegex(parsed) | ||||
| 		assert.Equal(t, c.prefix, prefix) | ||||
| 		assert.Equal(t, c.suffix, suffix) | ||||
| 		assert.Equal(t, c.contains, contains) | ||||
| 		require.Equal(t, c.prefix, prefix) | ||||
| 		require.Equal(t, c.suffix, suffix) | ||||
| 		require.Equal(t, c.contains, contains) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ import ( | |||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| type counter int | ||||
|  | @ -35,13 +35,13 @@ func TestDedupe(t *testing.T) { | |||
| 	// Log 10 times quickly, ensure they are deduped.
 | ||||
| 	for i := 0; i < 10; i++ { | ||||
| 		err := d.Log("msg", "hello") | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	} | ||||
| 	assert.Equal(t, 1, int(c)) | ||||
| 	require.Equal(t, 1, int(c)) | ||||
| 
 | ||||
| 	// Wait, then log again, make sure it is logged.
 | ||||
| 	time.Sleep(200 * time.Millisecond) | ||||
| 	err := d.Log("msg", "hello") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 2, int(c)) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 2, int(c)) | ||||
| } | ||||
|  |  | |||
|  | @ -20,71 +20,71 @@ import ( | |||
| 	"strings" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestJSONFileLogger_basic(t *testing.T) { | ||||
| 	f, err := ioutil.TempFile("", "logging") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, f.Close()) | ||||
| 		assert.NoError(t, os.Remove(f.Name())) | ||||
| 		require.NoError(t, f.Close()) | ||||
| 		require.NoError(t, os.Remove(f.Name())) | ||||
| 	}() | ||||
| 
 | ||||
| 	l, err := NewJSONFileLogger(f.Name()) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotNil(t, l, "logger can't be nil") | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotNil(t, l, "logger can't be nil") | ||||
| 
 | ||||
| 	err = l.Log("test", "yes") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	r := make([]byte, 1024) | ||||
| 	_, err = f.Read(r) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	result, err := regexp.Match(`^{"test":"yes","ts":"[^"]+"}\n`, r) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.True(t, result, "unexpected content: %s", r) | ||||
| 	require.NoError(t, err) | ||||
| 	require.True(t, result, "unexpected content: %s", r) | ||||
| 
 | ||||
| 	err = l.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = l.file.Close() | ||||
| 	assert.Error(t, err) | ||||
| 	assert.True(t, strings.HasSuffix(err.Error(), os.ErrClosed.Error()), "file not closed") | ||||
| 	require.Error(t, err) | ||||
| 	require.True(t, strings.HasSuffix(err.Error(), os.ErrClosed.Error()), "file not closed") | ||||
| } | ||||
| 
 | ||||
| func TestJSONFileLogger_parallel(t *testing.T) { | ||||
| 	f, err := ioutil.TempFile("", "logging") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, f.Close()) | ||||
| 		assert.NoError(t, os.Remove(f.Name())) | ||||
| 		require.NoError(t, f.Close()) | ||||
| 		require.NoError(t, os.Remove(f.Name())) | ||||
| 	}() | ||||
| 
 | ||||
| 	l, err := NewJSONFileLogger(f.Name()) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotNil(t, l, "logger can't be nil") | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotNil(t, l, "logger can't be nil") | ||||
| 
 | ||||
| 	err = l.Log("test", "yes") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	l2, err := NewJSONFileLogger(f.Name()) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotNil(t, l, "logger can't be nil") | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotNil(t, l, "logger can't be nil") | ||||
| 
 | ||||
| 	err = l2.Log("test", "yes") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = l.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = l.file.Close() | ||||
| 	assert.Error(t, err) | ||||
| 	assert.True(t, strings.HasSuffix(err.Error(), os.ErrClosed.Error()), "file not closed") | ||||
| 	require.Error(t, err) | ||||
| 	require.True(t, strings.HasSuffix(err.Error(), os.ErrClosed.Error()), "file not closed") | ||||
| 
 | ||||
| 	err = l2.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = l2.file.Close() | ||||
| 	assert.Error(t, err) | ||||
| 	assert.True(t, strings.HasSuffix(err.Error(), os.ErrClosed.Error()), "file not closed") | ||||
| 	require.Error(t, err) | ||||
| 	require.True(t, strings.HasSuffix(err.Error(), os.ErrClosed.Error()), "file not closed") | ||||
| } | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ package pool | |||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func makeFunc(size int) interface{} { | ||||
|  | @ -44,7 +44,7 @@ func TestPool(t *testing.T) { | |||
| 	} | ||||
| 	for _, c := range cases { | ||||
| 		ret := testPool.Get(c.size) | ||||
| 		assert.Equal(t, c.expectedCap, cap(ret.([]int))) | ||||
| 		require.Equal(t, c.expectedCap, cap(ret.([]int))) | ||||
| 		testPool.Put(ret) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| ) | ||||
|  | @ -414,7 +414,7 @@ func TestRelabel(t *testing.T) { | |||
| 
 | ||||
| 	for _, test := range tests { | ||||
| 		res := Process(test.input, test.relabel...) | ||||
| 		assert.Equal(t, test.output, res) | ||||
| 		require.Equal(t, test.output, res) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -440,7 +440,7 @@ func TestTargetLabelValidity(t *testing.T) { | |||
| 		{"foo${bar}foo", true}, | ||||
| 	} | ||||
| 	for _, test := range tests { | ||||
| 		assert.Equal(t, test.valid, relabelTarget.Match([]byte(test.str)), | ||||
| 		require.Equal(t, test.valid, relabelTarget.Match([]byte(test.str)), | ||||
| 			"Expected %q to be %v", test.str, test.valid) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ import ( | |||
| 	"strings" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestParseFileSuccess(t *testing.T) { | ||||
|  | @ -163,9 +163,9 @@ groups: | |||
| 
 | ||||
| 	for _, tst := range tests { | ||||
| 		rgs, errs := Parse([]byte(tst.ruleString)) | ||||
| 		assert.NotNil(t, rgs, "Rule parsing, rule=\n"+tst.ruleString) | ||||
| 		require.NotNil(t, rgs, "Rule parsing, rule=\n"+tst.ruleString) | ||||
| 		passed := (tst.shouldPass && len(errs) == 0) || (!tst.shouldPass && len(errs) > 0) | ||||
| 		assert.True(t, passed, "Rule validation failed, rule=\n"+tst.ruleString) | ||||
| 		require.True(t, passed, "Rule validation failed, rule=\n"+tst.ruleString) | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ import ( | |||
| 	"io" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/exemplar" | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
|  | @ -221,7 +221,7 @@ foo_total 17.0 1520879607.789 # {xx="yy"} 5` | |||
| 		if err == io.EOF { | ||||
| 			break | ||||
| 		} | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		switch et { | ||||
| 		case EntrySeries: | ||||
|  | @ -231,40 +231,40 @@ foo_total 17.0 1520879607.789 # {xx="yy"} 5` | |||
| 			p.Metric(&res) | ||||
| 			found := p.Exemplar(&e) | ||||
| 
 | ||||
| 			assert.Equal(t, exp[i].m, string(m)) | ||||
| 			assert.Equal(t, exp[i].t, ts) | ||||
| 			assert.Equal(t, exp[i].v, v) | ||||
| 			assert.Equal(t, exp[i].lset, res) | ||||
| 			require.Equal(t, exp[i].m, string(m)) | ||||
| 			require.Equal(t, exp[i].t, ts) | ||||
| 			require.Equal(t, exp[i].v, v) | ||||
| 			require.Equal(t, exp[i].lset, res) | ||||
| 			if exp[i].e == nil { | ||||
| 				assert.Equal(t, false, found) | ||||
| 				require.Equal(t, false, found) | ||||
| 			} else { | ||||
| 				assert.Equal(t, true, found) | ||||
| 				assert.Equal(t, *exp[i].e, e) | ||||
| 				require.Equal(t, true, found) | ||||
| 				require.Equal(t, *exp[i].e, e) | ||||
| 			} | ||||
| 			res = res[:0] | ||||
| 
 | ||||
| 		case EntryType: | ||||
| 			m, typ := p.Type() | ||||
| 			assert.Equal(t, exp[i].m, string(m)) | ||||
| 			assert.Equal(t, exp[i].typ, typ) | ||||
| 			require.Equal(t, exp[i].m, string(m)) | ||||
| 			require.Equal(t, exp[i].typ, typ) | ||||
| 
 | ||||
| 		case EntryHelp: | ||||
| 			m, h := p.Help() | ||||
| 			assert.Equal(t, exp[i].m, string(m)) | ||||
| 			assert.Equal(t, exp[i].help, string(h)) | ||||
| 			require.Equal(t, exp[i].m, string(m)) | ||||
| 			require.Equal(t, exp[i].help, string(h)) | ||||
| 
 | ||||
| 		case EntryUnit: | ||||
| 			m, u := p.Unit() | ||||
| 			assert.Equal(t, exp[i].m, string(m)) | ||||
| 			assert.Equal(t, exp[i].unit, string(u)) | ||||
| 			require.Equal(t, exp[i].m, string(m)) | ||||
| 			require.Equal(t, exp[i].unit, string(u)) | ||||
| 
 | ||||
| 		case EntryComment: | ||||
| 			assert.Equal(t, exp[i].comment, string(p.Comment())) | ||||
| 			require.Equal(t, exp[i].comment, string(p.Comment())) | ||||
| 		} | ||||
| 
 | ||||
| 		i++ | ||||
| 	} | ||||
| 	assert.Equal(t, len(exp), i) | ||||
| 	require.Equal(t, len(exp), i) | ||||
| } | ||||
| 
 | ||||
| func TestOpenMetricsParseErrors(t *testing.T) { | ||||
|  | @ -511,7 +511,7 @@ func TestOpenMetricsParseErrors(t *testing.T) { | |||
| 		for err == nil { | ||||
| 			_, err = p.Next() | ||||
| 		} | ||||
| 		assert.Equal(t, c.err, err.Error(), "test %d: %s", i, c.input) | ||||
| 		require.Equal(t, c.err, err.Error(), "test %d: %s", i, c.input) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -578,10 +578,10 @@ func TestOMNullByteHandling(t *testing.T) { | |||
| 		} | ||||
| 
 | ||||
| 		if c.err == "" { | ||||
| 			assert.Equal(t, io.EOF, err, "test %d", i) | ||||
| 			require.Equal(t, io.EOF, err, "test %d", i) | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		assert.Equal(t, c.err, err.Error(), "test %d", i) | ||||
| 		require.Equal(t, c.err, err.Error(), "test %d", i) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/prometheus/common/expfmt" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| ) | ||||
|  | @ -180,7 +180,7 @@ testmetric{label="\"bar\""} 1` | |||
| 		if err == io.EOF { | ||||
| 			break | ||||
| 		} | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		switch et { | ||||
| 		case EntrySeries: | ||||
|  | @ -188,29 +188,29 @@ testmetric{label="\"bar\""} 1` | |||
| 
 | ||||
| 			p.Metric(&res) | ||||
| 
 | ||||
| 			assert.Equal(t, exp[i].m, string(m)) | ||||
| 			assert.Equal(t, exp[i].t, ts) | ||||
| 			assert.Equal(t, exp[i].v, v) | ||||
| 			assert.Equal(t, exp[i].lset, res) | ||||
| 			require.Equal(t, exp[i].m, string(m)) | ||||
| 			require.Equal(t, exp[i].t, ts) | ||||
| 			require.Equal(t, exp[i].v, v) | ||||
| 			require.Equal(t, exp[i].lset, res) | ||||
| 			res = res[:0] | ||||
| 
 | ||||
| 		case EntryType: | ||||
| 			m, typ := p.Type() | ||||
| 			assert.Equal(t, exp[i].m, string(m)) | ||||
| 			assert.Equal(t, exp[i].typ, typ) | ||||
| 			require.Equal(t, exp[i].m, string(m)) | ||||
| 			require.Equal(t, exp[i].typ, typ) | ||||
| 
 | ||||
| 		case EntryHelp: | ||||
| 			m, h := p.Help() | ||||
| 			assert.Equal(t, exp[i].m, string(m)) | ||||
| 			assert.Equal(t, exp[i].help, string(h)) | ||||
| 			require.Equal(t, exp[i].m, string(m)) | ||||
| 			require.Equal(t, exp[i].help, string(h)) | ||||
| 
 | ||||
| 		case EntryComment: | ||||
| 			assert.Equal(t, exp[i].comment, string(p.Comment())) | ||||
| 			require.Equal(t, exp[i].comment, string(p.Comment())) | ||||
| 		} | ||||
| 
 | ||||
| 		i++ | ||||
| 	} | ||||
| 	assert.Equal(t, len(exp), i) | ||||
| 	require.Equal(t, len(exp), i) | ||||
| } | ||||
| 
 | ||||
| func TestPromParseErrors(t *testing.T) { | ||||
|  | @ -278,8 +278,8 @@ func TestPromParseErrors(t *testing.T) { | |||
| 		for err == nil { | ||||
| 			_, err = p.Next() | ||||
| 		} | ||||
| 		assert.Error(t, err) | ||||
| 		assert.Equal(t, c.err, err.Error(), "test %d", i) | ||||
| 		require.Error(t, err) | ||||
| 		require.Equal(t, c.err, err.Error(), "test %d", i) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -330,12 +330,12 @@ func TestPromNullByteHandling(t *testing.T) { | |||
| 		} | ||||
| 
 | ||||
| 		if c.err == "" { | ||||
| 			assert.Equal(t, io.EOF, err, "test %d", i) | ||||
| 			require.Equal(t, io.EOF, err, "test %d", i) | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		assert.Error(t, err) | ||||
| 		assert.Equal(t, c.err, err.Error(), "test %d", i) | ||||
| 		require.Error(t, err) | ||||
| 		require.Equal(t, c.err, err.Error(), "test %d", i) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -350,11 +350,11 @@ func BenchmarkParse(b *testing.B) { | |||
| 	} { | ||||
| 		for _, fn := range []string{"promtestdata.txt", "promtestdata.nometa.txt"} { | ||||
| 			f, err := os.Open(fn) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			defer f.Close() | ||||
| 
 | ||||
| 			buf, err := ioutil.ReadAll(f) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 
 | ||||
| 			b.Run(parserName+"/no-decode-metric/"+fn, func(b *testing.B) { | ||||
| 				total := 0 | ||||
|  | @ -484,18 +484,18 @@ func BenchmarkGzip(b *testing.B) { | |||
| 	for _, fn := range []string{"promtestdata.txt", "promtestdata.nometa.txt"} { | ||||
| 		b.Run(fn, func(b *testing.B) { | ||||
| 			f, err := os.Open(fn) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			defer f.Close() | ||||
| 
 | ||||
| 			var buf bytes.Buffer | ||||
| 			gw := gzip.NewWriter(&buf) | ||||
| 
 | ||||
| 			n, err := io.Copy(gw, f) | ||||
| 			assert.NoError(b, err) | ||||
| 			assert.NoError(b, gw.Close()) | ||||
| 			require.NoError(b, err) | ||||
| 			require.NoError(b, gw.Close()) | ||||
| 
 | ||||
| 			gbuf, err := ioutil.ReadAll(&buf) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 
 | ||||
| 			k := b.N / promtestdataSampleCount | ||||
| 
 | ||||
|  | @ -507,11 +507,11 @@ func BenchmarkGzip(b *testing.B) { | |||
| 
 | ||||
| 			for i := 0; i < k; i++ { | ||||
| 				gr, err := gzip.NewReader(bytes.NewReader(gbuf)) | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 
 | ||||
| 				d, err := ioutil.ReadAll(gr) | ||||
| 				assert.NoError(b, err) | ||||
| 				assert.NoError(b, gr.Close()) | ||||
| 				require.NoError(b, err) | ||||
| 				require.NoError(b, gr.Close()) | ||||
| 
 | ||||
| 				total += len(d) | ||||
| 			} | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/goleak" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
|  | @ -40,7 +40,7 @@ func TestQueryConcurrency(t *testing.T) { | |||
| 	maxConcurrency := 10 | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "test_concurrency") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer os.RemoveAll(dir) | ||||
| 	queryTracker := NewActiveQueryTracker(dir, maxConcurrency, nil) | ||||
| 
 | ||||
|  | @ -119,10 +119,10 @@ func TestQueryTimeout(t *testing.T) { | |||
| 	}) | ||||
| 
 | ||||
| 	res := query.Exec(ctx) | ||||
| 	assert.Error(t, res.Err, "expected timeout error but got none") | ||||
| 	require.Error(t, res.Err, "expected timeout error but got none") | ||||
| 
 | ||||
| 	var e ErrQueryTimeout | ||||
| 	assert.True(t, errors.As(res.Err, &e), "expected timeout error but got: %s", res.Err) | ||||
| 	require.True(t, errors.As(res.Err, &e), "expected timeout error but got: %s", res.Err) | ||||
| } | ||||
| 
 | ||||
| const errQueryCanceled = ErrQueryCanceled("test statement execution") | ||||
|  | @ -160,8 +160,8 @@ func TestQueryCancel(t *testing.T) { | |||
| 	block <- struct{}{} | ||||
| 	<-processing | ||||
| 
 | ||||
| 	assert.Error(t, res.Err, "expected cancellation error for query1 but got none") | ||||
| 	assert.Equal(t, errQueryCanceled, res.Err) | ||||
| 	require.Error(t, res.Err, "expected cancellation error for query1 but got none") | ||||
| 	require.Equal(t, errQueryCanceled, res.Err) | ||||
| 
 | ||||
| 	// Canceling a query before starting it must have no effect.
 | ||||
| 	query2 := engine.newTestQuery(func(ctx context.Context) error { | ||||
|  | @ -170,7 +170,7 @@ func TestQueryCancel(t *testing.T) { | |||
| 
 | ||||
| 	query2.Cancel() | ||||
| 	res = query2.Exec(ctx) | ||||
| 	assert.NoError(t, res.Err) | ||||
| 	require.NoError(t, res.Err) | ||||
| } | ||||
| 
 | ||||
| // errQuerier implements storage.Querier which always returns error.
 | ||||
|  | @ -211,18 +211,18 @@ func TestQueryError(t *testing.T) { | |||
| 	defer cancelCtx() | ||||
| 
 | ||||
| 	vectorQuery, err := engine.NewInstantQuery(queryable, "foo", time.Unix(1, 0)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	res := vectorQuery.Exec(ctx) | ||||
| 	assert.Error(t, res.Err, "expected error on failed select but got none") | ||||
| 	assert.True(t, errors.Is(res.Err, errStorage), "expected error doesn't match") | ||||
| 	require.Error(t, res.Err, "expected error on failed select but got none") | ||||
| 	require.True(t, errors.Is(res.Err, errStorage), "expected error doesn't match") | ||||
| 
 | ||||
| 	matrixQuery, err := engine.NewInstantQuery(queryable, "foo[1m]", time.Unix(1, 0)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	res = matrixQuery.Exec(ctx) | ||||
| 	assert.Error(t, res.Err, "expected error on failed select but got none") | ||||
| 	assert.True(t, errors.Is(res.Err, errStorage), "expected error doesn't match") | ||||
| 	require.Error(t, res.Err, "expected error on failed select but got none") | ||||
| 	require.True(t, errors.Is(res.Err, errStorage), "expected error doesn't match") | ||||
| } | ||||
| 
 | ||||
| type noopHintRecordingQueryable struct { | ||||
|  | @ -378,12 +378,12 @@ func TestSelectHintsSetCorrectly(t *testing.T) { | |||
| 			} else { | ||||
| 				query, err = engine.NewRangeQuery(hintsRecorder, tc.query, timestamp.Time(tc.start), timestamp.Time(tc.end), time.Second) | ||||
| 			} | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			res := query.Exec(context.Background()) | ||||
| 			assert.NoError(t, res.Err) | ||||
| 			require.NoError(t, res.Err) | ||||
| 
 | ||||
| 			assert.Equal(t, tc.expected, hintsRecorder.hints) | ||||
| 			require.Equal(t, tc.expected, hintsRecorder.hints) | ||||
| 		}) | ||||
| 
 | ||||
| 	} | ||||
|  | @ -426,8 +426,8 @@ func TestEngineShutdown(t *testing.T) { | |||
| 	block <- struct{}{} | ||||
| 	<-processing | ||||
| 
 | ||||
| 	assert.Error(t, res.Err, "expected error on shutdown during query but got none") | ||||
| 	assert.Equal(t, errQueryCanceled, res.Err) | ||||
| 	require.Error(t, res.Err, "expected error on shutdown during query but got none") | ||||
| 	require.Equal(t, errQueryCanceled, res.Err) | ||||
| 
 | ||||
| 	query2 := engine.newTestQuery(func(context.Context) error { | ||||
| 		t.Fatalf("reached query execution unexpectedly") | ||||
|  | @ -437,10 +437,10 @@ func TestEngineShutdown(t *testing.T) { | |||
| 	// The second query is started after the engine shut down. It must
 | ||||
| 	// be canceled immediately.
 | ||||
| 	res2 := query2.Exec(ctx) | ||||
| 	assert.Error(t, res2.Err, "expected error on querying with canceled context but got none") | ||||
| 	require.Error(t, res2.Err, "expected error on querying with canceled context but got none") | ||||
| 
 | ||||
| 	var e ErrQueryCanceled | ||||
| 	assert.True(t, errors.As(res2.Err, &e), "expected cancellation error but got: %s", res2.Err) | ||||
| 	require.True(t, errors.As(res2.Err, &e), "expected cancellation error but got: %s", res2.Err) | ||||
| } | ||||
| 
 | ||||
| func TestEngineEvalStmtTimestamps(t *testing.T) { | ||||
|  | @ -448,11 +448,11 @@ func TestEngineEvalStmtTimestamps(t *testing.T) { | |||
| load 10s | ||||
|   metric 1 2 | ||||
| `) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer test.Close() | ||||
| 
 | ||||
| 	err = test.Run() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	cases := []struct { | ||||
| 		Query       string | ||||
|  | @ -529,16 +529,16 @@ load 10s | |||
| 		} else { | ||||
| 			qry, err = test.QueryEngine().NewRangeQuery(test.Queryable(), c.Query, c.Start, c.End, c.Interval) | ||||
| 		} | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		res := qry.Exec(test.Context()) | ||||
| 		if c.ShouldError { | ||||
| 			assert.Error(t, res.Err, "expected error for the query %q", c.Query) | ||||
| 			require.Error(t, res.Err, "expected error for the query %q", c.Query) | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		assert.NoError(t, res.Err) | ||||
| 		assert.Equal(t, c.Result, res.Value, "query %q failed", c.Query) | ||||
| 		require.NoError(t, res.Err) | ||||
| 		require.Equal(t, c.Result, res.Value, "query %q failed", c.Query) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -549,11 +549,11 @@ load 10s | |||
|   bigmetric{a="1"} 1 2 | ||||
|   bigmetric{a="2"} 1 2 | ||||
| `) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer test.Close() | ||||
| 
 | ||||
| 	err = test.Run() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	cases := []struct { | ||||
| 		Query      string | ||||
|  | @ -765,11 +765,11 @@ load 10s | |||
| 		} else { | ||||
| 			qry, err = engine.NewRangeQuery(test.Queryable(), c.Query, c.Start, c.End, c.Interval) | ||||
| 		} | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		res := qry.Exec(test.Context()) | ||||
| 		assert.Equal(t, c.Result.Err, res.Err) | ||||
| 		assert.Equal(t, c.Result.Value, res.Value, "query %q failed", c.Query) | ||||
| 		require.Equal(t, c.Result.Err, res.Err) | ||||
| 		require.Equal(t, c.Result.Value, res.Value, "query %q failed", c.Query) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -1052,21 +1052,21 @@ func TestSubquerySelector(t *testing.T) { | |||
| 	} { | ||||
| 		t.Run("", func(t *testing.T) { | ||||
| 			test, err := NewTest(t, tst.loadString) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer test.Close() | ||||
| 
 | ||||
| 			assert.NoError(t, test.Run()) | ||||
| 			require.NoError(t, test.Run()) | ||||
| 			engine := test.QueryEngine() | ||||
| 			for _, c := range tst.cases { | ||||
| 				t.Run(c.Query, func(t *testing.T) { | ||||
| 					qry, err := engine.NewInstantQuery(test.Queryable(), c.Query, c.Start) | ||||
| 					assert.NoError(t, err) | ||||
| 					require.NoError(t, err) | ||||
| 
 | ||||
| 					res := qry.Exec(test.Context()) | ||||
| 					assert.Equal(t, c.Result.Err, res.Err) | ||||
| 					require.Equal(t, c.Result.Err, res.Err) | ||||
| 					mat := res.Value.(Matrix) | ||||
| 					sort.Sort(mat) | ||||
| 					assert.Equal(t, c.Result.Value, mat) | ||||
| 					require.Equal(t, c.Result.Value, mat) | ||||
| 				}) | ||||
| 			} | ||||
| 		}) | ||||
|  | @ -1111,7 +1111,7 @@ func TestQueryLogger_basic(t *testing.T) { | |||
| 			return contextDone(ctx, "test statement execution") | ||||
| 		}) | ||||
| 		res := query.Exec(ctx) | ||||
| 		assert.NoError(t, res.Err) | ||||
| 		require.NoError(t, res.Err) | ||||
| 	} | ||||
| 
 | ||||
| 	// Query works without query log initialized.
 | ||||
|  | @ -1121,28 +1121,28 @@ func TestQueryLogger_basic(t *testing.T) { | |||
| 	engine.SetQueryLogger(f1) | ||||
| 	queryExec() | ||||
| 	for i, field := range []interface{}{"params", map[string]interface{}{"query": "test statement"}} { | ||||
| 		assert.Equal(t, field, f1.logs[i]) | ||||
| 		require.Equal(t, field, f1.logs[i]) | ||||
| 	} | ||||
| 
 | ||||
| 	l := len(f1.logs) | ||||
| 	queryExec() | ||||
| 	assert.Equal(t, 2*l, len(f1.logs)) | ||||
| 	require.Equal(t, 2*l, len(f1.logs)) | ||||
| 
 | ||||
| 	// Test that we close the query logger when unsetting it.
 | ||||
| 	assert.False(t, f1.closed, "expected f1 to be open, got closed") | ||||
| 	require.False(t, f1.closed, "expected f1 to be open, got closed") | ||||
| 	engine.SetQueryLogger(nil) | ||||
| 	assert.True(t, f1.closed, "expected f1 to be closed, got open") | ||||
| 	require.True(t, f1.closed, "expected f1 to be closed, got open") | ||||
| 	queryExec() | ||||
| 
 | ||||
| 	// Test that we close the query logger when swapping.
 | ||||
| 	f2 := NewFakeQueryLogger() | ||||
| 	f3 := NewFakeQueryLogger() | ||||
| 	engine.SetQueryLogger(f2) | ||||
| 	assert.False(t, f2.closed, "expected f2 to be open, got closed") | ||||
| 	require.False(t, f2.closed, "expected f2 to be open, got closed") | ||||
| 	queryExec() | ||||
| 	engine.SetQueryLogger(f3) | ||||
| 	assert.True(t, f2.closed, "expected f2 to be closed, got open") | ||||
| 	assert.False(t, f3.closed, "expected f3 to be open, got closed") | ||||
| 	require.True(t, f2.closed, "expected f2 to be closed, got open") | ||||
| 	require.False(t, f3.closed, "expected f3 to be open, got closed") | ||||
| 	queryExec() | ||||
| } | ||||
| 
 | ||||
|  | @ -1166,12 +1166,12 @@ func TestQueryLogger_fields(t *testing.T) { | |||
| 	}) | ||||
| 
 | ||||
| 	res := query.Exec(ctx) | ||||
| 	assert.NoError(t, res.Err) | ||||
| 	require.NoError(t, res.Err) | ||||
| 
 | ||||
| 	expected := []string{"foo", "bar"} | ||||
| 	for i, field := range expected { | ||||
| 		v := f1.logs[len(f1.logs)-len(expected)+i].(string) | ||||
| 		assert.Equal(t, field, v) | ||||
| 		require.Equal(t, field, v) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -1196,9 +1196,9 @@ func TestQueryLogger_error(t *testing.T) { | |||
| 	}) | ||||
| 
 | ||||
| 	res := query.Exec(ctx) | ||||
| 	assert.Error(t, res.Err, "query should have failed") | ||||
| 	require.Error(t, res.Err, "query should have failed") | ||||
| 
 | ||||
| 	for i, field := range []interface{}{"params", map[string]interface{}{"query": "test statement"}, "error", testErr} { | ||||
| 		assert.Equal(t, f1.logs[i], field) | ||||
| 		require.Equal(t, f1.logs[i], field) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ import ( | |||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/pkg/timestamp" | ||||
|  | @ -46,28 +46,28 @@ func TestDeriv(t *testing.T) { | |||
| 	a.Add(metric, 1493712816939, 1.0) | ||||
| 	a.Add(metric, 1493712846939, 1.0) | ||||
| 
 | ||||
| 	assert.NoError(t, a.Commit()) | ||||
| 	require.NoError(t, a.Commit()) | ||||
| 
 | ||||
| 	query, err := engine.NewInstantQuery(storage, "deriv(foo[30m])", timestamp.Time(1493712846939)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	result := query.Exec(context.Background()) | ||||
| 	assert.NoError(t, result.Err) | ||||
| 	require.NoError(t, result.Err) | ||||
| 
 | ||||
| 	vec, _ := result.Vector() | ||||
| 	assert.Equal(t, 1, len(vec), "Expected 1 result, got %d", len(vec)) | ||||
| 	assert.Equal(t, 0.0, vec[0].V, "Expected 0.0 as value, got %f", vec[0].V) | ||||
| 	require.Equal(t, 1, len(vec), "Expected 1 result, got %d", len(vec)) | ||||
| 	require.Equal(t, 0.0, vec[0].V, "Expected 0.0 as value, got %f", vec[0].V) | ||||
| } | ||||
| 
 | ||||
| func TestFunctionList(t *testing.T) { | ||||
| 	// Test that Functions and parser.Functions list the same functions.
 | ||||
| 	for i := range FunctionCalls { | ||||
| 		_, ok := parser.Functions[i] | ||||
| 		assert.True(t, ok, "function %s exists in promql package, but not in parser package", i) | ||||
| 		require.True(t, ok, "function %s exists in promql package, but not in parser package", i) | ||||
| 	} | ||||
| 
 | ||||
| 	for i := range parser.Functions { | ||||
| 		_, ok := FunctionCalls[i] | ||||
| 		assert.True(t, ok, "function %s exists in parser package, but not in promql package", i) | ||||
| 		require.True(t, ok, "function %s exists in parser package, but not in promql package", i) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ package parser | |||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| type testCase struct { | ||||
|  | @ -731,10 +731,10 @@ func TestLexer(t *testing.T) { | |||
| 				} | ||||
| 
 | ||||
| 				eofItem := Item{EOF, Pos(len(test.input)), ""} | ||||
| 				assert.Equal(t, lastItem, eofItem, "%d: input %q", i, test.input) | ||||
| 				require.Equal(t, lastItem, eofItem, "%d: input %q", i, test.input) | ||||
| 
 | ||||
| 				out = out[:len(out)-1] | ||||
| 				assert.Equal(t, test.expected, out, "%d: input %q", i, test.input) | ||||
| 				require.Equal(t, test.expected, out, "%d: input %q", i, test.input) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| ) | ||||
|  | @ -2658,23 +2658,23 @@ func TestParseExpressions(t *testing.T) { | |||
| 			expr, err := ParseExpr(test.input) | ||||
| 
 | ||||
| 			// Unexpected errors are always caused by a bug.
 | ||||
| 			assert.NotEqual(t, err, errUnexpected, "unexpected error occurred") | ||||
| 			require.NotEqual(t, err, errUnexpected, "unexpected error occurred") | ||||
| 
 | ||||
| 			if !test.fail { | ||||
| 				assert.NoError(t, err) | ||||
| 				assert.Equal(t, test.expected, expr, "error on input '%s'", test.input) | ||||
| 				require.NoError(t, err) | ||||
| 				require.Equal(t, test.expected, expr, "error on input '%s'", test.input) | ||||
| 			} else { | ||||
| 				assert.Error(t, err) | ||||
| 				assert.Contains(t, err.Error(), test.errMsg, "unexpected error on input '%s', expected '%s', got '%s'", test.input, test.errMsg, err.Error()) | ||||
| 				require.Error(t, err) | ||||
| 				require.Contains(t, err.Error(), test.errMsg, "unexpected error on input '%s', expected '%s', got '%s'", test.input, test.errMsg, err.Error()) | ||||
| 
 | ||||
| 				errorList, ok := err.(ParseErrors) | ||||
| 
 | ||||
| 				assert.True(t, ok, "unexpected error type") | ||||
| 				require.True(t, ok, "unexpected error type") | ||||
| 
 | ||||
| 				for _, e := range errorList { | ||||
| 					assert.True(t, 0 <= e.PositionRange.Start, "parse error has negative position\nExpression '%s'\nError: %v", test.input, e) | ||||
| 					assert.True(t, e.PositionRange.Start <= e.PositionRange.End, "parse error has negative length\nExpression '%s'\nError: %v", test.input, e) | ||||
| 					assert.True(t, e.PositionRange.End <= Pos(len(test.input)), "parse error is not contained in input\nExpression '%s'\nError: %v", test.input, e) | ||||
| 					require.True(t, 0 <= e.PositionRange.Start, "parse error has negative position\nExpression '%s'\nError: %v", test.input, e) | ||||
| 					require.True(t, e.PositionRange.Start <= e.PositionRange.End, "parse error has negative length\nExpression '%s'\nError: %v", test.input, e) | ||||
| 					require.True(t, e.PositionRange.End <= Pos(len(test.input)), "parse error is not contained in input\nExpression '%s'\nError: %v", test.input, e) | ||||
| 				} | ||||
| 			} | ||||
| 		}) | ||||
|  | @ -2684,11 +2684,11 @@ func TestParseExpressions(t *testing.T) { | |||
| // NaN has no equality. Thus, we need a separate test for it.
 | ||||
| func TestNaNExpression(t *testing.T) { | ||||
| 	expr, err := ParseExpr("NaN") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	nl, ok := expr.(*NumberLiteral) | ||||
| 	assert.True(t, ok, "expected number literal but got %T", expr) | ||||
| 	assert.True(t, math.IsNaN(float64(nl.Val)), "expected 'NaN' in number literal but got %v", nl.Val) | ||||
| 	require.True(t, ok, "expected number literal but got %T", expr) | ||||
| 	require.True(t, math.IsNaN(float64(nl.Val)), "expected 'NaN' in number literal but got %v", nl.Val) | ||||
| } | ||||
| 
 | ||||
| func mustLabelMatcher(mt labels.MatchType, name, val string) *labels.Matcher { | ||||
|  | @ -2803,14 +2803,14 @@ func TestParseSeries(t *testing.T) { | |||
| 		metric, vals, err := ParseSeriesDesc(test.input) | ||||
| 
 | ||||
| 		// Unexpected errors are always caused by a bug.
 | ||||
| 		assert.NotEqual(t, err, errUnexpected, "unexpected error occurred") | ||||
| 		require.NotEqual(t, err, errUnexpected, "unexpected error occurred") | ||||
| 
 | ||||
| 		if !test.fail { | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, test.expectedMetric, metric, "error on input '%s'", test.input) | ||||
| 			assert.Equal(t, test.expectedValues, vals, "error in input '%s'", test.input) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, test.expectedMetric, metric, "error on input '%s'", test.input) | ||||
| 			require.Equal(t, test.expectedValues, vals, "error in input '%s'", test.input) | ||||
| 		} else { | ||||
| 			assert.Error(t, err) | ||||
| 			require.Error(t, err) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -2820,7 +2820,7 @@ func TestRecoverParserRuntime(t *testing.T) { | |||
| 	var err error | ||||
| 
 | ||||
| 	defer func() { | ||||
| 		assert.Equal(t, errUnexpected, err) | ||||
| 		require.Equal(t, errUnexpected, err) | ||||
| 	}() | ||||
| 	defer p.recover(&err) | ||||
| 	// Cause a runtime panic.
 | ||||
|  | @ -2836,7 +2836,7 @@ func TestRecoverParserError(t *testing.T) { | |||
| 	e := errors.New("custom error") | ||||
| 
 | ||||
| 	defer func() { | ||||
| 		assert.Equal(t, e.Error(), err.Error()) | ||||
| 		require.Equal(t, e.Error(), err.Error()) | ||||
| 	}() | ||||
| 	defer p.recover(&err) | ||||
| 
 | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ package parser | |||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestExprString(t *testing.T) { | ||||
|  | @ -102,13 +102,13 @@ func TestExprString(t *testing.T) { | |||
| 
 | ||||
| 	for _, test := range inputs { | ||||
| 		expr, err := ParseExpr(test.in) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		exp := test.in | ||||
| 		if test.out != "" { | ||||
| 			exp = test.out | ||||
| 		} | ||||
| 
 | ||||
| 		assert.Equal(t, exp, expr.String()) | ||||
| 		require.Equal(t, exp, expr.String()) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -17,18 +17,18 @@ import ( | |||
| 	"path/filepath" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestEvaluations(t *testing.T) { | ||||
| 	files, err := filepath.Glob("testdata/*.test") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	for _, fn := range files { | ||||
| 		t.Run(fn, func(t *testing.T) { | ||||
| 			test, err := newTestFromFile(t, fn) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.NoError(t, test.Run()) | ||||
| 			require.NoError(t, err) | ||||
| 			require.NoError(t, test.Run()) | ||||
| 
 | ||||
| 			test.Close() | ||||
| 		}) | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 	"regexp" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestQueryLogging(t *testing.T) { | ||||
|  | @ -109,18 +109,18 @@ func TestIndexReuse(t *testing.T) { | |||
| 
 | ||||
| func TestMMapFile(t *testing.T) { | ||||
| 	file, err := ioutil.TempFile("", "mmapedFile") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	filename := file.Name() | ||||
| 	defer os.Remove(filename) | ||||
| 
 | ||||
| 	fileAsBytes, err := getMMapedFile(filename, 2, nil) | ||||
| 
 | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	copy(fileAsBytes, "ab") | ||||
| 
 | ||||
| 	f, err := os.Open(filename) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	bytes := make([]byte, 4) | ||||
| 	n, err := f.Read(bytes) | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ import ( | |||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| ) | ||||
|  | @ -110,12 +110,12 @@ func TestLazyLoader_WithSamplesTill(t *testing.T) { | |||
| 
 | ||||
| 	for _, c := range cases { | ||||
| 		suite, err := NewLazyLoader(t, c.loadString) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		defer suite.Close() | ||||
| 
 | ||||
| 		for _, tc := range c.testCases { | ||||
| 			suite.WithSamplesTill(tc.ts, func(err error) { | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				if tc.checkOnlyError { | ||||
| 					return | ||||
| 				} | ||||
|  | @ -123,20 +123,20 @@ func TestLazyLoader_WithSamplesTill(t *testing.T) { | |||
| 				// Check the series.
 | ||||
| 				queryable := suite.Queryable() | ||||
| 				querier, err := queryable.Querier(suite.Context(), math.MinInt64, math.MaxInt64) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				for _, s := range tc.series { | ||||
| 					var matchers []*labels.Matcher | ||||
| 					for _, label := range s.Metric { | ||||
| 						m, err := labels.NewMatcher(labels.MatchEqual, label.Name, label.Value) | ||||
| 						assert.NoError(t, err) | ||||
| 						require.NoError(t, err) | ||||
| 						matchers = append(matchers, m) | ||||
| 					} | ||||
| 
 | ||||
| 					// Get the series for the matcher.
 | ||||
| 					ss := querier.Select(false, nil, matchers...) | ||||
| 					assert.True(t, ss.Next()) | ||||
| 					require.True(t, ss.Next()) | ||||
| 					storageSeries := ss.At() | ||||
| 					assert.False(t, ss.Next(), "Expecting only 1 series") | ||||
| 					require.False(t, ss.Next(), "Expecting only 1 series") | ||||
| 
 | ||||
| 					// Convert `storage.Series` to `promql.Series`.
 | ||||
| 					got := Series{ | ||||
|  | @ -147,9 +147,9 @@ func TestLazyLoader_WithSamplesTill(t *testing.T) { | |||
| 						t, v := it.At() | ||||
| 						got.Points = append(got.Points, Point{T: t, V: v}) | ||||
| 					} | ||||
| 					assert.NoError(t, it.Err()) | ||||
| 					require.NoError(t, it.Err()) | ||||
| 
 | ||||
| 					assert.Equal(t, s, got) | ||||
| 					require.Equal(t, s, got) | ||||
| 				} | ||||
| 			}) | ||||
| 		} | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/pkg/timestamp" | ||||
|  | @ -31,7 +31,7 @@ import ( | |||
| 
 | ||||
| func TestAlertingRuleHTMLSnippet(t *testing.T) { | ||||
| 	expr, err := parser.ParseExpr(`foo{html="<b>BOLD<b>"}`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	rule := NewAlertingRule("testrule", expr, 0, labels.FromStrings("html", "<b>BOLD</b>"), labels.FromStrings("html", "<b>BOLD</b>"), nil, false, nil) | ||||
| 
 | ||||
| 	const want = template.HTML(`alert: <a href="/test/prefix/graph?g0.expr=ALERTS%7Balertname%3D%22testrule%22%7D&g0.tab=1">testrule</a> | ||||
|  | @ -43,7 +43,7 @@ annotations: | |||
| `) | ||||
| 
 | ||||
| 	got := rule.HTMLSnippet("/test/prefix") | ||||
| 	assert.Equal(t, want, got, "incorrect HTML snippet; want:\n\n|%v|\n\ngot:\n\n|%v|", want, got) | ||||
| 	require.Equal(t, want, got, "incorrect HTML snippet; want:\n\n|%v|\n\ngot:\n\n|%v|", want, got) | ||||
| } | ||||
| 
 | ||||
| func TestAlertingRuleState(t *testing.T) { | ||||
|  | @ -82,7 +82,7 @@ func TestAlertingRuleState(t *testing.T) { | |||
| 		rule := NewAlertingRule(test.name, nil, 0, nil, nil, nil, true, nil) | ||||
| 		rule.active = test.active | ||||
| 		got := rule.State() | ||||
| 		assert.Equal(t, test.want, got, "test case %d unexpected AlertState, want:%d got:%d", i, test.want, got) | ||||
| 		require.Equal(t, test.want, got, "test case %d unexpected AlertState, want:%d got:%d", i, test.want, got) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -91,13 +91,13 @@ func TestAlertingRuleLabelsUpdate(t *testing.T) { | |||
| 		load 1m | ||||
| 			http_requests{job="app-server", instance="0"}	75 85 70 70 | ||||
| 	`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer suite.Close() | ||||
| 
 | ||||
| 	assert.NoError(t, suite.Run()) | ||||
| 	require.NoError(t, suite.Run()) | ||||
| 
 | ||||
| 	expr, err := parser.ParseExpr(`http_requests < 100`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	rule := NewAlertingRule( | ||||
| 		"HTTPRequestRateLow", | ||||
|  | @ -171,7 +171,7 @@ func TestAlertingRuleLabelsUpdate(t *testing.T) { | |||
| 		evalTime := baseTime.Add(time.Duration(i) * time.Minute) | ||||
| 		result[0].Point.T = timestamp.FromTime(evalTime) | ||||
| 		res, err := rule.Eval(suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		var filteredRes promql.Vector // After removing 'ALERTS_FOR_STATE' samples.
 | ||||
| 		for _, smpl := range res { | ||||
|  | @ -180,11 +180,11 @@ func TestAlertingRuleLabelsUpdate(t *testing.T) { | |||
| 				filteredRes = append(filteredRes, smpl) | ||||
| 			} else { | ||||
| 				// If not 'ALERTS', it has to be 'ALERTS_FOR_STATE'.
 | ||||
| 				assert.Equal(t, "ALERTS_FOR_STATE", smplName) | ||||
| 				require.Equal(t, "ALERTS_FOR_STATE", smplName) | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		assert.Equal(t, result, filteredRes) | ||||
| 		require.Equal(t, result, filteredRes) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -193,13 +193,13 @@ func TestAlertingRuleExternalLabelsInTemplate(t *testing.T) { | |||
| 		load 1m | ||||
| 			http_requests{job="app-server", instance="0"}	75 85 70 70 | ||||
| 	`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer suite.Close() | ||||
| 
 | ||||
| 	assert.NoError(t, suite.Run()) | ||||
| 	require.NoError(t, suite.Run()) | ||||
| 
 | ||||
| 	expr, err := parser.ParseExpr(`http_requests < 100`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	ruleWithoutExternalLabels := NewAlertingRule( | ||||
| 		"ExternalLabelDoesNotExist", | ||||
|  | @ -252,32 +252,32 @@ func TestAlertingRuleExternalLabelsInTemplate(t *testing.T) { | |||
| 	res, err := ruleWithoutExternalLabels.Eval( | ||||
| 		suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, | ||||
| 	) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	for _, smpl := range res { | ||||
| 		smplName := smpl.Metric.Get("__name__") | ||||
| 		if smplName == "ALERTS" { | ||||
| 			filteredRes = append(filteredRes, smpl) | ||||
| 		} else { | ||||
| 			// If not 'ALERTS', it has to be 'ALERTS_FOR_STATE'.
 | ||||
| 			assert.Equal(t, "ALERTS_FOR_STATE", smplName) | ||||
| 			require.Equal(t, "ALERTS_FOR_STATE", smplName) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	res, err = ruleWithExternalLabels.Eval( | ||||
| 		suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, | ||||
| 	) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	for _, smpl := range res { | ||||
| 		smplName := smpl.Metric.Get("__name__") | ||||
| 		if smplName == "ALERTS" { | ||||
| 			filteredRes = append(filteredRes, smpl) | ||||
| 		} else { | ||||
| 			// If not 'ALERTS', it has to be 'ALERTS_FOR_STATE'.
 | ||||
| 			assert.Equal(t, "ALERTS_FOR_STATE", smplName) | ||||
| 			require.Equal(t, "ALERTS_FOR_STATE", smplName) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, result, filteredRes) | ||||
| 	require.Equal(t, result, filteredRes) | ||||
| } | ||||
| 
 | ||||
| func TestAlertingRuleEmptyLabelFromTemplate(t *testing.T) { | ||||
|  | @ -285,13 +285,13 @@ func TestAlertingRuleEmptyLabelFromTemplate(t *testing.T) { | |||
| 		load 1m | ||||
| 			http_requests{job="app-server", instance="0"}	75 85 70 70 | ||||
| 	`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer suite.Close() | ||||
| 
 | ||||
| 	assert.NoError(t, suite.Run()) | ||||
| 	require.NoError(t, suite.Run()) | ||||
| 
 | ||||
| 	expr, err := parser.ParseExpr(`http_requests < 100`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	rule := NewAlertingRule( | ||||
| 		"EmptyLabel", | ||||
|  | @ -322,17 +322,17 @@ func TestAlertingRuleEmptyLabelFromTemplate(t *testing.T) { | |||
| 	res, err := rule.Eval( | ||||
| 		suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, | ||||
| 	) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	for _, smpl := range res { | ||||
| 		smplName := smpl.Metric.Get("__name__") | ||||
| 		if smplName == "ALERTS" { | ||||
| 			filteredRes = append(filteredRes, smpl) | ||||
| 		} else { | ||||
| 			// If not 'ALERTS', it has to be 'ALERTS_FOR_STATE'.
 | ||||
| 			assert.Equal(t, "ALERTS_FOR_STATE", smplName) | ||||
| 			require.Equal(t, "ALERTS_FOR_STATE", smplName) | ||||
| 		} | ||||
| 	} | ||||
| 	assert.Equal(t, result, filteredRes) | ||||
| 	require.Equal(t, result, filteredRes) | ||||
| } | ||||
| 
 | ||||
| func TestAlertingRuleDuplicate(t *testing.T) { | ||||
|  | @ -363,6 +363,6 @@ func TestAlertingRuleDuplicate(t *testing.T) { | |||
| 		true, log.NewNopLogger(), | ||||
| 	) | ||||
| 	_, err := rule.Eval(ctx, now, EngineQueryFunc(engine, storage), nil) | ||||
| 	assert.Error(t, err) | ||||
| 	assert.EqualError(t, err, "vector contains metrics with the same labelset after applying alert labels") | ||||
| 	require.Error(t, err) | ||||
| 	require.EqualError(t, err, "vector contains metrics with the same labelset after applying alert labels") | ||||
| } | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ import ( | |||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/goleak" | ||||
| 	yaml "gopkg.in/yaml.v2" | ||||
| 
 | ||||
|  | @ -50,14 +50,14 @@ func TestAlertingRule(t *testing.T) { | |||
| 			http_requests{job="app-server", instance="0", group="canary", severity="overwrite-me"}	75 85  95 105 105  95  85 | ||||
| 			http_requests{job="app-server", instance="1", group="canary", severity="overwrite-me"}	80 90 100 110 120 130 140 | ||||
| 	`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer suite.Close() | ||||
| 
 | ||||
| 	err = suite.Run() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	expr, err := parser.ParseExpr(`http_requests{group="canary", job="app-server"} < 100`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	rule := NewAlertingRule( | ||||
| 		"HTTPRequestRateLow", | ||||
|  | @ -157,7 +157,7 @@ func TestAlertingRule(t *testing.T) { | |||
| 		evalTime := baseTime.Add(test.time) | ||||
| 
 | ||||
| 		res, err := rule.Eval(suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		var filteredRes promql.Vector // After removing 'ALERTS_FOR_STATE' samples.
 | ||||
| 		for _, smpl := range res { | ||||
|  | @ -166,21 +166,21 @@ func TestAlertingRule(t *testing.T) { | |||
| 				filteredRes = append(filteredRes, smpl) | ||||
| 			} else { | ||||
| 				// If not 'ALERTS', it has to be 'ALERTS_FOR_STATE'.
 | ||||
| 				assert.Equal(t, smplName, "ALERTS_FOR_STATE") | ||||
| 				require.Equal(t, smplName, "ALERTS_FOR_STATE") | ||||
| 			} | ||||
| 		} | ||||
| 		for i := range test.result { | ||||
| 			test.result[i].T = timestamp.FromTime(evalTime) | ||||
| 		} | ||||
| 		assert.Equal(t, len(test.result), len(filteredRes), "%d. Number of samples in expected and actual output don't match (%d vs. %d)", i, len(test.result), len(res)) | ||||
| 		require.Equal(t, len(test.result), len(filteredRes), "%d. Number of samples in expected and actual output don't match (%d vs. %d)", i, len(test.result), len(res)) | ||||
| 
 | ||||
| 		sort.Slice(filteredRes, func(i, j int) bool { | ||||
| 			return labels.Compare(filteredRes[i].Metric, filteredRes[j].Metric) < 0 | ||||
| 		}) | ||||
| 		assert.Equal(t, test.result, filteredRes) | ||||
| 		require.Equal(t, test.result, filteredRes) | ||||
| 
 | ||||
| 		for _, aa := range rule.ActiveAlerts() { | ||||
| 			assert.Zero(t, aa.Labels.Get(model.MetricNameLabel), "%s label set on active alert: %s", model.MetricNameLabel, aa.Labels) | ||||
| 			require.Zero(t, aa.Labels.Get(model.MetricNameLabel), "%s label set on active alert: %s", model.MetricNameLabel, aa.Labels) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -191,14 +191,14 @@ func TestForStateAddSamples(t *testing.T) { | |||
| 			http_requests{job="app-server", instance="0", group="canary", severity="overwrite-me"}	75 85  95 105 105  95  85 | ||||
| 			http_requests{job="app-server", instance="1", group="canary", severity="overwrite-me"}	80 90 100 110 120 130 140 | ||||
| 	`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer suite.Close() | ||||
| 
 | ||||
| 	err = suite.Run() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	expr, err := parser.ParseExpr(`http_requests{group="canary", job="app-server"} < 100`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	rule := NewAlertingRule( | ||||
| 		"HTTPRequestRateLow", | ||||
|  | @ -306,7 +306,7 @@ func TestForStateAddSamples(t *testing.T) { | |||
| 		} | ||||
| 
 | ||||
| 		res, err := rule.Eval(suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		var filteredRes promql.Vector // After removing 'ALERTS' samples.
 | ||||
| 		for _, smpl := range res { | ||||
|  | @ -315,7 +315,7 @@ func TestForStateAddSamples(t *testing.T) { | |||
| 				filteredRes = append(filteredRes, smpl) | ||||
| 			} else { | ||||
| 				// If not 'ALERTS_FOR_STATE', it has to be 'ALERTS'.
 | ||||
| 				assert.Equal(t, smplName, "ALERTS") | ||||
| 				require.Equal(t, smplName, "ALERTS") | ||||
| 			} | ||||
| 		} | ||||
| 		for i := range test.result { | ||||
|  | @ -325,15 +325,15 @@ func TestForStateAddSamples(t *testing.T) { | |||
| 				test.result[i].V = forState | ||||
| 			} | ||||
| 		} | ||||
| 		assert.Equal(t, len(test.result), len(filteredRes), "%d. Number of samples in expected and actual output don't match (%d vs. %d)", i, len(test.result), len(res)) | ||||
| 		require.Equal(t, len(test.result), len(filteredRes), "%d. Number of samples in expected and actual output don't match (%d vs. %d)", i, len(test.result), len(res)) | ||||
| 
 | ||||
| 		sort.Slice(filteredRes, func(i, j int) bool { | ||||
| 			return labels.Compare(filteredRes[i].Metric, filteredRes[j].Metric) < 0 | ||||
| 		}) | ||||
| 		assert.Equal(t, test.result, filteredRes) | ||||
| 		require.Equal(t, test.result, filteredRes) | ||||
| 
 | ||||
| 		for _, aa := range rule.ActiveAlerts() { | ||||
| 			assert.Zero(t, aa.Labels.Get(model.MetricNameLabel), "%s label set on active alert: %s", model.MetricNameLabel, aa.Labels) | ||||
| 			require.Zero(t, aa.Labels.Get(model.MetricNameLabel), "%s label set on active alert: %s", model.MetricNameLabel, aa.Labels) | ||||
| 		} | ||||
| 
 | ||||
| 	} | ||||
|  | @ -352,14 +352,14 @@ func TestForStateRestore(t *testing.T) { | |||
| 		http_requests{job="app-server", instance="0", group="canary", severity="overwrite-me"}	75  85 50 0 0 25 0 0 40 0 120 | ||||
| 		http_requests{job="app-server", instance="1", group="canary", severity="overwrite-me"}	125 90 60 0 0 25 0 0 40 0 130 | ||||
| 	`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer suite.Close() | ||||
| 
 | ||||
| 	err = suite.Run() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	expr, err := parser.ParseExpr(`http_requests{group="canary", job="app-server"} < 100`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	opts := &ManagerOptions{ | ||||
| 		QueryFunc:       EngineQueryFunc(suite.QueryEngine(), suite.Storage()), | ||||
|  | @ -402,7 +402,7 @@ func TestForStateRestore(t *testing.T) { | |||
| 
 | ||||
| 	exp := rule.ActiveAlerts() | ||||
| 	for _, aa := range exp { | ||||
| 		assert.Zero(t, aa.Labels.Get(model.MetricNameLabel), "%s label set on active alert: %s", model.MetricNameLabel, aa.Labels) | ||||
| 		require.Zero(t, aa.Labels.Get(model.MetricNameLabel), "%s label set on active alert: %s", model.MetricNameLabel, aa.Labels) | ||||
| 	} | ||||
| 	sort.Slice(exp, func(i, j int) bool { | ||||
| 		return labels.Compare(exp[i].Labels, exp[j].Labels) < 0 | ||||
|  | @ -466,7 +466,7 @@ func TestForStateRestore(t *testing.T) { | |||
| 
 | ||||
| 		got := newRule.ActiveAlerts() | ||||
| 		for _, aa := range got { | ||||
| 			assert.Zero(t, aa.Labels.Get(model.MetricNameLabel), "%s label set on active alert: %s", model.MetricNameLabel, aa.Labels) | ||||
| 			require.Zero(t, aa.Labels.Get(model.MetricNameLabel), "%s label set on active alert: %s", model.MetricNameLabel, aa.Labels) | ||||
| 		} | ||||
| 		sort.Slice(got, func(i, j int) bool { | ||||
| 			return labels.Compare(got[i].Labels, got[j].Labels) < 0 | ||||
|  | @ -474,27 +474,27 @@ func TestForStateRestore(t *testing.T) { | |||
| 
 | ||||
| 		// Checking if we have restored it correctly.
 | ||||
| 		if tst.noRestore { | ||||
| 			assert.Equal(t, tst.num, len(got)) | ||||
| 			require.Equal(t, tst.num, len(got)) | ||||
| 			for _, e := range got { | ||||
| 				assert.Equal(t, e.ActiveAt, restoreTime) | ||||
| 				require.Equal(t, e.ActiveAt, restoreTime) | ||||
| 			} | ||||
| 		} else if tst.gracePeriod { | ||||
| 			assert.Equal(t, tst.num, len(got)) | ||||
| 			require.Equal(t, tst.num, len(got)) | ||||
| 			for _, e := range got { | ||||
| 				assert.Equal(t, opts.ForGracePeriod, e.ActiveAt.Add(alertForDuration).Sub(restoreTime)) | ||||
| 				require.Equal(t, opts.ForGracePeriod, e.ActiveAt.Add(alertForDuration).Sub(restoreTime)) | ||||
| 			} | ||||
| 		} else { | ||||
| 			exp := tst.alerts | ||||
| 			assert.Equal(t, len(exp), len(got)) | ||||
| 			require.Equal(t, len(exp), len(got)) | ||||
| 			sortAlerts(exp) | ||||
| 			sortAlerts(got) | ||||
| 			for i, e := range exp { | ||||
| 				assert.Equal(t, e.Labels, got[i].Labels) | ||||
| 				require.Equal(t, e.Labels, got[i].Labels) | ||||
| 
 | ||||
| 				// Difference in time should be within 1e6 ns, i.e. 1ms
 | ||||
| 				// (due to conversion between ns & ms, float64 & int64).
 | ||||
| 				activeAtDiff := float64(e.ActiveAt.Unix() + int64(tst.downDuration/time.Second) - got[i].ActiveAt.Unix()) | ||||
| 				assert.Equal(t, 0.0, math.Abs(activeAtDiff), "'for' state restored time is wrong") | ||||
| 				require.Equal(t, 0.0, math.Abs(activeAtDiff), "'for' state restored time is wrong") | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | @ -535,7 +535,7 @@ func TestStaleness(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	expr, err := parser.ParseExpr("a + 1") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	rule := NewRecordingRule("a_plus_one", expr, labels.Labels{}) | ||||
| 	group := NewGroup(GroupOptions{ | ||||
| 		Name:          "default", | ||||
|  | @ -552,7 +552,7 @@ func TestStaleness(t *testing.T) { | |||
| 	app.Add(labels.FromStrings(model.MetricNameLabel, "a"), 2000, math.Float64frombits(value.StaleNaN)) | ||||
| 
 | ||||
| 	err = app.Commit() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	ctx := context.Background() | ||||
| 
 | ||||
|  | @ -562,31 +562,31 @@ func TestStaleness(t *testing.T) { | |||
| 	group.Eval(ctx, time.Unix(2, 0)) | ||||
| 
 | ||||
| 	querier, err := st.Querier(context.Background(), 0, 2000) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer querier.Close() | ||||
| 
 | ||||
| 	matcher, err := labels.NewMatcher(labels.MatchEqual, model.MetricNameLabel, "a_plus_one") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	set := querier.Select(false, nil, matcher) | ||||
| 	samples, err := readSeriesSet(set) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	metric := labels.FromStrings(model.MetricNameLabel, "a_plus_one").String() | ||||
| 	metricSample, ok := samples[metric] | ||||
| 
 | ||||
| 	assert.True(t, ok, "Series %s not returned.", metric) | ||||
| 	assert.True(t, value.IsStaleNaN(metricSample[2].V), "Appended second sample not as expected. Wanted: stale NaN Got: %x", math.Float64bits(metricSample[2].V)) | ||||
| 	metricSample[2].V = 42 // assert.Equal cannot handle NaN.
 | ||||
| 	require.True(t, ok, "Series %s not returned.", metric) | ||||
| 	require.True(t, value.IsStaleNaN(metricSample[2].V), "Appended second sample not as expected. Wanted: stale NaN Got: %x", math.Float64bits(metricSample[2].V)) | ||||
| 	metricSample[2].V = 42 // require.Equal cannot handle NaN.
 | ||||
| 
 | ||||
| 	want := map[string][]promql.Point{ | ||||
| 		metric: {{T: 0, V: 2}, {T: 1000, V: 3}, {T: 2000, V: 42}}, | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, want, samples) | ||||
| 	require.Equal(t, want, samples) | ||||
| } | ||||
| 
 | ||||
| // Convert a SeriesSet into a form usable with assert.Equal.
 | ||||
| // Convert a SeriesSet into a form usable with require.Equal.
 | ||||
| func readSeriesSet(ss storage.SeriesSet) (map[string][]promql.Point, error) { | ||||
| 	result := map[string][]promql.Point{} | ||||
| 
 | ||||
|  | @ -654,11 +654,11 @@ func TestCopyState(t *testing.T) { | |||
| 		{"a2": labels.Labels{{Name: "l2", Value: "v1"}}}, | ||||
| 		nil, | ||||
| 	} | ||||
| 	assert.Equal(t, want, newGroup.seriesInPreviousEval) | ||||
| 	assert.Equal(t, oldGroup.rules[0], newGroup.rules[3]) | ||||
| 	assert.Equal(t, oldGroup.evaluationTime, newGroup.evaluationTime) | ||||
| 	assert.Equal(t, oldGroup.lastEvaluation, newGroup.lastEvaluation) | ||||
| 	assert.Equal(t, []labels.Labels{{{Name: "l1", Value: "v3"}}}, newGroup.staleSeries) | ||||
| 	require.Equal(t, want, newGroup.seriesInPreviousEval) | ||||
| 	require.Equal(t, oldGroup.rules[0], newGroup.rules[3]) | ||||
| 	require.Equal(t, oldGroup.evaluationTime, newGroup.evaluationTime) | ||||
| 	require.Equal(t, oldGroup.lastEvaluation, newGroup.lastEvaluation) | ||||
| 	require.Equal(t, []labels.Labels{{{Name: "l1", Value: "v3"}}}, newGroup.staleSeries) | ||||
| } | ||||
| 
 | ||||
| func TestDeletedRuleMarkedStale(t *testing.T) { | ||||
|  | @ -684,21 +684,21 @@ func TestDeletedRuleMarkedStale(t *testing.T) { | |||
| 	newGroup.Eval(context.Background(), time.Unix(0, 0)) | ||||
| 
 | ||||
| 	querier, err := st.Querier(context.Background(), 0, 2000) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer querier.Close() | ||||
| 
 | ||||
| 	matcher, err := labels.NewMatcher(labels.MatchEqual, "l1", "v1") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	set := querier.Select(false, nil, matcher) | ||||
| 	samples, err := readSeriesSet(set) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	metric := labels.FromStrings("l1", "v1").String() | ||||
| 	metricSample, ok := samples[metric] | ||||
| 
 | ||||
| 	assert.True(t, ok, "Series %s not returned.", metric) | ||||
| 	assert.True(t, value.IsStaleNaN(metricSample[0].V), "Appended sample not as expected. Wanted: stale NaN Got: %x", math.Float64bits(metricSample[0].V)) | ||||
| 	require.True(t, ok, "Series %s not returned.", metric) | ||||
| 	require.True(t, value.IsStaleNaN(metricSample[0].V), "Appended sample not as expected. Wanted: stale NaN Got: %x", math.Float64bits(metricSample[0].V)) | ||||
| } | ||||
| 
 | ||||
| func TestUpdate(t *testing.T) { | ||||
|  | @ -726,8 +726,8 @@ func TestUpdate(t *testing.T) { | |||
| 	defer ruleManager.Stop() | ||||
| 
 | ||||
| 	err := ruleManager.Update(10*time.Second, files, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Greater(t, len(ruleManager.groups), 0, "expected non-empty rule groups") | ||||
| 	require.NoError(t, err) | ||||
| 	require.Greater(t, len(ruleManager.groups), 0, "expected non-empty rule groups") | ||||
| 	ogs := map[string]*Group{} | ||||
| 	for h, g := range ruleManager.groups { | ||||
| 		g.seriesInPreviousEval = []map[string]labels.Labels{ | ||||
|  | @ -737,26 +737,26 @@ func TestUpdate(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	err = ruleManager.Update(10*time.Second, files, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	for h, g := range ruleManager.groups { | ||||
| 		for _, actual := range g.seriesInPreviousEval { | ||||
| 			assert.Equal(t, expected, actual) | ||||
| 			require.Equal(t, expected, actual) | ||||
| 		} | ||||
| 		// Groups are the same because of no updates.
 | ||||
| 		assert.Equal(t, ogs[h], g) | ||||
| 		require.Equal(t, ogs[h], g) | ||||
| 	} | ||||
| 
 | ||||
| 	// Groups will be recreated if updated.
 | ||||
| 	rgs, errs := rulefmt.ParseFile("fixtures/rules.yaml") | ||||
| 	assert.Equal(t, 0, len(errs), "file parsing failures") | ||||
| 	require.Equal(t, 0, len(errs), "file parsing failures") | ||||
| 
 | ||||
| 	tmpFile, err := ioutil.TempFile("", "rules.test.*.yaml") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer os.Remove(tmpFile.Name()) | ||||
| 	defer tmpFile.Close() | ||||
| 
 | ||||
| 	err = ruleManager.Update(10*time.Second, []string{tmpFile.Name()}, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	for h, g := range ruleManager.groups { | ||||
| 		ogs[h] = g | ||||
|  | @ -822,12 +822,12 @@ func formatRules(r *rulefmt.RuleGroups) ruleGroupsTest { | |||
| 
 | ||||
| func reloadAndValidate(rgs *rulefmt.RuleGroups, t *testing.T, tmpFile *os.File, ruleManager *Manager, expected map[string]labels.Labels, ogs map[string]*Group) { | ||||
| 	bs, err := yaml.Marshal(formatRules(rgs)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	tmpFile.Seek(0, 0) | ||||
| 	_, err = tmpFile.Write(bs) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	err = ruleManager.Update(10*time.Second, []string{tmpFile.Name()}, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	for h, g := range ruleManager.groups { | ||||
| 		if ogs[h] == g { | ||||
| 			t.Fail() | ||||
|  | @ -861,7 +861,7 @@ func TestNotify(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	expr, err := parser.ParseExpr("a > 1") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	rule := NewAlertingRule("aTooHigh", expr, 0, labels.Labels{}, labels.Labels{}, nil, true, log.NewNopLogger()) | ||||
| 	group := NewGroup(GroupOptions{ | ||||
| 		Name:          "alert", | ||||
|  | @ -878,26 +878,26 @@ func TestNotify(t *testing.T) { | |||
| 	app.Add(labels.FromStrings(model.MetricNameLabel, "a"), 6000, 0) | ||||
| 
 | ||||
| 	err = app.Commit() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	ctx := context.Background() | ||||
| 
 | ||||
| 	// Alert sent right away
 | ||||
| 	group.Eval(ctx, time.Unix(1, 0)) | ||||
| 	assert.Equal(t, 1, len(lastNotified)) | ||||
| 	assert.NotZero(t, lastNotified[0].ValidUntil, "ValidUntil should not be zero") | ||||
| 	require.Equal(t, 1, len(lastNotified)) | ||||
| 	require.NotZero(t, lastNotified[0].ValidUntil, "ValidUntil should not be zero") | ||||
| 
 | ||||
| 	// Alert is not sent 1s later
 | ||||
| 	group.Eval(ctx, time.Unix(2, 0)) | ||||
| 	assert.Equal(t, 0, len(lastNotified)) | ||||
| 	require.Equal(t, 0, len(lastNotified)) | ||||
| 
 | ||||
| 	// Alert is resent at t=5s
 | ||||
| 	group.Eval(ctx, time.Unix(5, 0)) | ||||
| 	assert.Equal(t, 1, len(lastNotified)) | ||||
| 	require.Equal(t, 1, len(lastNotified)) | ||||
| 
 | ||||
| 	// Resolution alert sent right away
 | ||||
| 	group.Eval(ctx, time.Unix(6, 0)) | ||||
| 	assert.Equal(t, 1, len(lastNotified)) | ||||
| 	require.Equal(t, 1, len(lastNotified)) | ||||
| } | ||||
| 
 | ||||
| func TestMetricsUpdate(t *testing.T) { | ||||
|  | @ -934,7 +934,7 @@ func TestMetricsUpdate(t *testing.T) { | |||
| 
 | ||||
| 	countMetrics := func() int { | ||||
| 		ms, err := registry.Gather() | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		var metrics int | ||||
| 		for _, m := range ms { | ||||
| 			s := m.GetName() | ||||
|  | @ -972,9 +972,9 @@ func TestMetricsUpdate(t *testing.T) { | |||
| 
 | ||||
| 	for i, c := range cases { | ||||
| 		err := ruleManager.Update(time.Second, c.files, nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		time.Sleep(2 * time.Second) | ||||
| 		assert.Equal(t, c.metrics, countMetrics(), "test %d: invalid count of metrics", i) | ||||
| 		require.Equal(t, c.metrics, countMetrics(), "test %d: invalid count of metrics", i) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -1046,14 +1046,14 @@ func TestGroupStalenessOnRemoval(t *testing.T) { | |||
| 	var totalStaleNaN int | ||||
| 	for i, c := range cases { | ||||
| 		err := ruleManager.Update(time.Second, c.files, nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		time.Sleep(3 * time.Second) | ||||
| 		totalStaleNaN += c.staleNaN | ||||
| 		assert.Equal(t, totalStaleNaN, countStaleNaN(t, storage), "test %d/%q: invalid count of staleness markers", i, c.files) | ||||
| 		require.Equal(t, totalStaleNaN, countStaleNaN(t, storage), "test %d/%q: invalid count of staleness markers", i, c.files) | ||||
| 	} | ||||
| 	ruleManager.Stop() | ||||
| 	stopped = true | ||||
| 	assert.Equal(t, totalStaleNaN, countStaleNaN(t, storage), "invalid count of staleness markers after stopping the engine") | ||||
| 	require.Equal(t, totalStaleNaN, countStaleNaN(t, storage), "invalid count of staleness markers after stopping the engine") | ||||
| } | ||||
| 
 | ||||
| func TestMetricsStalenessOnManagerShutdown(t *testing.T) { | ||||
|  | @ -1089,34 +1089,34 @@ func TestMetricsStalenessOnManagerShutdown(t *testing.T) { | |||
| 
 | ||||
| 	err := ruleManager.Update(2*time.Second, files, nil) | ||||
| 	time.Sleep(4 * time.Second) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	start := time.Now() | ||||
| 	err = ruleManager.Update(3*time.Second, files[:0], nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	ruleManager.Stop() | ||||
| 	stopped = true | ||||
| 	assert.True(t, time.Since(start) < 1*time.Second, "rule manager does not stop early") | ||||
| 	require.True(t, time.Since(start) < 1*time.Second, "rule manager does not stop early") | ||||
| 	time.Sleep(5 * time.Second) | ||||
| 	assert.Equal(t, 0, countStaleNaN(t, storage), "invalid count of staleness markers after stopping the engine") | ||||
| 	require.Equal(t, 0, countStaleNaN(t, storage), "invalid count of staleness markers after stopping the engine") | ||||
| } | ||||
| 
 | ||||
| func countStaleNaN(t *testing.T, st storage.Storage) int { | ||||
| 	var c int | ||||
| 	querier, err := st.Querier(context.Background(), 0, time.Now().Unix()*1000) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer querier.Close() | ||||
| 
 | ||||
| 	matcher, err := labels.NewMatcher(labels.MatchEqual, model.MetricNameLabel, "test_2") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	set := querier.Select(false, nil, matcher) | ||||
| 	samples, err := readSeriesSet(set) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	metric := labels.FromStrings(model.MetricNameLabel, "test_2").String() | ||||
| 	metricSample, ok := samples[metric] | ||||
| 
 | ||||
| 	assert.True(t, ok, "Series %s not returned.", metric) | ||||
| 	require.True(t, ok, "Series %s not returned.", metric) | ||||
| 	for _, s := range metricSample { | ||||
| 		if value.IsStaleNaN(s.V) { | ||||
| 			c++ | ||||
|  | @ -1160,6 +1160,6 @@ func TestGroupHasAlertingRules(t *testing.T) { | |||
| 
 | ||||
| 	for i, test := range tests { | ||||
| 		got := test.group.HasAlertingRules() | ||||
| 		assert.Equal(t, test.want, got, "test case %d failed, expected:%t got:%t", i, test.want, got) | ||||
| 		require.Equal(t, test.want, got, "test case %d failed, expected:%t got:%t", i, test.want, got) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ import ( | |||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/pkg/timestamp" | ||||
|  | @ -74,14 +74,14 @@ func TestRuleEval(t *testing.T) { | |||
| 	for _, test := range suite { | ||||
| 		rule := NewRecordingRule(test.name, test.expr, test.labels) | ||||
| 		result, err := rule.Eval(ctx, now, EngineQueryFunc(engine, storage), nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, test.result, result) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, test.result, result) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestRecordingRuleHTMLSnippet(t *testing.T) { | ||||
| 	expr, err := parser.ParseExpr(`foo{html="<b>BOLD<b>"}`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	rule := NewRecordingRule("testrule", expr, labels.FromStrings("html", "<b>BOLD</b>")) | ||||
| 
 | ||||
| 	const want = template.HTML(`record: <a href="/test/prefix/graph?g0.expr=testrule&g0.tab=1">testrule</a> | ||||
|  | @ -91,7 +91,7 @@ labels: | |||
| `) | ||||
| 
 | ||||
| 	got := rule.HTMLSnippet("/test/prefix") | ||||
| 	assert.Equal(t, want, got, "incorrect HTML snippet; want:\n\n%s\n\ngot:\n\n%s", want, got) | ||||
| 	require.Equal(t, want, got, "incorrect HTML snippet; want:\n\n%s\n\ngot:\n\n%s", want, got) | ||||
| } | ||||
| 
 | ||||
| // TestRuleEvalDuplicate tests for duplicate labels in recorded metrics, see #5529.
 | ||||
|  | @ -115,6 +115,6 @@ func TestRuleEvalDuplicate(t *testing.T) { | |||
| 	expr, _ := parser.ParseExpr(`vector(0) or label_replace(vector(0),"test","x","","")`) | ||||
| 	rule := NewRecordingRule("foo", expr, labels.FromStrings("test", "test")) | ||||
| 	_, err := rule.Eval(ctx, now, EngineQueryFunc(engine, storage), nil) | ||||
| 	assert.Error(t, err) | ||||
| 	assert.EqualError(t, err, "vector contains metrics with the same labelset after applying rule labels") | ||||
| 	require.Error(t, err) | ||||
| 	require.EqualError(t, err, "vector contains metrics with the same labelset after applying rule labels") | ||||
| } | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	yaml "gopkg.in/yaml.v2" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/config" | ||||
|  | @ -215,13 +215,13 @@ func TestPopulateLabels(t *testing.T) { | |||
| 
 | ||||
| 		res, orig, err := populateLabels(c.in, c.cfg) | ||||
| 		if c.err != "" { | ||||
| 			assert.EqualError(t, err, c.err) | ||||
| 			require.EqualError(t, err, c.err) | ||||
| 		} else { | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		} | ||||
| 		assert.Equal(t, c.in, in) | ||||
| 		assert.Equal(t, c.res, res) | ||||
| 		assert.Equal(t, c.resOrig, orig) | ||||
| 		require.Equal(t, c.in, in) | ||||
| 		require.Equal(t, c.res, res) | ||||
| 		require.Equal(t, c.resOrig, orig) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -365,7 +365,7 @@ func TestManagerTargetsUpdates(t *testing.T) { | |||
| 	m.mtxScrape.Unlock() | ||||
| 
 | ||||
| 	// Make sure all updates have been received.
 | ||||
| 	assert.Equal(t, tgSent, tsetActual) | ||||
| 	require.Equal(t, tgSent, tsetActual) | ||||
| 
 | ||||
| 	select { | ||||
| 	case <-m.triggerReload: | ||||
|  |  | |||
|  | @ -33,7 +33,7 @@ import ( | |||
| 	dto "github.com/prometheus/client_model/go" | ||||
| 	config_util "github.com/prometheus/common/config" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/config" | ||||
| 	"github.com/prometheus/prometheus/discovery/targetgroup" | ||||
|  | @ -135,7 +135,7 @@ func TestDiscoveredLabelsUpdate(t *testing.T) { | |||
| 	} | ||||
| 	sp.sync([]*Target{t2}) | ||||
| 
 | ||||
| 	assert.Equal(t, t2.DiscoveredLabels(), sp.activeTargets[t1.hash()].DiscoveredLabels()) | ||||
| 	require.Equal(t, t2.DiscoveredLabels(), sp.activeTargets[t1.hash()].DiscoveredLabels()) | ||||
| } | ||||
| 
 | ||||
| type testLoop struct { | ||||
|  | @ -228,11 +228,11 @@ func TestScrapePoolStop(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	mtx.Lock() | ||||
| 	assert.Equal(t, numTargets, len(stopped), "Unexpected number of stopped loops") | ||||
| 	require.Equal(t, numTargets, len(stopped), "Unexpected number of stopped loops") | ||||
| 	mtx.Unlock() | ||||
| 
 | ||||
| 	assert.Equal(t, 0, len(sp.activeTargets), "Targets were not cleared on stopping: %d left", len(sp.activeTargets)) | ||||
| 	assert.Equal(t, 0, len(sp.loops), "Loops were not cleared on stopping: %d left", len(sp.loops)) | ||||
| 	require.Equal(t, 0, len(sp.activeTargets), "Targets were not cleared on stopping: %d left", len(sp.activeTargets)) | ||||
| 	require.Equal(t, 0, len(sp.loops), "Loops were not cleared on stopping: %d left", len(sp.loops)) | ||||
| } | ||||
| 
 | ||||
| func TestScrapePoolReload(t *testing.T) { | ||||
|  | @ -250,12 +250,12 @@ func TestScrapePoolReload(t *testing.T) { | |||
| 	newLoop := func(opts scrapeLoopOptions) loop { | ||||
| 		l := &testLoop{} | ||||
| 		l.startFunc = func(interval, timeout time.Duration, errc chan<- error) { | ||||
| 			assert.Equal(t, 3*time.Second, interval, "Unexpected scrape interval") | ||||
| 			assert.Equal(t, 2*time.Second, timeout, "Unexpected scrape timeout") | ||||
| 			require.Equal(t, 3*time.Second, interval, "Unexpected scrape interval") | ||||
| 			require.Equal(t, 2*time.Second, timeout, "Unexpected scrape timeout") | ||||
| 
 | ||||
| 			mtx.Lock() | ||||
| 			targetScraper := opts.scraper.(*targetScraper) | ||||
| 			assert.True(t, stopped[targetScraper.hash()], "Scrape loop for %v not stopped yet", targetScraper) | ||||
| 			require.True(t, stopped[targetScraper.hash()], "Scrape loop for %v not stopped yet", targetScraper) | ||||
| 			mtx.Unlock() | ||||
| 		} | ||||
| 		return l | ||||
|  | @ -314,11 +314,11 @@ func TestScrapePoolReload(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	mtx.Lock() | ||||
| 	assert.Equal(t, numTargets, len(stopped), "Unexpected number of stopped loops") | ||||
| 	require.Equal(t, numTargets, len(stopped), "Unexpected number of stopped loops") | ||||
| 	mtx.Unlock() | ||||
| 
 | ||||
| 	assert.Equal(t, sp.activeTargets, beforeTargets, "Reloading affected target states unexpectedly") | ||||
| 	assert.Equal(t, numTargets, len(sp.loops), "Unexpected number of stopped loops after reload") | ||||
| 	require.Equal(t, sp.activeTargets, beforeTargets, "Reloading affected target states unexpectedly") | ||||
| 	require.Equal(t, numTargets, len(sp.loops), "Unexpected number of stopped loops after reload") | ||||
| } | ||||
| 
 | ||||
| func TestScrapePoolTargetLimit(t *testing.T) { | ||||
|  | @ -358,7 +358,7 @@ func TestScrapePoolTargetLimit(t *testing.T) { | |||
| 	var limit uint | ||||
| 	reloadWithLimit := func(l uint) { | ||||
| 		limit = l | ||||
| 		assert.NoError(t, sp.reload(&config.ScrapeConfig{ | ||||
| 		require.NoError(t, sp.reload(&config.ScrapeConfig{ | ||||
| 			ScrapeInterval: model.Duration(3 * time.Second), | ||||
| 			ScrapeTimeout:  model.Duration(2 * time.Second), | ||||
| 			TargetLimit:    l, | ||||
|  | @ -374,7 +374,7 @@ func TestScrapePoolTargetLimit(t *testing.T) { | |||
| 	validateIsRunning := func() { | ||||
| 		wg.Wait() | ||||
| 		for _, l := range sp.loops { | ||||
| 			assert.True(t, l.(*testLoop).runOnce, "loop should be running") | ||||
| 			require.True(t, l.(*testLoop).runOnce, "loop should be running") | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -382,10 +382,10 @@ func TestScrapePoolTargetLimit(t *testing.T) { | |||
| 		for _, l := range sp.loops { | ||||
| 			lerr := l.(*testLoop).getForcedError() | ||||
| 			if shouldErr { | ||||
| 				assert.NotNil(t, lerr, "error was expected for %d targets with a limit of %d", targets, limit) | ||||
| 				assert.Equal(t, fmt.Sprintf("target_limit exceeded (number of targets: %d, limit: %d)", targets, limit), lerr.Error()) | ||||
| 				require.NotNil(t, lerr, "error was expected for %d targets with a limit of %d", targets, limit) | ||||
| 				require.Equal(t, fmt.Sprintf("target_limit exceeded (number of targets: %d, limit: %d)", targets, limit), lerr.Error()) | ||||
| 			} else { | ||||
| 				assert.Equal(t, nil, lerr) | ||||
| 				require.Equal(t, nil, lerr) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | @ -452,33 +452,33 @@ func TestScrapePoolAppender(t *testing.T) { | |||
| 		target: &Target{}, | ||||
| 	}) | ||||
| 	appl, ok := loop.(*scrapeLoop) | ||||
| 	assert.True(t, ok, "Expected scrapeLoop but got %T", loop) | ||||
| 	require.True(t, ok, "Expected scrapeLoop but got %T", loop) | ||||
| 
 | ||||
| 	wrapped := appl.appender(context.Background()) | ||||
| 
 | ||||
| 	tl, ok := wrapped.(*timeLimitAppender) | ||||
| 	assert.True(t, ok, "Expected timeLimitAppender but got %T", wrapped) | ||||
| 	require.True(t, ok, "Expected timeLimitAppender but got %T", wrapped) | ||||
| 
 | ||||
| 	_, ok = tl.Appender.(nopAppender) | ||||
| 	assert.True(t, ok, "Expected base appender but got %T", tl.Appender) | ||||
| 	require.True(t, ok, "Expected base appender but got %T", tl.Appender) | ||||
| 
 | ||||
| 	loop = sp.newLoop(scrapeLoopOptions{ | ||||
| 		target: &Target{}, | ||||
| 		limit:  100, | ||||
| 	}) | ||||
| 	appl, ok = loop.(*scrapeLoop) | ||||
| 	assert.True(t, ok, "Expected scrapeLoop but got %T", loop) | ||||
| 	require.True(t, ok, "Expected scrapeLoop but got %T", loop) | ||||
| 
 | ||||
| 	wrapped = appl.appender(context.Background()) | ||||
| 
 | ||||
| 	sl, ok := wrapped.(*limitAppender) | ||||
| 	assert.True(t, ok, "Expected limitAppender but got %T", wrapped) | ||||
| 	require.True(t, ok, "Expected limitAppender but got %T", wrapped) | ||||
| 
 | ||||
| 	tl, ok = sl.Appender.(*timeLimitAppender) | ||||
| 	assert.True(t, ok, "Expected limitAppender but got %T", sl.Appender) | ||||
| 	require.True(t, ok, "Expected limitAppender but got %T", sl.Appender) | ||||
| 
 | ||||
| 	_, ok = tl.Appender.(nopAppender) | ||||
| 	assert.True(t, ok, "Expected base appender but got %T", tl.Appender) | ||||
| 	require.True(t, ok, "Expected base appender but got %T", tl.Appender) | ||||
| } | ||||
| 
 | ||||
| func TestScrapePoolRaces(t *testing.T) { | ||||
|  | @ -508,8 +508,8 @@ func TestScrapePoolRaces(t *testing.T) { | |||
| 	dropped := sp.DroppedTargets() | ||||
| 	expectedActive, expectedDropped := len(tgts[0].Targets), 0 | ||||
| 
 | ||||
| 	assert.Equal(t, expectedActive, len(active), "Invalid number of active targets") | ||||
| 	assert.Equal(t, expectedDropped, len(dropped), "Invalid number of dropped targets") | ||||
| 	require.Equal(t, expectedActive, len(active), "Invalid number of active targets") | ||||
| 	require.Equal(t, expectedDropped, len(dropped), "Invalid number of dropped targets") | ||||
| 
 | ||||
| 	for i := 0; i < 20; i++ { | ||||
| 		time.Sleep(time.Duration(10 * time.Millisecond)) | ||||
|  | @ -552,17 +552,17 @@ func TestScrapePoolScrapeLoopsStarted(t *testing.T) { | |||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	assert.NoError(t, sp.reload(&config.ScrapeConfig{ | ||||
| 	require.NoError(t, sp.reload(&config.ScrapeConfig{ | ||||
| 		ScrapeInterval: model.Duration(3 * time.Second), | ||||
| 		ScrapeTimeout:  model.Duration(2 * time.Second), | ||||
| 	})) | ||||
| 	sp.Sync(tgs) | ||||
| 
 | ||||
| 	assert.Equal(t, 1, len(sp.loops)) | ||||
| 	require.Equal(t, 1, len(sp.loops)) | ||||
| 
 | ||||
| 	wg.Wait() | ||||
| 	for _, l := range sp.loops { | ||||
| 		assert.True(t, l.(*testLoop).runOnce, "loop should be running") | ||||
| 		require.True(t, l.(*testLoop).runOnce, "loop should be running") | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -866,27 +866,27 @@ test_metric 1 | |||
| # TYPE test_metric_no_help gauge | ||||
| # HELP test_metric_no_type other help text | ||||
| # EOF`), "application/openmetrics-text", time.Now()) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	assert.Equal(t, 1, total) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 	require.Equal(t, 1, total) | ||||
| 
 | ||||
| 	md, ok := cache.GetMetadata("test_metric") | ||||
| 	assert.True(t, ok, "expected metadata to be present") | ||||
| 	assert.Equal(t, textparse.MetricTypeCounter, md.Type, "unexpected metric type") | ||||
| 	assert.Equal(t, "some help text", md.Help) | ||||
| 	assert.Equal(t, "metric", md.Unit) | ||||
| 	require.True(t, ok, "expected metadata to be present") | ||||
| 	require.Equal(t, textparse.MetricTypeCounter, md.Type, "unexpected metric type") | ||||
| 	require.Equal(t, "some help text", md.Help) | ||||
| 	require.Equal(t, "metric", md.Unit) | ||||
| 
 | ||||
| 	md, ok = cache.GetMetadata("test_metric_no_help") | ||||
| 	assert.True(t, ok, "expected metadata to be present") | ||||
| 	assert.Equal(t, textparse.MetricTypeGauge, md.Type, "unexpected metric type") | ||||
| 	assert.Equal(t, "", md.Help) | ||||
| 	assert.Equal(t, "", md.Unit) | ||||
| 	require.True(t, ok, "expected metadata to be present") | ||||
| 	require.Equal(t, textparse.MetricTypeGauge, md.Type, "unexpected metric type") | ||||
| 	require.Equal(t, "", md.Help) | ||||
| 	require.Equal(t, "", md.Unit) | ||||
| 
 | ||||
| 	md, ok = cache.GetMetadata("test_metric_no_type") | ||||
| 	assert.True(t, ok, "expected metadata to be present") | ||||
| 	assert.Equal(t, textparse.MetricTypeUnknown, md.Type, "unexpected metric type") | ||||
| 	assert.Equal(t, "other help text", md.Help) | ||||
| 	assert.Equal(t, "", md.Unit) | ||||
| 	require.True(t, ok, "expected metadata to be present") | ||||
| 	require.Equal(t, textparse.MetricTypeUnknown, md.Type, "unexpected metric type") | ||||
| 	require.Equal(t, "other help text", md.Help) | ||||
| 	require.Equal(t, "", md.Unit) | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopSeriesAdded(t *testing.T) { | ||||
|  | @ -909,19 +909,19 @@ func TestScrapeLoopSeriesAdded(t *testing.T) { | |||
| 
 | ||||
| 	slApp := sl.appender(ctx) | ||||
| 	total, added, seriesAdded, err := sl.append(slApp, []byte("test_metric 1\n"), "", time.Time{}) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	assert.Equal(t, 1, total) | ||||
| 	assert.Equal(t, 1, added) | ||||
| 	assert.Equal(t, 1, seriesAdded) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 	require.Equal(t, 1, total) | ||||
| 	require.Equal(t, 1, added) | ||||
| 	require.Equal(t, 1, seriesAdded) | ||||
| 
 | ||||
| 	slApp = sl.appender(ctx) | ||||
| 	total, added, seriesAdded, err = sl.append(slApp, []byte("test_metric 1\n"), "", time.Time{}) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 1, total) | ||||
| 	assert.Equal(t, 1, added) | ||||
| 	assert.Equal(t, 0, seriesAdded) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 1, total) | ||||
| 	require.Equal(t, 1, added) | ||||
| 	require.Equal(t, 0, seriesAdded) | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopRunCreatesStaleMarkersOnFailedScrape(t *testing.T) { | ||||
|  | @ -971,9 +971,9 @@ func TestScrapeLoopRunCreatesStaleMarkersOnFailedScrape(t *testing.T) { | |||
| 
 | ||||
| 	// 1 successfully scraped sample, 1 stale marker after first fail, 5 report samples for
 | ||||
| 	// each scrape successful or not.
 | ||||
| 	assert.Equal(t, 27, len(appender.result), "Appended samples not as expected") | ||||
| 	assert.Equal(t, 42.0, appender.result[0].v, "Appended first sample not as expected") | ||||
| 	assert.True(t, value.IsStaleNaN(appender.result[6].v), | ||||
| 	require.Equal(t, 27, len(appender.result), "Appended samples not as expected") | ||||
| 	require.Equal(t, 42.0, appender.result[0].v, "Appended first sample not as expected") | ||||
| 	require.True(t, value.IsStaleNaN(appender.result[6].v), | ||||
| 		"Appended second sample not as expected. Wanted: stale NaN Got: %x", math.Float64bits(appender.result[6].v)) | ||||
| } | ||||
| 
 | ||||
|  | @ -1027,9 +1027,9 @@ func TestScrapeLoopRunCreatesStaleMarkersOnParseFailure(t *testing.T) { | |||
| 
 | ||||
| 	// 1 successfully scraped sample, 1 stale marker after first fail, 5 report samples for
 | ||||
| 	// each scrape successful or not.
 | ||||
| 	assert.Equal(t, 17, len(appender.result), "Appended samples not as expected") | ||||
| 	assert.Equal(t, 42.0, appender.result[0].v, "Appended first sample not as expected") | ||||
| 	assert.True(t, value.IsStaleNaN(appender.result[6].v), | ||||
| 	require.Equal(t, 17, len(appender.result), "Appended samples not as expected") | ||||
| 	require.Equal(t, 42.0, appender.result[0].v, "Appended first sample not as expected") | ||||
| 	require.True(t, value.IsStaleNaN(appender.result[6].v), | ||||
| 		"Appended second sample not as expected. Wanted: stale NaN Got: %x", math.Float64bits(appender.result[6].v)) | ||||
| } | ||||
| 
 | ||||
|  | @ -1102,7 +1102,7 @@ func TestScrapeLoopCache(t *testing.T) { | |||
| 
 | ||||
| 	// 1 successfully scraped sample, 1 stale marker after first fail, 5 report samples for
 | ||||
| 	// each scrape successful or not.
 | ||||
| 	assert.Equal(t, 26, len(appender.result), "Appended samples not as expected") | ||||
| 	require.Equal(t, 26, len(appender.result), "Appended samples not as expected") | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopCacheMemoryExhaustionProtection(t *testing.T) { | ||||
|  | @ -1240,8 +1240,8 @@ func TestScrapeLoopAppend(t *testing.T) { | |||
| 
 | ||||
| 		slApp := sl.appender(context.Background()) | ||||
| 		_, _, _, err := sl.append(slApp, []byte(test.scrapeLabels), "", now) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.NoError(t, slApp.Commit()) | ||||
| 		require.NoError(t, err) | ||||
| 		require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 		expected := []sample{ | ||||
| 			{ | ||||
|  | @ -1259,7 +1259,7 @@ func TestScrapeLoopAppend(t *testing.T) { | |||
| 		} | ||||
| 
 | ||||
| 		t.Logf("Test:%s", test.title) | ||||
| 		assert.Equal(t, expected, app.result) | ||||
| 		require.Equal(t, expected, app.result) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -1293,8 +1293,8 @@ func TestScrapeLoopAppendCacheEntryButErrNotFound(t *testing.T) { | |||
| 
 | ||||
| 	slApp := sl.appender(context.Background()) | ||||
| 	_, _, _, err := sl.append(slApp, []byte(metric), "", now) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	expected := []sample{ | ||||
| 		{ | ||||
|  | @ -1304,7 +1304,7 @@ func TestScrapeLoopAppendCacheEntryButErrNotFound(t *testing.T) { | |||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, expected, app.result) | ||||
| 	require.Equal(t, expected, app.result) | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopAppendSampleLimit(t *testing.T) { | ||||
|  | @ -1329,7 +1329,7 @@ func TestScrapeLoopAppendSampleLimit(t *testing.T) { | |||
| 	// Get the value of the Counter before performing the append.
 | ||||
| 	beforeMetric := dto.Metric{} | ||||
| 	err := targetScrapeSampleLimit.Write(&beforeMetric) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	beforeMetricValue := beforeMetric.GetCounter().GetValue() | ||||
| 
 | ||||
|  | @ -1339,20 +1339,20 @@ func TestScrapeLoopAppendSampleLimit(t *testing.T) { | |||
| 	if err != errSampleLimit { | ||||
| 		t.Fatalf("Did not see expected sample limit error: %s", err) | ||||
| 	} | ||||
| 	assert.NoError(t, slApp.Rollback()) | ||||
| 	assert.Equal(t, 3, total) | ||||
| 	assert.Equal(t, 3, added) | ||||
| 	assert.Equal(t, 1, seriesAdded) | ||||
| 	require.NoError(t, slApp.Rollback()) | ||||
| 	require.Equal(t, 3, total) | ||||
| 	require.Equal(t, 3, added) | ||||
| 	require.Equal(t, 1, seriesAdded) | ||||
| 
 | ||||
| 	// Check that the Counter has been incremented a single time for the scrape,
 | ||||
| 	// not multiple times for each sample.
 | ||||
| 	metric := dto.Metric{} | ||||
| 	err = targetScrapeSampleLimit.Write(&metric) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	value := metric.GetCounter().GetValue() | ||||
| 	change := value - beforeMetricValue | ||||
| 	assert.Equal(t, 1.0, change, "Unexpected change of sample limit metric: %f", change) | ||||
| 	require.Equal(t, 1.0, change, "Unexpected change of sample limit metric: %f", change) | ||||
| 
 | ||||
| 	// And verify that we got the samples that fit under the limit.
 | ||||
| 	want := []sample{ | ||||
|  | @ -1362,7 +1362,7 @@ func TestScrapeLoopAppendSampleLimit(t *testing.T) { | |||
| 			v:      1, | ||||
| 		}, | ||||
| 	} | ||||
| 	assert.Equal(t, want, resApp.rolledbackResult, "Appended samples not as expected") | ||||
| 	require.Equal(t, want, resApp.rolledbackResult, "Appended samples not as expected") | ||||
| 
 | ||||
| 	now = time.Now() | ||||
| 	slApp = sl.appender(context.Background()) | ||||
|  | @ -1370,10 +1370,10 @@ func TestScrapeLoopAppendSampleLimit(t *testing.T) { | |||
| 	if err != errSampleLimit { | ||||
| 		t.Fatalf("Did not see expected sample limit error: %s", err) | ||||
| 	} | ||||
| 	assert.NoError(t, slApp.Rollback()) | ||||
| 	assert.Equal(t, 9, total) | ||||
| 	assert.Equal(t, 6, added) | ||||
| 	assert.Equal(t, 0, seriesAdded) | ||||
| 	require.NoError(t, slApp.Rollback()) | ||||
| 	require.Equal(t, 9, total) | ||||
| 	require.Equal(t, 6, added) | ||||
| 	require.Equal(t, 0, seriesAdded) | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoop_ChangingMetricString(t *testing.T) { | ||||
|  | @ -1398,13 +1398,13 @@ func TestScrapeLoop_ChangingMetricString(t *testing.T) { | |||
| 	now := time.Now() | ||||
| 	slApp := sl.appender(context.Background()) | ||||
| 	_, _, _, err := sl.append(slApp, []byte(`metric_a{a="1",b="1"} 1`), "", now) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	slApp = sl.appender(context.Background()) | ||||
| 	_, _, _, err = sl.append(slApp, []byte(`metric_a{b="1",a="1"} 2`), "", now.Add(time.Minute)) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	// DeepEqual will report NaNs as being different, so replace with a different value.
 | ||||
| 	want := []sample{ | ||||
|  | @ -1419,7 +1419,7 @@ func TestScrapeLoop_ChangingMetricString(t *testing.T) { | |||
| 			v:      2, | ||||
| 		}, | ||||
| 	} | ||||
| 	assert.Equal(t, want, capp.result, "Appended samples not as expected") | ||||
| 	require.Equal(t, want, capp.result, "Appended samples not as expected") | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopAppendStaleness(t *testing.T) { | ||||
|  | @ -1438,16 +1438,16 @@ func TestScrapeLoopAppendStaleness(t *testing.T) { | |||
| 	now := time.Now() | ||||
| 	slApp := sl.appender(context.Background()) | ||||
| 	_, _, _, err := sl.append(slApp, []byte("metric_a 1\n"), "", now) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	slApp = sl.appender(context.Background()) | ||||
| 	_, _, _, err = sl.append(slApp, []byte(""), "", now.Add(time.Second)) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	ingestedNaN := math.Float64bits(app.result[1].v) | ||||
| 	assert.Equal(t, value.StaleNaN, ingestedNaN, "Appended stale sample wasn't as expected") | ||||
| 	require.Equal(t, value.StaleNaN, ingestedNaN, "Appended stale sample wasn't as expected") | ||||
| 
 | ||||
| 	// DeepEqual will report NaNs as being different, so replace with a different value.
 | ||||
| 	app.result[1].v = 42 | ||||
|  | @ -1463,7 +1463,7 @@ func TestScrapeLoopAppendStaleness(t *testing.T) { | |||
| 			v:      42, | ||||
| 		}, | ||||
| 	} | ||||
| 	assert.Equal(t, want, app.result, "Appended samples not as expected") | ||||
| 	require.Equal(t, want, app.result, "Appended samples not as expected") | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopAppendNoStalenessIfTimestamp(t *testing.T) { | ||||
|  | @ -1481,13 +1481,13 @@ func TestScrapeLoopAppendNoStalenessIfTimestamp(t *testing.T) { | |||
| 	now := time.Now() | ||||
| 	slApp := sl.appender(context.Background()) | ||||
| 	_, _, _, err := sl.append(slApp, []byte("metric_a 1 1000\n"), "", now) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	slApp = sl.appender(context.Background()) | ||||
| 	_, _, _, err = sl.append(slApp, []byte(""), "", now.Add(time.Second)) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	want := []sample{ | ||||
| 		{ | ||||
|  | @ -1496,7 +1496,7 @@ func TestScrapeLoopAppendNoStalenessIfTimestamp(t *testing.T) { | |||
| 			v:      1, | ||||
| 		}, | ||||
| 	} | ||||
| 	assert.Equal(t, want, app.result, "Appended samples not as expected") | ||||
| 	require.Equal(t, want, app.result, "Appended samples not as expected") | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopRunReportsTargetDownOnScrapeError(t *testing.T) { | ||||
|  | @ -1524,7 +1524,7 @@ func TestScrapeLoopRunReportsTargetDownOnScrapeError(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	sl.run(10*time.Millisecond, time.Hour, nil) | ||||
| 	assert.Equal(t, 0.0, appender.result[0].v, "bad 'up' value") | ||||
| 	require.Equal(t, 0.0, appender.result[0].v, "bad 'up' value") | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopRunReportsTargetDownOnInvalidUTF8(t *testing.T) { | ||||
|  | @ -1553,7 +1553,7 @@ func TestScrapeLoopRunReportsTargetDownOnInvalidUTF8(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	sl.run(10*time.Millisecond, time.Hour, nil) | ||||
| 	assert.Equal(t, 0.0, appender.result[0].v, "bad 'up' value") | ||||
| 	require.Equal(t, 0.0, appender.result[0].v, "bad 'up' value") | ||||
| } | ||||
| 
 | ||||
| type errorAppender struct { | ||||
|  | @ -1594,8 +1594,8 @@ func TestScrapeLoopAppendGracefullyIfAmendOrOutOfOrderOrOutOfBounds(t *testing.T | |||
| 	now := time.Unix(1, 0) | ||||
| 	slApp := sl.appender(context.Background()) | ||||
| 	total, added, seriesAdded, err := sl.append(slApp, []byte("out_of_order 1\namend 1\nnormal 1\nout_of_bounds 1\n"), "", now) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	want := []sample{ | ||||
| 		{ | ||||
|  | @ -1604,10 +1604,10 @@ func TestScrapeLoopAppendGracefullyIfAmendOrOutOfOrderOrOutOfBounds(t *testing.T | |||
| 			v:      1, | ||||
| 		}, | ||||
| 	} | ||||
| 	assert.Equal(t, want, app.result, "Appended samples not as expected") | ||||
| 	assert.Equal(t, 4, total) | ||||
| 	assert.Equal(t, 4, added) | ||||
| 	assert.Equal(t, 1, seriesAdded) | ||||
| 	require.Equal(t, want, app.result, "Appended samples not as expected") | ||||
| 	require.Equal(t, 4, total) | ||||
| 	require.Equal(t, 4, added) | ||||
| 	require.Equal(t, 1, seriesAdded) | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopOutOfBoundsTimeError(t *testing.T) { | ||||
|  | @ -1631,11 +1631,11 @@ func TestScrapeLoopOutOfBoundsTimeError(t *testing.T) { | |||
| 	now := time.Now().Add(20 * time.Minute) | ||||
| 	slApp := sl.appender(context.Background()) | ||||
| 	total, added, seriesAdded, err := sl.append(slApp, []byte("normal 1\n"), "", now) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	assert.Equal(t, 1, total) | ||||
| 	assert.Equal(t, 1, added) | ||||
| 	assert.Equal(t, 0, seriesAdded) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 	require.Equal(t, 1, total) | ||||
| 	require.Equal(t, 1, added) | ||||
| 	require.Equal(t, 0, seriesAdded) | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
|  | @ -1681,9 +1681,9 @@ func TestTargetScraperScrapeOK(t *testing.T) { | |||
| 	var buf bytes.Buffer | ||||
| 
 | ||||
| 	contentType, err := ts.scrape(context.Background(), &buf) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, "text/plain; version=0.0.4", contentType) | ||||
| 	assert.Equal(t, "metric_a 1\nmetric_b 2\n", buf.String()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, "text/plain; version=0.0.4", contentType) | ||||
| 	require.Equal(t, "metric_a 1\nmetric_b 2\n", buf.String()) | ||||
| } | ||||
| 
 | ||||
| func TestTargetScrapeScrapeCancel(t *testing.T) { | ||||
|  | @ -1734,7 +1734,7 @@ func TestTargetScrapeScrapeCancel(t *testing.T) { | |||
| 	case <-time.After(5 * time.Second): | ||||
| 		t.Fatalf("Scrape function did not return unexpectedly") | ||||
| 	case err := <-errc: | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	} | ||||
| 	// If this is closed in a defer above the function the test server
 | ||||
| 	// doesn't terminate and the test doesn't complete.
 | ||||
|  | @ -1765,7 +1765,7 @@ func TestTargetScrapeScrapeNotFound(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	_, err = ts.scrape(context.Background(), ioutil.Discard) | ||||
| 	assert.Contains(t, err.Error(), "404", "Expected \"404 NotFound\" error but got: %s", err) | ||||
| 	require.Contains(t, err.Error(), "404", "Expected \"404 NotFound\" error but got: %s", err) | ||||
| } | ||||
| 
 | ||||
| // testScraper implements the scraper interface and allows setting values
 | ||||
|  | @ -1818,8 +1818,8 @@ func TestScrapeLoop_RespectTimestamps(t *testing.T) { | |||
| 	now := time.Now() | ||||
| 	slApp := sl.appender(context.Background()) | ||||
| 	_, _, _, err := sl.append(slApp, []byte(`metric_a{a="1",b="1"} 1 0`), "", now) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	want := []sample{ | ||||
| 		{ | ||||
|  | @ -1828,7 +1828,7 @@ func TestScrapeLoop_RespectTimestamps(t *testing.T) { | |||
| 			v:      1, | ||||
| 		}, | ||||
| 	} | ||||
| 	assert.Equal(t, want, capp.result, "Appended samples not as expected") | ||||
| 	require.Equal(t, want, capp.result, "Appended samples not as expected") | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoop_DiscardTimestamps(t *testing.T) { | ||||
|  | @ -1851,8 +1851,8 @@ func TestScrapeLoop_DiscardTimestamps(t *testing.T) { | |||
| 	now := time.Now() | ||||
| 	slApp := sl.appender(context.Background()) | ||||
| 	_, _, _, err := sl.append(slApp, []byte(`metric_a{a="1",b="1"} 1 0`), "", now) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	want := []sample{ | ||||
| 		{ | ||||
|  | @ -1861,7 +1861,7 @@ func TestScrapeLoop_DiscardTimestamps(t *testing.T) { | |||
| 			v:      1, | ||||
| 		}, | ||||
| 	} | ||||
| 	assert.Equal(t, want, capp.result, "Appended samples not as expected") | ||||
| 	require.Equal(t, want, capp.result, "Appended samples not as expected") | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopDiscardDuplicateLabels(t *testing.T) { | ||||
|  | @ -1884,27 +1884,27 @@ func TestScrapeLoopDiscardDuplicateLabels(t *testing.T) { | |||
| 	// We add a good and a bad metric to check that both are discarded.
 | ||||
| 	slApp := sl.appender(ctx) | ||||
| 	_, _, _, err := sl.append(slApp, []byte("test_metric{le=\"500\"} 1\ntest_metric{le=\"600\",le=\"700\"} 1\n"), "", time.Time{}) | ||||
| 	assert.Error(t, err) | ||||
| 	assert.NoError(t, slApp.Rollback()) | ||||
| 	require.Error(t, err) | ||||
| 	require.NoError(t, slApp.Rollback()) | ||||
| 
 | ||||
| 	q, err := s.Querier(ctx, time.Time{}.UnixNano(), 0) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	series := q.Select(false, nil, labels.MustNewMatcher(labels.MatchRegexp, "__name__", ".*")) | ||||
| 	assert.Equal(t, false, series.Next(), "series found in tsdb") | ||||
| 	assert.NoError(t, series.Err()) | ||||
| 	require.Equal(t, false, series.Next(), "series found in tsdb") | ||||
| 	require.NoError(t, series.Err()) | ||||
| 
 | ||||
| 	// We add a good metric to check that it is recorded.
 | ||||
| 	slApp = sl.appender(ctx) | ||||
| 	_, _, _, err = sl.append(slApp, []byte("test_metric{le=\"500\"} 1\n"), "", time.Time{}) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	q, err = s.Querier(ctx, time.Time{}.UnixNano(), 0) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	series = q.Select(false, nil, labels.MustNewMatcher(labels.MatchEqual, "le", "500")) | ||||
| 	assert.Equal(t, true, series.Next(), "series not found in tsdb") | ||||
| 	assert.NoError(t, series.Err()) | ||||
| 	assert.Equal(t, false, series.Next(), "more than one series found in tsdb") | ||||
| 	require.Equal(t, true, series.Next(), "series not found in tsdb") | ||||
| 	require.NoError(t, series.Err()) | ||||
| 	require.Equal(t, false, series.Next(), "more than one series found in tsdb") | ||||
| } | ||||
| 
 | ||||
| func TestScrapeLoopDiscardUnnamedMetrics(t *testing.T) { | ||||
|  | @ -1933,15 +1933,15 @@ func TestScrapeLoopDiscardUnnamedMetrics(t *testing.T) { | |||
| 
 | ||||
| 	slApp := sl.appender(context.Background()) | ||||
| 	_, _, _, err := sl.append(slApp, []byte("nok 1\nnok2{drop=\"drop\"} 1\n"), "", time.Time{}) | ||||
| 	assert.Error(t, err) | ||||
| 	assert.NoError(t, slApp.Rollback()) | ||||
| 	assert.Equal(t, errNameLabelMandatory, err) | ||||
| 	require.Error(t, err) | ||||
| 	require.NoError(t, slApp.Rollback()) | ||||
| 	require.Equal(t, errNameLabelMandatory, err) | ||||
| 
 | ||||
| 	q, err := s.Querier(ctx, time.Time{}.UnixNano(), 0) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	series := q.Select(false, nil, labels.MustNewMatcher(labels.MatchRegexp, "__name__", ".*")) | ||||
| 	assert.Equal(t, false, series.Next(), "series found in tsdb") | ||||
| 	assert.NoError(t, series.Err()) | ||||
| 	require.Equal(t, false, series.Next(), "series found in tsdb") | ||||
| 	require.NoError(t, series.Err()) | ||||
| } | ||||
| 
 | ||||
| func TestReusableConfig(t *testing.T) { | ||||
|  | @ -2000,14 +2000,14 @@ func TestReusableConfig(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	for i, m := range match { | ||||
| 		assert.Equal(t, true, reusableCache(variants[m[0]], variants[m[1]]), "match test %d", i) | ||||
| 		assert.Equal(t, true, reusableCache(variants[m[1]], variants[m[0]]), "match test %d", i) | ||||
| 		assert.Equal(t, true, reusableCache(variants[m[1]], variants[m[1]]), "match test %d", i) | ||||
| 		assert.Equal(t, true, reusableCache(variants[m[0]], variants[m[0]]), "match test %d", i) | ||||
| 		require.Equal(t, true, reusableCache(variants[m[0]], variants[m[1]]), "match test %d", i) | ||||
| 		require.Equal(t, true, reusableCache(variants[m[1]], variants[m[0]]), "match test %d", i) | ||||
| 		require.Equal(t, true, reusableCache(variants[m[1]], variants[m[1]]), "match test %d", i) | ||||
| 		require.Equal(t, true, reusableCache(variants[m[0]], variants[m[0]]), "match test %d", i) | ||||
| 	} | ||||
| 	for i, m := range noMatch { | ||||
| 		assert.Equal(t, false, reusableCache(variants[m[0]], variants[m[1]]), "not match test %d", i) | ||||
| 		assert.Equal(t, false, reusableCache(variants[m[1]], variants[m[0]]), "not match test %d", i) | ||||
| 		require.Equal(t, false, reusableCache(variants[m[0]], variants[m[1]]), "not match test %d", i) | ||||
| 		require.Equal(t, false, reusableCache(variants[m[1]], variants[m[0]]), "not match test %d", i) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -2118,15 +2118,15 @@ func TestReuseScrapeCache(t *testing.T) { | |||
| 		sp.reload(s.newConfig) | ||||
| 		for fp, newCacheAddr := range cacheAddr(sp) { | ||||
| 			if s.keep { | ||||
| 				assert.Equal(t, initCacheAddr[fp], newCacheAddr, "step %d: old cache and new cache are not the same", i) | ||||
| 				require.Equal(t, initCacheAddr[fp], newCacheAddr, "step %d: old cache and new cache are not the same", i) | ||||
| 			} else { | ||||
| 				assert.NotEqual(t, initCacheAddr[fp], newCacheAddr, "step %d: old cache and new cache are the same", i) | ||||
| 				require.NotEqual(t, initCacheAddr[fp], newCacheAddr, "step %d: old cache and new cache are the same", i) | ||||
| 			} | ||||
| 		} | ||||
| 		initCacheAddr = cacheAddr(sp) | ||||
| 		sp.reload(s.newConfig) | ||||
| 		for fp, newCacheAddr := range cacheAddr(sp) { | ||||
| 			assert.Equal(t, initCacheAddr[fp], newCacheAddr, "step %d: reloading the exact config invalidates the cache", i) | ||||
| 			require.Equal(t, initCacheAddr[fp], newCacheAddr, "step %d: reloading the exact config invalidates the cache", i) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -2150,8 +2150,8 @@ func TestScrapeAddFast(t *testing.T) { | |||
| 
 | ||||
| 	slApp := sl.appender(ctx) | ||||
| 	_, _, _, err := sl.append(slApp, []byte("up 1\n"), "", time.Time{}) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| 
 | ||||
| 	// Poison the cache. There is just one entry, and one series in the
 | ||||
| 	// storage. Changing the ref will create a 'not found' error.
 | ||||
|  | @ -2161,8 +2161,8 @@ func TestScrapeAddFast(t *testing.T) { | |||
| 
 | ||||
| 	slApp = sl.appender(ctx) | ||||
| 	_, _, _, err = sl.append(slApp, []byte("up 1\n"), "", time.Time{}.Add(time.Second)) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, slApp.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, slApp.Commit()) | ||||
| } | ||||
| 
 | ||||
| func TestReuseCacheRace(t *testing.T) { | ||||
|  | @ -2206,7 +2206,7 @@ func TestCheckAddError(t *testing.T) { | |||
| 	var appErrs appendErrors | ||||
| 	sl := scrapeLoop{l: log.NewNopLogger()} | ||||
| 	sl.checkAddError(nil, nil, nil, storage.ErrOutOfOrderSample, nil, &appErrs) | ||||
| 	assert.Equal(t, 1, appErrs.numOutOfOrder) | ||||
| 	require.Equal(t, 1, appErrs.numOutOfOrder) | ||||
| } | ||||
| 
 | ||||
| func TestScrapeReportSingleAppender(t *testing.T) { | ||||
|  | @ -2249,7 +2249,7 @@ func TestScrapeReportSingleAppender(t *testing.T) { | |||
| 	start := time.Now() | ||||
| 	for time.Since(start) < 3*time.Second { | ||||
| 		q, err := s.Querier(ctx, time.Time{}.UnixNano(), time.Now().UnixNano()) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		series := q.Select(false, nil, labels.MustNewMatcher(labels.MatchRegexp, "__name__", ".+")) | ||||
| 
 | ||||
| 		c := 0 | ||||
|  | @ -2260,7 +2260,7 @@ func TestScrapeReportSingleAppender(t *testing.T) { | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		assert.Equal(t, 0, c%9, "Appended samples not as expected: %d", c) | ||||
| 		require.Equal(t, 0, c%9, "Appended samples not as expected: %d", c) | ||||
| 		q.Close() | ||||
| 	} | ||||
| 	cancel() | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ import ( | |||
| 
 | ||||
| 	config_util "github.com/prometheus/common/config" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| ) | ||||
|  | @ -40,7 +40,7 @@ func TestTargetLabels(t *testing.T) { | |||
| 	target := newTestTarget("example.com:80", 0, labels.FromStrings("job", "some_job", "foo", "bar")) | ||||
| 	want := labels.FromStrings(model.JobLabel, "some_job", "foo", "bar") | ||||
| 	got := target.Labels() | ||||
| 	assert.Equal(t, want, got) | ||||
| 	require.Equal(t, want, got) | ||||
| } | ||||
| 
 | ||||
| func TestTargetOffset(t *testing.T) { | ||||
|  | @ -118,7 +118,7 @@ func TestTargetURL(t *testing.T) { | |||
| 		RawQuery: expectedParams.Encode(), | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, expectedURL, target.URL()) | ||||
| 	require.Equal(t, expectedURL, target.URL()) | ||||
| } | ||||
| 
 | ||||
| func newTestTarget(targetURL string, deadline time.Duration, lbls labels.Labels) *Target { | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ import ( | |||
| 	"math/rand" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestSampleRing(t *testing.T) { | ||||
|  | @ -77,9 +77,9 @@ func TestSampleRing(t *testing.T) { | |||
| 				} | ||||
| 
 | ||||
| 				if found { | ||||
| 					assert.GreaterOrEqual(t, sold.t, s.t-c.delta, "%d: unexpected sample %d in buffer; buffer %v", i, sold.t, buffered) | ||||
| 					require.GreaterOrEqual(t, sold.t, s.t-c.delta, "%d: unexpected sample %d in buffer; buffer %v", i, sold.t, buffered) | ||||
| 				} else { | ||||
| 					assert.Less(t, sold.t, s.t-c.delta, "%d: expected sample %d to be in buffer but was not; buffer %v", i, sold.t, buffered) | ||||
| 					require.Less(t, sold.t, s.t-c.delta, "%d: expected sample %d to be in buffer but was not; buffer %v", i, sold.t, buffered) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | @ -96,12 +96,12 @@ func TestBufferedSeriesIterator(t *testing.T) { | |||
| 			t, v := bit.At() | ||||
| 			b = append(b, sample{t: t, v: v}) | ||||
| 		} | ||||
| 		assert.Equal(t, exp, b, "buffer mismatch") | ||||
| 		require.Equal(t, exp, b, "buffer mismatch") | ||||
| 	} | ||||
| 	sampleEq := func(ets int64, ev float64) { | ||||
| 		ts, v := it.Values() | ||||
| 		assert.Equal(t, ets, ts, "timestamp mismatch") | ||||
| 		assert.Equal(t, ev, v, "value mismatch") | ||||
| 		require.Equal(t, ets, ts, "timestamp mismatch") | ||||
| 		require.Equal(t, ev, v, "value mismatch") | ||||
| 	} | ||||
| 
 | ||||
| 	it = NewBufferIterator(NewListSeriesIterator(samples{ | ||||
|  | @ -115,29 +115,29 @@ func TestBufferedSeriesIterator(t *testing.T) { | |||
| 		sample{t: 101, v: 10}, | ||||
| 	}), 2) | ||||
| 
 | ||||
| 	assert.True(t, it.Seek(-123), "seek failed") | ||||
| 	require.True(t, it.Seek(-123), "seek failed") | ||||
| 	sampleEq(1, 2) | ||||
| 	bufferEq(nil) | ||||
| 
 | ||||
| 	assert.True(t, it.Next(), "next failed") | ||||
| 	require.True(t, it.Next(), "next failed") | ||||
| 	sampleEq(2, 3) | ||||
| 	bufferEq([]sample{{t: 1, v: 2}}) | ||||
| 
 | ||||
| 	assert.True(t, it.Next(), "next failed") | ||||
| 	assert.True(t, it.Next(), "next failed") | ||||
| 	assert.True(t, it.Next(), "next failed") | ||||
| 	require.True(t, it.Next(), "next failed") | ||||
| 	require.True(t, it.Next(), "next failed") | ||||
| 	require.True(t, it.Next(), "next failed") | ||||
| 	sampleEq(5, 6) | ||||
| 	bufferEq([]sample{{t: 2, v: 3}, {t: 3, v: 4}, {t: 4, v: 5}}) | ||||
| 
 | ||||
| 	assert.True(t, it.Seek(5), "seek failed") | ||||
| 	require.True(t, it.Seek(5), "seek failed") | ||||
| 	sampleEq(5, 6) | ||||
| 	bufferEq([]sample{{t: 2, v: 3}, {t: 3, v: 4}, {t: 4, v: 5}}) | ||||
| 
 | ||||
| 	assert.True(t, it.Seek(101), "seek failed") | ||||
| 	require.True(t, it.Seek(101), "seek failed") | ||||
| 	sampleEq(101, 10) | ||||
| 	bufferEq([]sample{{t: 99, v: 8}, {t: 100, v: 9}}) | ||||
| 
 | ||||
| 	assert.False(t, it.Next(), "next succeeded unexpectedly") | ||||
| 	require.False(t, it.Next(), "next succeeded unexpectedly") | ||||
| } | ||||
| 
 | ||||
| // At() should not be called once Next() returns false.
 | ||||
|  | @ -147,7 +147,7 @@ func TestBufferedSeriesIteratorNoBadAt(t *testing.T) { | |||
| 	m := &mockSeriesIterator{ | ||||
| 		seek: func(int64) bool { return false }, | ||||
| 		at: func() (int64, float64) { | ||||
| 			assert.False(t, done, "unexpectedly done") | ||||
| 			require.False(t, done, "unexpectedly done") | ||||
| 			done = true | ||||
| 			return 0, 0 | ||||
| 		}, | ||||
|  | @ -171,7 +171,7 @@ func BenchmarkBufferedSeriesIterator(b *testing.B) { | |||
| 	for it.Next() { | ||||
| 		// scan everything
 | ||||
| 	} | ||||
| 	assert.NoError(b, it.Err()) | ||||
| 	require.NoError(b, it.Err()) | ||||
| } | ||||
| 
 | ||||
| type mockSeriesIterator struct { | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/storage" | ||||
|  | @ -43,7 +43,7 @@ func TestFanout_SelectSorted(t *testing.T) { | |||
| 	app1.Add(inputLabel, 2000, 2) | ||||
| 	inputTotalSize++ | ||||
| 	err := app1.Commit() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	remoteStorage1 := teststorage.New(t) | ||||
| 	defer remoteStorage1.Close() | ||||
|  | @ -55,7 +55,7 @@ func TestFanout_SelectSorted(t *testing.T) { | |||
| 	app2.Add(inputLabel, 5000, 5) | ||||
| 	inputTotalSize++ | ||||
| 	err = app2.Commit() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	remoteStorage2 := teststorage.New(t) | ||||
| 	defer remoteStorage2.Close() | ||||
|  | @ -69,17 +69,17 @@ func TestFanout_SelectSorted(t *testing.T) { | |||
| 	inputTotalSize++ | ||||
| 
 | ||||
| 	err = app3.Commit() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	fanoutStorage := storage.NewFanout(nil, priStorage, remoteStorage1, remoteStorage2) | ||||
| 
 | ||||
| 	t.Run("querier", func(t *testing.T) { | ||||
| 		querier, err := fanoutStorage.Querier(context.Background(), 0, 8000) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		defer querier.Close() | ||||
| 
 | ||||
| 		matcher, err := labels.NewMatcher(labels.MatchEqual, model.MetricNameLabel, "a") | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		seriesSet := querier.Select(true, nil, matcher) | ||||
| 
 | ||||
|  | @ -96,16 +96,16 @@ func TestFanout_SelectSorted(t *testing.T) { | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		assert.Equal(t, labelsResult, outputLabel) | ||||
| 		assert.Equal(t, inputTotalSize, len(result)) | ||||
| 		require.Equal(t, labelsResult, outputLabel) | ||||
| 		require.Equal(t, inputTotalSize, len(result)) | ||||
| 	}) | ||||
| 	t.Run("chunk querier", func(t *testing.T) { | ||||
| 		querier, err := fanoutStorage.ChunkQuerier(ctx, 0, 8000) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		defer querier.Close() | ||||
| 
 | ||||
| 		matcher, err := labels.NewMatcher(labels.MatchEqual, model.MetricNameLabel, "a") | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		seriesSet := storage.NewSeriesSetFromChunkSeriesSet(querier.Select(true, nil, matcher)) | ||||
| 
 | ||||
|  | @ -122,9 +122,9 @@ func TestFanout_SelectSorted(t *testing.T) { | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		assert.NoError(t, seriesSet.Err()) | ||||
| 		assert.Equal(t, labelsResult, outputLabel) | ||||
| 		assert.Equal(t, inputTotalSize, len(result)) | ||||
| 		require.NoError(t, seriesSet.Err()) | ||||
| 		require.Equal(t, labelsResult, outputLabel) | ||||
| 		require.Equal(t, inputTotalSize, len(result)) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
|  | @ -157,7 +157,7 @@ func TestFanoutErrors(t *testing.T) { | |||
| 
 | ||||
| 		t.Run("samples", func(t *testing.T) { | ||||
| 			querier, err := fanoutStorage.Querier(context.Background(), 0, 8000) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer querier.Close() | ||||
| 
 | ||||
| 			matcher := labels.MustNewMatcher(labels.MatchEqual, "a", "b") | ||||
|  | @ -169,20 +169,20 @@ func TestFanoutErrors(t *testing.T) { | |||
| 			} | ||||
| 
 | ||||
| 			if tc.err != nil { | ||||
| 				assert.Error(t, ss.Err()) | ||||
| 				assert.Equal(t, tc.err.Error(), ss.Err().Error()) | ||||
| 				require.Error(t, ss.Err()) | ||||
| 				require.Equal(t, tc.err.Error(), ss.Err().Error()) | ||||
| 			} | ||||
| 
 | ||||
| 			if tc.warning != nil { | ||||
| 				assert.Greater(t, len(ss.Warnings()), 0, "warnings expected") | ||||
| 				assert.Error(t, ss.Warnings()[0]) | ||||
| 				assert.Equal(t, tc.warning.Error(), ss.Warnings()[0].Error()) | ||||
| 				require.Greater(t, len(ss.Warnings()), 0, "warnings expected") | ||||
| 				require.Error(t, ss.Warnings()[0]) | ||||
| 				require.Equal(t, tc.warning.Error(), ss.Warnings()[0].Error()) | ||||
| 			} | ||||
| 		}) | ||||
| 		t.Run("chunks", func(t *testing.T) { | ||||
| 			t.Skip("enable once TestStorage and TSDB implements ChunkQuerier") | ||||
| 			querier, err := fanoutStorage.ChunkQuerier(context.Background(), 0, 8000) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer querier.Close() | ||||
| 
 | ||||
| 			matcher := labels.MustNewMatcher(labels.MatchEqual, "a", "b") | ||||
|  | @ -194,14 +194,14 @@ func TestFanoutErrors(t *testing.T) { | |||
| 			} | ||||
| 
 | ||||
| 			if tc.err != nil { | ||||
| 				assert.Error(t, ss.Err()) | ||||
| 				assert.Equal(t, tc.err.Error(), ss.Err().Error()) | ||||
| 				require.Error(t, ss.Err()) | ||||
| 				require.Equal(t, tc.err.Error(), ss.Err().Error()) | ||||
| 			} | ||||
| 
 | ||||
| 			if tc.warning != nil { | ||||
| 				assert.Greater(t, len(ss.Warnings()), 0, "warnings expected") | ||||
| 				assert.Error(t, ss.Warnings()[0]) | ||||
| 				assert.Equal(t, tc.warning.Error(), ss.Warnings()[0].Error()) | ||||
| 				require.Greater(t, len(ss.Warnings()), 0, "warnings expected") | ||||
| 				require.Error(t, ss.Warnings()[0]) | ||||
| 				require.Equal(t, tc.warning.Error(), ss.Warnings()[0].Error()) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/tsdb/chunkenc" | ||||
|  | @ -194,19 +194,19 @@ func TestMergeQuerierWithChainMerger(t *testing.T) { | |||
| 			for mergedQuerier.Next() { | ||||
| 				mergedSeries = append(mergedSeries, mergedQuerier.At()) | ||||
| 			} | ||||
| 			assert.NoError(t, mergedQuerier.Err()) | ||||
| 			require.NoError(t, mergedQuerier.Err()) | ||||
| 
 | ||||
| 			for _, actualSeries := range mergedSeries { | ||||
| 				assert.True(t, tc.expected.Next(), "Expected Next() to be true") | ||||
| 				require.True(t, tc.expected.Next(), "Expected Next() to be true") | ||||
| 				expectedSeries := tc.expected.At() | ||||
| 				assert.Equal(t, expectedSeries.Labels(), actualSeries.Labels()) | ||||
| 				require.Equal(t, expectedSeries.Labels(), actualSeries.Labels()) | ||||
| 
 | ||||
| 				expSmpl, expErr := ExpandSamples(expectedSeries.Iterator(), nil) | ||||
| 				actSmpl, actErr := ExpandSamples(actualSeries.Iterator(), nil) | ||||
| 				assert.Equal(t, expErr, actErr) | ||||
| 				assert.Equal(t, expSmpl, actSmpl) | ||||
| 				require.Equal(t, expErr, actErr) | ||||
| 				require.Equal(t, expSmpl, actSmpl) | ||||
| 			} | ||||
| 			assert.False(t, tc.expected.Next(), "Expected Next() to be false") | ||||
| 			require.False(t, tc.expected.Next(), "Expected Next() to be false") | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -364,19 +364,19 @@ func TestMergeChunkQuerierWithNoVerticalChunkSeriesMerger(t *testing.T) { | |||
| 
 | ||||
| 			merged := NewMergeChunkQuerier([]ChunkQuerier{p}, qs, NewCompactingChunkSeriesMerger(nil)).Select(false, nil) | ||||
| 			for merged.Next() { | ||||
| 				assert.True(t, tc.expected.Next(), "Expected Next() to be true") | ||||
| 				require.True(t, tc.expected.Next(), "Expected Next() to be true") | ||||
| 				actualSeries := merged.At() | ||||
| 				expectedSeries := tc.expected.At() | ||||
| 				assert.Equal(t, expectedSeries.Labels(), actualSeries.Labels()) | ||||
| 				require.Equal(t, expectedSeries.Labels(), actualSeries.Labels()) | ||||
| 
 | ||||
| 				expChks, expErr := ExpandChunks(expectedSeries.Iterator()) | ||||
| 				actChks, actErr := ExpandChunks(actualSeries.Iterator()) | ||||
| 				assert.Equal(t, expErr, actErr) | ||||
| 				assert.Equal(t, expChks, actChks) | ||||
| 				require.Equal(t, expErr, actErr) | ||||
| 				require.Equal(t, expChks, actChks) | ||||
| 
 | ||||
| 			} | ||||
| 			assert.NoError(t, merged.Err()) | ||||
| 			assert.False(t, tc.expected.Next(), "Expected Next() to be false") | ||||
| 			require.NoError(t, merged.Err()) | ||||
| 			require.False(t, tc.expected.Next(), "Expected Next() to be false") | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -468,12 +468,12 @@ func TestCompactingChunkSeriesMerger(t *testing.T) { | |||
| 	} { | ||||
| 		t.Run(tc.name, func(t *testing.T) { | ||||
| 			merged := m(tc.input...) | ||||
| 			assert.Equal(t, tc.expected.Labels(), merged.Labels()) | ||||
| 			require.Equal(t, tc.expected.Labels(), merged.Labels()) | ||||
| 			actChks, actErr := ExpandChunks(merged.Iterator()) | ||||
| 			expChks, expErr := ExpandChunks(tc.expected.Iterator()) | ||||
| 
 | ||||
| 			assert.Equal(t, expErr, actErr) | ||||
| 			assert.Equal(t, expChks, actChks) | ||||
| 			require.Equal(t, expErr, actErr) | ||||
| 			require.Equal(t, expChks, actChks) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -612,8 +612,8 @@ func TestChainSampleIterator(t *testing.T) { | |||
| 	} { | ||||
| 		merged := newChainSampleIterator(tc.input) | ||||
| 		actual, err := ExpandSamples(merged, nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, tc.expected, actual) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, tc.expected, actual) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -655,9 +655,9 @@ func TestChainSampleIteratorSeek(t *testing.T) { | |||
| 			actual = append(actual, sample{t, v}) | ||||
| 		} | ||||
| 		s, err := ExpandSamples(merged, nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		actual = append(actual, s...) | ||||
| 		assert.Equal(t, tc.expected, actual) | ||||
| 		require.Equal(t, tc.expected, actual) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -689,7 +689,7 @@ func benchmarkDrain(seriesSet SeriesSet, b *testing.B) { | |||
| 	for n := 0; n < b.N; n++ { | ||||
| 		for seriesSet.Next() { | ||||
| 			result, err = ExpandSamples(seriesSet.At().Iterator(), nil) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -789,9 +789,9 @@ func unwrapMockGenericQuerier(t *testing.T, qr genericQuerier) *mockGenericQueri | |||
| 	m, ok := qr.(*mockGenericQuerier) | ||||
| 	if !ok { | ||||
| 		s, ok := qr.(*secondaryQuerier) | ||||
| 		assert.True(t, ok, "expected secondaryQuerier got something else") | ||||
| 		require.True(t, ok, "expected secondaryQuerier got something else") | ||||
| 		m, ok = s.genericQuerier.(*mockGenericQuerier) | ||||
| 		assert.True(t, ok, "expected mockGenericQuerier got something else") | ||||
| 		require.True(t, ok, "expected mockGenericQuerier got something else") | ||||
| 	} | ||||
| 	return m | ||||
| } | ||||
|  | @ -922,10 +922,10 @@ func TestMergeGenericQuerierWithSecondaries_ErrorHandling(t *testing.T) { | |||
| 				for res.Next() { | ||||
| 					lbls = append(lbls, res.At().Labels()) | ||||
| 				} | ||||
| 				assert.Equal(t, tcase.expectedWarnings[0], res.Warnings()) | ||||
| 				assert.Equal(t, tcase.expectedErrs[0], res.Err()) | ||||
| 				assert.True(t, errors.Is(res.Err(), tcase.expectedErrs[0]), "expected error doesn't match") | ||||
| 				assert.Equal(t, tcase.expectedSelectsSeries, lbls) | ||||
| 				require.Equal(t, tcase.expectedWarnings[0], res.Warnings()) | ||||
| 				require.Equal(t, tcase.expectedErrs[0], res.Err()) | ||||
| 				require.True(t, errors.Is(res.Err(), tcase.expectedErrs[0]), "expected error doesn't match") | ||||
| 				require.Equal(t, tcase.expectedSelectsSeries, lbls) | ||||
| 
 | ||||
| 				for _, qr := range q.queriers { | ||||
| 					m := unwrapMockGenericQuerier(t, qr) | ||||
|  | @ -934,14 +934,14 @@ func TestMergeGenericQuerierWithSecondaries_ErrorHandling(t *testing.T) { | |||
| 					if len(q.queriers) == 1 { | ||||
| 						exp[0] = false | ||||
| 					} | ||||
| 					assert.Equal(t, exp, m.sortedSeriesRequested) | ||||
| 					require.Equal(t, exp, m.sortedSeriesRequested) | ||||
| 				} | ||||
| 			}) | ||||
| 			t.Run("LabelNames", func(t *testing.T) { | ||||
| 				res, w, err := q.LabelNames() | ||||
| 				assert.Equal(t, tcase.expectedWarnings[1], w) | ||||
| 				assert.True(t, errors.Is(err, tcase.expectedErrs[1]), "expected error doesn't match") | ||||
| 				assert.Equal(t, tcase.expectedLabels, res) | ||||
| 				require.Equal(t, tcase.expectedWarnings[1], w) | ||||
| 				require.True(t, errors.Is(err, tcase.expectedErrs[1]), "expected error doesn't match") | ||||
| 				require.Equal(t, tcase.expectedLabels, res) | ||||
| 
 | ||||
| 				if err != nil { | ||||
| 					return | ||||
|  | @ -949,14 +949,14 @@ func TestMergeGenericQuerierWithSecondaries_ErrorHandling(t *testing.T) { | |||
| 				for _, qr := range q.queriers { | ||||
| 					m := unwrapMockGenericQuerier(t, qr) | ||||
| 
 | ||||
| 					assert.Equal(t, 1, m.labelNamesCalls) | ||||
| 					require.Equal(t, 1, m.labelNamesCalls) | ||||
| 				} | ||||
| 			}) | ||||
| 			t.Run("LabelValues", func(t *testing.T) { | ||||
| 				res, w, err := q.LabelValues("test") | ||||
| 				assert.Equal(t, tcase.expectedWarnings[2], w) | ||||
| 				assert.True(t, errors.Is(err, tcase.expectedErrs[2]), "expected error doesn't match") | ||||
| 				assert.Equal(t, tcase.expectedLabels, res) | ||||
| 				require.Equal(t, tcase.expectedWarnings[2], w) | ||||
| 				require.True(t, errors.Is(err, tcase.expectedErrs[2]), "expected error doesn't match") | ||||
| 				require.Equal(t, tcase.expectedLabels, res) | ||||
| 
 | ||||
| 				if err != nil { | ||||
| 					return | ||||
|  | @ -964,7 +964,7 @@ func TestMergeGenericQuerierWithSecondaries_ErrorHandling(t *testing.T) { | |||
| 				for _, qr := range q.queriers { | ||||
| 					m := unwrapMockGenericQuerier(t, qr) | ||||
| 
 | ||||
| 					assert.Equal(t, []string{"test"}, m.labelNamesRequested) | ||||
| 					require.Equal(t, []string{"test"}, m.labelNamesRequested) | ||||
| 				} | ||||
| 			}) | ||||
| 		}) | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ import ( | |||
| 	"io" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| type mockedFlusher struct { | ||||
|  | @ -45,48 +45,48 @@ func TestChunkedReaderCanReadFromChunkedWriter(t *testing.T) { | |||
| 
 | ||||
| 	for _, msg := range msgs { | ||||
| 		n, err := w.Write(msg) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, len(msg), n) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, len(msg), n) | ||||
| 	} | ||||
| 
 | ||||
| 	i := 0 | ||||
| 	for ; i < 4; i++ { | ||||
| 		msg, err := r.Next() | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Less(t, i, len(msgs), "more messages then expected") | ||||
| 		assert.Equal(t, msgs[i], msg) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Less(t, i, len(msgs), "more messages then expected") | ||||
| 		require.Equal(t, msgs[i], msg) | ||||
| 	} | ||||
| 
 | ||||
| 	// Empty byte slice is skipped.
 | ||||
| 	i++ | ||||
| 
 | ||||
| 	msg, err := r.Next() | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Less(t, i, len(msgs), "more messages then expected") | ||||
| 	assert.Equal(t, msgs[i], msg) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Less(t, i, len(msgs), "more messages then expected") | ||||
| 	require.Equal(t, msgs[i], msg) | ||||
| 
 | ||||
| 	_, err = r.Next() | ||||
| 	assert.Error(t, err, "expected io.EOF") | ||||
| 	assert.Equal(t, io.EOF, err) | ||||
| 	require.Error(t, err, "expected io.EOF") | ||||
| 	require.Equal(t, io.EOF, err) | ||||
| 
 | ||||
| 	assert.Equal(t, 5, f.flushed) | ||||
| 	require.Equal(t, 5, f.flushed) | ||||
| } | ||||
| 
 | ||||
| func TestChunkedReader_Overflow(t *testing.T) { | ||||
| 	b := &bytes.Buffer{} | ||||
| 	_, err := NewChunkedWriter(b, &mockedFlusher{}).Write([]byte("twelve bytes")) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	b2 := make([]byte, 12) | ||||
| 	copy(b2, b.Bytes()) | ||||
| 
 | ||||
| 	ret, err := NewChunkedReader(b, 12, nil).Next() | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, "twelve bytes", string(ret)) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, "twelve bytes", string(ret)) | ||||
| 
 | ||||
| 	_, err = NewChunkedReader(bytes.NewReader(b2), 11, nil).Next() | ||||
| 	assert.Error(t, err, "expect exceed limit error") | ||||
| 	assert.Equal(t, "chunkedReader: message size exceeded the limit 11 bytes; got: 12 bytes", err.Error()) | ||||
| 	require.Error(t, err, "expect exceed limit error") | ||||
| 	require.Equal(t, "chunkedReader: message size exceeded the limit 11 bytes; got: 12 bytes", err.Error()) | ||||
| } | ||||
| 
 | ||||
| func TestChunkedReader_CorruptedFrame(t *testing.T) { | ||||
|  | @ -94,13 +94,13 @@ func TestChunkedReader_CorruptedFrame(t *testing.T) { | |||
| 	w := NewChunkedWriter(b, &mockedFlusher{}) | ||||
| 
 | ||||
| 	n, err := w.Write([]byte("test1")) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 5, n) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 5, n) | ||||
| 
 | ||||
| 	bs := b.Bytes() | ||||
| 	bs[9] = 1 // Malform the frame by changing one byte.
 | ||||
| 
 | ||||
| 	_, err = NewChunkedReader(bytes.NewReader(bs), 20, nil).Next() | ||||
| 	assert.Error(t, err, "expected malformed frame") | ||||
| 	assert.Equal(t, "chunkedReader: corrupted frame; checksum mismatch", err.Error()) | ||||
| 	require.Error(t, err, "expected malformed frame") | ||||
| 	require.Equal(t, "chunkedReader: corrupted frame; checksum mismatch", err.Error()) | ||||
| } | ||||
|  |  | |||
|  | @ -25,7 +25,7 @@ import ( | |||
| 	"github.com/pkg/errors" | ||||
| 	config_util "github.com/prometheus/common/config" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| var longErrMessage = strings.Repeat("error message", maxErrMsgLen) | ||||
|  | @ -61,7 +61,7 @@ func TestStoreHTTPErrorHandling(t *testing.T) { | |||
| 		) | ||||
| 
 | ||||
| 		serverURL, err := url.Parse(server.URL) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		conf := &ClientConfig{ | ||||
| 			URL:     &config_util.URL{URL: serverURL}, | ||||
|  | @ -69,15 +69,15 @@ func TestStoreHTTPErrorHandling(t *testing.T) { | |||
| 		} | ||||
| 
 | ||||
| 		hash, err := toHash(conf) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		c, err := NewWriteClient(hash, conf) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		err = c.Store(context.Background(), []byte{}) | ||||
| 		if test.err != nil { | ||||
| 			assert.EqualError(t, err, test.err.Error()) | ||||
| 			require.EqualError(t, err, test.err.Error()) | ||||
| 		} else { | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		} | ||||
| 
 | ||||
| 		server.Close() | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ import ( | |||
| 	"fmt" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/prompb" | ||||
|  | @ -115,10 +115,10 @@ func TestValidateLabelsAndMetricName(t *testing.T) { | |||
| 		t.Run(test.description, func(t *testing.T) { | ||||
| 			err := validateLabelsAndMetricName(test.input) | ||||
| 			if test.expectedErr != "" { | ||||
| 				assert.Error(t, err) | ||||
| 				assert.Equal(t, test.expectedErr, err.Error()) | ||||
| 				require.Error(t, err) | ||||
| 				require.Equal(t, test.expectedErr, err.Error()) | ||||
| 			} else { | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
|  | @ -136,11 +136,11 @@ func TestConcreteSeriesSet(t *testing.T) { | |||
| 	c := &concreteSeriesSet{ | ||||
| 		series: []storage.Series{series1, series2}, | ||||
| 	} | ||||
| 	assert.True(t, c.Next(), "Expected Next() to be true.") | ||||
| 	assert.Equal(t, series1, c.At(), "Unexpected series returned.") | ||||
| 	assert.True(t, c.Next(), "Expected Next() to be true.") | ||||
| 	assert.Equal(t, series2, c.At(), "Unexpected series returned.") | ||||
| 	assert.False(t, c.Next(), "Expected Next() to be false.") | ||||
| 	require.True(t, c.Next(), "Expected Next() to be true.") | ||||
| 	require.Equal(t, series1, c.At(), "Unexpected series returned.") | ||||
| 	require.True(t, c.Next(), "Expected Next() to be true.") | ||||
| 	require.Equal(t, series2, c.At(), "Unexpected series returned.") | ||||
| 	require.False(t, c.Next(), "Expected Next() to be false.") | ||||
| } | ||||
| 
 | ||||
| func TestConcreteSeriesClonesLabels(t *testing.T) { | ||||
|  | @ -153,13 +153,13 @@ func TestConcreteSeriesClonesLabels(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	gotLabels := cs.Labels() | ||||
| 	assert.Equal(t, lbls, gotLabels) | ||||
| 	require.Equal(t, lbls, gotLabels) | ||||
| 
 | ||||
| 	gotLabels[0].Value = "foo" | ||||
| 	gotLabels[1].Value = "bar" | ||||
| 
 | ||||
| 	gotLabels = cs.Labels() | ||||
| 	assert.Equal(t, lbls, gotLabels) | ||||
| 	require.Equal(t, lbls, gotLabels) | ||||
| } | ||||
| 
 | ||||
| func TestFromQueryResultWithDuplicates(t *testing.T) { | ||||
|  | @ -183,9 +183,9 @@ func TestFromQueryResultWithDuplicates(t *testing.T) { | |||
| 
 | ||||
| 	errSeries, isErrSeriesSet := series.(errSeriesSet) | ||||
| 
 | ||||
| 	assert.True(t, isErrSeriesSet, "Expected resulting series to be an errSeriesSet") | ||||
| 	require.True(t, isErrSeriesSet, "Expected resulting series to be an errSeriesSet") | ||||
| 	errMessage := errSeries.Err().Error() | ||||
| 	assert.Equal(t, "duplicate label with name: foo", errMessage, fmt.Sprintf("Expected error to be from duplicate label, but got: %s", errMessage)) | ||||
| 	require.Equal(t, "duplicate label with name: foo", errMessage, fmt.Sprintf("Expected error to be from duplicate label, but got: %s", errMessage)) | ||||
| } | ||||
| 
 | ||||
| func TestNegotiateResponseType(t *testing.T) { | ||||
|  | @ -193,23 +193,23 @@ func TestNegotiateResponseType(t *testing.T) { | |||
| 		prompb.ReadRequest_STREAMED_XOR_CHUNKS, | ||||
| 		prompb.ReadRequest_SAMPLES, | ||||
| 	}) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, prompb.ReadRequest_STREAMED_XOR_CHUNKS, r) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, prompb.ReadRequest_STREAMED_XOR_CHUNKS, r) | ||||
| 
 | ||||
| 	r2, err := NegotiateResponseType([]prompb.ReadRequest_ResponseType{ | ||||
| 		prompb.ReadRequest_SAMPLES, | ||||
| 		prompb.ReadRequest_STREAMED_XOR_CHUNKS, | ||||
| 	}) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, prompb.ReadRequest_SAMPLES, r2) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, prompb.ReadRequest_SAMPLES, r2) | ||||
| 
 | ||||
| 	r3, err := NegotiateResponseType([]prompb.ReadRequest_ResponseType{}) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, prompb.ReadRequest_SAMPLES, r3) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, prompb.ReadRequest_SAMPLES, r3) | ||||
| 
 | ||||
| 	_, err = NegotiateResponseType([]prompb.ReadRequest_ResponseType{20}) | ||||
| 	assert.Error(t, err, "expected error due to not supported requested response types") | ||||
| 	assert.Equal(t, "server does not support any of the requested response types: [20]; supported: map[SAMPLES:{} STREAMED_XOR_CHUNKS:{}]", err.Error()) | ||||
| 	require.Error(t, err, "expected error due to not supported requested response types") | ||||
| 	require.Equal(t, "server does not support any of the requested response types: [20]; supported: map[SAMPLES:{} STREAMED_XOR_CHUNKS:{}]", err.Error()) | ||||
| } | ||||
| 
 | ||||
| func TestMergeLabels(t *testing.T) { | ||||
|  | @ -227,6 +227,6 @@ func TestMergeLabels(t *testing.T) { | |||
| 			expected:  []prompb.Label{{Name: "aaa", Value: "foo"}, {Name: "bbb", Value: "bar"}, {Name: "ccc", Value: "bar"}, {Name: "ddd", Value: "foo"}}, | ||||
| 		}, | ||||
| 	} { | ||||
| 		assert.Equal(t, tc.expected, MergeLabels(tc.primary, tc.secondary)) | ||||
| 		require.Equal(t, tc.expected, MergeLabels(tc.primary, tc.secondary)) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ import ( | |||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestIntern(t *testing.T) { | ||||
|  | @ -32,8 +32,8 @@ func TestIntern(t *testing.T) { | |||
| 	interner.intern(testString) | ||||
| 	interned, ok := interner.pool[testString] | ||||
| 
 | ||||
| 	assert.Equal(t, true, ok) | ||||
| 	assert.Equal(t, int64(1), interned.refs.Load(), fmt.Sprintf("expected refs to be 1 but it was %d", interned.refs.Load())) | ||||
| 	require.Equal(t, true, ok) | ||||
| 	require.Equal(t, int64(1), interned.refs.Load(), fmt.Sprintf("expected refs to be 1 but it was %d", interned.refs.Load())) | ||||
| } | ||||
| 
 | ||||
| func TestIntern_MultiRef(t *testing.T) { | ||||
|  | @ -43,14 +43,14 @@ func TestIntern_MultiRef(t *testing.T) { | |||
| 	interner.intern(testString) | ||||
| 	interned, ok := interner.pool[testString] | ||||
| 
 | ||||
| 	assert.Equal(t, true, ok) | ||||
| 	assert.Equal(t, int64(1), interned.refs.Load(), fmt.Sprintf("expected refs to be 1 but it was %d", interned.refs.Load())) | ||||
| 	require.Equal(t, true, ok) | ||||
| 	require.Equal(t, int64(1), interned.refs.Load(), fmt.Sprintf("expected refs to be 1 but it was %d", interned.refs.Load())) | ||||
| 
 | ||||
| 	interner.intern(testString) | ||||
| 	interned, ok = interner.pool[testString] | ||||
| 
 | ||||
| 	assert.Equal(t, true, ok) | ||||
| 	assert.Equal(t, int64(2), interned.refs.Load(), fmt.Sprintf("expected refs to be 2 but it was %d", interned.refs.Load())) | ||||
| 	require.Equal(t, true, ok) | ||||
| 	require.Equal(t, int64(2), interned.refs.Load(), fmt.Sprintf("expected refs to be 2 but it was %d", interned.refs.Load())) | ||||
| } | ||||
| 
 | ||||
| func TestIntern_DeleteRef(t *testing.T) { | ||||
|  | @ -60,12 +60,12 @@ func TestIntern_DeleteRef(t *testing.T) { | |||
| 	interner.intern(testString) | ||||
| 	interned, ok := interner.pool[testString] | ||||
| 
 | ||||
| 	assert.Equal(t, true, ok) | ||||
| 	assert.Equal(t, int64(1), interned.refs.Load(), fmt.Sprintf("expected refs to be 1 but it was %d", interned.refs.Load())) | ||||
| 	require.Equal(t, true, ok) | ||||
| 	require.Equal(t, int64(1), interned.refs.Load(), fmt.Sprintf("expected refs to be 1 but it was %d", interned.refs.Load())) | ||||
| 
 | ||||
| 	interner.release(testString) | ||||
| 	_, ok = interner.pool[testString] | ||||
| 	assert.Equal(t, false, ok) | ||||
| 	require.Equal(t, false, ok) | ||||
| } | ||||
| 
 | ||||
| func TestIntern_MultiRef_Concurrent(t *testing.T) { | ||||
|  | @ -74,8 +74,8 @@ func TestIntern_MultiRef_Concurrent(t *testing.T) { | |||
| 
 | ||||
| 	interner.intern(testString) | ||||
| 	interned, ok := interner.pool[testString] | ||||
| 	assert.Equal(t, true, ok) | ||||
| 	assert.Equal(t, int64(1), interned.refs.Load(), fmt.Sprintf("expected refs to be 1 but it was %d", interned.refs.Load())) | ||||
| 	require.Equal(t, true, ok) | ||||
| 	require.Equal(t, int64(1), interned.refs.Load(), fmt.Sprintf("expected refs to be 1 but it was %d", interned.refs.Load())) | ||||
| 
 | ||||
| 	go interner.release(testString) | ||||
| 
 | ||||
|  | @ -86,6 +86,6 @@ func TestIntern_MultiRef_Concurrent(t *testing.T) { | |||
| 	interner.mtx.RLock() | ||||
| 	interned, ok = interner.pool[testString] | ||||
| 	interner.mtx.RUnlock() | ||||
| 	assert.Equal(t, true, ok) | ||||
| 	assert.Equal(t, int64(1), interned.refs.Load(), fmt.Sprintf("expected refs to be 1 but it was %d", interned.refs.Load())) | ||||
| 	require.Equal(t, true, ok) | ||||
| 	require.Equal(t, int64(1), interned.refs.Load(), fmt.Sprintf("expected refs to be 1 but it was %d", interned.refs.Load())) | ||||
| } | ||||
|  |  | |||
|  | @ -34,7 +34,7 @@ import ( | |||
| 	client_testutil "github.com/prometheus/client_golang/prometheus/testutil" | ||||
| 	common_config "github.com/prometheus/common/config" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/atomic" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/config" | ||||
|  | @ -73,9 +73,9 @@ func TestSampleDelivery(t *testing.T) { | |||
| 	queueConfig.MaxSamplesPerSend = len(samples) / 2 | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "TestSampleDeliver") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	s := NewStorage(nil, nil, nil, dir, defaultFlushDeadline) | ||||
|  | @ -95,9 +95,9 @@ func TestSampleDelivery(t *testing.T) { | |||
| 		}, | ||||
| 	} | ||||
| 	writeConfig.QueueConfig = queueConfig | ||||
| 	assert.NoError(t, s.ApplyConfig(conf)) | ||||
| 	require.NoError(t, s.ApplyConfig(conf)) | ||||
| 	hash, err := toHash(writeConfig) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	qm := s.rws.queues[hash] | ||||
| 	qm.SetClient(c) | ||||
| 
 | ||||
|  | @ -121,9 +121,9 @@ func TestSampleDeliveryTimeout(t *testing.T) { | |||
| 	cfg.BatchSendDeadline = model.Duration(100 * time.Millisecond) | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "TestSampleDeliveryTimeout") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	metrics := newQueueManagerMetrics(nil, "", "") | ||||
|  | @ -164,9 +164,9 @@ func TestSampleDeliveryOrder(t *testing.T) { | |||
| 	c.expectSamples(samples, series) | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "TestSampleDeliveryOrder") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	metrics := newQueueManagerMetrics(nil, "", "") | ||||
|  | @ -185,9 +185,9 @@ func TestShutdown(t *testing.T) { | |||
| 	c := NewTestBlockedWriteClient() | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "TestShutdown") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	metrics := newQueueManagerMetrics(nil, "", "") | ||||
|  | @ -226,9 +226,9 @@ func TestSeriesReset(t *testing.T) { | |||
| 	numSeries := 25 | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "TestSeriesReset") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	metrics := newQueueManagerMetrics(nil, "", "") | ||||
|  | @ -240,9 +240,9 @@ func TestSeriesReset(t *testing.T) { | |||
| 		} | ||||
| 		m.StoreSeries(series, i) | ||||
| 	} | ||||
| 	assert.Equal(t, numSegments*numSeries, len(m.seriesLabels)) | ||||
| 	require.Equal(t, numSegments*numSeries, len(m.seriesLabels)) | ||||
| 	m.SeriesReset(2) | ||||
| 	assert.Equal(t, numSegments*numSeries/2, len(m.seriesLabels)) | ||||
| 	require.Equal(t, numSegments*numSeries/2, len(m.seriesLabels)) | ||||
| } | ||||
| 
 | ||||
| func TestReshard(t *testing.T) { | ||||
|  | @ -258,9 +258,9 @@ func TestReshard(t *testing.T) { | |||
| 	cfg.MaxShards = 1 | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "TestReshard") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	metrics := newQueueManagerMetrics(nil, "", "") | ||||
|  | @ -273,7 +273,7 @@ func TestReshard(t *testing.T) { | |||
| 	go func() { | ||||
| 		for i := 0; i < len(samples); i += config.DefaultQueueConfig.Capacity { | ||||
| 			sent := m.Append(samples[i : i+config.DefaultQueueConfig.Capacity]) | ||||
| 			assert.True(t, sent, "samples not sent") | ||||
| 			require.True(t, sent, "samples not sent") | ||||
| 			time.Sleep(100 * time.Millisecond) | ||||
| 		} | ||||
| 	}() | ||||
|  | @ -334,7 +334,7 @@ func TestReleaseNoninternedString(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	metric := client_testutil.ToFloat64(noReferenceReleases) | ||||
| 	assert.Equal(t, 0.0, metric, "expected there to be no calls to release for strings that were not already interned: %d", int(metric)) | ||||
| 	require.Equal(t, 0.0, metric, "expected there to be no calls to release for strings that were not already interned: %d", int(metric)) | ||||
| } | ||||
| 
 | ||||
| func TestShouldReshard(t *testing.T) { | ||||
|  | @ -376,7 +376,7 @@ func TestShouldReshard(t *testing.T) { | |||
| 
 | ||||
| 		m.Stop() | ||||
| 
 | ||||
| 		assert.Equal(t, c.expectedToReshard, shouldReshard) | ||||
| 		require.Equal(t, c.expectedToReshard, shouldReshard) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -455,7 +455,7 @@ func (c *TestWriteClient) waitForExpectedSamples(tb testing.TB) { | |||
| 	c.mtx.Lock() | ||||
| 	defer c.mtx.Unlock() | ||||
| 	for ts, expectedSamples := range c.expectedSamples { | ||||
| 		assert.Equal(tb, expectedSamples, c.receivedSamples[ts], ts) | ||||
| 		require.Equal(tb, expectedSamples, c.receivedSamples[ts], ts) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -564,7 +564,7 @@ func BenchmarkSampleDelivery(b *testing.B) { | |||
| 	cfg.MaxShards = 1 | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "BenchmarkSampleDelivery") | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer os.RemoveAll(dir) | ||||
| 
 | ||||
| 	metrics := newQueueManagerMetrics(nil, "", "") | ||||
|  | @ -594,7 +594,7 @@ func BenchmarkStartup(b *testing.B) { | |||
| 	// Find the second largest segment; we will replay up to this.
 | ||||
| 	// (Second largest as WALWatcher will start tailing the largest).
 | ||||
| 	dirents, err := ioutil.ReadDir(dir) | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 
 | ||||
| 	var segments []int | ||||
| 	for _, dirent := range dirents { | ||||
|  | @ -616,7 +616,7 @@ func BenchmarkStartup(b *testing.B) { | |||
| 		m.watcher.SetStartTime(timestamp.Time(math.MaxInt64)) | ||||
| 		m.watcher.MaxSegment = segments[len(segments)-2] | ||||
| 		err := m.watcher.Run() | ||||
| 		assert.NoError(b, err) | ||||
| 		require.NoError(b, err) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -647,7 +647,7 @@ func TestProcessExternalLabels(t *testing.T) { | |||
| 			expected:       labels.Labels{{Name: "a", Value: "b"}}, | ||||
| 		}, | ||||
| 	} { | ||||
| 		assert.Equal(t, tc.expected, processExternalLabels(tc.labels, tc.externalLabels)) | ||||
| 		require.Equal(t, tc.expected, processExternalLabels(tc.labels, tc.externalLabels)) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -656,9 +656,9 @@ func TestCalculateDesiredShards(t *testing.T) { | |||
| 	cfg := config.DefaultQueueConfig | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "TestCalculateDesiredShards") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	metrics := newQueueManagerMetrics(nil, "", "") | ||||
|  | @ -703,7 +703,7 @@ func TestCalculateDesiredShards(t *testing.T) { | |||
| 	for ; ts < 120*time.Second; ts += shardUpdateDuration { | ||||
| 		addSamples(inputRate*int64(shardUpdateDuration/time.Second), ts) | ||||
| 		m.numShards = m.calculateDesiredShards() | ||||
| 		assert.Equal(t, 1, m.numShards) | ||||
| 		require.Equal(t, 1, m.numShards) | ||||
| 	} | ||||
| 
 | ||||
| 	// Assume 100ms per request, or 10 requests per second per shard.
 | ||||
|  | @ -725,10 +725,10 @@ func TestCalculateDesiredShards(t *testing.T) { | |||
| 
 | ||||
| 		t.Log("desiredShards", m.numShards, "pendingSamples", pendingSamples) | ||||
| 		m.numShards = m.calculateDesiredShards() | ||||
| 		assert.GreaterOrEqual(t, m.numShards, minShards, "Shards are too low. desiredShards=%d, minShards=%d, t_seconds=%d", m.numShards, minShards, ts/time.Second) | ||||
| 		assert.LessOrEqual(t, m.numShards, maxShards, "Shards are too high. desiredShards=%d, maxShards=%d, t_seconds=%d", m.numShards, maxShards, ts/time.Second) | ||||
| 		require.GreaterOrEqual(t, m.numShards, minShards, "Shards are too low. desiredShards=%d, minShards=%d, t_seconds=%d", m.numShards, minShards, ts/time.Second) | ||||
| 		require.LessOrEqual(t, m.numShards, maxShards, "Shards are too high. desiredShards=%d, maxShards=%d, t_seconds=%d", m.numShards, maxShards, ts/time.Second) | ||||
| 	} | ||||
| 	assert.Equal(t, int64(0), pendingSamples, "Remote write never caught up, there are still %d pending samples.", pendingSamples) | ||||
| 	require.Equal(t, int64(0), pendingSamples, "Remote write never caught up, there are still %d pending samples.", pendingSamples) | ||||
| } | ||||
| 
 | ||||
| func TestQueueManagerMetrics(t *testing.T) { | ||||
|  | @ -737,12 +737,12 @@ func TestQueueManagerMetrics(t *testing.T) { | |||
| 
 | ||||
| 	// Make sure metrics pass linting.
 | ||||
| 	problems, err := client_testutil.GatherAndLint(reg) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 0, len(problems), "Metric linting problems detected: %v", problems) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 0, len(problems), "Metric linting problems detected: %v", problems) | ||||
| 
 | ||||
| 	// Make sure all metrics were unregistered. A failure here means you need
 | ||||
| 	// unregister a metric in `queueManagerMetrics.unregister()`.
 | ||||
| 	metrics.unregister() | ||||
| 	err = client_testutil.GatherAndCompare(reg, strings.NewReader("")) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
|  |  | |||
|  | @ -24,7 +24,7 @@ import ( | |||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| 	config_util "github.com/prometheus/common/config" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/config" | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
|  | @ -34,7 +34,7 @@ import ( | |||
| 
 | ||||
| func TestNoDuplicateReadConfigs(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "TestNoDuplicateReadConfigs") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer os.RemoveAll(dir) | ||||
| 
 | ||||
| 	cfg1 := config.RemoteReadConfig{ | ||||
|  | @ -103,8 +103,8 @@ func TestNoDuplicateReadConfigs(t *testing.T) { | |||
| 			err := s.ApplyConfig(conf) | ||||
| 			prometheus.Unregister(s.rws.highestTimestamp) | ||||
| 			gotError := err != nil | ||||
| 			assert.Equal(t, tc.err, gotError) | ||||
| 			assert.NoError(t, s.Close()) | ||||
| 			require.Equal(t, tc.err, gotError) | ||||
| 			require.NoError(t, s.Close()) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -170,8 +170,8 @@ func TestExternalLabelsQuerierAddExternalLabels(t *testing.T) { | |||
| 		sort.Slice(test.outMatchers, func(i, j int) bool { return test.outMatchers[i].Name < test.outMatchers[j].Name }) | ||||
| 		sort.Slice(matchers, func(i, j int) bool { return matchers[i].Name < matchers[j].Name }) | ||||
| 
 | ||||
| 		assert.Equal(t, test.outMatchers, matchers, "%d", i) | ||||
| 		assert.Equal(t, test.added, added, "%d", i) | ||||
| 		require.Equal(t, test.outMatchers, matchers, "%d", i) | ||||
| 		require.Equal(t, test.added, added, "%d", i) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -200,9 +200,9 @@ func TestSeriesSetFilter(t *testing.T) { | |||
| 	for _, tc := range tests { | ||||
| 		filtered := newSeriesSetFilter(FromQueryResult(true, tc.in), tc.toRemove) | ||||
| 		act, ws, err := ToQueryResult(filtered, 1e6) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, 0, len(ws)) | ||||
| 		assert.Equal(t, tc.expected, act) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, 0, len(ws)) | ||||
| 		require.Equal(t, tc.expected, act) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -491,21 +491,21 @@ func TestSampleAndChunkQueryableClient(t *testing.T) { | |||
| 				tc.callback, | ||||
| 			) | ||||
| 			q, err := c.Querier(context.TODO(), tc.mint, tc.maxt) | ||||
| 			assert.NoError(t, err) | ||||
| 			defer assert.NoError(t, q.Close()) | ||||
| 			require.NoError(t, err) | ||||
| 			defer require.NoError(t, q.Close()) | ||||
| 
 | ||||
| 			ss := q.Select(true, nil, tc.matchers...) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, storage.Warnings(nil), ss.Warnings()) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, storage.Warnings(nil), ss.Warnings()) | ||||
| 
 | ||||
| 			assert.Equal(t, tc.expectedQuery, m.got) | ||||
| 			require.Equal(t, tc.expectedQuery, m.got) | ||||
| 
 | ||||
| 			var got []labels.Labels | ||||
| 			for ss.Next() { | ||||
| 				got = append(got, ss.At().Labels()) | ||||
| 			} | ||||
| 			assert.NoError(t, ss.Err()) | ||||
| 			assert.Equal(t, tc.expectedSeries, got) | ||||
| 			require.NoError(t, ss.Err()) | ||||
| 			require.Equal(t, tc.expectedSeries, got) | ||||
| 
 | ||||
| 		}) | ||||
| 	} | ||||
|  |  | |||
|  | @ -20,14 +20,14 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	common_config "github.com/prometheus/common/config" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/config" | ||||
| ) | ||||
| 
 | ||||
| func TestStorageLifecycle(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "TestStorageLifecycle") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer os.RemoveAll(dir) | ||||
| 
 | ||||
| 	s := NewStorage(nil, nil, nil, dir, defaultFlushDeadline) | ||||
|  | @ -52,21 +52,21 @@ func TestStorageLifecycle(t *testing.T) { | |||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	assert.NoError(t, s.ApplyConfig(conf)) | ||||
| 	require.NoError(t, s.ApplyConfig(conf)) | ||||
| 
 | ||||
| 	// make sure remote write has a queue.
 | ||||
| 	assert.Equal(t, 1, len(s.rws.queues)) | ||||
| 	require.Equal(t, 1, len(s.rws.queues)) | ||||
| 
 | ||||
| 	// make sure remote write has a queue.
 | ||||
| 	assert.Equal(t, 1, len(s.queryables)) | ||||
| 	require.Equal(t, 1, len(s.queryables)) | ||||
| 
 | ||||
| 	err = s.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestUpdateRemoteReadConfigs(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "TestUpdateRemoteReadConfigs") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer os.RemoveAll(dir) | ||||
| 
 | ||||
| 	s := NewStorage(nil, nil, nil, dir, defaultFlushDeadline) | ||||
|  | @ -74,15 +74,15 @@ func TestUpdateRemoteReadConfigs(t *testing.T) { | |||
| 	conf := &config.Config{ | ||||
| 		GlobalConfig: config.GlobalConfig{}, | ||||
| 	} | ||||
| 	assert.NoError(t, s.ApplyConfig(conf)) | ||||
| 	assert.Equal(t, 0, len(s.queryables)) | ||||
| 	require.NoError(t, s.ApplyConfig(conf)) | ||||
| 	require.Equal(t, 0, len(s.queryables)) | ||||
| 
 | ||||
| 	conf.RemoteReadConfigs = []*config.RemoteReadConfig{ | ||||
| 		&config.DefaultRemoteReadConfig, | ||||
| 	} | ||||
| 	assert.NoError(t, s.ApplyConfig(conf)) | ||||
| 	assert.Equal(t, 1, len(s.queryables)) | ||||
| 	require.NoError(t, s.ApplyConfig(conf)) | ||||
| 	require.Equal(t, 1, len(s.queryables)) | ||||
| 
 | ||||
| 	err = s.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ import ( | |||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| 	common_config "github.com/prometheus/common/config" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/config" | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
|  | @ -43,9 +43,9 @@ var cfg = config.RemoteWriteConfig{ | |||
| 
 | ||||
| func TestNoDuplicateWriteConfigs(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "TestNoDuplicateWriteConfigs") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	cfg1 := config.RemoteWriteConfig{ | ||||
|  | @ -122,22 +122,22 @@ func TestNoDuplicateWriteConfigs(t *testing.T) { | |||
| 		} | ||||
| 		err := s.ApplyConfig(conf) | ||||
| 		gotError := err != nil | ||||
| 		assert.Equal(t, tc.err, gotError) | ||||
| 		require.Equal(t, tc.err, gotError) | ||||
| 
 | ||||
| 		err = s.Close() | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestRestartOnNameChange(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "TestRestartOnNameChange") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	hash, err := toHash(cfg) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	s := NewWriteStorage(nil, nil, dir, time.Millisecond) | ||||
| 	conf := &config.Config{ | ||||
|  | @ -146,25 +146,25 @@ func TestRestartOnNameChange(t *testing.T) { | |||
| 			&cfg, | ||||
| 		}, | ||||
| 	} | ||||
| 	assert.NoError(t, s.ApplyConfig(conf)) | ||||
| 	assert.Equal(t, s.queues[hash].client().Name(), cfg.Name) | ||||
| 	require.NoError(t, s.ApplyConfig(conf)) | ||||
| 	require.Equal(t, s.queues[hash].client().Name(), cfg.Name) | ||||
| 
 | ||||
| 	// Change the queues name, ensure the queue has been restarted.
 | ||||
| 	conf.RemoteWriteConfigs[0].Name = "dev-2" | ||||
| 	assert.NoError(t, s.ApplyConfig(conf)) | ||||
| 	require.NoError(t, s.ApplyConfig(conf)) | ||||
| 	hash, err = toHash(cfg) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, s.queues[hash].client().Name(), conf.RemoteWriteConfigs[0].Name) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, s.queues[hash].client().Name(), conf.RemoteWriteConfigs[0].Name) | ||||
| 
 | ||||
| 	err = s.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestUpdateWithRegisterer(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "TestRestartWithRegisterer") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	s := NewWriteStorage(nil, prometheus.NewRegistry(), dir, time.Millisecond) | ||||
|  | @ -191,24 +191,24 @@ func TestUpdateWithRegisterer(t *testing.T) { | |||
| 		GlobalConfig:       config.DefaultGlobalConfig, | ||||
| 		RemoteWriteConfigs: []*config.RemoteWriteConfig{c1, c2}, | ||||
| 	} | ||||
| 	assert.NoError(t, s.ApplyConfig(conf)) | ||||
| 	require.NoError(t, s.ApplyConfig(conf)) | ||||
| 
 | ||||
| 	c1.QueueConfig.MaxShards = 10 | ||||
| 	c2.QueueConfig.MaxShards = 10 | ||||
| 	assert.NoError(t, s.ApplyConfig(conf)) | ||||
| 	require.NoError(t, s.ApplyConfig(conf)) | ||||
| 	for _, queue := range s.queues { | ||||
| 		assert.Equal(t, 10, queue.cfg.MaxShards) | ||||
| 		require.Equal(t, 10, queue.cfg.MaxShards) | ||||
| 	} | ||||
| 
 | ||||
| 	err = s.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestWriteStorageLifecycle(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "TestWriteStorageLifecycle") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	s := NewWriteStorage(nil, nil, dir, defaultFlushDeadline) | ||||
|  | @ -219,17 +219,17 @@ func TestWriteStorageLifecycle(t *testing.T) { | |||
| 		}, | ||||
| 	} | ||||
| 	s.ApplyConfig(conf) | ||||
| 	assert.Equal(t, 1, len(s.queues)) | ||||
| 	require.Equal(t, 1, len(s.queues)) | ||||
| 
 | ||||
| 	err = s.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestUpdateExternalLabels(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "TestUpdateExternalLabels") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	s := NewWriteStorage(nil, prometheus.NewRegistry(), dir, time.Second) | ||||
|  | @ -242,27 +242,27 @@ func TestUpdateExternalLabels(t *testing.T) { | |||
| 		}, | ||||
| 	} | ||||
| 	hash, err := toHash(conf.RemoteWriteConfigs[0]) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	s.ApplyConfig(conf) | ||||
| 	assert.Equal(t, 1, len(s.queues)) | ||||
| 	assert.Equal(t, labels.Labels(nil), s.queues[hash].externalLabels) | ||||
| 	require.Equal(t, 1, len(s.queues)) | ||||
| 	require.Equal(t, labels.Labels(nil), s.queues[hash].externalLabels) | ||||
| 
 | ||||
| 	conf.GlobalConfig.ExternalLabels = externalLabels | ||||
| 	hash, err = toHash(conf.RemoteWriteConfigs[0]) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	s.ApplyConfig(conf) | ||||
| 	assert.Equal(t, 1, len(s.queues)) | ||||
| 	assert.Equal(t, externalLabels, s.queues[hash].externalLabels) | ||||
| 	require.Equal(t, 1, len(s.queues)) | ||||
| 	require.Equal(t, externalLabels, s.queues[hash].externalLabels) | ||||
| 
 | ||||
| 	err = s.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestWriteStorageApplyConfigsIdempotent(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "TestWriteStorageApplyConfigsIdempotent") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	s := NewWriteStorage(nil, nil, dir, defaultFlushDeadline) | ||||
|  | @ -280,25 +280,25 @@ func TestWriteStorageApplyConfigsIdempotent(t *testing.T) { | |||
| 		}, | ||||
| 	} | ||||
| 	hash, err := toHash(conf.RemoteWriteConfigs[0]) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	s.ApplyConfig(conf) | ||||
| 	assert.Equal(t, 1, len(s.queues)) | ||||
| 	require.Equal(t, 1, len(s.queues)) | ||||
| 
 | ||||
| 	s.ApplyConfig(conf) | ||||
| 	assert.Equal(t, 1, len(s.queues)) | ||||
| 	require.Equal(t, 1, len(s.queues)) | ||||
| 	_, hashExists := s.queues[hash] | ||||
| 	assert.True(t, hashExists, "Queue pointer should have remained the same") | ||||
| 	require.True(t, hashExists, "Queue pointer should have remained the same") | ||||
| 
 | ||||
| 	err = s.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestWriteStorageApplyConfigsPartialUpdate(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "TestWriteStorageApplyConfigsPartialUpdate") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	s := NewWriteStorage(nil, nil, dir, defaultFlushDeadline) | ||||
|  | @ -336,15 +336,15 @@ func TestWriteStorageApplyConfigsPartialUpdate(t *testing.T) { | |||
| 			}, | ||||
| 		} | ||||
| 	} | ||||
| 	assert.NoError(t, s.ApplyConfig(conf)) | ||||
| 	assert.Equal(t, 3, len(s.queues)) | ||||
| 	require.NoError(t, s.ApplyConfig(conf)) | ||||
| 	require.Equal(t, 3, len(s.queues)) | ||||
| 
 | ||||
| 	hashes := make([]string, len(conf.RemoteWriteConfigs)) | ||||
| 	queues := make([]*QueueManager, len(conf.RemoteWriteConfigs)) | ||||
| 	storeHashes := func() { | ||||
| 		for i := range conf.RemoteWriteConfigs { | ||||
| 			hash, err := toHash(conf.RemoteWriteConfigs[i]) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			hashes[i] = hash | ||||
| 			queues[i] = s.queues[hash] | ||||
| 		} | ||||
|  | @ -358,32 +358,32 @@ func TestWriteStorageApplyConfigsPartialUpdate(t *testing.T) { | |||
| 		GlobalConfig:       config.GlobalConfig{}, | ||||
| 		RemoteWriteConfigs: []*config.RemoteWriteConfig{c0, c1, c2}, | ||||
| 	} | ||||
| 	assert.NoError(t, s.ApplyConfig(conf)) | ||||
| 	assert.Equal(t, 3, len(s.queues)) | ||||
| 	require.NoError(t, s.ApplyConfig(conf)) | ||||
| 	require.Equal(t, 3, len(s.queues)) | ||||
| 
 | ||||
| 	_, hashExists := s.queues[hashes[0]] | ||||
| 	assert.False(t, hashExists, "The queue for the first remote write configuration should have been restarted because the relabel configuration has changed.") | ||||
| 	require.False(t, hashExists, "The queue for the first remote write configuration should have been restarted because the relabel configuration has changed.") | ||||
| 	q, hashExists := s.queues[hashes[1]] | ||||
| 	assert.True(t, hashExists, "Hash of unchanged queue should have remained the same") | ||||
| 	assert.Equal(t, q, queues[1], "Pointer of unchanged queue should have remained the same") | ||||
| 	require.True(t, hashExists, "Hash of unchanged queue should have remained the same") | ||||
| 	require.Equal(t, q, queues[1], "Pointer of unchanged queue should have remained the same") | ||||
| 	_, hashExists = s.queues[hashes[2]] | ||||
| 	assert.False(t, hashExists, "The queue for the third remote write configuration should have been restarted because the timeout has changed.") | ||||
| 	require.False(t, hashExists, "The queue for the third remote write configuration should have been restarted because the timeout has changed.") | ||||
| 
 | ||||
| 	storeHashes() | ||||
| 	secondClient := s.queues[hashes[1]].client() | ||||
| 	// Update c1.
 | ||||
| 	c1.HTTPClientConfig.BearerToken = "bar" | ||||
| 	err = s.ApplyConfig(conf) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 3, len(s.queues)) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 3, len(s.queues)) | ||||
| 
 | ||||
| 	_, hashExists = s.queues[hashes[0]] | ||||
| 	assert.True(t, hashExists, "Pointer of unchanged queue should have remained the same") | ||||
| 	require.True(t, hashExists, "Pointer of unchanged queue should have remained the same") | ||||
| 	q, hashExists = s.queues[hashes[1]] | ||||
| 	assert.True(t, hashExists, "Hash of queue with secret change should have remained the same") | ||||
| 	assert.NotEqual(t, secondClient, q.client(), "Pointer of a client with a secret change should not be the same") | ||||
| 	require.True(t, hashExists, "Hash of queue with secret change should have remained the same") | ||||
| 	require.NotEqual(t, secondClient, q.client(), "Pointer of a client with a secret change should not be the same") | ||||
| 	_, hashExists = s.queues[hashes[2]] | ||||
| 	assert.True(t, hashExists, "Pointer of unchanged queue should have remained the same") | ||||
| 	require.True(t, hashExists, "Pointer of unchanged queue should have remained the same") | ||||
| 
 | ||||
| 	storeHashes() | ||||
| 	// Delete c0.
 | ||||
|  | @ -392,15 +392,15 @@ func TestWriteStorageApplyConfigsPartialUpdate(t *testing.T) { | |||
| 		RemoteWriteConfigs: []*config.RemoteWriteConfig{c1, c2}, | ||||
| 	} | ||||
| 	s.ApplyConfig(conf) | ||||
| 	assert.Equal(t, 2, len(s.queues)) | ||||
| 	require.Equal(t, 2, len(s.queues)) | ||||
| 
 | ||||
| 	_, hashExists = s.queues[hashes[0]] | ||||
| 	assert.False(t, hashExists, "If a config is removed, the queue should be stopped and recreated.") | ||||
| 	require.False(t, hashExists, "If a config is removed, the queue should be stopped and recreated.") | ||||
| 	_, hashExists = s.queues[hashes[1]] | ||||
| 	assert.True(t, hashExists, "Pointer of unchanged queue should have remained the same") | ||||
| 	require.True(t, hashExists, "Pointer of unchanged queue should have remained the same") | ||||
| 	_, hashExists = s.queues[hashes[2]] | ||||
| 	assert.True(t, hashExists, "Pointer of unchanged queue should have remained the same") | ||||
| 	require.True(t, hashExists, "Pointer of unchanged queue should have remained the same") | ||||
| 
 | ||||
| 	err = s.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/promql" | ||||
|  | @ -284,14 +284,14 @@ func TestTemplateExpansion(t *testing.T) { | |||
| 			result, err = expander.Expand() | ||||
| 		} | ||||
| 		if s.shouldFail { | ||||
| 			assert.Error(t, err, "%v", s.text) | ||||
| 			require.Error(t, err, "%v", s.text) | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		if err == nil { | ||||
| 			assert.Equal(t, result, s.output) | ||||
| 			require.Equal(t, result, s.output) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/storage" | ||||
|  | @ -41,51 +41,51 @@ import ( | |||
| // version 3 next time to avoid confusion and issues.
 | ||||
| func TestBlockMetaMustNeverBeVersion2(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "metaversion") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	_, err = writeMetaFile(log.NewNopLogger(), dir, &BlockMeta{}) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	meta, _, err := readMetaFile(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NotEqual(t, 2, meta.Version, "meta.json version must never be 2") | ||||
| 	require.NoError(t, err) | ||||
| 	require.NotEqual(t, 2, meta.Version, "meta.json version must never be 2") | ||||
| } | ||||
| 
 | ||||
| func TestSetCompactionFailed(t *testing.T) { | ||||
| 	tmpdir, err := ioutil.TempDir("", "test") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	blockDir := createBlock(t, tmpdir, genSeries(1, 1, 0, 1)) | ||||
| 	b, err := OpenBlock(nil, blockDir, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, false, b.meta.Compaction.Failed) | ||||
| 	assert.NoError(t, b.setCompactionFailed()) | ||||
| 	assert.Equal(t, true, b.meta.Compaction.Failed) | ||||
| 	assert.NoError(t, b.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, false, b.meta.Compaction.Failed) | ||||
| 	require.NoError(t, b.setCompactionFailed()) | ||||
| 	require.Equal(t, true, b.meta.Compaction.Failed) | ||||
| 	require.NoError(t, b.Close()) | ||||
| 
 | ||||
| 	b, err = OpenBlock(nil, blockDir, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, true, b.meta.Compaction.Failed) | ||||
| 	assert.NoError(t, b.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, true, b.meta.Compaction.Failed) | ||||
| 	require.NoError(t, b.Close()) | ||||
| } | ||||
| 
 | ||||
| func TestCreateBlock(t *testing.T) { | ||||
| 	tmpdir, err := ioutil.TempDir("", "test") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 	}() | ||||
| 	b, err := OpenBlock(nil, createBlock(t, tmpdir, genSeries(1, 1, 0, 10)), nil) | ||||
| 	if err == nil { | ||||
| 		assert.NoError(t, b.Close()) | ||||
| 		require.NoError(t, b.Close()) | ||||
| 	} | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestCorruptedChunk(t *testing.T) { | ||||
|  | @ -98,7 +98,7 @@ func TestCorruptedChunk(t *testing.T) { | |||
| 		{ | ||||
| 			name: "invalid header size", | ||||
| 			corrFunc: func(f *os.File) { | ||||
| 				assert.NoError(t, f.Truncate(1)) | ||||
| 				require.NoError(t, f.Truncate(1)) | ||||
| 			}, | ||||
| 			openErr: errors.New("invalid segment header in segment 0: invalid size"), | ||||
| 		}, | ||||
|  | @ -107,14 +107,14 @@ func TestCorruptedChunk(t *testing.T) { | |||
| 			corrFunc: func(f *os.File) { | ||||
| 				magicChunksOffset := int64(0) | ||||
| 				_, err := f.Seek(magicChunksOffset, 0) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				// Set invalid magic number.
 | ||||
| 				b := make([]byte, chunks.MagicChunksSize) | ||||
| 				binary.BigEndian.PutUint32(b[:chunks.MagicChunksSize], 0x00000000) | ||||
| 				n, err := f.Write(b) | ||||
| 				assert.NoError(t, err) | ||||
| 				assert.Equal(t, chunks.MagicChunksSize, n) | ||||
| 				require.NoError(t, err) | ||||
| 				require.Equal(t, chunks.MagicChunksSize, n) | ||||
| 			}, | ||||
| 			openErr: errors.New("invalid magic number 0"), | ||||
| 		}, | ||||
|  | @ -123,14 +123,14 @@ func TestCorruptedChunk(t *testing.T) { | |||
| 			corrFunc: func(f *os.File) { | ||||
| 				chunksFormatVersionOffset := int64(4) | ||||
| 				_, err := f.Seek(chunksFormatVersionOffset, 0) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				// Set invalid chunk format version.
 | ||||
| 				b := make([]byte, chunks.ChunksFormatVersionSize) | ||||
| 				b[0] = 0 | ||||
| 				n, err := f.Write(b) | ||||
| 				assert.NoError(t, err) | ||||
| 				assert.Equal(t, chunks.ChunksFormatVersionSize, n) | ||||
| 				require.NoError(t, err) | ||||
| 				require.Equal(t, chunks.ChunksFormatVersionSize, n) | ||||
| 			}, | ||||
| 			openErr: errors.New("invalid chunk format version 0"), | ||||
| 		}, | ||||
|  | @ -138,7 +138,7 @@ func TestCorruptedChunk(t *testing.T) { | |||
| 			name: "chunk not enough bytes to read the chunk length", | ||||
| 			corrFunc: func(f *os.File) { | ||||
| 				// Truncate one byte after the segment header.
 | ||||
| 				assert.NoError(t, f.Truncate(chunks.SegmentHeaderSize+1)) | ||||
| 				require.NoError(t, f.Truncate(chunks.SegmentHeaderSize+1)) | ||||
| 			}, | ||||
| 			iterErr: errors.New("cannot populate chunk 8: segment doesn't include enough bytes to read the chunk size data field - required:13, available:9"), | ||||
| 		}, | ||||
|  | @ -146,8 +146,8 @@ func TestCorruptedChunk(t *testing.T) { | |||
| 			name: "chunk not enough bytes to read the data", | ||||
| 			corrFunc: func(f *os.File) { | ||||
| 				fi, err := f.Stat() | ||||
| 				assert.NoError(t, err) | ||||
| 				assert.NoError(t, f.Truncate(fi.Size()-1)) | ||||
| 				require.NoError(t, err) | ||||
| 				require.NoError(t, f.Truncate(fi.Size()-1)) | ||||
| 			}, | ||||
| 			iterErr: errors.New("cannot populate chunk 8: segment doesn't include enough bytes to read the chunk - required:26, available:25"), | ||||
| 		}, | ||||
|  | @ -155,59 +155,59 @@ func TestCorruptedChunk(t *testing.T) { | |||
| 			name: "checksum mismatch", | ||||
| 			corrFunc: func(f *os.File) { | ||||
| 				fi, err := f.Stat() | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				// Get the chunk data end offset.
 | ||||
| 				chkEndOffset := int(fi.Size()) - crc32.Size | ||||
| 
 | ||||
| 				// Seek to the last byte of chunk data and modify it.
 | ||||
| 				_, err = f.Seek(int64(chkEndOffset-1), 0) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				n, err := f.Write([]byte("x")) | ||||
| 				assert.NoError(t, err) | ||||
| 				assert.Equal(t, n, 1) | ||||
| 				require.NoError(t, err) | ||||
| 				require.Equal(t, n, 1) | ||||
| 			}, | ||||
| 			iterErr: errors.New("cannot populate chunk 8: checksum mismatch expected:cfc0526c, actual:34815eae"), | ||||
| 		}, | ||||
| 	} { | ||||
| 		t.Run(tc.name, func(t *testing.T) { | ||||
| 			tmpdir, err := ioutil.TempDir("", "test_open_block_chunk_corrupted") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 				require.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			series := storage.NewListSeries(labels.FromStrings("a", "b"), []tsdbutil.Sample{sample{1, 1}}) | ||||
| 			blockDir := createBlock(t, tmpdir, []storage.Series{series}) | ||||
| 			files, err := sequenceFiles(chunkDir(blockDir)) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Greater(t, len(files), 0, "No chunk created.") | ||||
| 			require.NoError(t, err) | ||||
| 			require.Greater(t, len(files), 0, "No chunk created.") | ||||
| 
 | ||||
| 			f, err := os.OpenFile(files[0], os.O_RDWR, 0666) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			// Apply corruption function.
 | ||||
| 			tc.corrFunc(f) | ||||
| 			assert.NoError(t, f.Close()) | ||||
| 			require.NoError(t, f.Close()) | ||||
| 
 | ||||
| 			// Check open err.
 | ||||
| 			b, err := OpenBlock(nil, blockDir, nil) | ||||
| 			if tc.openErr != nil { | ||||
| 				assert.Equal(t, tc.openErr.Error(), err.Error()) | ||||
| 				require.Equal(t, tc.openErr.Error(), err.Error()) | ||||
| 				return | ||||
| 			} | ||||
| 			defer func() { assert.NoError(t, b.Close()) }() | ||||
| 			defer func() { require.NoError(t, b.Close()) }() | ||||
| 
 | ||||
| 			querier, err := NewBlockQuerier(b, 0, 1) | ||||
| 			assert.NoError(t, err) | ||||
| 			defer func() { assert.NoError(t, querier.Close()) }() | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { require.NoError(t, querier.Close()) }() | ||||
| 			set := querier.Select(false, nil, labels.MustNewMatcher(labels.MatchEqual, "a", "b")) | ||||
| 
 | ||||
| 			// Check chunk errors during iter time.
 | ||||
| 			assert.True(t, set.Next()) | ||||
| 			require.True(t, set.Next()) | ||||
| 			it := set.At().Iterator() | ||||
| 			assert.Equal(t, false, it.Next()) | ||||
| 			assert.Equal(t, tc.iterErr.Error(), it.Err().Error()) | ||||
| 			require.Equal(t, false, it.Next()) | ||||
| 			require.Equal(t, tc.iterErr.Error(), it.Err().Error()) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -215,9 +215,9 @@ func TestCorruptedChunk(t *testing.T) { | |||
| // TestBlockSize ensures that the block size is calculated correctly.
 | ||||
| func TestBlockSize(t *testing.T) { | ||||
| 	tmpdir, err := ioutil.TempDir("", "test_blockSize") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	var ( | ||||
|  | @ -230,39 +230,39 @@ func TestBlockSize(t *testing.T) { | |||
| 	{ | ||||
| 		blockDirInit = createBlock(t, tmpdir, genSeries(10, 1, 1, 100)) | ||||
| 		blockInit, err = OpenBlock(nil, blockDirInit, nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		defer func() { | ||||
| 			assert.NoError(t, blockInit.Close()) | ||||
| 			require.NoError(t, blockInit.Close()) | ||||
| 		}() | ||||
| 		expSizeInit = blockInit.Size() | ||||
| 		actSizeInit, err := fileutil.DirSize(blockInit.Dir()) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, expSizeInit, actSizeInit) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, expSizeInit, actSizeInit) | ||||
| 	} | ||||
| 
 | ||||
| 	// Delete some series and check the sizes again.
 | ||||
| 	{ | ||||
| 		assert.NoError(t, blockInit.Delete(1, 10, labels.MustNewMatcher(labels.MatchRegexp, "", ".*"))) | ||||
| 		require.NoError(t, blockInit.Delete(1, 10, labels.MustNewMatcher(labels.MatchRegexp, "", ".*"))) | ||||
| 		expAfterDelete := blockInit.Size() | ||||
| 		assert.Greater(t, expAfterDelete, expSizeInit, "after a delete the block size should be bigger as the tombstone file should grow %v > %v", expAfterDelete, expSizeInit) | ||||
| 		require.Greater(t, expAfterDelete, expSizeInit, "after a delete the block size should be bigger as the tombstone file should grow %v > %v", expAfterDelete, expSizeInit) | ||||
| 		actAfterDelete, err := fileutil.DirSize(blockDirInit) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, expAfterDelete, actAfterDelete, "after a delete reported block size doesn't match actual disk size") | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, expAfterDelete, actAfterDelete, "after a delete reported block size doesn't match actual disk size") | ||||
| 
 | ||||
| 		c, err := NewLeveledCompactor(context.Background(), nil, log.NewNopLogger(), []int64{0}, nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		blockDirAfterCompact, err := c.Compact(tmpdir, []string{blockInit.Dir()}, nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		blockAfterCompact, err := OpenBlock(nil, filepath.Join(tmpdir, blockDirAfterCompact.String()), nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		defer func() { | ||||
| 			assert.NoError(t, blockAfterCompact.Close()) | ||||
| 			require.NoError(t, blockAfterCompact.Close()) | ||||
| 		}() | ||||
| 		expAfterCompact := blockAfterCompact.Size() | ||||
| 		actAfterCompact, err := fileutil.DirSize(blockAfterCompact.Dir()) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Greater(t, actAfterDelete, actAfterCompact, "after a delete and compaction the block size should be smaller %v,%v", actAfterDelete, actAfterCompact) | ||||
| 		assert.Equal(t, expAfterCompact, actAfterCompact, "after a delete and compaction reported block size doesn't match actual disk size") | ||||
| 		require.NoError(t, err) | ||||
| 		require.Greater(t, actAfterDelete, actAfterCompact, "after a delete and compaction the block size should be smaller %v,%v", actAfterDelete, actAfterCompact) | ||||
| 		require.Equal(t, expAfterCompact, actAfterCompact, "after a delete and compaction reported block size doesn't match actual disk size") | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -285,16 +285,16 @@ func TestReadIndexFormatV1(t *testing.T) { | |||
| 
 | ||||
| 	blockDir := filepath.Join("testdata", "index_format_v1") | ||||
| 	block, err := OpenBlock(nil, blockDir, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	q, err := NewBlockQuerier(block, 0, 1000) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, query(t, q, labels.MustNewMatcher(labels.MatchEqual, "foo", "bar")), | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, query(t, q, labels.MustNewMatcher(labels.MatchEqual, "foo", "bar")), | ||||
| 		map[string][]tsdbutil.Sample{`{foo="bar"}`: {sample{t: 1, v: 2}}}) | ||||
| 
 | ||||
| 	q, err = NewBlockQuerier(block, 0, 1000) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, query(t, q, labels.MustNewMatcher(labels.MatchNotRegexp, "foo", "^.?$")), | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, query(t, q, labels.MustNewMatcher(labels.MatchNotRegexp, "foo", "^.?$")), | ||||
| 		map[string][]tsdbutil.Sample{ | ||||
| 			`{foo="bar"}`: {sample{t: 1, v: 2}}, | ||||
| 			`{foo="baz"}`: {sample{t: 3, v: 4}}, | ||||
|  | @ -304,26 +304,26 @@ func TestReadIndexFormatV1(t *testing.T) { | |||
| // createBlock creates a block with given set of series and returns its dir.
 | ||||
| func createBlock(tb testing.TB, dir string, series []storage.Series) string { | ||||
| 	blockDir, err := CreateBlock(series, dir, 0, log.NewNopLogger()) | ||||
| 	assert.NoError(tb, err) | ||||
| 	require.NoError(tb, err) | ||||
| 	return blockDir | ||||
| } | ||||
| 
 | ||||
| func createBlockFromHead(tb testing.TB, dir string, head *Head) string { | ||||
| 	compactor, err := NewLeveledCompactor(context.Background(), nil, log.NewNopLogger(), []int64{1000000}, nil) | ||||
| 	assert.NoError(tb, err) | ||||
| 	require.NoError(tb, err) | ||||
| 
 | ||||
| 	assert.NoError(tb, os.MkdirAll(dir, 0777)) | ||||
| 	require.NoError(tb, os.MkdirAll(dir, 0777)) | ||||
| 
 | ||||
| 	// Add +1 millisecond to block maxt because block intervals are half-open: [b.MinTime, b.MaxTime).
 | ||||
| 	// Because of this block intervals are always +1 than the total samples it includes.
 | ||||
| 	ulid, err := compactor.Write(dir, head, head.MinTime(), head.MaxTime()+1, nil) | ||||
| 	assert.NoError(tb, err) | ||||
| 	require.NoError(tb, err) | ||||
| 	return filepath.Join(dir, ulid.String()) | ||||
| } | ||||
| 
 | ||||
| func createHead(tb testing.TB, w *wal.WAL, series []storage.Series, chunkDir string) *Head { | ||||
| 	head, err := NewHead(nil, nil, w, DefaultBlockDuration, chunkDir, nil, DefaultStripeSize, nil) | ||||
| 	assert.NoError(tb, err) | ||||
| 	require.NoError(tb, err) | ||||
| 
 | ||||
| 	app := head.Appender(context.Background()) | ||||
| 	for _, s := range series { | ||||
|  | @ -338,11 +338,11 @@ func createHead(tb testing.TB, w *wal.WAL, series []storage.Series, chunkDir str | |||
| 				} | ||||
| 			} | ||||
| 			ref, err = app.Add(s.Labels(), t, v) | ||||
| 			assert.NoError(tb, err) | ||||
| 			require.NoError(tb, err) | ||||
| 		} | ||||
| 		assert.NoError(tb, it.Err()) | ||||
| 		require.NoError(tb, it.Err()) | ||||
| 	} | ||||
| 	assert.NoError(tb, app.Commit()) | ||||
| 	require.NoError(tb, app.Commit()) | ||||
| 	return head | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/tsdb/tsdbutil" | ||||
|  | @ -31,37 +31,37 @@ import ( | |||
| func TestBlockWriter(t *testing.T) { | ||||
| 	ctx := context.Background() | ||||
| 	outputDir, err := ioutil.TempDir(os.TempDir(), "output") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	w, err := NewBlockWriter(log.NewNopLogger(), outputDir, DefaultBlockDuration) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Flush with no series results in error.
 | ||||
| 	_, err = w.Flush(ctx) | ||||
| 	assert.EqualError(t, err, "no series appended, aborting") | ||||
| 	require.EqualError(t, err, "no series appended, aborting") | ||||
| 
 | ||||
| 	// Add some series.
 | ||||
| 	app := w.Appender(ctx) | ||||
| 	ts1, v1 := int64(44), float64(7) | ||||
| 	_, err = app.Add(labels.Labels{{Name: "a", Value: "b"}}, ts1, v1) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	ts2, v2 := int64(55), float64(12) | ||||
| 	_, err = app.Add(labels.Labels{{Name: "c", Value: "d"}}, ts2, v2) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, app.Commit()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, app.Commit()) | ||||
| 	id, err := w.Flush(ctx) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Confirm the block has the correct data.
 | ||||
| 	blockpath := filepath.Join(outputDir, id.String()) | ||||
| 	b, err := OpenBlock(nil, blockpath, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	q, err := NewBlockQuerier(b, math.MinInt64, math.MaxInt64) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	series := query(t, q, labels.MustNewMatcher(labels.MatchRegexp, "", ".*")) | ||||
| 	sample1 := []tsdbutil.Sample{sample{t: ts1, v: v1}} | ||||
| 	sample2 := []tsdbutil.Sample{sample{t: ts2, v: v2}} | ||||
| 	expectedSeries := map[string][]tsdbutil.Sample{"{a=\"b\"}": sample1, "{c=\"d\"}": sample2} | ||||
| 	assert.Equal(t, expectedSeries, series) | ||||
| 	require.Equal(t, expectedSeries, series) | ||||
| 
 | ||||
| 	assert.NoError(t, w.Close()) | ||||
| 	require.NoError(t, w.Close()) | ||||
| } | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ package chunkenc | |||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestBstreamReader(t *testing.T) { | ||||
|  | @ -39,23 +39,23 @@ func TestBstreamReader(t *testing.T) { | |||
| 		if err != nil { | ||||
| 			v, err = r.readBit() | ||||
| 		} | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, bit, v) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, bit, v) | ||||
| 	} | ||||
| 	for nbits := uint8(1); nbits <= 64; nbits++ { | ||||
| 		v, err := r.readBitsFast(nbits) | ||||
| 		if err != nil { | ||||
| 			v, err = r.readBits(nbits) | ||||
| 		} | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, uint64(nbits), v, "nbits=%d", nbits) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, uint64(nbits), v, "nbits=%d", nbits) | ||||
| 	} | ||||
| 	for v := 1; v < 10000; v += 123 { | ||||
| 		actual, err := r.readBitsFast(29) | ||||
| 		if err != nil { | ||||
| 			actual, err = r.readBits(29) | ||||
| 		} | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, uint64(v), actual, "v=%d", v) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, uint64(v), actual, "v=%d", v) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ import ( | |||
| 	"math/rand" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| type pair struct { | ||||
|  | @ -42,7 +42,7 @@ func TestChunk(t *testing.T) { | |||
| 
 | ||||
| func testChunk(t *testing.T, c Chunk) { | ||||
| 	app, err := c.Appender() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	var exp []pair | ||||
| 	var ( | ||||
|  | @ -61,7 +61,7 @@ func testChunk(t *testing.T, c Chunk) { | |||
| 		// appending to a partially filled chunk.
 | ||||
| 		if i%10 == 0 { | ||||
| 			app, err = c.Appender() | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		} | ||||
| 
 | ||||
| 		app.Append(ts, v) | ||||
|  | @ -75,8 +75,8 @@ func testChunk(t *testing.T, c Chunk) { | |||
| 		ts, v := it1.At() | ||||
| 		res1 = append(res1, pair{t: ts, v: v}) | ||||
| 	} | ||||
| 	assert.NoError(t, it1.Err()) | ||||
| 	assert.Equal(t, exp, res1) | ||||
| 	require.NoError(t, it1.Err()) | ||||
| 	require.Equal(t, exp, res1) | ||||
| 
 | ||||
| 	// 2. Expand second iterator while reusing first one.
 | ||||
| 	it2 := c.Iterator(it1) | ||||
|  | @ -85,18 +85,18 @@ func testChunk(t *testing.T, c Chunk) { | |||
| 		ts, v := it2.At() | ||||
| 		res2 = append(res2, pair{t: ts, v: v}) | ||||
| 	} | ||||
| 	assert.NoError(t, it2.Err()) | ||||
| 	assert.Equal(t, exp, res2) | ||||
| 	require.NoError(t, it2.Err()) | ||||
| 	require.Equal(t, exp, res2) | ||||
| 
 | ||||
| 	// 3. Test iterator Seek.
 | ||||
| 	mid := len(exp) / 2 | ||||
| 
 | ||||
| 	it3 := c.Iterator(nil) | ||||
| 	var res3 []pair | ||||
| 	assert.Equal(t, true, it3.Seek(exp[mid].t)) | ||||
| 	require.Equal(t, true, it3.Seek(exp[mid].t)) | ||||
| 	// Below ones should not matter.
 | ||||
| 	assert.Equal(t, true, it3.Seek(exp[mid].t)) | ||||
| 	assert.Equal(t, true, it3.Seek(exp[mid].t)) | ||||
| 	require.Equal(t, true, it3.Seek(exp[mid].t)) | ||||
| 	require.Equal(t, true, it3.Seek(exp[mid].t)) | ||||
| 	ts, v = it3.At() | ||||
| 	res3 = append(res3, pair{t: ts, v: v}) | ||||
| 
 | ||||
|  | @ -104,9 +104,9 @@ func testChunk(t *testing.T, c Chunk) { | |||
| 		ts, v := it3.At() | ||||
| 		res3 = append(res3, pair{t: ts, v: v}) | ||||
| 	} | ||||
| 	assert.NoError(t, it3.Err()) | ||||
| 	assert.Equal(t, exp[mid:], res3) | ||||
| 	assert.Equal(t, false, it3.Seek(exp[len(exp)-1].t+1)) | ||||
| 	require.NoError(t, it3.Err()) | ||||
| 	require.Equal(t, exp[mid:], res3) | ||||
| 	require.Equal(t, false, it3.Seek(exp[len(exp)-1].t+1)) | ||||
| } | ||||
| 
 | ||||
| func benchmarkIterator(b *testing.B, newChunk func() Chunk) { | ||||
|  | @ -160,7 +160,7 @@ func benchmarkIterator(b *testing.B, newChunk func() Chunk) { | |||
| 			res = append(res, v) | ||||
| 		} | ||||
| 		if it.Err() != io.EOF { | ||||
| 			assert.NoError(b, it.Err()) | ||||
| 			require.NoError(b, it.Err()) | ||||
| 		} | ||||
| 		res = res[:0] | ||||
| 	} | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ package chunks | |||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestReaderWithInvalidBuffer(t *testing.T) { | ||||
|  | @ -24,5 +24,5 @@ func TestReaderWithInvalidBuffer(t *testing.T) { | |||
| 	r := &Reader{bs: []ByteSlice{b}} | ||||
| 
 | ||||
| 	_, err := r.Chunk(0) | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| } | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ import ( | |||
| 	"strconv" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/tsdb/chunkenc" | ||||
| ) | ||||
|  | @ -30,7 +30,7 @@ import ( | |||
| func TestChunkDiskMapper_WriteChunk_Chunk_IterateChunks(t *testing.T) { | ||||
| 	hrw := testChunkDiskMapper(t) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, hrw.Close()) | ||||
| 		require.NoError(t, hrw.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	expectedBytes := []byte{} | ||||
|  | @ -69,7 +69,7 @@ func TestChunkDiskMapper_WriteChunk_Chunk_IterateChunks(t *testing.T) { | |||
| 
 | ||||
| 				// Calculating expected bytes written on disk for first file.
 | ||||
| 				firstFileName = hrw.curFile.Name() | ||||
| 				assert.Equal(t, chunkRef(1, nextChunkOffset), chkRef) | ||||
| 				require.Equal(t, chunkRef(1, nextChunkOffset), chkRef) | ||||
| 
 | ||||
| 				bytesWritten := 0 | ||||
| 				chkCRC32.Reset() | ||||
|  | @ -87,10 +87,10 @@ func TestChunkDiskMapper_WriteChunk_Chunk_IterateChunks(t *testing.T) { | |||
| 
 | ||||
| 				expectedBytes = append(expectedBytes, buf[:bytesWritten]...) | ||||
| 				_, err := chkCRC32.Write(buf[:bytesWritten]) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				expectedBytes = append(expectedBytes, chunk.Bytes()...) | ||||
| 				_, err = chkCRC32.Write(chunk.Bytes()) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				expectedBytes = append(expectedBytes, chkCRC32.Sum(nil)...) | ||||
| 
 | ||||
|  | @ -104,58 +104,58 @@ func TestChunkDiskMapper_WriteChunk_Chunk_IterateChunks(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	// Checking on-disk bytes for the first file.
 | ||||
| 	assert.Equal(t, 3, len(hrw.mmappedChunkFiles), "expected 3 mmapped files, got %d", len(hrw.mmappedChunkFiles)) | ||||
| 	assert.Equal(t, len(hrw.mmappedChunkFiles), len(hrw.closers)) | ||||
| 	require.Equal(t, 3, len(hrw.mmappedChunkFiles), "expected 3 mmapped files, got %d", len(hrw.mmappedChunkFiles)) | ||||
| 	require.Equal(t, len(hrw.mmappedChunkFiles), len(hrw.closers)) | ||||
| 
 | ||||
| 	actualBytes, err := ioutil.ReadFile(firstFileName) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Check header of the segment file.
 | ||||
| 	assert.Equal(t, MagicHeadChunks, int(binary.BigEndian.Uint32(actualBytes[0:MagicChunksSize]))) | ||||
| 	assert.Equal(t, chunksFormatV1, int(actualBytes[MagicChunksSize])) | ||||
| 	require.Equal(t, MagicHeadChunks, int(binary.BigEndian.Uint32(actualBytes[0:MagicChunksSize]))) | ||||
| 	require.Equal(t, chunksFormatV1, int(actualBytes[MagicChunksSize])) | ||||
| 
 | ||||
| 	// Remaining chunk data.
 | ||||
| 	fileEnd := HeadChunkFileHeaderSize + len(expectedBytes) | ||||
| 	assert.Equal(t, expectedBytes, actualBytes[HeadChunkFileHeaderSize:fileEnd]) | ||||
| 	require.Equal(t, expectedBytes, actualBytes[HeadChunkFileHeaderSize:fileEnd]) | ||||
| 
 | ||||
| 	// Test for the next chunk header to be all 0s. That marks the end of the file.
 | ||||
| 	for _, b := range actualBytes[fileEnd : fileEnd+MaxHeadChunkMetaSize] { | ||||
| 		assert.Equal(t, byte(0), b) | ||||
| 		require.Equal(t, byte(0), b) | ||||
| 	} | ||||
| 
 | ||||
| 	// Testing reading of chunks.
 | ||||
| 	for _, exp := range expectedData { | ||||
| 		actChunk, err := hrw.Chunk(exp.chunkRef) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, exp.chunk.Bytes(), actChunk.Bytes()) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, exp.chunk.Bytes(), actChunk.Bytes()) | ||||
| 	} | ||||
| 
 | ||||
| 	// Testing IterateAllChunks method.
 | ||||
| 	dir := hrw.dir.Name() | ||||
| 	assert.NoError(t, hrw.Close()) | ||||
| 	require.NoError(t, hrw.Close()) | ||||
| 	hrw, err = NewChunkDiskMapper(dir, chunkenc.NewPool()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	idx := 0 | ||||
| 	err = hrw.IterateAllChunks(func(seriesRef, chunkRef uint64, mint, maxt int64, numSamples uint16) error { | ||||
| 		t.Helper() | ||||
| 
 | ||||
| 		expData := expectedData[idx] | ||||
| 		assert.Equal(t, expData.seriesRef, seriesRef) | ||||
| 		assert.Equal(t, expData.chunkRef, chunkRef) | ||||
| 		assert.Equal(t, expData.maxt, maxt) | ||||
| 		assert.Equal(t, expData.maxt, maxt) | ||||
| 		assert.Equal(t, expData.numSamples, numSamples) | ||||
| 		require.Equal(t, expData.seriesRef, seriesRef) | ||||
| 		require.Equal(t, expData.chunkRef, chunkRef) | ||||
| 		require.Equal(t, expData.maxt, maxt) | ||||
| 		require.Equal(t, expData.maxt, maxt) | ||||
| 		require.Equal(t, expData.numSamples, numSamples) | ||||
| 
 | ||||
| 		actChunk, err := hrw.Chunk(expData.chunkRef) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, expData.chunk.Bytes(), actChunk.Bytes()) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, expData.chunk.Bytes(), actChunk.Bytes()) | ||||
| 
 | ||||
| 		idx++ | ||||
| 		return nil | ||||
| 	}) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, len(expectedData), idx) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, len(expectedData), idx) | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
|  | @ -167,7 +167,7 @@ func TestChunkDiskMapper_WriteChunk_Chunk_IterateChunks(t *testing.T) { | |||
| func TestChunkDiskMapper_Truncate(t *testing.T) { | ||||
| 	hrw := testChunkDiskMapper(t) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, hrw.Close()) | ||||
| 		require.NoError(t, hrw.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	timeRange := 0 | ||||
|  | @ -180,7 +180,7 @@ func TestChunkDiskMapper_Truncate(t *testing.T) { | |||
| 
 | ||||
| 		// Write a chunks to set maxt for the segment.
 | ||||
| 		_, err := hrw.WriteChunk(1, int64(mint), int64(maxt), randomChunk(t)) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		timeRange += fileTimeStep | ||||
| 
 | ||||
|  | @ -191,20 +191,20 @@ func TestChunkDiskMapper_Truncate(t *testing.T) { | |||
| 		t.Helper() | ||||
| 
 | ||||
| 		files, err := ioutil.ReadDir(hrw.dir.Name()) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, len(remainingFiles), len(files), "files on disk") | ||||
| 		assert.Equal(t, len(remainingFiles), len(hrw.mmappedChunkFiles), "hrw.mmappedChunkFiles") | ||||
| 		assert.Equal(t, len(remainingFiles), len(hrw.closers), "closers") | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, len(remainingFiles), len(files), "files on disk") | ||||
| 		require.Equal(t, len(remainingFiles), len(hrw.mmappedChunkFiles), "hrw.mmappedChunkFiles") | ||||
| 		require.Equal(t, len(remainingFiles), len(hrw.closers), "closers") | ||||
| 
 | ||||
| 		for _, i := range remainingFiles { | ||||
| 			_, ok := hrw.mmappedChunkFiles[i] | ||||
| 			assert.Equal(t, true, ok) | ||||
| 			require.Equal(t, true, ok) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// Create segments 1 to 7.
 | ||||
| 	for i := 1; i <= 7; i++ { | ||||
| 		assert.NoError(t, hrw.CutNewFile()) | ||||
| 		require.NoError(t, hrw.CutNewFile()) | ||||
| 		mint := int64(addChunk()) | ||||
| 		if i == 3 { | ||||
| 			thirdFileMinT = mint | ||||
|  | @ -215,20 +215,20 @@ func TestChunkDiskMapper_Truncate(t *testing.T) { | |||
| 	verifyFiles([]int{1, 2, 3, 4, 5, 6, 7}) | ||||
| 
 | ||||
| 	// Truncating files.
 | ||||
| 	assert.NoError(t, hrw.Truncate(thirdFileMinT)) | ||||
| 	require.NoError(t, hrw.Truncate(thirdFileMinT)) | ||||
| 	verifyFiles([]int{3, 4, 5, 6, 7, 8}) | ||||
| 
 | ||||
| 	dir := hrw.dir.Name() | ||||
| 	assert.NoError(t, hrw.Close()) | ||||
| 	require.NoError(t, hrw.Close()) | ||||
| 
 | ||||
| 	// Restarted.
 | ||||
| 	var err error | ||||
| 	hrw, err = NewChunkDiskMapper(dir, chunkenc.NewPool()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	assert.False(t, hrw.fileMaxtSet) | ||||
| 	assert.NoError(t, hrw.IterateAllChunks(func(_, _ uint64, _, _ int64, _ uint16) error { return nil })) | ||||
| 	assert.True(t, hrw.fileMaxtSet) | ||||
| 	require.False(t, hrw.fileMaxtSet) | ||||
| 	require.NoError(t, hrw.IterateAllChunks(func(_, _ uint64, _, _ int64, _ uint16) error { return nil })) | ||||
| 	require.True(t, hrw.fileMaxtSet) | ||||
| 
 | ||||
| 	verifyFiles([]int{3, 4, 5, 6, 7, 8}) | ||||
| 	// New file is created after restart even if last file was empty.
 | ||||
|  | @ -236,16 +236,16 @@ func TestChunkDiskMapper_Truncate(t *testing.T) { | |||
| 	verifyFiles([]int{3, 4, 5, 6, 7, 8, 9}) | ||||
| 
 | ||||
| 	// Truncating files after restart.
 | ||||
| 	assert.NoError(t, hrw.Truncate(sixthFileMinT)) | ||||
| 	require.NoError(t, hrw.Truncate(sixthFileMinT)) | ||||
| 	verifyFiles([]int{6, 7, 8, 9, 10}) | ||||
| 
 | ||||
| 	// As the last file was empty, this creates no new files.
 | ||||
| 	assert.NoError(t, hrw.Truncate(sixthFileMinT+1)) | ||||
| 	require.NoError(t, hrw.Truncate(sixthFileMinT+1)) | ||||
| 	verifyFiles([]int{6, 7, 8, 9, 10}) | ||||
| 	addChunk() | ||||
| 
 | ||||
| 	// Truncating till current time should not delete the current active file.
 | ||||
| 	assert.NoError(t, hrw.Truncate(int64(timeRange+(2*fileTimeStep)))) | ||||
| 	require.NoError(t, hrw.Truncate(int64(timeRange+(2*fileTimeStep)))) | ||||
| 	verifyFiles([]int{10, 11}) // One file is the previously active file and one currently created.
 | ||||
| } | ||||
| 
 | ||||
|  | @ -256,7 +256,7 @@ func TestChunkDiskMapper_Truncate(t *testing.T) { | |||
| func TestChunkDiskMapper_Truncate_PreservesFileSequence(t *testing.T) { | ||||
| 	hrw := testChunkDiskMapper(t) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, hrw.Close()) | ||||
| 		require.NoError(t, hrw.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	timeRange := 0 | ||||
|  | @ -264,11 +264,11 @@ func TestChunkDiskMapper_Truncate_PreservesFileSequence(t *testing.T) { | |||
| 		step := 100 | ||||
| 		mint, maxt := timeRange+1, timeRange+step-1 | ||||
| 		_, err := hrw.WriteChunk(1, int64(mint), int64(maxt), randomChunk(t)) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		timeRange += step | ||||
| 	} | ||||
| 	emptyFile := func() { | ||||
| 		assert.NoError(t, hrw.CutNewFile()) | ||||
| 		require.NoError(t, hrw.CutNewFile()) | ||||
| 	} | ||||
| 	nonEmptyFile := func() { | ||||
| 		emptyFile() | ||||
|  | @ -286,14 +286,14 @@ func TestChunkDiskMapper_Truncate_PreservesFileSequence(t *testing.T) { | |||
| 		t.Helper() | ||||
| 
 | ||||
| 		files, err := ioutil.ReadDir(hrw.dir.Name()) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, len(remainingFiles), len(files), "files on disk") | ||||
| 		assert.Equal(t, len(remainingFiles), len(hrw.mmappedChunkFiles), "hrw.mmappedChunkFiles") | ||||
| 		assert.Equal(t, len(remainingFiles), len(hrw.closers), "closers") | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, len(remainingFiles), len(files), "files on disk") | ||||
| 		require.Equal(t, len(remainingFiles), len(hrw.mmappedChunkFiles), "hrw.mmappedChunkFiles") | ||||
| 		require.Equal(t, len(remainingFiles), len(hrw.closers), "closers") | ||||
| 
 | ||||
| 		for _, i := range remainingFiles { | ||||
| 			_, ok := hrw.mmappedChunkFiles[i] | ||||
| 			assert.True(t, ok, "remaining file %d not in hrw.mmappedChunkFiles", i) | ||||
| 			require.True(t, ok, "remaining file %d not in hrw.mmappedChunkFiles", i) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -302,22 +302,22 @@ func TestChunkDiskMapper_Truncate_PreservesFileSequence(t *testing.T) { | |||
| 	// Truncating files till 2. It should not delete anything after 3 (inclusive)
 | ||||
| 	// though files 4 and 6 are empty.
 | ||||
| 	file2Maxt := hrw.mmappedChunkFiles[2].maxt | ||||
| 	assert.NoError(t, hrw.Truncate(file2Maxt+1)) | ||||
| 	require.NoError(t, hrw.Truncate(file2Maxt+1)) | ||||
| 	// As 6 was empty, it should not create another file.
 | ||||
| 	verifyFiles([]int{3, 4, 5, 6}) | ||||
| 
 | ||||
| 	addChunk() | ||||
| 	// Truncate creates another file as 6 is not empty now.
 | ||||
| 	assert.NoError(t, hrw.Truncate(file2Maxt+1)) | ||||
| 	require.NoError(t, hrw.Truncate(file2Maxt+1)) | ||||
| 	verifyFiles([]int{3, 4, 5, 6, 7}) | ||||
| 
 | ||||
| 	dir := hrw.dir.Name() | ||||
| 	assert.NoError(t, hrw.Close()) | ||||
| 	require.NoError(t, hrw.Close()) | ||||
| 
 | ||||
| 	// Restarting checks for unsequential files.
 | ||||
| 	var err error | ||||
| 	hrw, err = NewChunkDiskMapper(dir, chunkenc.NewPool()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	verifyFiles([]int{3, 4, 5, 6, 7}) | ||||
| } | ||||
| 
 | ||||
|  | @ -326,33 +326,33 @@ func TestChunkDiskMapper_Truncate_PreservesFileSequence(t *testing.T) { | |||
| func TestHeadReadWriter_TruncateAfterFailedIterateChunks(t *testing.T) { | ||||
| 	hrw := testChunkDiskMapper(t) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, hrw.Close()) | ||||
| 		require.NoError(t, hrw.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	// Write a chunks to iterate on it later.
 | ||||
| 	_, err := hrw.WriteChunk(1, 0, 1000, randomChunk(t)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	dir := hrw.dir.Name() | ||||
| 	assert.NoError(t, hrw.Close()) | ||||
| 	require.NoError(t, hrw.Close()) | ||||
| 
 | ||||
| 	// Restarting to recreate https://github.com/prometheus/prometheus/issues/7753.
 | ||||
| 	hrw, err = NewChunkDiskMapper(dir, chunkenc.NewPool()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Forcefully failing IterateAllChunks.
 | ||||
| 	assert.Error(t, hrw.IterateAllChunks(func(_, _ uint64, _, _ int64, _ uint16) error { | ||||
| 	require.Error(t, hrw.IterateAllChunks(func(_, _ uint64, _, _ int64, _ uint16) error { | ||||
| 		return errors.New("random error") | ||||
| 	})) | ||||
| 
 | ||||
| 	// Truncation call should not return error after IterateAllChunks fails.
 | ||||
| 	assert.NoError(t, hrw.Truncate(2000)) | ||||
| 	require.NoError(t, hrw.Truncate(2000)) | ||||
| } | ||||
| 
 | ||||
| func TestHeadReadWriter_ReadRepairOnEmptyLastFile(t *testing.T) { | ||||
| 	hrw := testChunkDiskMapper(t) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, hrw.Close()) | ||||
| 		require.NoError(t, hrw.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	timeRange := 0 | ||||
|  | @ -360,11 +360,11 @@ func TestHeadReadWriter_ReadRepairOnEmptyLastFile(t *testing.T) { | |||
| 		step := 100 | ||||
| 		mint, maxt := timeRange+1, timeRange+step-1 | ||||
| 		_, err := hrw.WriteChunk(1, int64(mint), int64(maxt), randomChunk(t)) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		timeRange += step | ||||
| 	} | ||||
| 	nonEmptyFile := func() { | ||||
| 		assert.NoError(t, hrw.CutNewFile()) | ||||
| 		require.NoError(t, hrw.CutNewFile()) | ||||
| 		addChunk() | ||||
| 	} | ||||
| 
 | ||||
|  | @ -372,64 +372,64 @@ func TestHeadReadWriter_ReadRepairOnEmptyLastFile(t *testing.T) { | |||
| 	nonEmptyFile() // 2.
 | ||||
| 	nonEmptyFile() // 3.
 | ||||
| 
 | ||||
| 	assert.Equal(t, 3, len(hrw.mmappedChunkFiles)) | ||||
| 	require.Equal(t, 3, len(hrw.mmappedChunkFiles)) | ||||
| 	lastFile := 0 | ||||
| 	for idx := range hrw.mmappedChunkFiles { | ||||
| 		if idx > lastFile { | ||||
| 			lastFile = idx | ||||
| 		} | ||||
| 	} | ||||
| 	assert.Equal(t, 3, lastFile) | ||||
| 	require.Equal(t, 3, lastFile) | ||||
| 	dir := hrw.dir.Name() | ||||
| 	assert.NoError(t, hrw.Close()) | ||||
| 	require.NoError(t, hrw.Close()) | ||||
| 
 | ||||
| 	// Write an empty last file mimicking an abrupt shutdown on file creation.
 | ||||
| 	emptyFileName := segmentFile(dir, lastFile+1) | ||||
| 	f, err := os.OpenFile(emptyFileName, os.O_WRONLY|os.O_CREATE, 0666) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, f.Sync()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, f.Sync()) | ||||
| 	stat, err := f.Stat() | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, int64(0), stat.Size()) | ||||
| 	assert.NoError(t, f.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, int64(0), stat.Size()) | ||||
| 	require.NoError(t, f.Close()) | ||||
| 
 | ||||
| 	// Open chunk disk mapper again, corrupt file should be removed.
 | ||||
| 	hrw, err = NewChunkDiskMapper(dir, chunkenc.NewPool()) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.False(t, hrw.fileMaxtSet) | ||||
| 	assert.NoError(t, hrw.IterateAllChunks(func(_, _ uint64, _, _ int64, _ uint16) error { return nil })) | ||||
| 	assert.True(t, hrw.fileMaxtSet) | ||||
| 	require.NoError(t, err) | ||||
| 	require.False(t, hrw.fileMaxtSet) | ||||
| 	require.NoError(t, hrw.IterateAllChunks(func(_, _ uint64, _, _ int64, _ uint16) error { return nil })) | ||||
| 	require.True(t, hrw.fileMaxtSet) | ||||
| 
 | ||||
| 	// Removed from memory.
 | ||||
| 	assert.Equal(t, 3, len(hrw.mmappedChunkFiles)) | ||||
| 	require.Equal(t, 3, len(hrw.mmappedChunkFiles)) | ||||
| 	for idx := range hrw.mmappedChunkFiles { | ||||
| 		assert.LessOrEqual(t, idx, lastFile, "file index is bigger than previous last file") | ||||
| 		require.LessOrEqual(t, idx, lastFile, "file index is bigger than previous last file") | ||||
| 	} | ||||
| 
 | ||||
| 	// Removed even from disk.
 | ||||
| 	files, err := ioutil.ReadDir(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 3, len(files)) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 3, len(files)) | ||||
| 	for _, fi := range files { | ||||
| 		seq, err := strconv.ParseUint(fi.Name(), 10, 64) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.LessOrEqual(t, seq, uint64(lastFile), "file index on disk is bigger than previous last file") | ||||
| 		require.NoError(t, err) | ||||
| 		require.LessOrEqual(t, seq, uint64(lastFile), "file index on disk is bigger than previous last file") | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| func testChunkDiskMapper(t *testing.T) *ChunkDiskMapper { | ||||
| 	tmpdir, err := ioutil.TempDir("", "data") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	t.Cleanup(func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 	}) | ||||
| 
 | ||||
| 	hrw, err := NewChunkDiskMapper(tmpdir, chunkenc.NewPool()) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.False(t, hrw.fileMaxtSet) | ||||
| 	assert.NoError(t, hrw.IterateAllChunks(func(_, _ uint64, _, _ int64, _ uint16) error { return nil })) | ||||
| 	assert.True(t, hrw.fileMaxtSet) | ||||
| 	require.NoError(t, err) | ||||
| 	require.False(t, hrw.fileMaxtSet) | ||||
| 	require.NoError(t, hrw.IterateAllChunks(func(_, _ uint64, _, _ int64, _ uint16) error { return nil })) | ||||
| 	require.True(t, hrw.fileMaxtSet) | ||||
| 	return hrw | ||||
| } | ||||
| 
 | ||||
|  | @ -437,7 +437,7 @@ func randomChunk(t *testing.T) chunkenc.Chunk { | |||
| 	chunk := chunkenc.NewXORChunk() | ||||
| 	len := rand.Int() % 120 | ||||
| 	app, err := chunk.Appender() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	for i := 0; i < len; i++ { | ||||
| 		app.Append(rand.Int63(), rand.Float64()) | ||||
| 	} | ||||
|  | @ -451,6 +451,6 @@ func createChunk(t *testing.T, idx int, hrw *ChunkDiskMapper) (seriesRef uint64, | |||
| 	maxt = int64((idx + 1) * 1000) | ||||
| 	chunk = randomChunk(t) | ||||
| 	chunkRef, err = hrw.WriteChunk(seriesRef, mint, maxt, chunk) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	return | ||||
| } | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ import ( | |||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/pkg/errors" | ||||
| 	prom_testutil "github.com/prometheus/client_golang/prometheus/testutil" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/tsdb/chunkenc" | ||||
|  | @ -135,7 +135,7 @@ func TestSplitByRange(t *testing.T) { | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		assert.Equal(t, exp, splitByRange(blocks, c.trange)) | ||||
| 		require.Equal(t, exp, splitByRange(blocks, c.trange)) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -159,7 +159,7 @@ func TestNoPanicFor0Tombstones(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	c, err := NewLeveledCompactor(context.Background(), nil, nil, []int64{50}, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	c.plan(metas) | ||||
| } | ||||
|  | @ -173,7 +173,7 @@ func TestLeveledCompactor_plan(t *testing.T) { | |||
| 		540, | ||||
| 		1620, | ||||
| 	}, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	cases := map[string]struct { | ||||
| 		metas    []dirMeta | ||||
|  | @ -366,8 +366,8 @@ func TestLeveledCompactor_plan(t *testing.T) { | |||
| 	for title, c := range cases { | ||||
| 		if !t.Run(title, func(t *testing.T) { | ||||
| 			res, err := compactor.plan(c.metas) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, c.expected, res) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, c.expected, res) | ||||
| 		}) { | ||||
| 			return | ||||
| 		} | ||||
|  | @ -382,7 +382,7 @@ func TestRangeWithFailedCompactionWontGetSelected(t *testing.T) { | |||
| 		720, | ||||
| 		2160, | ||||
| 	}, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	cases := []struct { | ||||
| 		metas []dirMeta | ||||
|  | @ -418,9 +418,9 @@ func TestRangeWithFailedCompactionWontGetSelected(t *testing.T) { | |||
| 	for _, c := range cases { | ||||
| 		c.metas[1].meta.Compaction.Failed = true | ||||
| 		res, err := compactor.plan(c.metas) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		assert.Equal(t, []string(nil), res) | ||||
| 		require.Equal(t, []string(nil), res) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -432,17 +432,17 @@ func TestCompactionFailWillCleanUpTempDir(t *testing.T) { | |||
| 		720, | ||||
| 		2160, | ||||
| 	}, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	tmpdir, err := ioutil.TempDir("", "test") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	assert.Error(t, compactor.write(tmpdir, &BlockMeta{}, erringBReader{})) | ||||
| 	require.Error(t, compactor.write(tmpdir, &BlockMeta{}, erringBReader{})) | ||||
| 	_, err = os.Stat(filepath.Join(tmpdir, BlockMeta{}.ULID.String()) + tmpForCreationBlockDirSuffix) | ||||
| 	assert.True(t, os.IsNotExist(err), "directory is not cleaned up") | ||||
| 	require.True(t, os.IsNotExist(err), "directory is not cleaned up") | ||||
| } | ||||
| 
 | ||||
| func metaRange(name string, mint, maxt int64, stats *BlockStats) dirMeta { | ||||
|  | @ -941,7 +941,7 @@ func TestCompaction_populateBlock(t *testing.T) { | |||
| 			} | ||||
| 
 | ||||
| 			c, err := NewLeveledCompactor(context.Background(), nil, nil, []int64{0}, nil) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			meta := &BlockMeta{ | ||||
| 				MinTime: tc.compactMinTime, | ||||
|  | @ -954,11 +954,11 @@ func TestCompaction_populateBlock(t *testing.T) { | |||
| 			iw := &mockIndexWriter{} | ||||
| 			err = c.populateBlock(blocks, meta, iw, nopChunkWriter{}) | ||||
| 			if tc.expErr != nil { | ||||
| 				assert.Error(t, err) | ||||
| 				assert.Equal(t, tc.expErr.Error(), err.Error()) | ||||
| 				require.Error(t, err) | ||||
| 				require.Equal(t, tc.expErr.Error(), err.Error()) | ||||
| 				return | ||||
| 			} | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			// Check if response is expected and chunk is valid.
 | ||||
| 			var raw []seriesSamples | ||||
|  | @ -981,15 +981,15 @@ func TestCompaction_populateBlock(t *testing.T) { | |||
| 					} | ||||
| 
 | ||||
| 					// Check if chunk has correct min, max times.
 | ||||
| 					assert.Equal(t, firstTs, chk.MinTime, "chunk Meta %v does not match the first encoded sample timestamp: %v", chk, firstTs) | ||||
| 					assert.Equal(t, s.t, chk.MaxTime, "chunk Meta %v does not match the last encoded sample timestamp %v", chk, s.t) | ||||
| 					require.Equal(t, firstTs, chk.MinTime, "chunk Meta %v does not match the first encoded sample timestamp: %v", chk, firstTs) | ||||
| 					require.Equal(t, s.t, chk.MaxTime, "chunk Meta %v does not match the last encoded sample timestamp %v", chk, s.t) | ||||
| 
 | ||||
| 					assert.NoError(t, iter.Err()) | ||||
| 					require.NoError(t, iter.Err()) | ||||
| 					ss.chunks = append(ss.chunks, samples) | ||||
| 				} | ||||
| 				raw = append(raw, ss) | ||||
| 			} | ||||
| 			assert.Equal(t, tc.expSeriesSamples, raw) | ||||
| 			require.Equal(t, tc.expSeriesSamples, raw) | ||||
| 
 | ||||
| 			// Check if stats are calculated properly.
 | ||||
| 			s := BlockStats{NumSeries: uint64(len(tc.expSeriesSamples))} | ||||
|  | @ -999,7 +999,7 @@ func TestCompaction_populateBlock(t *testing.T) { | |||
| 					s.NumSamples += uint64(len(chk)) | ||||
| 				} | ||||
| 			} | ||||
| 			assert.Equal(t, s, meta.Stats) | ||||
| 			require.Equal(t, s, meta.Stats) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -1049,30 +1049,30 @@ func BenchmarkCompaction(b *testing.B) { | |||
| 		nBlocks := len(c.ranges) | ||||
| 		b.Run(fmt.Sprintf("type=%s,blocks=%d,series=%d,samplesPerSeriesPerBlock=%d", c.compactionType, nBlocks, nSeries, c.ranges[0][1]-c.ranges[0][0]+1), func(b *testing.B) { | ||||
| 			dir, err := ioutil.TempDir("", "bench_compaction") | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(b, os.RemoveAll(dir)) | ||||
| 				require.NoError(b, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 			blockDirs := make([]string, 0, len(c.ranges)) | ||||
| 			var blocks []*Block | ||||
| 			for _, r := range c.ranges { | ||||
| 				block, err := OpenBlock(nil, createBlock(b, dir, genSeries(nSeries, 10, r[0], r[1])), nil) | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 				blocks = append(blocks, block) | ||||
| 				defer func() { | ||||
| 					assert.NoError(b, block.Close()) | ||||
| 					require.NoError(b, block.Close()) | ||||
| 				}() | ||||
| 				blockDirs = append(blockDirs, block.Dir()) | ||||
| 			} | ||||
| 
 | ||||
| 			c, err := NewLeveledCompactor(context.Background(), nil, log.NewNopLogger(), []int64{0}, nil) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 
 | ||||
| 			b.ResetTimer() | ||||
| 			b.ReportAllocs() | ||||
| 			for i := 0; i < b.N; i++ { | ||||
| 				_, err = c.Compact(dir, blockDirs, blocks) | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
|  | @ -1080,27 +1080,27 @@ func BenchmarkCompaction(b *testing.B) { | |||
| 
 | ||||
| func BenchmarkCompactionFromHead(b *testing.B) { | ||||
| 	dir, err := ioutil.TempDir("", "bench_compaction_from_head") | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(b, os.RemoveAll(dir)) | ||||
| 		require.NoError(b, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 	totalSeries := 100000 | ||||
| 	for labelNames := 1; labelNames < totalSeries; labelNames *= 10 { | ||||
| 		labelValues := totalSeries / labelNames | ||||
| 		b.Run(fmt.Sprintf("labelnames=%d,labelvalues=%d", labelNames, labelValues), func(b *testing.B) { | ||||
| 			chunkDir, err := ioutil.TempDir("", "chunk_dir") | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 				require.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 			}() | ||||
| 			h, err := NewHead(nil, nil, nil, 1000, chunkDir, nil, DefaultStripeSize, nil) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			for ln := 0; ln < labelNames; ln++ { | ||||
| 				app := h.Appender(context.Background()) | ||||
| 				for lv := 0; lv < labelValues; lv++ { | ||||
| 					app.Add(labels.FromStrings(fmt.Sprintf("%d", ln), fmt.Sprintf("%d%s%d", lv, postingsBenchSuffix, ln)), 0, 0) | ||||
| 				} | ||||
| 				assert.NoError(b, app.Commit()) | ||||
| 				require.NoError(b, app.Commit()) | ||||
| 			} | ||||
| 
 | ||||
| 			b.ResetTimer() | ||||
|  | @ -1120,7 +1120,7 @@ func BenchmarkCompactionFromHead(b *testing.B) { | |||
| func TestDisableAutoCompactions(t *testing.T) { | ||||
| 	db := openTestDB(t, nil, nil) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, db.Close()) | ||||
| 		require.NoError(t, db.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	blockRange := db.compactor.(*LeveledCompactor).ranges[0] | ||||
|  | @ -1132,11 +1132,11 @@ func TestDisableAutoCompactions(t *testing.T) { | |||
| 	app := db.Appender(context.Background()) | ||||
| 	for i := int64(0); i < 3; i++ { | ||||
| 		_, err := app.Add(label, i*blockRange, 0) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		_, err = app.Add(label, i*blockRange+1000, 0) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	} | ||||
| 	assert.NoError(t, app.Commit()) | ||||
| 	require.NoError(t, app.Commit()) | ||||
| 
 | ||||
| 	select { | ||||
| 	case db.compactc <- struct{}{}: | ||||
|  | @ -1150,8 +1150,8 @@ func TestDisableAutoCompactions(t *testing.T) { | |||
| 		time.Sleep(10 * time.Millisecond) | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Greater(t, prom_testutil.ToFloat64(db.metrics.compactionsSkipped), 0.0, "No compaction was skipped after the set timeout.") | ||||
| 	assert.Equal(t, 0, len(db.blocks)) | ||||
| 	require.Greater(t, prom_testutil.ToFloat64(db.metrics.compactionsSkipped), 0.0, "No compaction was skipped after the set timeout.") | ||||
| 	require.Equal(t, 0, len(db.blocks)) | ||||
| 
 | ||||
| 	// Enable the compaction, trigger it and check that the block is persisted.
 | ||||
| 	db.EnableCompactions() | ||||
|  | @ -1165,16 +1165,16 @@ func TestDisableAutoCompactions(t *testing.T) { | |||
| 		} | ||||
| 		time.Sleep(100 * time.Millisecond) | ||||
| 	} | ||||
| 	assert.Greater(t, len(db.Blocks()), 0, "No block was persisted after the set timeout.") | ||||
| 	require.Greater(t, len(db.Blocks()), 0, "No block was persisted after the set timeout.") | ||||
| } | ||||
| 
 | ||||
| // TestCancelCompactions ensures that when the db is closed
 | ||||
| // any running compaction is cancelled to unblock closing the db.
 | ||||
| func TestCancelCompactions(t *testing.T) { | ||||
| 	tmpdir, err := ioutil.TempDir("", "testCancelCompaction") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	// Create some blocks to fall within the compaction range.
 | ||||
|  | @ -1185,18 +1185,18 @@ func TestCancelCompactions(t *testing.T) { | |||
| 	// Copy the db so we have an exact copy to compare compaction times.
 | ||||
| 	tmpdirCopy := tmpdir + "Copy" | ||||
| 	err = fileutil.CopyDirs(tmpdir, tmpdirCopy) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpdirCopy)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpdirCopy)) | ||||
| 	}() | ||||
| 
 | ||||
| 	// Measure the compaction time without interrupting it.
 | ||||
| 	var timeCompactionUninterrupted time.Duration | ||||
| 	{ | ||||
| 		db, err := open(tmpdir, log.NewNopLogger(), nil, DefaultOptions(), []int64{1, 2000}) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, 3, len(db.Blocks()), "initial block count mismatch") | ||||
| 		assert.Equal(t, 0.0, prom_testutil.ToFloat64(db.compactor.(*LeveledCompactor).metrics.ran), "initial compaction counter mismatch") | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, 3, len(db.Blocks()), "initial block count mismatch") | ||||
| 		require.Equal(t, 0.0, prom_testutil.ToFloat64(db.compactor.(*LeveledCompactor).metrics.ran), "initial compaction counter mismatch") | ||||
| 		db.compactc <- struct{}{} // Trigger a compaction.
 | ||||
| 		var start time.Time | ||||
| 		for prom_testutil.ToFloat64(db.compactor.(*LeveledCompactor).metrics.populatingBlocks) <= 0 { | ||||
|  | @ -1209,14 +1209,14 @@ func TestCancelCompactions(t *testing.T) { | |||
| 		} | ||||
| 		timeCompactionUninterrupted = time.Since(start) | ||||
| 
 | ||||
| 		assert.NoError(t, db.Close()) | ||||
| 		require.NoError(t, db.Close()) | ||||
| 	} | ||||
| 	// Measure the compaction time when closing the db in the middle of compaction.
 | ||||
| 	{ | ||||
| 		db, err := open(tmpdirCopy, log.NewNopLogger(), nil, DefaultOptions(), []int64{1, 2000}) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, 3, len(db.Blocks()), "initial block count mismatch") | ||||
| 		assert.Equal(t, 0.0, prom_testutil.ToFloat64(db.compactor.(*LeveledCompactor).metrics.ran), "initial compaction counter mismatch") | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, 3, len(db.Blocks()), "initial block count mismatch") | ||||
| 		require.Equal(t, 0.0, prom_testutil.ToFloat64(db.compactor.(*LeveledCompactor).metrics.ran), "initial compaction counter mismatch") | ||||
| 		db.compactc <- struct{}{} // Trigger a compaction.
 | ||||
| 		dbClosed := make(chan struct{}) | ||||
| 
 | ||||
|  | @ -1224,7 +1224,7 @@ func TestCancelCompactions(t *testing.T) { | |||
| 			time.Sleep(3 * time.Millisecond) | ||||
| 		} | ||||
| 		go func() { | ||||
| 			assert.NoError(t, db.Close()) | ||||
| 			require.NoError(t, db.Close()) | ||||
| 			close(dbClosed) | ||||
| 		}() | ||||
| 
 | ||||
|  | @ -1232,7 +1232,7 @@ func TestCancelCompactions(t *testing.T) { | |||
| 		<-dbClosed | ||||
| 		actT := time.Since(start) | ||||
| 		expT := time.Duration(timeCompactionUninterrupted / 2) // Closing the db in the middle of compaction should less than half the time.
 | ||||
| 		assert.True(t, actT < expT, "closing the db took more than expected. exp: <%v, act: %v", expT, actT) | ||||
| 		require.True(t, actT < expT, "closing the db took more than expected. exp: <%v, act: %v", expT, actT) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -1247,12 +1247,12 @@ func TestDeleteCompactionBlockAfterFailedReload(t *testing.T) { | |||
| 			// Add some data to the head that is enough to trigger a compaction.
 | ||||
| 			app := db.Appender(context.Background()) | ||||
| 			_, err := app.Add(defaultLabel, 1, 0) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			_, err = app.Add(defaultLabel, 2, 0) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			_, err = app.Add(defaultLabel, 3+rangeToTriggerCompaction, 0) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.NoError(t, app.Commit()) | ||||
| 			require.NoError(t, err) | ||||
| 			require.NoError(t, app.Commit()) | ||||
| 
 | ||||
| 			return 0 | ||||
| 		}, | ||||
|  | @ -1265,8 +1265,8 @@ func TestDeleteCompactionBlockAfterFailedReload(t *testing.T) { | |||
| 			for _, m := range blocks { | ||||
| 				createBlock(t, db.Dir(), genSeries(1, 1, m.MinTime, m.MaxTime)) | ||||
| 			} | ||||
| 			assert.NoError(t, db.reload()) | ||||
| 			assert.Equal(t, len(blocks), len(db.Blocks()), "unexpected block count after a reloadBlocks") | ||||
| 			require.NoError(t, db.reload()) | ||||
| 			require.Equal(t, len(blocks), len(db.Blocks()), "unexpected block count after a reloadBlocks") | ||||
| 
 | ||||
| 			return len(blocks) | ||||
| 		}, | ||||
|  | @ -1276,7 +1276,7 @@ func TestDeleteCompactionBlockAfterFailedReload(t *testing.T) { | |||
| 		t.Run(title, func(t *testing.T) { | ||||
| 			db := openTestDB(t, nil, []int64{1, 100}) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, db.Close()) | ||||
| 				require.NoError(t, db.Close()) | ||||
| 			}() | ||||
| 			db.DisableCompactions() | ||||
| 
 | ||||
|  | @ -1286,25 +1286,25 @@ func TestDeleteCompactionBlockAfterFailedReload(t *testing.T) { | |||
| 			blockPath := createBlock(t, db.Dir(), genSeries(1, 1, 200, 300)) | ||||
| 			lastBlockIndex := path.Join(blockPath, indexFilename) | ||||
| 			actBlocks, err := blockDirs(db.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, expBlocks, len(actBlocks)-1)    // -1 to exclude the corrupted block.
 | ||||
| 			assert.NoError(t, os.RemoveAll(lastBlockIndex)) // Corrupt the block by removing the index file.
 | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, expBlocks, len(actBlocks)-1)    // -1 to exclude the corrupted block.
 | ||||
| 			require.NoError(t, os.RemoveAll(lastBlockIndex)) // Corrupt the block by removing the index file.
 | ||||
| 
 | ||||
| 			assert.Equal(t, 0.0, prom_testutil.ToFloat64(db.metrics.reloadsFailed), "initial 'failed db reloadBlocks' count metrics mismatch") | ||||
| 			assert.Equal(t, 0.0, prom_testutil.ToFloat64(db.compactor.(*LeveledCompactor).metrics.ran), "initial `compactions` count metric mismatch") | ||||
| 			assert.Equal(t, 0.0, prom_testutil.ToFloat64(db.metrics.compactionsFailed), "initial `compactions failed` count metric mismatch") | ||||
| 			require.Equal(t, 0.0, prom_testutil.ToFloat64(db.metrics.reloadsFailed), "initial 'failed db reloadBlocks' count metrics mismatch") | ||||
| 			require.Equal(t, 0.0, prom_testutil.ToFloat64(db.compactor.(*LeveledCompactor).metrics.ran), "initial `compactions` count metric mismatch") | ||||
| 			require.Equal(t, 0.0, prom_testutil.ToFloat64(db.metrics.compactionsFailed), "initial `compactions failed` count metric mismatch") | ||||
| 
 | ||||
| 			// Do the compaction and check the metrics.
 | ||||
| 			// Compaction should succeed, but the reloadBlocks should fail and
 | ||||
| 			// the new block created from the compaction should be deleted.
 | ||||
| 			assert.Error(t, db.Compact()) | ||||
| 			assert.Equal(t, 1.0, prom_testutil.ToFloat64(db.metrics.reloadsFailed), "'failed db reloadBlocks' count metrics mismatch") | ||||
| 			assert.Equal(t, 1.0, prom_testutil.ToFloat64(db.compactor.(*LeveledCompactor).metrics.ran), "`compaction` count metric mismatch") | ||||
| 			assert.Equal(t, 1.0, prom_testutil.ToFloat64(db.metrics.compactionsFailed), "`compactions failed` count metric mismatch") | ||||
| 			require.Error(t, db.Compact()) | ||||
| 			require.Equal(t, 1.0, prom_testutil.ToFloat64(db.metrics.reloadsFailed), "'failed db reloadBlocks' count metrics mismatch") | ||||
| 			require.Equal(t, 1.0, prom_testutil.ToFloat64(db.compactor.(*LeveledCompactor).metrics.ran), "`compaction` count metric mismatch") | ||||
| 			require.Equal(t, 1.0, prom_testutil.ToFloat64(db.metrics.compactionsFailed), "`compactions failed` count metric mismatch") | ||||
| 
 | ||||
| 			actBlocks, err = blockDirs(db.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, expBlocks, len(actBlocks)-1, "block count should be the same as before the compaction") // -1 to exclude the corrupted block.
 | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, expBlocks, len(actBlocks)-1, "block count should be the same as before the compaction") // -1 to exclude the corrupted block.
 | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
							
								
								
									
										1158
									
								
								tsdb/db_test.go
								
								
								
								
							
							
						
						
									
										1158
									
								
								tsdb/db_test.go
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -19,7 +19,7 @@ import ( | |||
| 	"strconv" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/atomic" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
|  | @ -27,13 +27,13 @@ import ( | |||
| 
 | ||||
| func BenchmarkHeadStripeSeriesCreate(b *testing.B) { | ||||
| 	chunkDir, err := ioutil.TempDir("", "chunk_dir") | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 		require.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 	}() | ||||
| 	// Put a series, select it. GC it and then access it.
 | ||||
| 	h, err := NewHead(nil, nil, nil, 1000, chunkDir, nil, DefaultStripeSize, nil) | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer h.Close() | ||||
| 
 | ||||
| 	for i := 0; i < b.N; i++ { | ||||
|  | @ -43,13 +43,13 @@ func BenchmarkHeadStripeSeriesCreate(b *testing.B) { | |||
| 
 | ||||
| func BenchmarkHeadStripeSeriesCreateParallel(b *testing.B) { | ||||
| 	chunkDir, err := ioutil.TempDir("", "chunk_dir") | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 		require.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 	}() | ||||
| 	// Put a series, select it. GC it and then access it.
 | ||||
| 	h, err := NewHead(nil, nil, nil, 1000, chunkDir, nil, DefaultStripeSize, nil) | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer h.Close() | ||||
| 
 | ||||
| 	var count atomic.Int64 | ||||
|  |  | |||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -25,7 +25,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/goleak" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
|  | @ -137,44 +137,44 @@ func (m mockIndex) Series(ref uint64, lset *labels.Labels, chks *[]chunks.Meta) | |||
| 
 | ||||
| func TestIndexRW_Create_Open(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "test_index_create") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	fn := filepath.Join(dir, indexFilename) | ||||
| 
 | ||||
| 	// An empty index must still result in a readable file.
 | ||||
| 	iw, err := NewWriter(context.Background(), fn) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, iw.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, iw.Close()) | ||||
| 
 | ||||
| 	ir, err := NewFileReader(fn) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, ir.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, ir.Close()) | ||||
| 
 | ||||
| 	// Modify magic header must cause open to fail.
 | ||||
| 	f, err := os.OpenFile(fn, os.O_WRONLY, 0666) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	_, err = f.WriteAt([]byte{0, 0}, 0) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	f.Close() | ||||
| 
 | ||||
| 	_, err = NewFileReader(dir) | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| } | ||||
| 
 | ||||
| func TestIndexRW_Postings(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "test_index_postings") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	fn := filepath.Join(dir, indexFilename) | ||||
| 
 | ||||
| 	iw, err := NewWriter(context.Background(), fn) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	series := []labels.Labels{ | ||||
| 		labels.FromStrings("a", "1", "b", "1"), | ||||
|  | @ -183,27 +183,27 @@ func TestIndexRW_Postings(t *testing.T) { | |||
| 		labels.FromStrings("a", "1", "b", "4"), | ||||
| 	} | ||||
| 
 | ||||
| 	assert.NoError(t, iw.AddSymbol("1")) | ||||
| 	assert.NoError(t, iw.AddSymbol("2")) | ||||
| 	assert.NoError(t, iw.AddSymbol("3")) | ||||
| 	assert.NoError(t, iw.AddSymbol("4")) | ||||
| 	assert.NoError(t, iw.AddSymbol("a")) | ||||
| 	assert.NoError(t, iw.AddSymbol("b")) | ||||
| 	require.NoError(t, iw.AddSymbol("1")) | ||||
| 	require.NoError(t, iw.AddSymbol("2")) | ||||
| 	require.NoError(t, iw.AddSymbol("3")) | ||||
| 	require.NoError(t, iw.AddSymbol("4")) | ||||
| 	require.NoError(t, iw.AddSymbol("a")) | ||||
| 	require.NoError(t, iw.AddSymbol("b")) | ||||
| 
 | ||||
| 	// Postings lists are only written if a series with the respective
 | ||||
| 	// reference was added before.
 | ||||
| 	assert.NoError(t, iw.AddSeries(1, series[0])) | ||||
| 	assert.NoError(t, iw.AddSeries(2, series[1])) | ||||
| 	assert.NoError(t, iw.AddSeries(3, series[2])) | ||||
| 	assert.NoError(t, iw.AddSeries(4, series[3])) | ||||
| 	require.NoError(t, iw.AddSeries(1, series[0])) | ||||
| 	require.NoError(t, iw.AddSeries(2, series[1])) | ||||
| 	require.NoError(t, iw.AddSeries(3, series[2])) | ||||
| 	require.NoError(t, iw.AddSeries(4, series[3])) | ||||
| 
 | ||||
| 	assert.NoError(t, iw.Close()) | ||||
| 	require.NoError(t, iw.Close()) | ||||
| 
 | ||||
| 	ir, err := NewFileReader(fn) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	p, err := ir.Postings("a", "1") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	var l labels.Labels | ||||
| 	var c []chunks.Meta | ||||
|  | @ -211,15 +211,15 @@ func TestIndexRW_Postings(t *testing.T) { | |||
| 	for i := 0; p.Next(); i++ { | ||||
| 		err := ir.Series(p.At(), &l, &c) | ||||
| 
 | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, 0, len(c)) | ||||
| 		assert.Equal(t, series[i], l) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, 0, len(c)) | ||||
| 		require.Equal(t, series[i], l) | ||||
| 	} | ||||
| 	assert.NoError(t, p.Err()) | ||||
| 	require.NoError(t, p.Err()) | ||||
| 
 | ||||
| 	// The label incides are no longer used, so test them by hand here.
 | ||||
| 	labelIndices := map[string][]string{} | ||||
| 	assert.NoError(t, ReadOffsetTable(ir.b, ir.toc.LabelIndicesTable, func(key []string, off uint64, _ int) error { | ||||
| 	require.NoError(t, ReadOffsetTable(ir.b, ir.toc.LabelIndicesTable, func(key []string, off uint64, _ int) error { | ||||
| 		if len(key) != 1 { | ||||
| 			return errors.Errorf("unexpected key length for label indices table %d", len(key)) | ||||
| 		} | ||||
|  | @ -240,25 +240,25 @@ func TestIndexRW_Postings(t *testing.T) { | |||
| 		labelIndices[key[0]] = vals | ||||
| 		return d.Err() | ||||
| 	})) | ||||
| 	assert.Equal(t, map[string][]string{ | ||||
| 	require.Equal(t, map[string][]string{ | ||||
| 		"a": {"1"}, | ||||
| 		"b": {"1", "2", "3", "4"}, | ||||
| 	}, labelIndices) | ||||
| 
 | ||||
| 	assert.NoError(t, ir.Close()) | ||||
| 	require.NoError(t, ir.Close()) | ||||
| } | ||||
| 
 | ||||
| func TestPostingsMany(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "test_postings_many") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	fn := filepath.Join(dir, indexFilename) | ||||
| 
 | ||||
| 	iw, err := NewWriter(context.Background(), fn) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Create a label in the index which has 999 values.
 | ||||
| 	symbols := map[string]struct{}{} | ||||
|  | @ -277,17 +277,17 @@ func TestPostingsMany(t *testing.T) { | |||
| 	} | ||||
| 	sort.Strings(syms) | ||||
| 	for _, s := range syms { | ||||
| 		assert.NoError(t, iw.AddSymbol(s)) | ||||
| 		require.NoError(t, iw.AddSymbol(s)) | ||||
| 	} | ||||
| 
 | ||||
| 	for i, s := range series { | ||||
| 		assert.NoError(t, iw.AddSeries(uint64(i), s)) | ||||
| 		require.NoError(t, iw.AddSeries(uint64(i), s)) | ||||
| 	} | ||||
| 	assert.NoError(t, iw.Close()) | ||||
| 	require.NoError(t, iw.Close()) | ||||
| 
 | ||||
| 	ir, err := NewFileReader(fn) | ||||
| 	assert.NoError(t, err) | ||||
| 	defer func() { assert.NoError(t, ir.Close()) }() | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { require.NoError(t, ir.Close()) }() | ||||
| 
 | ||||
| 	cases := []struct { | ||||
| 		in []string | ||||
|  | @ -322,36 +322,36 @@ func TestPostingsMany(t *testing.T) { | |||
| 
 | ||||
| 	for _, c := range cases { | ||||
| 		it, err := ir.Postings("i", c.in...) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		got := []string{} | ||||
| 		var lbls labels.Labels | ||||
| 		var metas []chunks.Meta | ||||
| 		for it.Next() { | ||||
| 			assert.NoError(t, ir.Series(it.At(), &lbls, &metas)) | ||||
| 			require.NoError(t, ir.Series(it.At(), &lbls, &metas)) | ||||
| 			got = append(got, lbls.Get("i")) | ||||
| 		} | ||||
| 		assert.NoError(t, it.Err()) | ||||
| 		require.NoError(t, it.Err()) | ||||
| 		exp := []string{} | ||||
| 		for _, e := range c.in { | ||||
| 			if _, ok := symbols[e]; ok && e != "l" { | ||||
| 				exp = append(exp, e) | ||||
| 			} | ||||
| 		} | ||||
| 		assert.Equal(t, exp, got, fmt.Sprintf("input: %v", c.in)) | ||||
| 		require.Equal(t, exp, got, fmt.Sprintf("input: %v", c.in)) | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| func TestPersistence_index_e2e(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "test_persistence_e2e") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	lbls, err := labels.ReadLabels(filepath.Join("..", "testdata", "20kseries.json"), 20000) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Sort labels as the index writer expects series in sorted order.
 | ||||
| 	sort.Sort(labels.Slice(lbls)) | ||||
|  | @ -385,7 +385,7 @@ func TestPersistence_index_e2e(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	iw, err := NewWriter(context.Background(), filepath.Join(dir, indexFilename)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	syms := []string{} | ||||
| 	for s := range symbols { | ||||
|  | @ -393,7 +393,7 @@ func TestPersistence_index_e2e(t *testing.T) { | |||
| 	} | ||||
| 	sort.Strings(syms) | ||||
| 	for _, s := range syms { | ||||
| 		assert.NoError(t, iw.AddSymbol(s)) | ||||
| 		require.NoError(t, iw.AddSymbol(s)) | ||||
| 	} | ||||
| 
 | ||||
| 	// Population procedure as done by compaction.
 | ||||
|  | @ -406,8 +406,8 @@ func TestPersistence_index_e2e(t *testing.T) { | |||
| 
 | ||||
| 	for i, s := range input { | ||||
| 		err = iw.AddSeries(uint64(i), s.labels, s.chunks...) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.NoError(t, mi.AddSeries(uint64(i), s.labels, s.chunks...)) | ||||
| 		require.NoError(t, err) | ||||
| 		require.NoError(t, mi.AddSeries(uint64(i), s.labels, s.chunks...)) | ||||
| 
 | ||||
| 		for _, l := range s.labels { | ||||
| 			valset, ok := values[l.Name] | ||||
|  | @ -421,36 +421,36 @@ func TestPersistence_index_e2e(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	err = iw.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	ir, err := NewFileReader(filepath.Join(dir, indexFilename)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	for p := range mi.postings { | ||||
| 		gotp, err := ir.Postings(p.Name, p.Value) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		expp, err := mi.Postings(p.Name, p.Value) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		var lset, explset labels.Labels | ||||
| 		var chks, expchks []chunks.Meta | ||||
| 
 | ||||
| 		for gotp.Next() { | ||||
| 			assert.True(t, expp.Next()) | ||||
| 			require.True(t, expp.Next()) | ||||
| 
 | ||||
| 			ref := gotp.At() | ||||
| 
 | ||||
| 			err := ir.Series(ref, &lset, &chks) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			err = mi.Series(expp.At(), &explset, &expchks) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, explset, lset) | ||||
| 			assert.Equal(t, expchks, chks) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, explset, lset) | ||||
| 			require.Equal(t, expchks, chks) | ||||
| 		} | ||||
| 		assert.False(t, expp.Next(), "Expected no more postings for %q=%q", p.Name, p.Value) | ||||
| 		assert.NoError(t, gotp.Err()) | ||||
| 		require.False(t, expp.Next(), "Expected no more postings for %q=%q", p.Name, p.Value) | ||||
| 		require.NoError(t, gotp.Err()) | ||||
| 	} | ||||
| 
 | ||||
| 	labelPairs := map[string][]string{} | ||||
|  | @ -461,11 +461,11 @@ func TestPersistence_index_e2e(t *testing.T) { | |||
| 		sort.Strings(v) | ||||
| 
 | ||||
| 		res, err := ir.SortedLabelValues(k) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		assert.Equal(t, len(v), len(res)) | ||||
| 		require.Equal(t, len(v), len(res)) | ||||
| 		for i := 0; i < len(v); i++ { | ||||
| 			assert.Equal(t, v[i], res[i]) | ||||
| 			require.Equal(t, v[i], res[i]) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -474,29 +474,29 @@ func TestPersistence_index_e2e(t *testing.T) { | |||
| 	for it.Next() { | ||||
| 		gotSymbols = append(gotSymbols, it.At()) | ||||
| 	} | ||||
| 	assert.NoError(t, it.Err()) | ||||
| 	require.NoError(t, it.Err()) | ||||
| 	expSymbols := []string{} | ||||
| 	for s := range mi.symbols { | ||||
| 		expSymbols = append(expSymbols, s) | ||||
| 	} | ||||
| 	sort.Strings(expSymbols) | ||||
| 	assert.Equal(t, expSymbols, gotSymbols) | ||||
| 	require.Equal(t, expSymbols, gotSymbols) | ||||
| 
 | ||||
| 	assert.NoError(t, ir.Close()) | ||||
| 	require.NoError(t, ir.Close()) | ||||
| } | ||||
| 
 | ||||
| func TestDecbufUvarintWithInvalidBuffer(t *testing.T) { | ||||
| 	b := realByteSlice([]byte{0x81, 0x81, 0x81, 0x81, 0x81, 0x81}) | ||||
| 
 | ||||
| 	db := encoding.NewDecbufUvarintAt(b, 0, castagnoliTable) | ||||
| 	assert.Error(t, db.Err()) | ||||
| 	require.Error(t, db.Err()) | ||||
| } | ||||
| 
 | ||||
| func TestReaderWithInvalidBuffer(t *testing.T) { | ||||
| 	b := realByteSlice([]byte{0x81, 0x81, 0x81, 0x81, 0x81, 0x81}) | ||||
| 
 | ||||
| 	_, err := NewReader(b) | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| } | ||||
| 
 | ||||
| // TestNewFileReaderErrorNoOpenFiles ensures that in case of an error no file remains open.
 | ||||
|  | @ -505,10 +505,10 @@ func TestNewFileReaderErrorNoOpenFiles(t *testing.T) { | |||
| 
 | ||||
| 	idxName := filepath.Join(dir.Path(), "index") | ||||
| 	err := ioutil.WriteFile(idxName, []byte("corrupted contents"), 0666) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	_, err = NewFileReader(idxName) | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| 
 | ||||
| 	// dir.Close will fail on Win if idxName fd is not closed on error path.
 | ||||
| 	dir.Close() | ||||
|  | @ -531,32 +531,32 @@ func TestSymbols(t *testing.T) { | |||
| 	buf.PutBE32(checksum) // Check sum at the end.
 | ||||
| 
 | ||||
| 	s, err := NewSymbols(realByteSlice(buf.Get()), FormatV2, symbolsStart) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// We store only 4 offsets to symbols.
 | ||||
| 	assert.Equal(t, 32, s.Size()) | ||||
| 	require.Equal(t, 32, s.Size()) | ||||
| 
 | ||||
| 	for i := 99; i >= 0; i-- { | ||||
| 		s, err := s.Lookup(uint32(i)) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, string(rune(i)), s) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, string(rune(i)), s) | ||||
| 	} | ||||
| 	_, err = s.Lookup(100) | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| 
 | ||||
| 	for i := 99; i >= 0; i-- { | ||||
| 		r, err := s.ReverseLookup(string(rune(i))) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, uint32(i), r) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, uint32(i), r) | ||||
| 	} | ||||
| 	_, err = s.ReverseLookup(string(rune(100))) | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| 
 | ||||
| 	iter := s.Iter() | ||||
| 	i := 0 | ||||
| 	for iter.Next() { | ||||
| 		assert.Equal(t, string(rune(i)), iter.At()) | ||||
| 		require.Equal(t, string(rune(i)), iter.At()) | ||||
| 		i++ | ||||
| 	} | ||||
| 	assert.NoError(t, iter.Err()) | ||||
| 	require.NoError(t, iter.Err()) | ||||
| } | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 	"sort" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| ) | ||||
|  | @ -32,7 +32,7 @@ func TestMemPostings_addFor(t *testing.T) { | |||
| 
 | ||||
| 	p.addFor(5, allPostingsKey) | ||||
| 
 | ||||
| 	assert.Equal(t, []uint64{1, 2, 3, 4, 5, 6, 7, 8}, p.m[allPostingsKey.Name][allPostingsKey.Value]) | ||||
| 	require.Equal(t, []uint64{1, 2, 3, 4, 5, 6, 7, 8}, p.m[allPostingsKey.Name][allPostingsKey.Value]) | ||||
| } | ||||
| 
 | ||||
| func TestMemPostings_ensureOrder(t *testing.T) { | ||||
|  | @ -161,12 +161,12 @@ func TestIntersect(t *testing.T) { | |||
| 			} | ||||
| 
 | ||||
| 			expected, err := ExpandPostings(c.res) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			i := Intersect(c.in...) | ||||
| 
 | ||||
| 			if c.res == EmptyPostings() { | ||||
| 				assert.Equal(t, EmptyPostings(), i) | ||||
| 				require.Equal(t, EmptyPostings(), i) | ||||
| 				return | ||||
| 			} | ||||
| 
 | ||||
|  | @ -175,8 +175,8 @@ func TestIntersect(t *testing.T) { | |||
| 			} | ||||
| 
 | ||||
| 			res, err := ExpandPostings(i) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, expected, res) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, expected, res) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -217,8 +217,8 @@ func TestMultiIntersect(t *testing.T) { | |||
| 
 | ||||
| 		res, err := ExpandPostings(Intersect(ps...)) | ||||
| 
 | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, c.res, res) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, c.res, res) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -315,8 +315,8 @@ func TestMultiMerge(t *testing.T) { | |||
| 	i3 := newListPostings(1, 2, 5, 6, 7, 8, 1001, 1200) | ||||
| 
 | ||||
| 	res, err := ExpandPostings(Merge(i1, i2, i3)) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, []uint64{1, 2, 3, 4, 5, 6, 7, 8, 999, 1000, 1001, 1200}, res) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, []uint64{1, 2, 3, 4, 5, 6, 7, 8, 999, 1000, 1001, 1200}, res) | ||||
| } | ||||
| 
 | ||||
| func TestMergedPostings(t *testing.T) { | ||||
|  | @ -403,12 +403,12 @@ func TestMergedPostings(t *testing.T) { | |||
| 			} | ||||
| 
 | ||||
| 			expected, err := ExpandPostings(c.res) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			m := Merge(c.in...) | ||||
| 
 | ||||
| 			if c.res == EmptyPostings() { | ||||
| 				assert.Equal(t, EmptyPostings(), m) | ||||
| 				require.Equal(t, EmptyPostings(), m) | ||||
| 				return | ||||
| 			} | ||||
| 
 | ||||
|  | @ -417,8 +417,8 @@ func TestMergedPostings(t *testing.T) { | |||
| 			} | ||||
| 
 | ||||
| 			res, err := ExpandPostings(m) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, expected, res) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, expected, res) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -471,16 +471,16 @@ func TestMergedPostingsSeek(t *testing.T) { | |||
| 
 | ||||
| 		p := Merge(a, b) | ||||
| 
 | ||||
| 		assert.Equal(t, c.success, p.Seek(c.seek)) | ||||
| 		require.Equal(t, c.success, p.Seek(c.seek)) | ||||
| 
 | ||||
| 		// After Seek(), At() should be called.
 | ||||
| 		if c.success { | ||||
| 			start := p.At() | ||||
| 			lst, err := ExpandPostings(p) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			lst = append([]uint64{start}, lst...) | ||||
| 			assert.Equal(t, c.res, lst) | ||||
| 			require.Equal(t, c.res, lst) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -532,8 +532,8 @@ func TestRemovedPostings(t *testing.T) { | |||
| 		b := newListPostings(c.b...) | ||||
| 
 | ||||
| 		res, err := ExpandPostings(newRemovedPostings(a, b)) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, c.res, res) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, c.res, res) | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  | @ -556,8 +556,8 @@ func TestRemovedNextStackoverflow(t *testing.T) { | |||
| 		gotElem = true | ||||
| 	} | ||||
| 
 | ||||
| 	assert.NoError(t, rp.Err()) | ||||
| 	assert.False(t, gotElem) | ||||
| 	require.NoError(t, rp.Err()) | ||||
| 	require.False(t, gotElem) | ||||
| } | ||||
| 
 | ||||
| func TestRemovedPostingsSeek(t *testing.T) { | ||||
|  | @ -632,16 +632,16 @@ func TestRemovedPostingsSeek(t *testing.T) { | |||
| 
 | ||||
| 		p := newRemovedPostings(a, b) | ||||
| 
 | ||||
| 		assert.Equal(t, c.success, p.Seek(c.seek)) | ||||
| 		require.Equal(t, c.success, p.Seek(c.seek)) | ||||
| 
 | ||||
| 		// After Seek(), At() should be called.
 | ||||
| 		if c.success { | ||||
| 			start := p.At() | ||||
| 			lst, err := ExpandPostings(p) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			lst = append([]uint64{start}, lst...) | ||||
| 			assert.Equal(t, c.res, lst) | ||||
| 			require.Equal(t, c.res, lst) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -664,12 +664,12 @@ func TestBigEndian(t *testing.T) { | |||
| 	t.Run("Iteration", func(t *testing.T) { | ||||
| 		bep := newBigEndianPostings(beLst) | ||||
| 		for i := 0; i < num; i++ { | ||||
| 			assert.True(t, bep.Next()) | ||||
| 			assert.Equal(t, uint64(ls[i]), bep.At()) | ||||
| 			require.True(t, bep.Next()) | ||||
| 			require.Equal(t, uint64(ls[i]), bep.At()) | ||||
| 		} | ||||
| 
 | ||||
| 		assert.False(t, bep.Next()) | ||||
| 		assert.NoError(t, bep.Err()) | ||||
| 		require.False(t, bep.Next()) | ||||
| 		require.NoError(t, bep.Err()) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("Seek", func(t *testing.T) { | ||||
|  | @ -713,9 +713,9 @@ func TestBigEndian(t *testing.T) { | |||
| 		bep := newBigEndianPostings(beLst) | ||||
| 
 | ||||
| 		for _, v := range table { | ||||
| 			assert.Equal(t, v.found, bep.Seek(uint64(v.seek))) | ||||
| 			assert.Equal(t, uint64(v.val), bep.At()) | ||||
| 			assert.NoError(t, bep.Err()) | ||||
| 			require.Equal(t, v.found, bep.Seek(uint64(v.seek))) | ||||
| 			require.Equal(t, uint64(v.val), bep.At()) | ||||
| 			require.NoError(t, bep.Err()) | ||||
| 		} | ||||
| 	}) | ||||
| } | ||||
|  | @ -733,8 +733,8 @@ func TestIntersectWithMerge(t *testing.T) { | |||
| 	p := Intersect(a, b) | ||||
| 	res, err := ExpandPostings(p) | ||||
| 
 | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, []uint64{30}, res) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, []uint64{30}, res) | ||||
| } | ||||
| 
 | ||||
| func TestWithoutPostings(t *testing.T) { | ||||
|  | @ -795,12 +795,12 @@ func TestWithoutPostings(t *testing.T) { | |||
| 			} | ||||
| 
 | ||||
| 			expected, err := ExpandPostings(c.res) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			w := Without(c.base, c.drop) | ||||
| 
 | ||||
| 			if c.res == EmptyPostings() { | ||||
| 				assert.Equal(t, EmptyPostings(), w) | ||||
| 				require.Equal(t, EmptyPostings(), w) | ||||
| 				return | ||||
| 			} | ||||
| 
 | ||||
|  | @ -809,8 +809,8 @@ func TestWithoutPostings(t *testing.T) { | |||
| 			} | ||||
| 
 | ||||
| 			res, err := ExpandPostings(w) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, expected, res) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, expected, res) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -860,17 +860,17 @@ func TestMemPostings_Delete(t *testing.T) { | |||
| 	// Make sure postings gotten before the delete have the old data when
 | ||||
| 	// iterated over.
 | ||||
| 	expanded, err := ExpandPostings(before) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, []uint64{1, 2, 3}, expanded) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, []uint64{1, 2, 3}, expanded) | ||||
| 
 | ||||
| 	// Make sure postings gotten after the delete have the new data when
 | ||||
| 	// iterated over.
 | ||||
| 	expanded, err = ExpandPostings(after) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, []uint64{1, 3}, expanded) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, []uint64{1, 3}, expanded) | ||||
| 
 | ||||
| 	deleted := p.Get("lbl1", "b") | ||||
| 	expanded, err = ExpandPostings(deleted) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, 0, len(expanded), "expected empty postings, got %v", expanded) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, 0, len(expanded), "expected empty postings, got %v", expanded) | ||||
| } | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ package index | |||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestPostingsStats(t *testing.T) { | ||||
|  | @ -33,9 +33,9 @@ func TestPostingsStats(t *testing.T) { | |||
| 	stats.push(Stat{Name: "Stuff", Count: 3000000}) | ||||
| 
 | ||||
| 	data := stats.get() | ||||
| 	assert.Equal(t, 10, len(data)) | ||||
| 	require.Equal(t, 10, len(data)) | ||||
| 	for i := 0; i < heapLength; i++ { | ||||
| 		assert.Equal(t, uint64(max-i), data[i].Count) | ||||
| 		require.Equal(t, uint64(max-i), data[i].Count) | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  | @ -52,8 +52,8 @@ func TestPostingsStats2(t *testing.T) { | |||
| 
 | ||||
| 	data := stats.get() | ||||
| 
 | ||||
| 	assert.Equal(t, 4, len(data)) | ||||
| 	assert.Equal(t, uint64(11), data[0].Count) | ||||
| 	require.Equal(t, 4, len(data)) | ||||
| 	require.Equal(t, uint64(11), data[0].Count) | ||||
| } | ||||
| func BenchmarkPostingStatsMaxHep(b *testing.B) { | ||||
| 	stats := &maxHeap{} | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ import ( | |||
| 	"strconv" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| ) | ||||
|  | @ -33,14 +33,14 @@ const ( | |||
| 
 | ||||
| func BenchmarkPostingsForMatchers(b *testing.B) { | ||||
| 	chunkDir, err := ioutil.TempDir("", "chunk_dir") | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 		require.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 	}() | ||||
| 	h, err := NewHead(nil, nil, nil, 1000, chunkDir, nil, DefaultStripeSize, nil) | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(b, h.Close()) | ||||
| 		require.NoError(b, h.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	app := h.Appender(context.Background()) | ||||
|  | @ -58,28 +58,28 @@ func BenchmarkPostingsForMatchers(b *testing.B) { | |||
| 			addSeries(labels.FromStrings("i", strconv.Itoa(i)+postingsBenchSuffix, "n", "2_"+strconv.Itoa(n)+postingsBenchSuffix, "j", "foo")) | ||||
| 		} | ||||
| 	} | ||||
| 	assert.NoError(b, app.Commit()) | ||||
| 	require.NoError(b, app.Commit()) | ||||
| 
 | ||||
| 	ir, err := h.Index() | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	b.Run("Head", func(b *testing.B) { | ||||
| 		benchmarkPostingsForMatchers(b, ir) | ||||
| 	}) | ||||
| 
 | ||||
| 	tmpdir, err := ioutil.TempDir("", "test_benchpostingsformatchers") | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(b, os.RemoveAll(tmpdir)) | ||||
| 		require.NoError(b, os.RemoveAll(tmpdir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	blockdir := createBlockFromHead(b, tmpdir, h) | ||||
| 	block, err := OpenBlock(nil, blockdir, nil) | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(b, block.Close()) | ||||
| 		require.NoError(b, block.Close()) | ||||
| 	}() | ||||
| 	ir, err = block.Index() | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer ir.Close() | ||||
| 	b.Run("Block", func(b *testing.B) { | ||||
| 		benchmarkPostingsForMatchers(b, ir) | ||||
|  | @ -134,7 +134,7 @@ func benchmarkPostingsForMatchers(b *testing.B, ir IndexReader) { | |||
| 		b.Run(c.name, func(b *testing.B) { | ||||
| 			for i := 0; i < b.N; i++ { | ||||
| 				_, err := PostingsForMatchers(ir, c.matchers...) | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
|  | @ -142,33 +142,33 @@ func benchmarkPostingsForMatchers(b *testing.B, ir IndexReader) { | |||
| 
 | ||||
| func BenchmarkQuerierSelect(b *testing.B) { | ||||
| 	chunkDir, err := ioutil.TempDir("", "chunk_dir") | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 		require.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 	}() | ||||
| 	h, err := NewHead(nil, nil, nil, 1000, chunkDir, nil, DefaultStripeSize, nil) | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer h.Close() | ||||
| 	app := h.Appender(context.Background()) | ||||
| 	numSeries := 1000000 | ||||
| 	for i := 0; i < numSeries; i++ { | ||||
| 		app.Add(labels.FromStrings("foo", "bar", "i", fmt.Sprintf("%d%s", i, postingsBenchSuffix)), int64(i), 0) | ||||
| 	} | ||||
| 	assert.NoError(b, app.Commit()) | ||||
| 	require.NoError(b, app.Commit()) | ||||
| 
 | ||||
| 	bench := func(b *testing.B, br BlockReader, sorted bool) { | ||||
| 		matcher := labels.MustNewMatcher(labels.MatchEqual, "foo", "bar") | ||||
| 		for s := 1; s <= numSeries; s *= 10 { | ||||
| 			b.Run(fmt.Sprintf("%dof%d", s, numSeries), func(b *testing.B) { | ||||
| 				q, err := NewBlockQuerier(br, 0, int64(s-1)) | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 
 | ||||
| 				b.ResetTimer() | ||||
| 				for i := 0; i < b.N; i++ { | ||||
| 					ss := q.Select(sorted, nil, matcher) | ||||
| 					for ss.Next() { | ||||
| 					} | ||||
| 					assert.NoError(b, ss.Err()) | ||||
| 					require.NoError(b, ss.Err()) | ||||
| 				} | ||||
| 				q.Close() | ||||
| 			}) | ||||
|  | @ -183,16 +183,16 @@ func BenchmarkQuerierSelect(b *testing.B) { | |||
| 	}) | ||||
| 
 | ||||
| 	tmpdir, err := ioutil.TempDir("", "test_benchquerierselect") | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(b, os.RemoveAll(tmpdir)) | ||||
| 		require.NoError(b, os.RemoveAll(tmpdir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	blockdir := createBlockFromHead(b, tmpdir, h) | ||||
| 	block, err := OpenBlock(nil, blockdir, nil) | ||||
| 	assert.NoError(b, err) | ||||
| 	require.NoError(b, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(b, block.Close()) | ||||
| 		require.NoError(b, block.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	b.Run("Block", func(b *testing.B) { | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/storage" | ||||
|  | @ -139,7 +139,7 @@ func createIdxChkReaders(t *testing.T, tc []seriesSamples) (IndexReader, ChunkRe | |||
| 			chunkRef++ | ||||
| 		} | ||||
| 		ls := labels.FromMap(s.lset) | ||||
| 		assert.NoError(t, mi.AddSeries(uint64(i), ls, metas...)) | ||||
| 		require.NoError(t, mi.AddSeries(uint64(i), ls, metas...)) | ||||
| 
 | ||||
| 		postings.Add(uint64(i), ls) | ||||
| 
 | ||||
|  | @ -153,7 +153,7 @@ func createIdxChkReaders(t *testing.T, tc []seriesSamples) (IndexReader, ChunkRe | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	assert.NoError(t, postings.Iter(func(l labels.Label, p index.Postings) error { | ||||
| 	require.NoError(t, postings.Iter(func(l labels.Label, p index.Postings) error { | ||||
| 		return mi.WritePostings(l.Name, l.Value, p) | ||||
| 	})) | ||||
| 	return mi, chkReader, blockMint, blockMaxt | ||||
|  | @ -180,27 +180,27 @@ func testBlockQuerier(t *testing.T, c blockQuerierTestCase, ir IndexReader, cr C | |||
| 		} | ||||
| 
 | ||||
| 		res := q.Select(false, nil, c.ms...) | ||||
| 		defer func() { assert.NoError(t, q.Close()) }() | ||||
| 		defer func() { require.NoError(t, q.Close()) }() | ||||
| 
 | ||||
| 		for { | ||||
| 			eok, rok := c.exp.Next(), res.Next() | ||||
| 			assert.Equal(t, eok, rok) | ||||
| 			require.Equal(t, eok, rok) | ||||
| 
 | ||||
| 			if !eok { | ||||
| 				assert.Equal(t, 0, len(res.Warnings())) | ||||
| 				require.Equal(t, 0, len(res.Warnings())) | ||||
| 				break | ||||
| 			} | ||||
| 			sexp := c.exp.At() | ||||
| 			sres := res.At() | ||||
| 			assert.Equal(t, sexp.Labels(), sres.Labels()) | ||||
| 			require.Equal(t, sexp.Labels(), sres.Labels()) | ||||
| 
 | ||||
| 			smplExp, errExp := storage.ExpandSamples(sexp.Iterator(), nil) | ||||
| 			smplRes, errRes := storage.ExpandSamples(sres.Iterator(), nil) | ||||
| 
 | ||||
| 			assert.Equal(t, errExp, errRes) | ||||
| 			assert.Equal(t, smplExp, smplRes) | ||||
| 			require.Equal(t, errExp, errRes) | ||||
| 			require.Equal(t, smplExp, smplRes) | ||||
| 		} | ||||
| 		assert.NoError(t, res.Err()) | ||||
| 		require.NoError(t, res.Err()) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("chunk", func(t *testing.T) { | ||||
|  | @ -215,29 +215,29 @@ func testBlockQuerier(t *testing.T, c blockQuerierTestCase, ir IndexReader, cr C | |||
| 			}, | ||||
| 		} | ||||
| 		res := q.Select(false, nil, c.ms...) | ||||
| 		defer func() { assert.NoError(t, q.Close()) }() | ||||
| 		defer func() { require.NoError(t, q.Close()) }() | ||||
| 
 | ||||
| 		for { | ||||
| 			eok, rok := c.expChks.Next(), res.Next() | ||||
| 			assert.Equal(t, eok, rok) | ||||
| 			require.Equal(t, eok, rok) | ||||
| 
 | ||||
| 			if !eok { | ||||
| 				assert.Equal(t, 0, len(res.Warnings())) | ||||
| 				require.Equal(t, 0, len(res.Warnings())) | ||||
| 				break | ||||
| 			} | ||||
| 			sexpChks := c.expChks.At() | ||||
| 			sres := res.At() | ||||
| 
 | ||||
| 			assert.Equal(t, sexpChks.Labels(), sres.Labels()) | ||||
| 			require.Equal(t, sexpChks.Labels(), sres.Labels()) | ||||
| 
 | ||||
| 			chksExp, errExp := storage.ExpandChunks(sexpChks.Iterator()) | ||||
| 			rmChunkRefs(chksExp) | ||||
| 			chksRes, errRes := storage.ExpandChunks(sres.Iterator()) | ||||
| 			rmChunkRefs(chksRes) | ||||
| 			assert.Equal(t, errExp, errRes) | ||||
| 			assert.Equal(t, chksExp, chksRes) | ||||
| 			require.Equal(t, errExp, errRes) | ||||
| 			require.Equal(t, chksExp, chksRes) | ||||
| 		} | ||||
| 		assert.NoError(t, res.Err()) | ||||
| 		require.NoError(t, res.Err()) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
|  | @ -408,7 +408,7 @@ func TestBlockQuerier_AgainstHeadWithOpenChunks(t *testing.T) { | |||
| 	} { | ||||
| 		t.Run("", func(t *testing.T) { | ||||
| 			h, err := NewHead(nil, nil, nil, 2*time.Hour.Milliseconds(), "", nil, DefaultStripeSize, nil) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer h.Close() | ||||
| 
 | ||||
| 			app := h.Appender(context.Background()) | ||||
|  | @ -416,19 +416,19 @@ func TestBlockQuerier_AgainstHeadWithOpenChunks(t *testing.T) { | |||
| 				for _, chk := range s.chunks { | ||||
| 					for _, sample := range chk { | ||||
| 						_, err = app.Add(labels.FromMap(s.lset), sample.t, sample.v) | ||||
| 						assert.NoError(t, err) | ||||
| 						require.NoError(t, err) | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			assert.NoError(t, app.Commit()) | ||||
| 			require.NoError(t, app.Commit()) | ||||
| 
 | ||||
| 			hr := NewRangeHead(h, c.mint, c.maxt) | ||||
| 			ir, err := hr.Index() | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer ir.Close() | ||||
| 
 | ||||
| 			cr, err := hr.Chunks() | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer cr.Close() | ||||
| 
 | ||||
| 			testBlockQuerier(t, c, ir, cr, tombstones.NewMemTombstones()) | ||||
|  | @ -811,8 +811,8 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) { | |||
| 
 | ||||
| 				var r []tsdbutil.Sample | ||||
| 				if tc.seek != 0 { | ||||
| 					assert.Equal(t, tc.seekSuccess, it.Seek(tc.seek)) | ||||
| 					assert.Equal(t, tc.seekSuccess, it.Seek(tc.seek)) // Next one should be noop.
 | ||||
| 					require.Equal(t, tc.seekSuccess, it.Seek(tc.seek)) | ||||
| 					require.Equal(t, tc.seekSuccess, it.Seek(tc.seek)) // Next one should be noop.
 | ||||
| 
 | ||||
| 					if tc.seekSuccess { | ||||
| 						// After successful seek iterator is ready. Grab the value.
 | ||||
|  | @ -821,9 +821,9 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) { | |||
| 					} | ||||
| 				} | ||||
| 				expandedResult, err := storage.ExpandSamples(it, newSample) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				r = append(r, expandedResult...) | ||||
| 				assert.Equal(t, tc.expected, r) | ||||
| 				require.Equal(t, tc.expected, r) | ||||
| 			}) | ||||
| 			t.Run("chunk", func(t *testing.T) { | ||||
| 				f, chkMetas := createFakeReaderAndNotPopulatedChunks(tc.chks...) | ||||
|  | @ -834,12 +834,12 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) { | |||
| 					return | ||||
| 				} | ||||
| 				expandedResult, err := storage.ExpandChunks(it) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				// We don't care about ref IDs for comparison, only chunk's samples matters.
 | ||||
| 				rmChunkRefs(expandedResult) | ||||
| 				rmChunkRefs(tc.expectedChks) | ||||
| 				assert.Equal(t, tc.expectedChks, expandedResult) | ||||
| 				require.Equal(t, tc.expectedChks, expandedResult) | ||||
| 			}) | ||||
| 		}) | ||||
| 	} | ||||
|  | @ -860,12 +860,12 @@ func TestPopulateWithDelSeriesIterator_DoubleSeek(t *testing.T) { | |||
| 	) | ||||
| 
 | ||||
| 	it := newPopulateWithDelGenericSeriesIterator(f, chkMetas, nil).toSeriesIterator() | ||||
| 	assert.True(t, it.Seek(1)) | ||||
| 	assert.True(t, it.Seek(2)) | ||||
| 	assert.True(t, it.Seek(2)) | ||||
| 	require.True(t, it.Seek(1)) | ||||
| 	require.True(t, it.Seek(2)) | ||||
| 	require.True(t, it.Seek(2)) | ||||
| 	ts, v := it.At() | ||||
| 	assert.Equal(t, int64(2), ts) | ||||
| 	assert.Equal(t, float64(2), v) | ||||
| 	require.Equal(t, int64(2), ts) | ||||
| 	require.Equal(t, float64(2), v) | ||||
| } | ||||
| 
 | ||||
| // Regression when seeked chunks were still found via binary search and we always
 | ||||
|  | @ -878,15 +878,15 @@ func TestPopulateWithDelSeriesIterator_SeekInCurrentChunk(t *testing.T) { | |||
| 	) | ||||
| 
 | ||||
| 	it := newPopulateWithDelGenericSeriesIterator(f, chkMetas, nil).toSeriesIterator() | ||||
| 	assert.True(t, it.Next()) | ||||
| 	require.True(t, it.Next()) | ||||
| 	ts, v := it.At() | ||||
| 	assert.Equal(t, int64(1), ts) | ||||
| 	assert.Equal(t, float64(2), v) | ||||
| 	require.Equal(t, int64(1), ts) | ||||
| 	require.Equal(t, float64(2), v) | ||||
| 
 | ||||
| 	assert.True(t, it.Seek(4)) | ||||
| 	require.True(t, it.Seek(4)) | ||||
| 	ts, v = it.At() | ||||
| 	assert.Equal(t, int64(5), ts) | ||||
| 	assert.Equal(t, float64(6), v) | ||||
| 	require.Equal(t, int64(5), ts) | ||||
| 	require.Equal(t, float64(6), v) | ||||
| } | ||||
| 
 | ||||
| func TestPopulateWithDelSeriesIterator_SeekWithMinTime(t *testing.T) { | ||||
|  | @ -895,8 +895,8 @@ func TestPopulateWithDelSeriesIterator_SeekWithMinTime(t *testing.T) { | |||
| 	) | ||||
| 
 | ||||
| 	it := newPopulateWithDelGenericSeriesIterator(f, chkMetas, nil).toSeriesIterator() | ||||
| 	assert.Equal(t, false, it.Seek(7)) | ||||
| 	assert.Equal(t, true, it.Seek(3)) | ||||
| 	require.Equal(t, false, it.Seek(7)) | ||||
| 	require.Equal(t, true, it.Seek(3)) | ||||
| } | ||||
| 
 | ||||
| // Regression when calling Next() with a time bounded to fit within two samples.
 | ||||
|  | @ -909,7 +909,7 @@ func TestPopulateWithDelSeriesIterator_NextWithMinTime(t *testing.T) { | |||
| 	it := newPopulateWithDelGenericSeriesIterator( | ||||
| 		f, chkMetas, tombstones.Intervals{{Mint: math.MinInt64, Maxt: 2}}.Add(tombstones.Interval{Mint: 4, Maxt: math.MaxInt64}), | ||||
| 	).toSeriesIterator() | ||||
| 	assert.Equal(t, false, it.Next()) | ||||
| 	require.Equal(t, false, it.Next()) | ||||
| } | ||||
| 
 | ||||
| // Test the cost of merging series sets for different number of merged sets and their size.
 | ||||
|  | @ -929,7 +929,7 @@ func BenchmarkMergedSeriesSet(b *testing.B) { | |||
| 		for _, j := range []int{1, 2, 4, 8, 16, 32} { | ||||
| 			b.Run(fmt.Sprintf("series=%d,blocks=%d", k, j), func(b *testing.B) { | ||||
| 				lbls, err := labels.ReadLabels(filepath.Join("testdata", "20kseries.json"), k) | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 
 | ||||
| 				sort.Sort(labels.Slice(lbls)) | ||||
| 
 | ||||
|  | @ -955,8 +955,8 @@ func BenchmarkMergedSeriesSet(b *testing.B) { | |||
| 					for ms.Next() { | ||||
| 						i++ | ||||
| 					} | ||||
| 					assert.NoError(b, ms.Err()) | ||||
| 					assert.Equal(b, len(lbls), i) | ||||
| 					require.NoError(b, ms.Err()) | ||||
| 					require.Equal(b, len(lbls), i) | ||||
| 				} | ||||
| 			}) | ||||
| 		} | ||||
|  | @ -981,7 +981,7 @@ func (cr mockChunkReader) Close() error { | |||
| func TestDeletedIterator(t *testing.T) { | ||||
| 	chk := chunkenc.NewXORChunk() | ||||
| 	app, err := chk.Appender() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	// Insert random stuff from (0, 1000).
 | ||||
| 	act := make([]sample, 1000) | ||||
| 	for i := 0; i < 1000; i++ { | ||||
|  | @ -1018,11 +1018,11 @@ func TestDeletedIterator(t *testing.T) { | |||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			assert.Less(t, i, int64(1000)) | ||||
| 			require.Less(t, i, int64(1000)) | ||||
| 
 | ||||
| 			ts, v := it.At() | ||||
| 			assert.Equal(t, act[i].t, ts) | ||||
| 			assert.Equal(t, act[i].v, v) | ||||
| 			require.Equal(t, act[i].t, ts) | ||||
| 			require.Equal(t, act[i].v, v) | ||||
| 		} | ||||
| 		// There has been an extra call to Next().
 | ||||
| 		i++ | ||||
|  | @ -1033,15 +1033,15 @@ func TestDeletedIterator(t *testing.T) { | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		assert.GreaterOrEqual(t, i, int64(1000)) | ||||
| 		assert.NoError(t, it.Err()) | ||||
| 		require.GreaterOrEqual(t, i, int64(1000)) | ||||
| 		require.NoError(t, it.Err()) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestDeletedIterator_WithSeek(t *testing.T) { | ||||
| 	chk := chunkenc.NewXORChunk() | ||||
| 	app, err := chk.Appender() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	// Insert random stuff from (0, 1000).
 | ||||
| 	act := make([]sample, 1000) | ||||
| 	for i := 0; i < 1000; i++ { | ||||
|  | @ -1071,10 +1071,10 @@ func TestDeletedIterator_WithSeek(t *testing.T) { | |||
| 	for _, c := range cases { | ||||
| 		it := &deletedIterator{it: chk.Iterator(nil), intervals: c.r[:]} | ||||
| 
 | ||||
| 		assert.Equal(t, c.ok, it.Seek(c.seek)) | ||||
| 		require.Equal(t, c.ok, it.Seek(c.seek)) | ||||
| 		if c.ok { | ||||
| 			ts, _ := it.At() | ||||
| 			assert.Equal(t, c.seekedTs, ts) | ||||
| 			require.Equal(t, c.seekedTs, ts) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -1228,9 +1228,9 @@ func BenchmarkQueryIterator(b *testing.B) { | |||
| 
 | ||||
| 			b.Run(benchMsg, func(b *testing.B) { | ||||
| 				dir, err := ioutil.TempDir("", "bench_query_iterator") | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 				defer func() { | ||||
| 					assert.NoError(b, os.RemoveAll(dir)) | ||||
| 					require.NoError(b, os.RemoveAll(dir)) | ||||
| 				}() | ||||
| 
 | ||||
| 				var ( | ||||
|  | @ -1252,7 +1252,7 @@ func BenchmarkQueryIterator(b *testing.B) { | |||
| 						generatedSeries = populateSeries(prefilledLabels, mint, maxt) | ||||
| 					} | ||||
| 					block, err := OpenBlock(nil, createBlock(b, dir, generatedSeries), nil) | ||||
| 					assert.NoError(b, err) | ||||
| 					require.NoError(b, err) | ||||
| 					blocks = append(blocks, block) | ||||
| 					defer block.Close() | ||||
| 				} | ||||
|  | @ -1260,7 +1260,7 @@ func BenchmarkQueryIterator(b *testing.B) { | |||
| 				qblocks := make([]storage.Querier, 0, len(blocks)) | ||||
| 				for _, blk := range blocks { | ||||
| 					q, err := NewBlockQuerier(blk, math.MinInt64, math.MaxInt64) | ||||
| 					assert.NoError(b, err) | ||||
| 					require.NoError(b, err) | ||||
| 					qblocks = append(qblocks, q) | ||||
| 				} | ||||
| 
 | ||||
|  | @ -1295,9 +1295,9 @@ func BenchmarkQuerySeek(b *testing.B) { | |||
| 
 | ||||
| 			b.Run(benchMsg, func(b *testing.B) { | ||||
| 				dir, err := ioutil.TempDir("", "bench_query_iterator") | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 				defer func() { | ||||
| 					assert.NoError(b, os.RemoveAll(dir)) | ||||
| 					require.NoError(b, os.RemoveAll(dir)) | ||||
| 				}() | ||||
| 
 | ||||
| 				var ( | ||||
|  | @ -1319,7 +1319,7 @@ func BenchmarkQuerySeek(b *testing.B) { | |||
| 						generatedSeries = populateSeries(prefilledLabels, mint, maxt) | ||||
| 					} | ||||
| 					block, err := OpenBlock(nil, createBlock(b, dir, generatedSeries), nil) | ||||
| 					assert.NoError(b, err) | ||||
| 					require.NoError(b, err) | ||||
| 					blocks = append(blocks, block) | ||||
| 					defer block.Close() | ||||
| 				} | ||||
|  | @ -1327,7 +1327,7 @@ func BenchmarkQuerySeek(b *testing.B) { | |||
| 				qblocks := make([]storage.Querier, 0, len(blocks)) | ||||
| 				for _, blk := range blocks { | ||||
| 					q, err := NewBlockQuerier(blk, math.MinInt64, math.MaxInt64) | ||||
| 					assert.NoError(b, err) | ||||
| 					require.NoError(b, err) | ||||
| 					qblocks = append(qblocks, q) | ||||
| 				} | ||||
| 
 | ||||
|  | @ -1346,11 +1346,11 @@ func BenchmarkQuerySeek(b *testing.B) { | |||
| 					for t := mint; t <= maxt; t++ { | ||||
| 						it.Seek(t) | ||||
| 					} | ||||
| 					assert.NoError(b, it.Err()) | ||||
| 					require.NoError(b, it.Err()) | ||||
| 				} | ||||
| 				assert.NoError(b, ss.Err()) | ||||
| 				assert.NoError(b, err) | ||||
| 				assert.Equal(b, 0, len(ss.Warnings())) | ||||
| 				require.NoError(b, ss.Err()) | ||||
| 				require.NoError(b, err) | ||||
| 				require.Equal(b, 0, len(ss.Warnings())) | ||||
| 			}) | ||||
| 		} | ||||
| 	} | ||||
|  | @ -1436,9 +1436,9 @@ func BenchmarkSetMatcher(b *testing.B) { | |||
| 
 | ||||
| 	for _, c := range cases { | ||||
| 		dir, err := ioutil.TempDir("", "bench_postings_for_matchers") | ||||
| 		assert.NoError(b, err) | ||||
| 		require.NoError(b, err) | ||||
| 		defer func() { | ||||
| 			assert.NoError(b, os.RemoveAll(dir)) | ||||
| 			require.NoError(b, os.RemoveAll(dir)) | ||||
| 		}() | ||||
| 
 | ||||
| 		var ( | ||||
|  | @ -1458,7 +1458,7 @@ func BenchmarkSetMatcher(b *testing.B) { | |||
| 				generatedSeries = populateSeries(prefilledLabels, mint, maxt) | ||||
| 			} | ||||
| 			block, err := OpenBlock(nil, createBlock(b, dir, generatedSeries), nil) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			blocks = append(blocks, block) | ||||
| 			defer block.Close() | ||||
| 		} | ||||
|  | @ -1466,7 +1466,7 @@ func BenchmarkSetMatcher(b *testing.B) { | |||
| 		qblocks := make([]storage.Querier, 0, len(blocks)) | ||||
| 		for _, blk := range blocks { | ||||
| 			q, err := NewBlockQuerier(blk, math.MinInt64, math.MaxInt64) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			qblocks = append(qblocks, q) | ||||
| 		} | ||||
| 
 | ||||
|  | @ -1481,8 +1481,8 @@ func BenchmarkSetMatcher(b *testing.B) { | |||
| 				ss := sq.Select(false, nil, labels.MustNewMatcher(labels.MatchRegexp, "test", c.pattern)) | ||||
| 				for ss.Next() { | ||||
| 				} | ||||
| 				assert.NoError(b, ss.Err()) | ||||
| 				assert.Equal(b, 0, len(ss.Warnings())) | ||||
| 				require.NoError(b, ss.Err()) | ||||
| 				require.Equal(b, 0, len(ss.Warnings())) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
|  | @ -1546,14 +1546,14 @@ func TestFindSetMatches(t *testing.T) { | |||
| 
 | ||||
| func TestPostingsForMatchers(t *testing.T) { | ||||
| 	chunkDir, err := ioutil.TempDir("", "chunk_dir") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(chunkDir)) | ||||
| 		require.NoError(t, os.RemoveAll(chunkDir)) | ||||
| 	}() | ||||
| 	h, err := NewHead(nil, nil, nil, 1000, chunkDir, nil, DefaultStripeSize, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, h.Close()) | ||||
| 		require.NoError(t, h.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	app := h.Appender(context.Background()) | ||||
|  | @ -1562,7 +1562,7 @@ func TestPostingsForMatchers(t *testing.T) { | |||
| 	app.Add(labels.FromStrings("n", "1", "i", "b"), 0, 0) | ||||
| 	app.Add(labels.FromStrings("n", "2"), 0, 0) | ||||
| 	app.Add(labels.FromStrings("n", "2.5"), 0, 0) | ||||
| 	assert.NoError(t, app.Commit()) | ||||
| 	require.NoError(t, app.Commit()) | ||||
| 
 | ||||
| 	cases := []struct { | ||||
| 		matchers []*labels.Matcher | ||||
|  | @ -1775,7 +1775,7 @@ func TestPostingsForMatchers(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	ir, err := h.Index() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	for _, c := range cases { | ||||
| 		exp := map[string]struct{}{} | ||||
|  | @ -1783,18 +1783,18 @@ func TestPostingsForMatchers(t *testing.T) { | |||
| 			exp[l.String()] = struct{}{} | ||||
| 		} | ||||
| 		p, err := PostingsForMatchers(ir, c.matchers...) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		for p.Next() { | ||||
| 			lbls := labels.Labels{} | ||||
| 			assert.NoError(t, ir.Series(p.At(), &lbls, &[]chunks.Meta{})) | ||||
| 			require.NoError(t, ir.Series(p.At(), &lbls, &[]chunks.Meta{})) | ||||
| 			if _, ok := exp[lbls.String()]; !ok { | ||||
| 				t.Errorf("Evaluating %v, unexpected result %s", c.matchers, lbls.String()) | ||||
| 			} else { | ||||
| 				delete(exp, lbls.String()) | ||||
| 			} | ||||
| 		} | ||||
| 		assert.NoError(t, p.Err()) | ||||
| 		require.NoError(t, p.Err()) | ||||
| 		if len(exp) != 0 { | ||||
| 			t.Errorf("Evaluating %v, missing results %+v", c.matchers, exp) | ||||
| 		} | ||||
|  | @ -1809,7 +1809,7 @@ func TestClose(t *testing.T) { | |||
| 		t.Fatalf("Opening test dir failed: %s", err) | ||||
| 	} | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	createBlock(t, dir, genSeries(1, 1, 0, 10)) | ||||
|  | @ -1820,13 +1820,13 @@ func TestClose(t *testing.T) { | |||
| 		t.Fatalf("Opening test storage failed: %s", err) | ||||
| 	} | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, db.Close()) | ||||
| 		require.NoError(t, db.Close()) | ||||
| 	}() | ||||
| 
 | ||||
| 	q, err := db.Querier(context.TODO(), 0, 20) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, q.Close()) | ||||
| 	assert.Error(t, q.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, q.Close()) | ||||
| 	require.Error(t, q.Close()) | ||||
| } | ||||
| 
 | ||||
| func BenchmarkQueries(b *testing.B) { | ||||
|  | @ -1872,9 +1872,9 @@ func BenchmarkQueries(b *testing.B) { | |||
| 		for _, nSeries := range []int{10} { | ||||
| 			for _, nSamples := range []int64{1000, 10000, 100000} { | ||||
| 				dir, err := ioutil.TempDir("", "test_persisted_query") | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 				defer func() { | ||||
| 					assert.NoError(b, os.RemoveAll(dir)) | ||||
| 					require.NoError(b, os.RemoveAll(dir)) | ||||
| 				}() | ||||
| 
 | ||||
| 				series := genSeries(nSeries, 5, 1, nSamples) | ||||
|  | @ -1903,9 +1903,9 @@ func BenchmarkQueries(b *testing.B) { | |||
| 				qs := make([]storage.Querier, 0, 10) | ||||
| 				for x := 0; x <= 10; x++ { | ||||
| 					block, err := OpenBlock(nil, createBlock(b, dir, series), nil) | ||||
| 					assert.NoError(b, err) | ||||
| 					require.NoError(b, err) | ||||
| 					q, err := NewBlockQuerier(block, 1, int64(nSamples)) | ||||
| 					assert.NoError(b, err) | ||||
| 					require.NoError(b, err) | ||||
| 					qs = append(qs, q) | ||||
| 				} | ||||
| 
 | ||||
|  | @ -1914,23 +1914,23 @@ func BenchmarkQueries(b *testing.B) { | |||
| 				queryTypes["_10-Blocks"] = storage.NewMergeQuerier(qs, nil, storage.ChainedSeriesMerge) | ||||
| 
 | ||||
| 				chunkDir, err := ioutil.TempDir("", "chunk_dir") | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 				defer func() { | ||||
| 					assert.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 					require.NoError(b, os.RemoveAll(chunkDir)) | ||||
| 				}() | ||||
| 				head := createHead(b, nil, series, chunkDir) | ||||
| 				qHead, err := NewBlockQuerier(head, 1, nSamples) | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 				queryTypes["_Head"] = qHead | ||||
| 
 | ||||
| 				for qtype, querier := range queryTypes { | ||||
| 					b.Run(title+qtype+"_nSeries:"+strconv.Itoa(nSeries)+"_nSamples:"+strconv.Itoa(int(nSamples)), func(b *testing.B) { | ||||
| 						expExpansions, err := strconv.Atoi(string(title[len(title)-1])) | ||||
| 						assert.NoError(b, err) | ||||
| 						require.NoError(b, err) | ||||
| 						benchQuery(b, expExpansions, querier, selectors) | ||||
| 					}) | ||||
| 				} | ||||
| 				assert.NoError(b, head.Close()) | ||||
| 				require.NoError(b, head.Close()) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | @ -1950,10 +1950,10 @@ func benchQuery(b *testing.B, expExpansions int, q storage.Querier, selectors la | |||
| 			} | ||||
| 			actualExpansions++ | ||||
| 		} | ||||
| 		assert.NoError(b, ss.Err()) | ||||
| 		assert.Equal(b, 0, len(ss.Warnings())) | ||||
| 		assert.Equal(b, expExpansions, actualExpansions) | ||||
| 		assert.NoError(b, ss.Err()) | ||||
| 		require.NoError(b, ss.Err()) | ||||
| 		require.Equal(b, 0, len(ss.Warnings())) | ||||
| 		require.Equal(b, expExpansions, actualExpansions) | ||||
| 		require.NoError(b, ss.Err()) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -2018,9 +2018,9 @@ func TestPostingsForMatcher(t *testing.T) { | |||
| 		ir := &mockMatcherIndex{} | ||||
| 		_, err := postingsForMatcher(ir, tc.matcher) | ||||
| 		if tc.hasError { | ||||
| 			assert.Error(t, err) | ||||
| 			require.Error(t, err) | ||||
| 		} else { | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -2096,7 +2096,7 @@ func TestBlockBaseSeriesSet(t *testing.T) { | |||
| 	for _, tc := range cases { | ||||
| 		mi := newMockIndex() | ||||
| 		for _, s := range tc.series { | ||||
| 			assert.NoError(t, mi.AddSeries(s.ref, s.lset, s.chunks...)) | ||||
| 			require.NoError(t, mi.AddSeries(s.ref, s.lset, s.chunks...)) | ||||
| 		} | ||||
| 
 | ||||
| 		bcs := &blockBaseSeriesSet{ | ||||
|  | @ -2110,12 +2110,12 @@ func TestBlockBaseSeriesSet(t *testing.T) { | |||
| 			chks := bcs.currIterFn().chks | ||||
| 			idx := tc.expIdxs[i] | ||||
| 
 | ||||
| 			assert.Equal(t, tc.series[idx].lset, bcs.currLabels) | ||||
| 			assert.Equal(t, tc.series[idx].chunks, chks) | ||||
| 			require.Equal(t, tc.series[idx].lset, bcs.currLabels) | ||||
| 			require.Equal(t, tc.series[idx].chunks, chks) | ||||
| 
 | ||||
| 			i++ | ||||
| 		} | ||||
| 		assert.Equal(t, len(tc.expIdxs), i) | ||||
| 		assert.NoError(t, bcs.Err()) | ||||
| 		require.Equal(t, len(tc.expIdxs), i) | ||||
| 		require.NoError(t, bcs.Err()) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/tsdb/encoding" | ||||
|  | @ -42,8 +42,8 @@ func TestRecord_EncodeDecode(t *testing.T) { | |||
| 		}, | ||||
| 	} | ||||
| 	decSeries, err := dec.Series(enc.Series(series, nil), nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, series, decSeries) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, series, decSeries) | ||||
| 
 | ||||
| 	samples := []RefSample{ | ||||
| 		{Ref: 0, T: 12423423, V: 1.2345}, | ||||
|  | @ -51,8 +51,8 @@ func TestRecord_EncodeDecode(t *testing.T) { | |||
| 		{Ref: 2, T: 0, V: 99999}, | ||||
| 	} | ||||
| 	decSamples, err := dec.Samples(enc.Samples(samples, nil), nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, samples, decSamples) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, samples, decSamples) | ||||
| 
 | ||||
| 	// Intervals get split up into single entries. So we don't get back exactly
 | ||||
| 	// what we put in.
 | ||||
|  | @ -67,8 +67,8 @@ func TestRecord_EncodeDecode(t *testing.T) { | |||
| 		}}, | ||||
| 	} | ||||
| 	decTstones, err := dec.Tombstones(enc.Tombstones(tstones, nil), nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, []tombstones.Stone{ | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, []tombstones.Stone{ | ||||
| 		{Ref: 123, Intervals: tombstones.Intervals{{Mint: -1000, Maxt: 1231231}}}, | ||||
| 		{Ref: 123, Intervals: tombstones.Intervals{{Mint: 5000, Maxt: 0}}}, | ||||
| 		{Ref: 13, Intervals: tombstones.Intervals{{Mint: -1000, Maxt: -11}}}, | ||||
|  | @ -92,7 +92,7 @@ func TestRecord_Corrupted(t *testing.T) { | |||
| 
 | ||||
| 		corrupted := enc.Series(series, nil)[:8] | ||||
| 		_, err := dec.Series(corrupted, nil) | ||||
| 		assert.Equal(t, err, encoding.ErrInvalidSize) | ||||
| 		require.Equal(t, err, encoding.ErrInvalidSize) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("Test corrupted sample record", func(t *testing.T) { | ||||
|  | @ -102,7 +102,7 @@ func TestRecord_Corrupted(t *testing.T) { | |||
| 
 | ||||
| 		corrupted := enc.Samples(samples, nil)[:8] | ||||
| 		_, err := dec.Samples(corrupted, nil) | ||||
| 		assert.Equal(t, errors.Cause(err), encoding.ErrInvalidSize) | ||||
| 		require.Equal(t, errors.Cause(err), encoding.ErrInvalidSize) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("Test corrupted tombstone record", func(t *testing.T) { | ||||
|  | @ -115,7 +115,7 @@ func TestRecord_Corrupted(t *testing.T) { | |||
| 
 | ||||
| 		corrupted := enc.Tombstones(tstones, nil)[:8] | ||||
| 		_, err := dec.Tombstones(corrupted, nil) | ||||
| 		assert.Equal(t, err, encoding.ErrInvalidSize) | ||||
| 		require.Equal(t, err, encoding.ErrInvalidSize) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
|  | @ -125,19 +125,19 @@ func TestRecord_Type(t *testing.T) { | |||
| 
 | ||||
| 	series := []RefSeries{{Ref: 100, Labels: labels.FromStrings("abc", "123")}} | ||||
| 	recordType := dec.Type(enc.Series(series, nil)) | ||||
| 	assert.Equal(t, Series, recordType) | ||||
| 	require.Equal(t, Series, recordType) | ||||
| 
 | ||||
| 	samples := []RefSample{{Ref: 123, T: 12345, V: 1.2345}} | ||||
| 	recordType = dec.Type(enc.Samples(samples, nil)) | ||||
| 	assert.Equal(t, Samples, recordType) | ||||
| 	require.Equal(t, Samples, recordType) | ||||
| 
 | ||||
| 	tstones := []tombstones.Stone{{Ref: 1, Intervals: tombstones.Intervals{{Mint: 1, Maxt: 2}}}} | ||||
| 	recordType = dec.Type(enc.Tombstones(tstones, nil)) | ||||
| 	assert.Equal(t, Tombstones, recordType) | ||||
| 	require.Equal(t, Tombstones, recordType) | ||||
| 
 | ||||
| 	recordType = dec.Type(nil) | ||||
| 	assert.Equal(t, Unknown, recordType) | ||||
| 	require.Equal(t, Unknown, recordType) | ||||
| 
 | ||||
| 	recordType = dec.Type([]byte{0}) | ||||
| 	assert.Equal(t, Unknown, recordType) | ||||
| 	require.Equal(t, Unknown, recordType) | ||||
| } | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ import ( | |||
| 	"path/filepath" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/tsdb/chunks" | ||||
|  | @ -29,9 +29,9 @@ import ( | |||
| 
 | ||||
| func TestRepairBadIndexVersion(t *testing.T) { | ||||
| 	tmpDir, err := ioutil.TempDir("", "test") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	t.Cleanup(func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpDir)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpDir)) | ||||
| 	}) | ||||
| 
 | ||||
| 	// The broken index used in this test was written by the following script
 | ||||
|  | @ -70,40 +70,40 @@ func TestRepairBadIndexVersion(t *testing.T) { | |||
| 	tmpDbDir := filepath.Join(tmpDir, "01BZJ9WJQPWHGNC2W4J9TA62KC") | ||||
| 
 | ||||
| 	// Create a copy DB to run test against.
 | ||||
| 	assert.NoError(t, fileutil.CopyDirs(filepath.Join("testdata", "repair_index_version", "01BZJ9WJQPWHGNC2W4J9TA62KC"), tmpDbDir)) | ||||
| 	require.NoError(t, fileutil.CopyDirs(filepath.Join("testdata", "repair_index_version", "01BZJ9WJQPWHGNC2W4J9TA62KC"), tmpDbDir)) | ||||
| 
 | ||||
| 	// Check the current db.
 | ||||
| 	// In its current state, lookups should fail with the fixed code.
 | ||||
| 	_, _, err = readMetaFile(tmpDbDir) | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| 
 | ||||
| 	// Touch chunks dir in block to imitate them.
 | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(tmpDbDir, "chunks"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(tmpDbDir, "chunks"), 0777)) | ||||
| 
 | ||||
| 	// Read current index to check integrity.
 | ||||
| 	r, err := index.NewFileReader(filepath.Join(tmpDbDir, indexFilename)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	p, err := r.Postings("b", "1") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	for p.Next() { | ||||
| 		t.Logf("next ID %d", p.At()) | ||||
| 
 | ||||
| 		var lset labels.Labels | ||||
| 		assert.Error(t, r.Series(p.At(), &lset, nil)) | ||||
| 		require.Error(t, r.Series(p.At(), &lset, nil)) | ||||
| 	} | ||||
| 	assert.NoError(t, p.Err()) | ||||
| 	assert.NoError(t, r.Close()) | ||||
| 	require.NoError(t, p.Err()) | ||||
| 	require.NoError(t, r.Close()) | ||||
| 
 | ||||
| 	// On DB opening all blocks in the base dir should be repaired.
 | ||||
| 	db, err := Open(tmpDir, nil, nil, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	db.Close() | ||||
| 
 | ||||
| 	r, err = index.NewFileReader(filepath.Join(tmpDbDir, indexFilename)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer r.Close() | ||||
| 	p, err = r.Postings("b", "1") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	res := []labels.Labels{} | ||||
| 
 | ||||
| 	for p.Next() { | ||||
|  | @ -111,17 +111,17 @@ func TestRepairBadIndexVersion(t *testing.T) { | |||
| 
 | ||||
| 		var lset labels.Labels | ||||
| 		var chks []chunks.Meta | ||||
| 		assert.NoError(t, r.Series(p.At(), &lset, &chks)) | ||||
| 		require.NoError(t, r.Series(p.At(), &lset, &chks)) | ||||
| 		res = append(res, lset) | ||||
| 	} | ||||
| 
 | ||||
| 	assert.NoError(t, p.Err()) | ||||
| 	assert.Equal(t, []labels.Labels{ | ||||
| 	require.NoError(t, p.Err()) | ||||
| 	require.Equal(t, []labels.Labels{ | ||||
| 		{{Name: "a", Value: "1"}, {Name: "b", Value: "1"}}, | ||||
| 		{{Name: "a", Value: "2"}, {Name: "b", Value: "1"}}, | ||||
| 	}, res) | ||||
| 
 | ||||
| 	meta, _, err := readMetaFile(tmpDbDir) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, metaVersion1, meta.Version, "unexpected meta version %d", meta.Version) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, metaVersion1, meta.Version, "unexpected meta version %d", meta.Version) | ||||
| } | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/goleak" | ||||
| ) | ||||
| 
 | ||||
|  | @ -34,7 +34,7 @@ func TestMain(m *testing.M) { | |||
| func TestWriteAndReadbackTombstones(t *testing.T) { | ||||
| 	tmpdir, _ := ioutil.TempDir("", "test") | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	ref := uint64(0) | ||||
|  | @ -54,13 +54,13 @@ func TestWriteAndReadbackTombstones(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	_, err := WriteFile(log.NewNopLogger(), tmpdir, stones) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	restr, _, err := ReadTombstones(tmpdir) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Compare the two readers.
 | ||||
| 	assert.Equal(t, stones, restr) | ||||
| 	require.Equal(t, stones, restr) | ||||
| } | ||||
| 
 | ||||
| func TestAddingNewIntervals(t *testing.T) { | ||||
|  | @ -157,7 +157,7 @@ func TestAddingNewIntervals(t *testing.T) { | |||
| 
 | ||||
| 	for _, c := range cases { | ||||
| 		t.Run("", func(t *testing.T) { | ||||
| 			assert.Equal(t, c.exp, c.exist.Add(c.new)) | ||||
| 			require.Equal(t, c.exp, c.exist.Add(c.new)) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -178,7 +178,7 @@ func TestMemTombstonesConcurrency(t *testing.T) { | |||
| 	go func() { | ||||
| 		for x := 0; x < totalRuns; x++ { | ||||
| 			_, err := tomb.Get(uint64(x)) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		} | ||||
| 		wg.Done() | ||||
| 	}() | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ import ( | |||
| 	"sort" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestSampleRing(t *testing.T) { | ||||
|  | @ -92,12 +92,12 @@ func TestBufferedSeriesIterator(t *testing.T) { | |||
| 			t, v := bit.At() | ||||
| 			b = append(b, sample{t: t, v: v}) | ||||
| 		} | ||||
| 		assert.Equal(t, exp, b) | ||||
| 		require.Equal(t, exp, b) | ||||
| 	} | ||||
| 	sampleEq := func(ets int64, ev float64) { | ||||
| 		ts, v := it.At() | ||||
| 		assert.Equal(t, ets, ts) | ||||
| 		assert.Equal(t, ev, v) | ||||
| 		require.Equal(t, ets, ts) | ||||
| 		require.Equal(t, ev, v) | ||||
| 	} | ||||
| 
 | ||||
| 	it = NewBuffer(newListSeriesIterator([]sample{ | ||||
|  | @ -111,29 +111,29 @@ func TestBufferedSeriesIterator(t *testing.T) { | |||
| 		{t: 101, v: 10}, | ||||
| 	}), 2) | ||||
| 
 | ||||
| 	assert.True(t, it.Seek(-123), "seek failed") | ||||
| 	require.True(t, it.Seek(-123), "seek failed") | ||||
| 	sampleEq(1, 2) | ||||
| 	bufferEq(nil) | ||||
| 
 | ||||
| 	assert.True(t, it.Next(), "next failed") | ||||
| 	require.True(t, it.Next(), "next failed") | ||||
| 	sampleEq(2, 3) | ||||
| 	bufferEq([]sample{{t: 1, v: 2}}) | ||||
| 
 | ||||
| 	assert.True(t, it.Next(), "next failed") | ||||
| 	assert.True(t, it.Next(), "next failed") | ||||
| 	assert.True(t, it.Next(), "next failed") | ||||
| 	require.True(t, it.Next(), "next failed") | ||||
| 	require.True(t, it.Next(), "next failed") | ||||
| 	require.True(t, it.Next(), "next failed") | ||||
| 	sampleEq(5, 6) | ||||
| 	bufferEq([]sample{{t: 2, v: 3}, {t: 3, v: 4}, {t: 4, v: 5}}) | ||||
| 
 | ||||
| 	assert.True(t, it.Seek(5), "seek failed") | ||||
| 	require.True(t, it.Seek(5), "seek failed") | ||||
| 	sampleEq(5, 6) | ||||
| 	bufferEq([]sample{{t: 2, v: 3}, {t: 3, v: 4}, {t: 4, v: 5}}) | ||||
| 
 | ||||
| 	assert.True(t, it.Seek(101), "seek failed") | ||||
| 	require.True(t, it.Seek(101), "seek failed") | ||||
| 	sampleEq(101, 10) | ||||
| 	bufferEq([]sample{{t: 99, v: 8}, {t: 100, v: 9}}) | ||||
| 
 | ||||
| 	assert.False(t, it.Next(), "next succeeded unexpectedly") | ||||
| 	require.False(t, it.Next(), "next succeeded unexpectedly") | ||||
| } | ||||
| 
 | ||||
| type listSeriesIterator struct { | ||||
|  |  | |||
|  | @ -24,7 +24,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/tsdb/record" | ||||
|  | @ -32,127 +32,127 @@ import ( | |||
| 
 | ||||
| func TestLastCheckpoint(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "test_checkpoint") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	_, _, err = LastCheckpoint(dir) | ||||
| 	assert.Equal(t, record.ErrNotFound, err) | ||||
| 	require.Equal(t, record.ErrNotFound, err) | ||||
| 
 | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.0000"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.0000"), 0777)) | ||||
| 	s, k, err := LastCheckpoint(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, filepath.Join(dir, "checkpoint.0000"), s) | ||||
| 	assert.Equal(t, 0, k) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, filepath.Join(dir, "checkpoint.0000"), s) | ||||
| 	require.Equal(t, 0, k) | ||||
| 
 | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.xyz"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.xyz"), 0777)) | ||||
| 	s, k, err = LastCheckpoint(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, filepath.Join(dir, "checkpoint.0000"), s) | ||||
| 	assert.Equal(t, 0, k) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, filepath.Join(dir, "checkpoint.0000"), s) | ||||
| 	require.Equal(t, 0, k) | ||||
| 
 | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.1"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.1"), 0777)) | ||||
| 	s, k, err = LastCheckpoint(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, filepath.Join(dir, "checkpoint.1"), s) | ||||
| 	assert.Equal(t, 1, k) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, filepath.Join(dir, "checkpoint.1"), s) | ||||
| 	require.Equal(t, 1, k) | ||||
| 
 | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.1000"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.1000"), 0777)) | ||||
| 	s, k, err = LastCheckpoint(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, filepath.Join(dir, "checkpoint.1000"), s) | ||||
| 	assert.Equal(t, 1000, k) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, filepath.Join(dir, "checkpoint.1000"), s) | ||||
| 	require.Equal(t, 1000, k) | ||||
| 
 | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.99999999"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.99999999"), 0777)) | ||||
| 	s, k, err = LastCheckpoint(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, filepath.Join(dir, "checkpoint.99999999"), s) | ||||
| 	assert.Equal(t, 99999999, k) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, filepath.Join(dir, "checkpoint.99999999"), s) | ||||
| 	require.Equal(t, 99999999, k) | ||||
| 
 | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.100000000"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.100000000"), 0777)) | ||||
| 	s, k, err = LastCheckpoint(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, filepath.Join(dir, "checkpoint.100000000"), s) | ||||
| 	assert.Equal(t, 100000000, k) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, filepath.Join(dir, "checkpoint.100000000"), s) | ||||
| 	require.Equal(t, 100000000, k) | ||||
| } | ||||
| 
 | ||||
| func TestDeleteCheckpoints(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "test_checkpoint") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	assert.NoError(t, DeleteCheckpoints(dir, 0)) | ||||
| 	require.NoError(t, DeleteCheckpoints(dir, 0)) | ||||
| 
 | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.00"), 0777)) | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.01"), 0777)) | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.02"), 0777)) | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.03"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.00"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.01"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.02"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.03"), 0777)) | ||||
| 
 | ||||
| 	assert.NoError(t, DeleteCheckpoints(dir, 2)) | ||||
| 	require.NoError(t, DeleteCheckpoints(dir, 2)) | ||||
| 
 | ||||
| 	files, err := ioutil.ReadDir(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	fns := []string{} | ||||
| 	for _, f := range files { | ||||
| 		fns = append(fns, f.Name()) | ||||
| 	} | ||||
| 	assert.Equal(t, []string{"checkpoint.02", "checkpoint.03"}, fns) | ||||
| 	require.Equal(t, []string{"checkpoint.02", "checkpoint.03"}, fns) | ||||
| 
 | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.99999999"), 0777)) | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.100000000"), 0777)) | ||||
| 	assert.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.100000001"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.99999999"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.100000000"), 0777)) | ||||
| 	require.NoError(t, os.MkdirAll(filepath.Join(dir, "checkpoint.100000001"), 0777)) | ||||
| 
 | ||||
| 	assert.NoError(t, DeleteCheckpoints(dir, 100000000)) | ||||
| 	require.NoError(t, DeleteCheckpoints(dir, 100000000)) | ||||
| 
 | ||||
| 	files, err = ioutil.ReadDir(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	fns = []string{} | ||||
| 	for _, f := range files { | ||||
| 		fns = append(fns, f.Name()) | ||||
| 	} | ||||
| 	assert.Equal(t, []string{"checkpoint.100000000", "checkpoint.100000001"}, fns) | ||||
| 	require.Equal(t, []string{"checkpoint.100000000", "checkpoint.100000001"}, fns) | ||||
| } | ||||
| 
 | ||||
| func TestCheckpoint(t *testing.T) { | ||||
| 	for _, compress := range []bool{false, true} { | ||||
| 		t.Run(fmt.Sprintf("compress=%t", compress), func(t *testing.T) { | ||||
| 			dir, err := ioutil.TempDir("", "test_checkpoint") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(dir)) | ||||
| 				require.NoError(t, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			var enc record.Encoder | ||||
| 			// Create a dummy segment to bump the initial number.
 | ||||
| 			seg, err := CreateSegment(dir, 100) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.NoError(t, seg.Close()) | ||||
| 			require.NoError(t, err) | ||||
| 			require.NoError(t, seg.Close()) | ||||
| 
 | ||||
| 			// Manually create checkpoint for 99 and earlier.
 | ||||
| 			w, err := New(nil, nil, filepath.Join(dir, "checkpoint.0099"), compress) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			// Add some data we expect to be around later.
 | ||||
| 			err = w.Log(enc.Series([]record.RefSeries{ | ||||
| 				{Ref: 0, Labels: labels.FromStrings("a", "b", "c", "0")}, | ||||
| 				{Ref: 1, Labels: labels.FromStrings("a", "b", "c", "1")}, | ||||
| 			}, nil)) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			// Log an unknown record, that might have come from a future Prometheus version.
 | ||||
| 			assert.NoError(t, w.Log([]byte{255})) | ||||
| 			assert.NoError(t, w.Close()) | ||||
| 			require.NoError(t, w.Log([]byte{255})) | ||||
| 			require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 			// Start a WAL and write records to it as usual.
 | ||||
| 			w, err = NewSize(nil, nil, dir, 64*1024, compress) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			var last int64 | ||||
| 			for i := 0; ; i++ { | ||||
| 				_, n, err := Segments(w.Dir()) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				if n >= 106 { | ||||
| 					break | ||||
| 				} | ||||
|  | @ -164,7 +164,7 @@ func TestCheckpoint(t *testing.T) { | |||
| 						{Ref: 4, Labels: labels.FromStrings("a", "b", "c", "4")}, | ||||
| 						{Ref: 5, Labels: labels.FromStrings("a", "b", "c", "5")}, | ||||
| 					}, nil) | ||||
| 					assert.NoError(t, w.Log(b)) | ||||
| 					require.NoError(t, w.Log(b)) | ||||
| 				} | ||||
| 				// Write samples until the WAL has enough segments.
 | ||||
| 				// Make them have drifting timestamps within a record to see that they
 | ||||
|  | @ -175,27 +175,27 @@ func TestCheckpoint(t *testing.T) { | |||
| 					{Ref: 2, T: last + 20000, V: float64(i)}, | ||||
| 					{Ref: 3, T: last + 30000, V: float64(i)}, | ||||
| 				}, nil) | ||||
| 				assert.NoError(t, w.Log(b)) | ||||
| 				require.NoError(t, w.Log(b)) | ||||
| 
 | ||||
| 				last += 100 | ||||
| 			} | ||||
| 			assert.NoError(t, w.Close()) | ||||
| 			require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 			_, err = Checkpoint(log.NewNopLogger(), w, 100, 106, func(x uint64) bool { | ||||
| 				return x%2 == 0 | ||||
| 			}, last/2) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.NoError(t, w.Truncate(107)) | ||||
| 			assert.NoError(t, DeleteCheckpoints(w.Dir(), 106)) | ||||
| 			require.NoError(t, err) | ||||
| 			require.NoError(t, w.Truncate(107)) | ||||
| 			require.NoError(t, DeleteCheckpoints(w.Dir(), 106)) | ||||
| 
 | ||||
| 			// Only the new checkpoint should be left.
 | ||||
| 			files, err := ioutil.ReadDir(dir) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, 1, len(files)) | ||||
| 			assert.Equal(t, "checkpoint.00000106", files[0].Name()) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, 1, len(files)) | ||||
| 			require.Equal(t, "checkpoint.00000106", files[0].Name()) | ||||
| 
 | ||||
| 			sr, err := NewSegmentsReader(filepath.Join(dir, "checkpoint.00000106")) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer sr.Close() | ||||
| 
 | ||||
| 			var dec record.Decoder | ||||
|  | @ -208,17 +208,17 @@ func TestCheckpoint(t *testing.T) { | |||
| 				switch dec.Type(rec) { | ||||
| 				case record.Series: | ||||
| 					series, err = dec.Series(rec, series) | ||||
| 					assert.NoError(t, err) | ||||
| 					require.NoError(t, err) | ||||
| 				case record.Samples: | ||||
| 					samples, err := dec.Samples(rec, nil) | ||||
| 					assert.NoError(t, err) | ||||
| 					require.NoError(t, err) | ||||
| 					for _, s := range samples { | ||||
| 						assert.GreaterOrEqual(t, s.T, last/2, "sample with wrong timestamp") | ||||
| 						require.GreaterOrEqual(t, s.T, last/2, "sample with wrong timestamp") | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			assert.NoError(t, r.Err()) | ||||
| 			assert.Equal(t, []record.RefSeries{ | ||||
| 			require.NoError(t, r.Err()) | ||||
| 			require.Equal(t, []record.RefSeries{ | ||||
| 				{Ref: 0, Labels: labels.FromStrings("a", "b", "c", "0")}, | ||||
| 				{Ref: 2, Labels: labels.FromStrings("a", "b", "c", "2")}, | ||||
| 				{Ref: 4, Labels: labels.FromStrings("a", "b", "c", "4")}, | ||||
|  | @ -230,27 +230,27 @@ func TestCheckpoint(t *testing.T) { | |||
| func TestCheckpointNoTmpFolderAfterError(t *testing.T) { | ||||
| 	// Create a new wal with invalid data.
 | ||||
| 	dir, err := ioutil.TempDir("", "test_checkpoint") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 	w, err := NewSize(nil, nil, dir, 64*1024, false) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	var enc record.Encoder | ||||
| 	assert.NoError(t, w.Log(enc.Series([]record.RefSeries{ | ||||
| 	require.NoError(t, w.Log(enc.Series([]record.RefSeries{ | ||||
| 		{Ref: 0, Labels: labels.FromStrings("a", "b", "c", "2")}}, nil))) | ||||
| 	assert.NoError(t, w.Close()) | ||||
| 	require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 	// Corrupt data.
 | ||||
| 	f, err := os.OpenFile(filepath.Join(w.Dir(), "00000000"), os.O_WRONLY, 0666) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	_, err = f.WriteAt([]byte{42}, 1) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, f.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, f.Close()) | ||||
| 
 | ||||
| 	// Run the checkpoint and since the wal contains corrupt data this should return an error.
 | ||||
| 	_, err = Checkpoint(log.NewNopLogger(), w, 0, 1, nil, 0) | ||||
| 	assert.Error(t, err) | ||||
| 	require.Error(t, err) | ||||
| 
 | ||||
| 	// Walk the wal dir to make sure there are no tmp folder left behind after the error.
 | ||||
| 	err = filepath.Walk(w.Dir(), func(path string, info os.FileInfo, err error) error { | ||||
|  | @ -262,5 +262,5 @@ func TestCheckpointNoTmpFolderAfterError(t *testing.T) { | |||
| 		} | ||||
| 		return nil | ||||
| 	}) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| } | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	tsdb_errors "github.com/prometheus/prometheus/tsdb/errors" | ||||
| 	"github.com/prometheus/prometheus/util/testutil" | ||||
|  | @ -183,7 +183,7 @@ func TestReader(t *testing.T) { | |||
| 					if j >= len(c.exp) { | ||||
| 						t.Fatal("received more records than expected") | ||||
| 					} | ||||
| 					assert.Equal(t, c.exp[j], rec, "Bytes within record did not match expected Bytes") | ||||
| 					require.Equal(t, c.exp[j], rec, "Bytes within record did not match expected Bytes") | ||||
| 				} | ||||
| 				if !c.fail && r.Err() != nil { | ||||
| 					t.Fatalf("unexpected error: %s", r.Err()) | ||||
|  | @ -202,14 +202,14 @@ func TestReader_Live(t *testing.T) { | |||
| 	for i := range testReaderCases { | ||||
| 		t.Run(strconv.Itoa(i), func(t *testing.T) { | ||||
| 			writeFd, err := ioutil.TempFile("", "TestReader_Live") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer os.Remove(writeFd.Name()) | ||||
| 
 | ||||
| 			go func(i int) { | ||||
| 				for _, rec := range testReaderCases[i].t { | ||||
| 					rec := encodedRecord(rec.t, rec.b) | ||||
| 					_, err := writeFd.Write(rec) | ||||
| 					assert.NoError(t, err) | ||||
| 					require.NoError(t, err) | ||||
| 					runtime.Gosched() | ||||
| 				} | ||||
| 				writeFd.Close() | ||||
|  | @ -217,21 +217,21 @@ func TestReader_Live(t *testing.T) { | |||
| 
 | ||||
| 			// Read from a second FD on the same file.
 | ||||
| 			readFd, err := os.Open(writeFd.Name()) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			reader := NewLiveReader(logger, NewLiveReaderMetrics(nil), readFd) | ||||
| 			for _, exp := range testReaderCases[i].exp { | ||||
| 				for !reader.Next() { | ||||
| 					assert.Equal(t, io.EOF, reader.Err(), "expect EOF, got: %v", reader.Err()) | ||||
| 					require.Equal(t, io.EOF, reader.Err(), "expect EOF, got: %v", reader.Err()) | ||||
| 					runtime.Gosched() | ||||
| 				} | ||||
| 
 | ||||
| 				actual := reader.Record() | ||||
| 				assert.Equal(t, exp, actual, "read wrong record") | ||||
| 				require.Equal(t, exp, actual, "read wrong record") | ||||
| 			} | ||||
| 
 | ||||
| 			assert.False(t, reader.Next(), "unexpected record") | ||||
| 			require.False(t, reader.Next(), "unexpected record") | ||||
| 			if testReaderCases[i].fail { | ||||
| 				assert.Error(t, reader.Err()) | ||||
| 				require.Error(t, reader.Err()) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
|  | @ -311,33 +311,33 @@ func TestReaderFuzz(t *testing.T) { | |||
| 		for _, compress := range []bool{false, true} { | ||||
| 			t.Run(fmt.Sprintf("%s,compress=%t", name, compress), func(t *testing.T) { | ||||
| 				dir, err := ioutil.TempDir("", "wal_fuzz_live") | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				defer func() { | ||||
| 					assert.NoError(t, os.RemoveAll(dir)) | ||||
| 					require.NoError(t, os.RemoveAll(dir)) | ||||
| 				}() | ||||
| 
 | ||||
| 				w, err := NewSize(nil, nil, dir, 128*pageSize, compress) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				// Buffering required as we're not reading concurrently.
 | ||||
| 				input := make(chan []byte, fuzzLen) | ||||
| 				err = generateRandomEntries(w, input) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				close(input) | ||||
| 
 | ||||
| 				err = w.Close() | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				sr, err := allSegments(w.Dir()) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				defer sr.Close() | ||||
| 
 | ||||
| 				reader := fn(sr) | ||||
| 				for expected := range input { | ||||
| 					assert.True(t, reader.Next(), "expected record: %v", reader.Err()) | ||||
| 					assert.Equal(t, expected, reader.Record(), "read wrong record") | ||||
| 					require.True(t, reader.Next(), "expected record: %v", reader.Err()) | ||||
| 					require.Equal(t, expected, reader.Record(), "read wrong record") | ||||
| 				} | ||||
| 				assert.False(t, reader.Next(), "unexpected record") | ||||
| 				require.False(t, reader.Next(), "unexpected record") | ||||
| 			}) | ||||
| 		} | ||||
| 	} | ||||
|  | @ -348,13 +348,13 @@ func TestReaderFuzz_Live(t *testing.T) { | |||
| 	for _, compress := range []bool{false, true} { | ||||
| 		t.Run(fmt.Sprintf("compress=%t", compress), func(t *testing.T) { | ||||
| 			dir, err := ioutil.TempDir("", "wal_fuzz_live") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(dir)) | ||||
| 				require.NoError(t, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			w, err := NewSize(nil, nil, dir, 128*pageSize, compress) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer w.Close() | ||||
| 
 | ||||
| 			// In the background, generate a stream of random records and write them
 | ||||
|  | @ -363,17 +363,17 @@ func TestReaderFuzz_Live(t *testing.T) { | |||
| 			done := make(chan struct{}) | ||||
| 			go func() { | ||||
| 				err := generateRandomEntries(w, input) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				time.Sleep(100 * time.Millisecond) | ||||
| 				close(done) | ||||
| 			}() | ||||
| 
 | ||||
| 			// Tail the WAL and compare the results.
 | ||||
| 			m, _, err := Segments(w.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			seg, err := OpenReadSegment(SegmentName(dir, m)) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer seg.Close() | ||||
| 
 | ||||
| 			r := NewLiveReader(logger, nil, seg) | ||||
|  | @ -384,10 +384,10 @@ func TestReaderFuzz_Live(t *testing.T) { | |||
| 				for r.Next() { | ||||
| 					rec := r.Record() | ||||
| 					expected, ok := <-input | ||||
| 					assert.True(t, ok, "unexpected record") | ||||
| 					assert.Equal(t, expected, rec, "record does not match expected") | ||||
| 					require.True(t, ok, "unexpected record") | ||||
| 					require.Equal(t, expected, rec, "record does not match expected") | ||||
| 				} | ||||
| 				assert.Equal(t, io.EOF, r.Err(), "expected EOF, got: %v", r.Err()) | ||||
| 				require.Equal(t, io.EOF, r.Err(), "expected EOF, got: %v", r.Err()) | ||||
| 				return true | ||||
| 			} | ||||
| 
 | ||||
|  | @ -397,7 +397,7 @@ func TestReaderFuzz_Live(t *testing.T) { | |||
| 				case <-segmentTicker.C: | ||||
| 					// check if new segments exist
 | ||||
| 					_, last, err := Segments(w.Dir()) | ||||
| 					assert.NoError(t, err) | ||||
| 					require.NoError(t, err) | ||||
| 					if last <= seg.i { | ||||
| 						continue | ||||
| 					} | ||||
|  | @ -406,11 +406,11 @@ func TestReaderFuzz_Live(t *testing.T) { | |||
| 					readSegment(r) | ||||
| 
 | ||||
| 					fi, err := os.Stat(SegmentName(dir, seg.i)) | ||||
| 					assert.NoError(t, err) | ||||
| 					assert.Equal(t, r.Offset(), fi.Size(), "expected to have read whole segment, but read %d of %d", r.Offset(), fi.Size()) | ||||
| 					require.NoError(t, err) | ||||
| 					require.Equal(t, r.Offset(), fi.Size(), "expected to have read whole segment, but read %d of %d", r.Offset(), fi.Size()) | ||||
| 
 | ||||
| 					seg, err = OpenReadSegment(SegmentName(dir, seg.i+1)) | ||||
| 					assert.NoError(t, err) | ||||
| 					require.NoError(t, err) | ||||
| 					defer seg.Close() | ||||
| 					r = NewLiveReader(logger, nil, seg) | ||||
| 
 | ||||
|  | @ -423,7 +423,7 @@ func TestReaderFuzz_Live(t *testing.T) { | |||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			assert.Equal(t, io.EOF, r.Err(), "expected EOF") | ||||
| 			require.Equal(t, io.EOF, r.Err(), "expected EOF") | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -433,92 +433,92 @@ func TestLiveReaderCorrupt_ShortFile(t *testing.T) { | |||
| 	// but the segment is only half written.
 | ||||
| 	logger := testutil.NewLogger(t) | ||||
| 	dir, err := ioutil.TempDir("", "wal_live_corrupt") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	w, err := NewSize(nil, nil, dir, pageSize, false) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	rec := make([]byte, pageSize-recordHeaderSize) | ||||
| 	_, err = rand.Read(rec) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = w.Log(rec) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = w.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	segmentFile, err := os.OpenFile(filepath.Join(dir, "00000000"), os.O_RDWR, 0666) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = segmentFile.Truncate(pageSize / 2) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = segmentFile.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Try and LiveReader it.
 | ||||
| 	m, _, err := Segments(w.Dir()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	seg, err := OpenReadSegment(SegmentName(dir, m)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer seg.Close() | ||||
| 
 | ||||
| 	r := NewLiveReader(logger, nil, seg) | ||||
| 	assert.False(t, r.Next(), "expected no records") | ||||
| 	assert.Equal(t, io.EOF, r.Err(), "expected error, got: %v", r.Err()) | ||||
| 	require.False(t, r.Next(), "expected no records") | ||||
| 	require.Equal(t, io.EOF, r.Err(), "expected error, got: %v", r.Err()) | ||||
| } | ||||
| 
 | ||||
| func TestLiveReaderCorrupt_RecordTooLongAndShort(t *testing.T) { | ||||
| 	// Write a corrupt WAL segment, when record len > page size.
 | ||||
| 	logger := testutil.NewLogger(t) | ||||
| 	dir, err := ioutil.TempDir("", "wal_live_corrupt") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	w, err := NewSize(nil, nil, dir, pageSize*2, false) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	rec := make([]byte, pageSize-recordHeaderSize) | ||||
| 	_, err = rand.Read(rec) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = w.Log(rec) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = w.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	segmentFile, err := os.OpenFile(filepath.Join(dir, "00000000"), os.O_RDWR, 0666) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Override the record length
 | ||||
| 	buf := make([]byte, 3) | ||||
| 	buf[0] = byte(recFull) | ||||
| 	binary.BigEndian.PutUint16(buf[1:], 0xFFFF) | ||||
| 	_, err = segmentFile.WriteAt(buf, 0) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	err = segmentFile.Close() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Try and LiveReader it.
 | ||||
| 	m, _, err := Segments(w.Dir()) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	seg, err := OpenReadSegment(SegmentName(dir, m)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer seg.Close() | ||||
| 
 | ||||
| 	r := NewLiveReader(logger, NewLiveReaderMetrics(nil), seg) | ||||
| 	assert.False(t, r.Next(), "expected no records") | ||||
| 	assert.EqualError(t, r.Err(), "record length greater than a single page: 65542 > 32768", "expected error, got: %v", r.Err()) | ||||
| 	require.False(t, r.Next(), "expected no records") | ||||
| 	require.EqualError(t, r.Err(), "record length greater than a single page: 65542 > 32768", "expected error, got: %v", r.Err()) | ||||
| } | ||||
| 
 | ||||
| func TestReaderData(t *testing.T) { | ||||
|  | @ -530,18 +530,18 @@ func TestReaderData(t *testing.T) { | |||
| 	for name, fn := range readerConstructors { | ||||
| 		t.Run(name, func(t *testing.T) { | ||||
| 			w, err := New(nil, nil, dir, true) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			sr, err := allSegments(dir) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			reader := fn(sr) | ||||
| 			for reader.Next() { | ||||
| 			} | ||||
| 			assert.NoError(t, reader.Err()) | ||||
| 			require.NoError(t, reader.Err()) | ||||
| 
 | ||||
| 			err = w.Repair(reader.Err()) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -24,7 +24,7 @@ import ( | |||
| 	"testing" | ||||
| 
 | ||||
| 	client_testutil "github.com/prometheus/client_golang/prometheus/testutil" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 	"go.uber.org/goleak" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/tsdb/fileutil" | ||||
|  | @ -47,9 +47,9 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 			2, | ||||
| 			func(f *os.File) { | ||||
| 				_, err := f.Seek(pageSize*2, 0) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				_, err = f.Write([]byte{byte(recFirst)}) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			}, | ||||
| 			8, | ||||
| 		}, | ||||
|  | @ -60,9 +60,9 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 			1, | ||||
| 			func(f *os.File) { | ||||
| 				_, err := f.Seek(pageSize, 0) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				_, err = f.Write([]byte{byte(recPageTerm)}) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			}, | ||||
| 			4, | ||||
| 		}, | ||||
|  | @ -70,9 +70,9 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 			1, | ||||
| 			func(f *os.File) { | ||||
| 				_, err := f.Seek(pageSize, 0) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				_, err = f.Write([]byte{byte(recLast)}) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			}, | ||||
| 			4, | ||||
| 		}, | ||||
|  | @ -80,9 +80,9 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 			1, | ||||
| 			func(f *os.File) { | ||||
| 				_, err := f.Seek(pageSize, 0) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				_, err = f.Write([]byte{123}) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			}, | ||||
| 			4, | ||||
| 		}, | ||||
|  | @ -90,9 +90,9 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 			1, | ||||
| 			func(f *os.File) { | ||||
| 				_, err := f.Seek(pageSize+4, 0) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				_, err = f.Write([]byte{0}) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			}, | ||||
| 			4, | ||||
| 		}, | ||||
|  | @ -100,9 +100,9 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 			1, | ||||
| 			func(f *os.File) { | ||||
| 				_, err := f.Seek(pageSize+2, 0) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				_, err = f.Write([]byte{0}) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			}, | ||||
| 			4, | ||||
| 		}, | ||||
|  | @ -110,18 +110,18 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 			1, | ||||
| 			func(f *os.File) { | ||||
| 				_, err := f.Seek(pageSize+100, 0) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				_, err = f.Write([]byte("beef")) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			}, | ||||
| 			4, | ||||
| 		}, | ||||
| 	} { | ||||
| 		t.Run(name, func(t *testing.T) { | ||||
| 			dir, err := ioutil.TempDir("", "wal_repair") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(dir)) | ||||
| 				require.NoError(t, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			// We create 3 segments with 3 records each and
 | ||||
|  | @ -129,7 +129,7 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 			// As a result we want a repaired WAL with given intact records.
 | ||||
| 			segSize := 3 * pageSize | ||||
| 			w, err := NewSize(nil, nil, dir, segSize, false) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			var records [][]byte | ||||
| 
 | ||||
|  | @ -137,36 +137,36 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 				b := make([]byte, pageSize-recordHeaderSize) | ||||
| 				b[0] = byte(i) | ||||
| 				records = append(records, b) | ||||
| 				assert.NoError(t, w.Log(b)) | ||||
| 				require.NoError(t, w.Log(b)) | ||||
| 			} | ||||
| 			first, last, err := Segments(w.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, 3, 1+last-first, "wal creation didn't result in expected number of segments") | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, 3, 1+last-first, "wal creation didn't result in expected number of segments") | ||||
| 
 | ||||
| 			assert.NoError(t, w.Close()) | ||||
| 			require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 			f, err := os.OpenFile(SegmentName(dir, test.corrSgm), os.O_RDWR, 0666) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			// Apply corruption function.
 | ||||
| 			test.corrFunc(f) | ||||
| 
 | ||||
| 			assert.NoError(t, f.Close()) | ||||
| 			require.NoError(t, f.Close()) | ||||
| 
 | ||||
| 			w, err = NewSize(nil, nil, dir, segSize, false) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer w.Close() | ||||
| 
 | ||||
| 			first, last, err = Segments(w.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			// Backfill segments from the most recent checkpoint onwards.
 | ||||
| 			for i := first; i <= last; i++ { | ||||
| 				s, err := OpenReadSegment(SegmentName(w.Dir(), i)) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				sr := NewSegmentBufReader(s) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				r := NewReader(sr) | ||||
| 				for r.Next() { | ||||
| 				} | ||||
|  | @ -178,12 +178,12 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 				if r.Err() == nil { | ||||
| 					continue | ||||
| 				} | ||||
| 				assert.NoError(t, w.Repair(r.Err())) | ||||
| 				require.NoError(t, w.Repair(r.Err())) | ||||
| 				break | ||||
| 			} | ||||
| 
 | ||||
| 			sr, err := NewSegmentsReader(dir) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer sr.Close() | ||||
| 			r := NewReader(sr) | ||||
| 
 | ||||
|  | @ -192,8 +192,8 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 				var b []byte | ||||
| 				result = append(result, append(b, r.Record()...)) | ||||
| 			} | ||||
| 			assert.NoError(t, r.Err()) | ||||
| 			assert.Equal(t, test.intactRecs, len(result), "Wrong number of intact records") | ||||
| 			require.NoError(t, r.Err()) | ||||
| 			require.Equal(t, test.intactRecs, len(result), "Wrong number of intact records") | ||||
| 
 | ||||
| 			for i, r := range result { | ||||
| 				if !bytes.Equal(records[i], r) { | ||||
|  | @ -203,11 +203,11 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| 
 | ||||
| 			// Make sure there is a new 0 size Segment after the corrupted Segment.
 | ||||
| 			_, last, err = Segments(w.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, test.corrSgm+1, last) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, test.corrSgm+1, last) | ||||
| 			fi, err := os.Stat(SegmentName(dir, last)) | ||||
| 			assert.NoError(t, err) | ||||
| 			assert.Equal(t, int64(0), fi.Size()) | ||||
| 			require.NoError(t, err) | ||||
| 			require.Equal(t, int64(0), fi.Size()) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -217,9 +217,9 @@ func TestWALRepair_ReadingError(t *testing.T) { | |||
| // moving to write more records to the WAL.
 | ||||
| func TestCorruptAndCarryOn(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "wal_repair") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	var ( | ||||
|  | @ -232,37 +232,37 @@ func TestCorruptAndCarryOn(t *testing.T) { | |||
| 	// so when we truncate the file we're guaranteed to split a record.
 | ||||
| 	{ | ||||
| 		w, err := NewSize(logger, nil, dir, segmentSize, false) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		for i := 0; i < 18; i++ { | ||||
| 			buf := make([]byte, recordSize) | ||||
| 			_, err := rand.Read(buf) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			err = w.Log(buf) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		} | ||||
| 
 | ||||
| 		err = w.Close() | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	} | ||||
| 
 | ||||
| 	// Check all the segments are the correct size.
 | ||||
| 	{ | ||||
| 		segments, err := listSegments(dir) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		for _, segment := range segments { | ||||
| 			f, err := os.OpenFile(filepath.Join(dir, fmt.Sprintf("%08d", segment.index)), os.O_RDONLY, 0666) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			fi, err := f.Stat() | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			t.Log("segment", segment.index, "size", fi.Size()) | ||||
| 			assert.Equal(t, int64(segmentSize), fi.Size()) | ||||
| 			require.Equal(t, int64(segmentSize), fi.Size()) | ||||
| 
 | ||||
| 			err = f.Close() | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -270,74 +270,74 @@ func TestCorruptAndCarryOn(t *testing.T) { | |||
| 	// page in half, leaving 4 valid records.
 | ||||
| 	{ | ||||
| 		f, err := os.OpenFile(filepath.Join(dir, fmt.Sprintf("%08d", 0)), os.O_RDWR, 0666) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		fi, err := f.Stat() | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, int64(segmentSize), fi.Size()) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, int64(segmentSize), fi.Size()) | ||||
| 
 | ||||
| 		err = f.Truncate(int64(segmentSize / 2)) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		err = f.Close() | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	} | ||||
| 
 | ||||
| 	// Now try and repair this WAL, and write 5 more records to it.
 | ||||
| 	{ | ||||
| 		sr, err := NewSegmentsReader(dir) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		reader := NewReader(sr) | ||||
| 		i := 0 | ||||
| 		for ; i < 4 && reader.Next(); i++ { | ||||
| 			assert.Equal(t, recordSize, len(reader.Record())) | ||||
| 			require.Equal(t, recordSize, len(reader.Record())) | ||||
| 		} | ||||
| 		assert.Equal(t, 4, i, "not enough records") | ||||
| 		assert.False(t, reader.Next(), "unexpected record") | ||||
| 		require.Equal(t, 4, i, "not enough records") | ||||
| 		require.False(t, reader.Next(), "unexpected record") | ||||
| 
 | ||||
| 		corruptionErr := reader.Err() | ||||
| 		assert.Error(t, corruptionErr) | ||||
| 		require.Error(t, corruptionErr) | ||||
| 
 | ||||
| 		err = sr.Close() | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		w, err := NewSize(logger, nil, dir, segmentSize, false) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		err = w.Repair(corruptionErr) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		// Ensure that we have a completely clean slate after repairing.
 | ||||
| 		assert.Equal(t, w.segment.Index(), 1) // We corrupted segment 0.
 | ||||
| 		assert.Equal(t, w.donePages, 0) | ||||
| 		require.Equal(t, w.segment.Index(), 1) // We corrupted segment 0.
 | ||||
| 		require.Equal(t, w.donePages, 0) | ||||
| 
 | ||||
| 		for i := 0; i < 5; i++ { | ||||
| 			buf := make([]byte, recordSize) | ||||
| 			_, err := rand.Read(buf) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			err = w.Log(buf) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		} | ||||
| 
 | ||||
| 		err = w.Close() | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	} | ||||
| 
 | ||||
| 	// Replay the WAL. Should get 9 records.
 | ||||
| 	{ | ||||
| 		sr, err := NewSegmentsReader(dir) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		reader := NewReader(sr) | ||||
| 		i := 0 | ||||
| 		for ; i < 9 && reader.Next(); i++ { | ||||
| 			assert.Equal(t, recordSize, len(reader.Record())) | ||||
| 			require.Equal(t, recordSize, len(reader.Record())) | ||||
| 		} | ||||
| 		assert.Equal(t, 9, i, "wrong number of records") | ||||
| 		assert.False(t, reader.Next(), "unexpected record") | ||||
| 		assert.Equal(t, nil, reader.Err()) | ||||
| 		require.Equal(t, 9, i, "wrong number of records") | ||||
| 		require.False(t, reader.Next(), "unexpected record") | ||||
| 		require.Equal(t, nil, reader.Err()) | ||||
| 		sr.Close() | ||||
| 	} | ||||
| } | ||||
|  | @ -345,14 +345,14 @@ func TestCorruptAndCarryOn(t *testing.T) { | |||
| // TestClose ensures that calling Close more than once doesn't panic and doesn't block.
 | ||||
| func TestClose(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "wal_repair") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 	w, err := NewSize(nil, nil, dir, pageSize, false) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, w.Close()) | ||||
| 	assert.Error(t, w.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, w.Close()) | ||||
| 	require.Error(t, w.Close()) | ||||
| } | ||||
| 
 | ||||
| func TestSegmentMetric(t *testing.T) { | ||||
|  | @ -362,12 +362,12 @@ func TestSegmentMetric(t *testing.T) { | |||
| 	) | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "segment_metric") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 	w, err := NewSize(nil, nil, dir, segmentSize, false) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	initialSegment := client_testutil.ToFloat64(w.metrics.currentSegment) | ||||
| 
 | ||||
|  | @ -375,13 +375,13 @@ func TestSegmentMetric(t *testing.T) { | |||
| 	for i := 0; i < 3; i++ { | ||||
| 		buf := make([]byte, recordSize) | ||||
| 		_, err := rand.Read(buf) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		err = w.Log(buf) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	} | ||||
| 	assert.Equal(t, initialSegment+1, client_testutil.ToFloat64(w.metrics.currentSegment), "segment metric did not increment after segment rotation") | ||||
| 	assert.NoError(t, w.Close()) | ||||
| 	require.Equal(t, initialSegment+1, client_testutil.ToFloat64(w.metrics.currentSegment), "segment metric did not increment after segment rotation") | ||||
| 	require.NoError(t, w.Close()) | ||||
| } | ||||
| 
 | ||||
| func TestCompression(t *testing.T) { | ||||
|  | @ -393,48 +393,48 @@ func TestCompression(t *testing.T) { | |||
| 		) | ||||
| 
 | ||||
| 		dirPath, err := ioutil.TempDir("", fmt.Sprintf("TestCompression_%t", compressed)) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		w, err := NewSize(nil, nil, dirPath, segmentSize, compressed) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		buf := make([]byte, recordSize) | ||||
| 		for i := 0; i < records; i++ { | ||||
| 			assert.NoError(t, w.Log(buf)) | ||||
| 			require.NoError(t, w.Log(buf)) | ||||
| 		} | ||||
| 		assert.NoError(t, w.Close()) | ||||
| 		require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 		return dirPath | ||||
| 	} | ||||
| 
 | ||||
| 	dirCompressed := bootstrap(true) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dirCompressed)) | ||||
| 		require.NoError(t, os.RemoveAll(dirCompressed)) | ||||
| 	}() | ||||
| 	dirUnCompressed := bootstrap(false) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dirUnCompressed)) | ||||
| 		require.NoError(t, os.RemoveAll(dirUnCompressed)) | ||||
| 	}() | ||||
| 
 | ||||
| 	uncompressedSize, err := fileutil.DirSize(dirUnCompressed) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	compressedSize, err := fileutil.DirSize(dirCompressed) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	assert.Greater(t, float64(uncompressedSize)*0.75, float64(compressedSize), "Compressing zeroes should save at least 25%% space - uncompressedSize: %d, compressedSize: %d", uncompressedSize, compressedSize) | ||||
| 	require.Greater(t, float64(uncompressedSize)*0.75, float64(compressedSize), "Compressing zeroes should save at least 25%% space - uncompressedSize: %d, compressedSize: %d", uncompressedSize, compressedSize) | ||||
| } | ||||
| 
 | ||||
| func BenchmarkWAL_LogBatched(b *testing.B) { | ||||
| 	for _, compress := range []bool{true, false} { | ||||
| 		b.Run(fmt.Sprintf("compress=%t", compress), func(b *testing.B) { | ||||
| 			dir, err := ioutil.TempDir("", "bench_logbatch") | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(b, os.RemoveAll(dir)) | ||||
| 				require.NoError(b, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			w, err := New(nil, nil, dir, compress) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			defer w.Close() | ||||
| 
 | ||||
| 			var buf [2048]byte | ||||
|  | @ -447,7 +447,7 @@ func BenchmarkWAL_LogBatched(b *testing.B) { | |||
| 					continue | ||||
| 				} | ||||
| 				err := w.Log(recs...) | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 				recs = recs[:0] | ||||
| 			} | ||||
| 			// Stop timer to not count fsync time on close.
 | ||||
|  | @ -462,13 +462,13 @@ func BenchmarkWAL_Log(b *testing.B) { | |||
| 	for _, compress := range []bool{true, false} { | ||||
| 		b.Run(fmt.Sprintf("compress=%t", compress), func(b *testing.B) { | ||||
| 			dir, err := ioutil.TempDir("", "bench_logsingle") | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(b, os.RemoveAll(dir)) | ||||
| 				require.NoError(b, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			w, err := New(nil, nil, dir, compress) | ||||
| 			assert.NoError(b, err) | ||||
| 			require.NoError(b, err) | ||||
| 			defer w.Close() | ||||
| 
 | ||||
| 			var buf [2048]byte | ||||
|  | @ -476,7 +476,7 @@ func BenchmarkWAL_Log(b *testing.B) { | |||
| 
 | ||||
| 			for i := 0; i < b.N; i++ { | ||||
| 				err := w.Log(buf[:]) | ||||
| 				assert.NoError(b, err) | ||||
| 				require.NoError(b, err) | ||||
| 			} | ||||
| 			// Stop timer to not count fsync time on close.
 | ||||
| 			// If it's counted batched vs. single benchmarks are very similar but
 | ||||
|  |  | |||
|  | @ -24,7 +24,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/tsdb/record" | ||||
|  | @ -100,20 +100,20 @@ func TestTailSamples(t *testing.T) { | |||
| 			now := time.Now() | ||||
| 
 | ||||
| 			dir, err := ioutil.TempDir("", "readCheckpoint") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(dir)) | ||||
| 				require.NoError(t, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			wdir := path.Join(dir, "wal") | ||||
| 			err = os.Mkdir(wdir, 0777) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			enc := record.Encoder{} | ||||
| 			w, err := NewSize(nil, nil, wdir, 128*pageSize, compress) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, w.Close()) | ||||
| 				require.NoError(t, w.Close()) | ||||
| 			}() | ||||
| 
 | ||||
| 			// Write to the initial segment then checkpoint.
 | ||||
|  | @ -125,7 +125,7 @@ func TestTailSamples(t *testing.T) { | |||
| 						Labels: labels.Labels{labels.Label{Name: "__name__", Value: fmt.Sprintf("metric_%d", i)}}, | ||||
| 					}, | ||||
| 				}, nil) | ||||
| 				assert.NoError(t, w.Log(series)) | ||||
| 				require.NoError(t, w.Log(series)) | ||||
| 
 | ||||
| 				for j := 0; j < samplesCount; j++ { | ||||
| 					inner := rand.Intn(ref + 1) | ||||
|  | @ -136,13 +136,13 @@ func TestTailSamples(t *testing.T) { | |||
| 							V:   float64(i), | ||||
| 						}, | ||||
| 					}, nil) | ||||
| 					assert.NoError(t, w.Log(sample)) | ||||
| 					require.NoError(t, w.Log(sample)) | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			// Start read after checkpoint, no more data written.
 | ||||
| 			first, last, err := Segments(w.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			wt := newWriteToMock() | ||||
| 			watcher := NewWatcher(wMetrics, nil, nil, "", wt, dir) | ||||
|  | @ -152,7 +152,7 @@ func TestTailSamples(t *testing.T) { | |||
| 			watcher.setMetrics() | ||||
| 			for i := first; i <= last; i++ { | ||||
| 				segment, err := OpenReadSegment(SegmentName(watcher.walDir, i)) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				defer segment.Close() | ||||
| 
 | ||||
| 				reader := NewLiveReader(nil, NewLiveReaderMetrics(nil), segment) | ||||
|  | @ -165,8 +165,8 @@ func TestTailSamples(t *testing.T) { | |||
| 			retry(t, defaultRetryInterval, defaultRetries, func() bool { | ||||
| 				return wt.checkNumLabels() >= expectedSeries | ||||
| 			}) | ||||
| 			assert.Equal(t, expectedSeries, wt.checkNumLabels()) | ||||
| 			assert.Equal(t, expectedSamples, wt.samplesAppended) | ||||
| 			require.Equal(t, expectedSeries, wt.checkNumLabels()) | ||||
| 			require.Equal(t, expectedSamples, wt.samplesAppended) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -179,18 +179,18 @@ func TestReadToEndNoCheckpoint(t *testing.T) { | |||
| 	for _, compress := range []bool{false, true} { | ||||
| 		t.Run(fmt.Sprintf("compress=%t", compress), func(t *testing.T) { | ||||
| 			dir, err := ioutil.TempDir("", "readToEnd_noCheckpoint") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(dir)) | ||||
| 				require.NoError(t, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 			wdir := path.Join(dir, "wal") | ||||
| 			err = os.Mkdir(wdir, 0777) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			w, err := NewSize(nil, nil, wdir, 128*pageSize, compress) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, w.Close()) | ||||
| 				require.NoError(t, w.Close()) | ||||
| 			}() | ||||
| 
 | ||||
| 			var recs [][]byte | ||||
|  | @ -218,15 +218,15 @@ func TestReadToEndNoCheckpoint(t *testing.T) { | |||
| 
 | ||||
| 					// Randomly batch up records.
 | ||||
| 					if rand.Intn(4) < 3 { | ||||
| 						assert.NoError(t, w.Log(recs...)) | ||||
| 						require.NoError(t, w.Log(recs...)) | ||||
| 						recs = recs[:0] | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			assert.NoError(t, w.Log(recs...)) | ||||
| 			require.NoError(t, w.Log(recs...)) | ||||
| 
 | ||||
| 			_, _, err = Segments(w.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			wt := newWriteToMock() | ||||
| 			watcher := NewWatcher(wMetrics, nil, nil, "", wt, dir) | ||||
|  | @ -237,7 +237,7 @@ func TestReadToEndNoCheckpoint(t *testing.T) { | |||
| 				return wt.checkNumLabels() >= expected | ||||
| 			}) | ||||
| 			watcher.Stop() | ||||
| 			assert.Equal(t, expected, wt.checkNumLabels()) | ||||
| 			require.Equal(t, expected, wt.checkNumLabels()) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -252,20 +252,20 @@ func TestReadToEndWithCheckpoint(t *testing.T) { | |||
| 	for _, compress := range []bool{false, true} { | ||||
| 		t.Run(fmt.Sprintf("compress=%t", compress), func(t *testing.T) { | ||||
| 			dir, err := ioutil.TempDir("", "readToEnd_withCheckpoint") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(dir)) | ||||
| 				require.NoError(t, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			wdir := path.Join(dir, "wal") | ||||
| 			err = os.Mkdir(wdir, 0777) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			enc := record.Encoder{} | ||||
| 			w, err := NewSize(nil, nil, wdir, segmentSize, compress) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, w.Close()) | ||||
| 				require.NoError(t, w.Close()) | ||||
| 			}() | ||||
| 
 | ||||
| 			// Write to the initial segment then checkpoint.
 | ||||
|  | @ -277,9 +277,9 @@ func TestReadToEndWithCheckpoint(t *testing.T) { | |||
| 						Labels: labels.Labels{labels.Label{Name: "__name__", Value: fmt.Sprintf("metric_%d", i)}}, | ||||
| 					}, | ||||
| 				}, nil) | ||||
| 				assert.NoError(t, w.Log(series)) | ||||
| 				require.NoError(t, w.Log(series)) | ||||
| 				// Add in an unknown record type, which should be ignored.
 | ||||
| 				assert.NoError(t, w.Log([]byte{255})) | ||||
| 				require.NoError(t, w.Log([]byte{255})) | ||||
| 
 | ||||
| 				for j := 0; j < samplesCount; j++ { | ||||
| 					inner := rand.Intn(ref + 1) | ||||
|  | @ -290,7 +290,7 @@ func TestReadToEndWithCheckpoint(t *testing.T) { | |||
| 							V:   float64(i), | ||||
| 						}, | ||||
| 					}, nil) | ||||
| 					assert.NoError(t, w.Log(sample)) | ||||
| 					require.NoError(t, w.Log(sample)) | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
|  | @ -305,7 +305,7 @@ func TestReadToEndWithCheckpoint(t *testing.T) { | |||
| 						Labels: labels.Labels{labels.Label{Name: "__name__", Value: fmt.Sprintf("metric_%d", i)}}, | ||||
| 					}, | ||||
| 				}, nil) | ||||
| 				assert.NoError(t, w.Log(series)) | ||||
| 				require.NoError(t, w.Log(series)) | ||||
| 
 | ||||
| 				for j := 0; j < samplesCount; j++ { | ||||
| 					sample := enc.Samples([]record.RefSample{ | ||||
|  | @ -315,12 +315,12 @@ func TestReadToEndWithCheckpoint(t *testing.T) { | |||
| 							V:   float64(i), | ||||
| 						}, | ||||
| 					}, nil) | ||||
| 					assert.NoError(t, w.Log(sample)) | ||||
| 					require.NoError(t, w.Log(sample)) | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			_, _, err = Segments(w.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			wt := newWriteToMock() | ||||
| 			watcher := NewWatcher(wMetrics, nil, nil, "", wt, dir) | ||||
| 			go watcher.Start() | ||||
|  | @ -330,7 +330,7 @@ func TestReadToEndWithCheckpoint(t *testing.T) { | |||
| 				return wt.checkNumLabels() >= expected | ||||
| 			}) | ||||
| 			watcher.Stop() | ||||
| 			assert.Equal(t, expected, wt.checkNumLabels()) | ||||
| 			require.Equal(t, expected, wt.checkNumLabels()) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -343,22 +343,22 @@ func TestReadCheckpoint(t *testing.T) { | |||
| 	for _, compress := range []bool{false, true} { | ||||
| 		t.Run(fmt.Sprintf("compress=%t", compress), func(t *testing.T) { | ||||
| 			dir, err := ioutil.TempDir("", "readCheckpoint") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(dir)) | ||||
| 				require.NoError(t, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			wdir := path.Join(dir, "wal") | ||||
| 			err = os.Mkdir(wdir, 0777) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			os.Create(SegmentName(wdir, 30)) | ||||
| 
 | ||||
| 			enc := record.Encoder{} | ||||
| 			w, err := NewSize(nil, nil, wdir, 128*pageSize, compress) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, w.Close()) | ||||
| 				require.NoError(t, w.Close()) | ||||
| 			}() | ||||
| 
 | ||||
| 			// Write to the initial segment then checkpoint.
 | ||||
|  | @ -370,7 +370,7 @@ func TestReadCheckpoint(t *testing.T) { | |||
| 						Labels: labels.Labels{labels.Label{Name: "__name__", Value: fmt.Sprintf("metric_%d", i)}}, | ||||
| 					}, | ||||
| 				}, nil) | ||||
| 				assert.NoError(t, w.Log(series)) | ||||
| 				require.NoError(t, w.Log(series)) | ||||
| 
 | ||||
| 				for j := 0; j < samplesCount; j++ { | ||||
| 					inner := rand.Intn(ref + 1) | ||||
|  | @ -381,7 +381,7 @@ func TestReadCheckpoint(t *testing.T) { | |||
| 							V:   float64(i), | ||||
| 						}, | ||||
| 					}, nil) | ||||
| 					assert.NoError(t, w.Log(sample)) | ||||
| 					require.NoError(t, w.Log(sample)) | ||||
| 				} | ||||
| 			} | ||||
| 			Checkpoint(log.NewNopLogger(), w, 30, 31, func(x uint64) bool { return true }, 0) | ||||
|  | @ -389,7 +389,7 @@ func TestReadCheckpoint(t *testing.T) { | |||
| 
 | ||||
| 			// Start read after checkpoint, no more data written.
 | ||||
| 			_, _, err = Segments(w.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			wt := newWriteToMock() | ||||
| 			watcher := NewWatcher(wMetrics, nil, nil, "", wt, dir) | ||||
|  | @ -400,7 +400,7 @@ func TestReadCheckpoint(t *testing.T) { | |||
| 				return wt.checkNumLabels() >= expectedSeries | ||||
| 			}) | ||||
| 			watcher.Stop() | ||||
| 			assert.Equal(t, expectedSeries, wt.checkNumLabels()) | ||||
| 			require.Equal(t, expectedSeries, wt.checkNumLabels()) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -415,18 +415,18 @@ func TestReadCheckpointMultipleSegments(t *testing.T) { | |||
| 	for _, compress := range []bool{false, true} { | ||||
| 		t.Run(fmt.Sprintf("compress=%t", compress), func(t *testing.T) { | ||||
| 			dir, err := ioutil.TempDir("", "readCheckpoint") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(dir)) | ||||
| 				require.NoError(t, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			wdir := path.Join(dir, "wal") | ||||
| 			err = os.Mkdir(wdir, 0777) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			enc := record.Encoder{} | ||||
| 			w, err := NewSize(nil, nil, wdir, pageSize, compress) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			// Write a bunch of data.
 | ||||
| 			for i := 0; i < segments; i++ { | ||||
|  | @ -438,7 +438,7 @@ func TestReadCheckpointMultipleSegments(t *testing.T) { | |||
| 							Labels: labels.Labels{labels.Label{Name: "__name__", Value: fmt.Sprintf("metric_%d", j)}}, | ||||
| 						}, | ||||
| 					}, nil) | ||||
| 					assert.NoError(t, w.Log(series)) | ||||
| 					require.NoError(t, w.Log(series)) | ||||
| 
 | ||||
| 					for k := 0; k < samplesCount; k++ { | ||||
| 						inner := rand.Intn(ref + 1) | ||||
|  | @ -449,19 +449,19 @@ func TestReadCheckpointMultipleSegments(t *testing.T) { | |||
| 								V:   float64(i), | ||||
| 							}, | ||||
| 						}, nil) | ||||
| 						assert.NoError(t, w.Log(sample)) | ||||
| 						require.NoError(t, w.Log(sample)) | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			assert.NoError(t, w.Close()) | ||||
| 			require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 			// At this point we should have at least 6 segments, lets create a checkpoint dir of the first 5.
 | ||||
| 			checkpointDir := dir + "/wal/checkpoint.000004" | ||||
| 			err = os.Mkdir(checkpointDir, 0777) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			for i := 0; i <= 4; i++ { | ||||
| 				err := os.Rename(SegmentName(dir+"/wal", i), SegmentName(checkpointDir, i)) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			} | ||||
| 
 | ||||
| 			wt := newWriteToMock() | ||||
|  | @ -472,10 +472,10 @@ func TestReadCheckpointMultipleSegments(t *testing.T) { | |||
| 			watcher.setMetrics() | ||||
| 
 | ||||
| 			lastCheckpoint, _, err := LastCheckpoint(watcher.walDir) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			err = watcher.readCheckpoint(lastCheckpoint) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -497,20 +497,20 @@ func TestCheckpointSeriesReset(t *testing.T) { | |||
| 	for _, tc := range testCases { | ||||
| 		t.Run(fmt.Sprintf("compress=%t", tc.compress), func(t *testing.T) { | ||||
| 			dir, err := ioutil.TempDir("", "seriesReset") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(dir)) | ||||
| 				require.NoError(t, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			wdir := path.Join(dir, "wal") | ||||
| 			err = os.Mkdir(wdir, 0777) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			enc := record.Encoder{} | ||||
| 			w, err := NewSize(nil, nil, wdir, segmentSize, tc.compress) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, w.Close()) | ||||
| 				require.NoError(t, w.Close()) | ||||
| 			}() | ||||
| 
 | ||||
| 			// Write to the initial segment, then checkpoint later.
 | ||||
|  | @ -522,7 +522,7 @@ func TestCheckpointSeriesReset(t *testing.T) { | |||
| 						Labels: labels.Labels{labels.Label{Name: "__name__", Value: fmt.Sprintf("metric_%d", i)}}, | ||||
| 					}, | ||||
| 				}, nil) | ||||
| 				assert.NoError(t, w.Log(series)) | ||||
| 				require.NoError(t, w.Log(series)) | ||||
| 
 | ||||
| 				for j := 0; j < samplesCount; j++ { | ||||
| 					inner := rand.Intn(ref + 1) | ||||
|  | @ -533,12 +533,12 @@ func TestCheckpointSeriesReset(t *testing.T) { | |||
| 							V:   float64(i), | ||||
| 						}, | ||||
| 					}, nil) | ||||
| 					assert.NoError(t, w.Log(sample)) | ||||
| 					require.NoError(t, w.Log(sample)) | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			_, _, err = Segments(w.Dir()) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			wt := newWriteToMock() | ||||
| 			watcher := NewWatcher(wMetrics, nil, nil, "", wt, dir) | ||||
|  | @ -549,24 +549,24 @@ func TestCheckpointSeriesReset(t *testing.T) { | |||
| 			retry(t, defaultRetryInterval, defaultRetries, func() bool { | ||||
| 				return wt.checkNumLabels() >= expected | ||||
| 			}) | ||||
| 			assert.Equal(t, seriesCount, wt.checkNumLabels()) | ||||
| 			require.Equal(t, seriesCount, wt.checkNumLabels()) | ||||
| 
 | ||||
| 			_, err = Checkpoint(log.NewNopLogger(), w, 2, 4, func(x uint64) bool { return true }, 0) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			err = w.Truncate(5) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			_, cpi, err := LastCheckpoint(path.Join(dir, "wal")) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			err = watcher.garbageCollectSeries(cpi + 1) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			watcher.Stop() | ||||
| 			// If you modify the checkpoint and truncate segment #'s run the test to see how
 | ||||
| 			// many series records you end up with and change the last Equals check accordingly
 | ||||
| 			// or modify the Equals to Assert(len(wt.seriesLabels) < seriesCount*10)
 | ||||
| 			assert.Equal(t, tc.segments, wt.checkNumLabels()) | ||||
| 			require.Equal(t, tc.segments, wt.checkNumLabels()) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
							
								
								
									
										232
									
								
								tsdb/wal_test.go
								
								
								
								
							
							
						
						
									
										232
									
								
								tsdb/wal_test.go
								
								
								
								
							|  | @ -27,7 +27,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/go-kit/kit/log" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
| 	"github.com/prometheus/prometheus/tsdb/record" | ||||
|  | @ -37,44 +37,44 @@ import ( | |||
| 
 | ||||
| func TestSegmentWAL_cut(t *testing.T) { | ||||
| 	tmpdir, err := ioutil.TempDir("", "test_wal_cut") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 		require.NoError(t, os.RemoveAll(tmpdir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	// This calls cut() implicitly the first time without a previous tail.
 | ||||
| 	w, err := OpenSegmentWAL(tmpdir, nil, 0, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	assert.NoError(t, w.write(WALEntrySeries, 1, []byte("Hello World!!"))) | ||||
| 	require.NoError(t, w.write(WALEntrySeries, 1, []byte("Hello World!!"))) | ||||
| 
 | ||||
| 	assert.NoError(t, w.cut()) | ||||
| 	require.NoError(t, w.cut()) | ||||
| 
 | ||||
| 	// Cutting creates a new file.
 | ||||
| 	assert.Equal(t, 2, len(w.files)) | ||||
| 	require.Equal(t, 2, len(w.files)) | ||||
| 
 | ||||
| 	assert.NoError(t, w.write(WALEntrySeries, 1, []byte("Hello World!!"))) | ||||
| 	require.NoError(t, w.write(WALEntrySeries, 1, []byte("Hello World!!"))) | ||||
| 
 | ||||
| 	assert.NoError(t, w.Close()) | ||||
| 	require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 	for _, of := range w.files { | ||||
| 		f, err := os.Open(of.Name()) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		// Verify header data.
 | ||||
| 		metab := make([]byte, 8) | ||||
| 		_, err = f.Read(metab) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, WALMagic, binary.BigEndian.Uint32(metab[:4])) | ||||
| 		assert.Equal(t, WALFormatDefault, metab[4]) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, WALMagic, binary.BigEndian.Uint32(metab[:4])) | ||||
| 		require.Equal(t, WALFormatDefault, metab[4]) | ||||
| 
 | ||||
| 		// We cannot actually check for correct pre-allocation as it is
 | ||||
| 		// optional per filesystem and handled transparently.
 | ||||
| 		et, flag, b, err := newWALReader(nil, nil).entry(f) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, WALEntrySeries, et) | ||||
| 		assert.Equal(t, byte(walSeriesSimple), flag) | ||||
| 		assert.Equal(t, []byte("Hello World!!"), b) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, WALEntrySeries, et) | ||||
| 		require.Equal(t, byte(walSeriesSimple), flag) | ||||
| 		require.Equal(t, []byte("Hello World!!"), b) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -84,17 +84,17 @@ func TestSegmentWAL_Truncate(t *testing.T) { | |||
| 		batch      = 100 | ||||
| 	) | ||||
| 	series, err := labels.ReadLabels(filepath.Join("testdata", "20kseries.json"), numMetrics) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "test_wal_log_truncate") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	w, err := OpenSegmentWAL(dir, nil, 0, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	defer func(wal *SegmentWAL) { assert.NoError(t, wal.Close()) }(w) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func(wal *SegmentWAL) { require.NoError(t, wal.Close()) }(w) | ||||
| 	w.segmentSize = 10000 | ||||
| 
 | ||||
| 	for i := 0; i < numMetrics; i += batch { | ||||
|  | @ -104,7 +104,7 @@ func TestSegmentWAL_Truncate(t *testing.T) { | |||
| 			rs = append(rs, record.RefSeries{Labels: s, Ref: uint64(i+j) + 1}) | ||||
| 		} | ||||
| 		err := w.LogSeries(rs) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 	} | ||||
| 
 | ||||
| 	// We mark the 2nd half of the files with a min timestamp that should discard
 | ||||
|  | @ -126,7 +126,7 @@ func TestSegmentWAL_Truncate(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	err = w.Truncate(1000, keepf) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	var expected []record.RefSeries | ||||
| 
 | ||||
|  | @ -139,22 +139,22 @@ func TestSegmentWAL_Truncate(t *testing.T) { | |||
| 	// Call Truncate once again to see whether we can read the written file without
 | ||||
| 	// creating a new WAL.
 | ||||
| 	err = w.Truncate(1000, keepf) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, w.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 	// The same again with a new WAL.
 | ||||
| 	w, err = OpenSegmentWAL(dir, nil, 0, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	defer func(wal *SegmentWAL) { assert.NoError(t, wal.Close()) }(w) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func(wal *SegmentWAL) { require.NoError(t, wal.Close()) }(w) | ||||
| 
 | ||||
| 	var readSeries []record.RefSeries | ||||
| 	r := w.Reader() | ||||
| 
 | ||||
| 	assert.NoError(t, r.Read(func(s []record.RefSeries) { | ||||
| 	require.NoError(t, r.Read(func(s []record.RefSeries) { | ||||
| 		readSeries = append(readSeries, s...) | ||||
| 	}, nil, nil)) | ||||
| 
 | ||||
| 	assert.Equal(t, expected, readSeries) | ||||
| 	require.Equal(t, expected, readSeries) | ||||
| } | ||||
| 
 | ||||
| // Symmetrical test of reading and writing to the WAL via its main interface.
 | ||||
|  | @ -167,12 +167,12 @@ func TestSegmentWAL_Log_Restore(t *testing.T) { | |||
| 	// Generate testing data. It does not make semantic sense but
 | ||||
| 	// for the purpose of this test.
 | ||||
| 	series, err := labels.ReadLabels(filepath.Join("testdata", "20kseries.json"), numMetrics) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	dir, err := ioutil.TempDir("", "test_wal_log_restore") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	var ( | ||||
|  | @ -186,7 +186,7 @@ func TestSegmentWAL_Log_Restore(t *testing.T) { | |||
| 	// write more data to it, close it.
 | ||||
| 	for k := 0; k < numMetrics; k += numMetrics / iterations { | ||||
| 		w, err := OpenSegmentWAL(dir, nil, 0, nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		// Set smaller segment size so we can actually write several files.
 | ||||
| 		w.segmentSize = 1000 * 1000 | ||||
|  | @ -222,11 +222,11 @@ func TestSegmentWAL_Log_Restore(t *testing.T) { | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		assert.NoError(t, r.Read(serf, smplf, delf)) | ||||
| 		require.NoError(t, r.Read(serf, smplf, delf)) | ||||
| 
 | ||||
| 		assert.Equal(t, recordedSamples, resultSamples) | ||||
| 		assert.Equal(t, recordedSeries, resultSeries) | ||||
| 		assert.Equal(t, recordedDeletes, resultDeletes) | ||||
| 		require.Equal(t, recordedSamples, resultSamples) | ||||
| 		require.Equal(t, recordedSeries, resultSeries) | ||||
| 		require.Equal(t, recordedDeletes, resultDeletes) | ||||
| 
 | ||||
| 		series := series[k : k+(numMetrics/iterations)] | ||||
| 
 | ||||
|  | @ -257,9 +257,9 @@ func TestSegmentWAL_Log_Restore(t *testing.T) { | |||
| 				}) | ||||
| 			} | ||||
| 
 | ||||
| 			assert.NoError(t, w.LogSeries(series)) | ||||
| 			assert.NoError(t, w.LogSamples(samples)) | ||||
| 			assert.NoError(t, w.LogDeletes(stones)) | ||||
| 			require.NoError(t, w.LogSeries(series)) | ||||
| 			require.NoError(t, w.LogSamples(samples)) | ||||
| 			require.NoError(t, w.LogDeletes(stones)) | ||||
| 
 | ||||
| 			if len(lbls) > 0 { | ||||
| 				recordedSeries = append(recordedSeries, series) | ||||
|  | @ -273,47 +273,47 @@ func TestSegmentWAL_Log_Restore(t *testing.T) { | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		assert.NoError(t, w.Close()) | ||||
| 		require.NoError(t, w.Close()) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestWALRestoreCorrupted_invalidSegment(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "test_wal_log_restore") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	wal, err := OpenSegmentWAL(dir, nil, 0, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	defer func(wal *SegmentWAL) { assert.NoError(t, wal.Close()) }(wal) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func(wal *SegmentWAL) { require.NoError(t, wal.Close()) }(wal) | ||||
| 
 | ||||
| 	_, err = wal.createSegmentFile(filepath.Join(dir, "000000")) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	f, err := wal.createSegmentFile(filepath.Join(dir, "000001")) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	f2, err := wal.createSegmentFile(filepath.Join(dir, "000002")) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, f2.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, f2.Close()) | ||||
| 
 | ||||
| 	// Make header of second segment invalid.
 | ||||
| 	_, err = f.WriteAt([]byte{1, 2, 3, 4}, 0) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, f.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, f.Close()) | ||||
| 
 | ||||
| 	assert.NoError(t, wal.Close()) | ||||
| 	require.NoError(t, wal.Close()) | ||||
| 
 | ||||
| 	wal, err = OpenSegmentWAL(dir, log.NewLogfmtLogger(os.Stderr), 0, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	defer func(wal *SegmentWAL) { assert.NoError(t, wal.Close()) }(wal) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func(wal *SegmentWAL) { require.NoError(t, wal.Close()) }(wal) | ||||
| 
 | ||||
| 	files, err := ioutil.ReadDir(dir) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	fns := []string{} | ||||
| 	for _, f := range files { | ||||
| 		fns = append(fns, f.Name()) | ||||
| 	} | ||||
| 	assert.Equal(t, []string{"000000"}, fns) | ||||
| 	require.Equal(t, []string{"000000"}, fns) | ||||
| } | ||||
| 
 | ||||
| // Test reading from a WAL that has been corrupted through various means.
 | ||||
|  | @ -326,56 +326,56 @@ func TestWALRestoreCorrupted(t *testing.T) { | |||
| 			name: "truncate_checksum", | ||||
| 			f: func(t *testing.T, w *SegmentWAL) { | ||||
| 				f, err := os.OpenFile(w.files[0].Name(), os.O_WRONLY, 0666) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				defer f.Close() | ||||
| 
 | ||||
| 				off, err := f.Seek(0, io.SeekEnd) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				assert.NoError(t, f.Truncate(off-1)) | ||||
| 				require.NoError(t, f.Truncate(off-1)) | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "truncate_body", | ||||
| 			f: func(t *testing.T, w *SegmentWAL) { | ||||
| 				f, err := os.OpenFile(w.files[0].Name(), os.O_WRONLY, 0666) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				defer f.Close() | ||||
| 
 | ||||
| 				off, err := f.Seek(0, io.SeekEnd) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				assert.NoError(t, f.Truncate(off-8)) | ||||
| 				require.NoError(t, f.Truncate(off-8)) | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "body_content", | ||||
| 			f: func(t *testing.T, w *SegmentWAL) { | ||||
| 				f, err := os.OpenFile(w.files[0].Name(), os.O_WRONLY, 0666) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				defer f.Close() | ||||
| 
 | ||||
| 				off, err := f.Seek(0, io.SeekEnd) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				// Write junk before checksum starts.
 | ||||
| 				_, err = f.WriteAt([]byte{1, 2, 3, 4}, off-8) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "checksum", | ||||
| 			f: func(t *testing.T, w *SegmentWAL) { | ||||
| 				f, err := os.OpenFile(w.files[0].Name(), os.O_WRONLY, 0666) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 				defer f.Close() | ||||
| 
 | ||||
| 				off, err := f.Seek(0, io.SeekEnd) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 
 | ||||
| 				// Write junk into checksum
 | ||||
| 				_, err = f.WriteAt([]byte{1, 2, 3, 4}, off-4) | ||||
| 				assert.NoError(t, err) | ||||
| 				require.NoError(t, err) | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
|  | @ -384,29 +384,29 @@ func TestWALRestoreCorrupted(t *testing.T) { | |||
| 			// Generate testing data. It does not make semantic sense but
 | ||||
| 			// for the purpose of this test.
 | ||||
| 			dir, err := ioutil.TempDir("", "test_corrupted") | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func() { | ||||
| 				assert.NoError(t, os.RemoveAll(dir)) | ||||
| 				require.NoError(t, os.RemoveAll(dir)) | ||||
| 			}() | ||||
| 
 | ||||
| 			w, err := OpenSegmentWAL(dir, nil, 0, nil) | ||||
| 			assert.NoError(t, err) | ||||
| 			defer func(wal *SegmentWAL) { assert.NoError(t, wal.Close()) }(w) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func(wal *SegmentWAL) { require.NoError(t, wal.Close()) }(w) | ||||
| 
 | ||||
| 			assert.NoError(t, w.LogSamples([]record.RefSample{{T: 1, V: 2}})) | ||||
| 			assert.NoError(t, w.LogSamples([]record.RefSample{{T: 2, V: 3}})) | ||||
| 			require.NoError(t, w.LogSamples([]record.RefSample{{T: 1, V: 2}})) | ||||
| 			require.NoError(t, w.LogSamples([]record.RefSample{{T: 2, V: 3}})) | ||||
| 
 | ||||
| 			assert.NoError(t, w.cut()) | ||||
| 			require.NoError(t, w.cut()) | ||||
| 
 | ||||
| 			// Sleep 2 seconds to avoid error where cut and test "cases" function may write or
 | ||||
| 			// truncate the file out of orders as "cases" are not synchronized with cut.
 | ||||
| 			// Hopefully cut will complete by 2 seconds.
 | ||||
| 			time.Sleep(2 * time.Second) | ||||
| 
 | ||||
| 			assert.NoError(t, w.LogSamples([]record.RefSample{{T: 3, V: 4}})) | ||||
| 			assert.NoError(t, w.LogSamples([]record.RefSample{{T: 5, V: 6}})) | ||||
| 			require.NoError(t, w.LogSamples([]record.RefSample{{T: 3, V: 4}})) | ||||
| 			require.NoError(t, w.LogSamples([]record.RefSample{{T: 5, V: 6}})) | ||||
| 
 | ||||
| 			assert.NoError(t, w.Close()) | ||||
| 			require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 			// cut() truncates and fsyncs the first segment async. If it happens after
 | ||||
| 			// the corruption we apply below, the corruption will be overwritten again.
 | ||||
|  | @ -421,41 +421,41 @@ func TestWALRestoreCorrupted(t *testing.T) { | |||
| 			logger := log.NewLogfmtLogger(os.Stderr) | ||||
| 
 | ||||
| 			w2, err := OpenSegmentWAL(dir, logger, 0, nil) | ||||
| 			assert.NoError(t, err) | ||||
| 			defer func(wal *SegmentWAL) { assert.NoError(t, wal.Close()) }(w2) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func(wal *SegmentWAL) { require.NoError(t, wal.Close()) }(w2) | ||||
| 
 | ||||
| 			r := w2.Reader() | ||||
| 
 | ||||
| 			serf := func(l []record.RefSeries) { | ||||
| 				assert.Equal(t, 0, len(l)) | ||||
| 				require.Equal(t, 0, len(l)) | ||||
| 			} | ||||
| 
 | ||||
| 			// Weird hack to check order of reads.
 | ||||
| 			i := 0 | ||||
| 			samplef := func(s []record.RefSample) { | ||||
| 				if i == 0 { | ||||
| 					assert.Equal(t, []record.RefSample{{T: 1, V: 2}}, s) | ||||
| 					require.Equal(t, []record.RefSample{{T: 1, V: 2}}, s) | ||||
| 					i++ | ||||
| 				} else { | ||||
| 					assert.Equal(t, []record.RefSample{{T: 99, V: 100}}, s) | ||||
| 					require.Equal(t, []record.RefSample{{T: 99, V: 100}}, s) | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			assert.NoError(t, r.Read(serf, samplef, nil)) | ||||
| 			require.NoError(t, r.Read(serf, samplef, nil)) | ||||
| 
 | ||||
| 			assert.NoError(t, w2.LogSamples([]record.RefSample{{T: 99, V: 100}})) | ||||
| 			assert.NoError(t, w2.Close()) | ||||
| 			require.NoError(t, w2.LogSamples([]record.RefSample{{T: 99, V: 100}})) | ||||
| 			require.NoError(t, w2.Close()) | ||||
| 
 | ||||
| 			// We should see the first valid entry and the new one, everything after
 | ||||
| 			// is truncated.
 | ||||
| 			w3, err := OpenSegmentWAL(dir, logger, 0, nil) | ||||
| 			assert.NoError(t, err) | ||||
| 			defer func(wal *SegmentWAL) { assert.NoError(t, wal.Close()) }(w3) | ||||
| 			require.NoError(t, err) | ||||
| 			defer func(wal *SegmentWAL) { require.NoError(t, wal.Close()) }(w3) | ||||
| 
 | ||||
| 			r = w3.Reader() | ||||
| 
 | ||||
| 			i = 0 | ||||
| 			assert.NoError(t, r.Read(serf, samplef, nil)) | ||||
| 			require.NoError(t, r.Read(serf, samplef, nil)) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -464,75 +464,75 @@ func TestMigrateWAL_Empty(t *testing.T) { | |||
| 	// The migration procedure must properly deal with a zero-length segment,
 | ||||
| 	// which is valid in the new format.
 | ||||
| 	dir, err := ioutil.TempDir("", "walmigrate") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	wdir := path.Join(dir, "wal") | ||||
| 
 | ||||
| 	// Initialize empty WAL.
 | ||||
| 	w, err := wal.New(nil, nil, wdir, false) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, w.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 	assert.NoError(t, MigrateWAL(nil, wdir)) | ||||
| 	require.NoError(t, MigrateWAL(nil, wdir)) | ||||
| } | ||||
| 
 | ||||
| func TestMigrateWAL_Fuzz(t *testing.T) { | ||||
| 	dir, err := ioutil.TempDir("", "walmigrate") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		assert.NoError(t, os.RemoveAll(dir)) | ||||
| 		require.NoError(t, os.RemoveAll(dir)) | ||||
| 	}() | ||||
| 
 | ||||
| 	wdir := path.Join(dir, "wal") | ||||
| 
 | ||||
| 	// Should pass if no WAL exists yet.
 | ||||
| 	assert.NoError(t, MigrateWAL(nil, wdir)) | ||||
| 	require.NoError(t, MigrateWAL(nil, wdir)) | ||||
| 
 | ||||
| 	oldWAL, err := OpenSegmentWAL(wdir, nil, time.Minute, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// Write some data.
 | ||||
| 	assert.NoError(t, oldWAL.LogSeries([]record.RefSeries{ | ||||
| 	require.NoError(t, oldWAL.LogSeries([]record.RefSeries{ | ||||
| 		{Ref: 100, Labels: labels.FromStrings("abc", "def", "123", "456")}, | ||||
| 		{Ref: 1, Labels: labels.FromStrings("abc", "def2", "1234", "4567")}, | ||||
| 	})) | ||||
| 	assert.NoError(t, oldWAL.LogSamples([]record.RefSample{ | ||||
| 	require.NoError(t, oldWAL.LogSamples([]record.RefSample{ | ||||
| 		{Ref: 1, T: 100, V: 200}, | ||||
| 		{Ref: 2, T: 300, V: 400}, | ||||
| 	})) | ||||
| 	assert.NoError(t, oldWAL.LogSeries([]record.RefSeries{ | ||||
| 	require.NoError(t, oldWAL.LogSeries([]record.RefSeries{ | ||||
| 		{Ref: 200, Labels: labels.FromStrings("xyz", "def", "foo", "bar")}, | ||||
| 	})) | ||||
| 	assert.NoError(t, oldWAL.LogSamples([]record.RefSample{ | ||||
| 	require.NoError(t, oldWAL.LogSamples([]record.RefSample{ | ||||
| 		{Ref: 3, T: 100, V: 200}, | ||||
| 		{Ref: 4, T: 300, V: 400}, | ||||
| 	})) | ||||
| 	assert.NoError(t, oldWAL.LogDeletes([]tombstones.Stone{ | ||||
| 	require.NoError(t, oldWAL.LogDeletes([]tombstones.Stone{ | ||||
| 		{Ref: 1, Intervals: []tombstones.Interval{{Mint: 100, Maxt: 200}}}, | ||||
| 	})) | ||||
| 
 | ||||
| 	assert.NoError(t, oldWAL.Close()) | ||||
| 	require.NoError(t, oldWAL.Close()) | ||||
| 
 | ||||
| 	// Perform migration.
 | ||||
| 	assert.NoError(t, MigrateWAL(nil, wdir)) | ||||
| 	require.NoError(t, MigrateWAL(nil, wdir)) | ||||
| 
 | ||||
| 	w, err := wal.New(nil, nil, wdir, false) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	// We can properly write some new data after migration.
 | ||||
| 	var enc record.Encoder | ||||
| 	assert.NoError(t, w.Log(enc.Samples([]record.RefSample{ | ||||
| 	require.NoError(t, w.Log(enc.Samples([]record.RefSample{ | ||||
| 		{Ref: 500, T: 1, V: 1}, | ||||
| 	}, nil))) | ||||
| 
 | ||||
| 	assert.NoError(t, w.Close()) | ||||
| 	require.NoError(t, w.Close()) | ||||
| 
 | ||||
| 	// Read back all data.
 | ||||
| 	sr, err := wal.NewSegmentsReader(wdir) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	r := wal.NewReader(sr) | ||||
| 	var res []interface{} | ||||
|  | @ -544,23 +544,23 @@ func TestMigrateWAL_Fuzz(t *testing.T) { | |||
| 		switch dec.Type(rec) { | ||||
| 		case record.Series: | ||||
| 			s, err := dec.Series(rec, nil) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			res = append(res, s) | ||||
| 		case record.Samples: | ||||
| 			s, err := dec.Samples(rec, nil) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			res = append(res, s) | ||||
| 		case record.Tombstones: | ||||
| 			s, err := dec.Tombstones(rec, nil) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			res = append(res, s) | ||||
| 		default: | ||||
| 			t.Fatalf("unknown record type %d", dec.Type(rec)) | ||||
| 		} | ||||
| 	} | ||||
| 	assert.NoError(t, r.Err()) | ||||
| 	require.NoError(t, r.Err()) | ||||
| 
 | ||||
| 	assert.Equal(t, []interface{}{ | ||||
| 	require.Equal(t, []interface{}{ | ||||
| 		[]record.RefSeries{ | ||||
| 			{Ref: 100, Labels: labels.FromStrings("abc", "def", "123", "456")}, | ||||
| 			{Ref: 1, Labels: labels.FromStrings("abc", "def2", "1234", "4567")}, | ||||
|  | @ -575,5 +575,5 @@ func TestMigrateWAL_Fuzz(t *testing.T) { | |||
| 	}, res) | ||||
| 
 | ||||
| 	// Migrating an already migrated WAL shouldn't do anything.
 | ||||
| 	assert.NoError(t, MigrateWAL(nil, wdir)) | ||||
| 	require.NoError(t, MigrateWAL(nil, wdir)) | ||||
| } | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ import ( | |||
| 	"strconv" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
|  | @ -139,32 +139,32 @@ func NewTemporaryDirectory(name string, t T) (handler TemporaryDirectory) { | |||
| func DirHash(t *testing.T, path string) []byte { | ||||
| 	hash := sha256.New() | ||||
| 	err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error { | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		if info.IsDir() { | ||||
| 			return nil | ||||
| 		} | ||||
| 		f, err := os.Open(path) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		defer f.Close() | ||||
| 
 | ||||
| 		_, err = io.Copy(hash, f) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		_, err = io.WriteString(hash, strconv.Itoa(int(info.Size()))) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		_, err = io.WriteString(hash, info.Name()) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		modTime, err := info.ModTime().GobEncode() | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		_, err = io.WriteString(hash, string(modTime)) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		return nil | ||||
| 	}) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	return hash.Sum(nil) | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,28 @@ | |||
| // Package require implements the same assertions as the `assert` package but
 | ||||
| // stops test execution when a test fails.
 | ||||
| //
 | ||||
| // Example Usage
 | ||||
| //
 | ||||
| // The following is a complete example using require in a standard test function:
 | ||||
| //    import (
 | ||||
| //      "testing"
 | ||||
| //      "github.com/stretchr/testify/require"
 | ||||
| //    )
 | ||||
| //
 | ||||
| //    func TestSomething(t *testing.T) {
 | ||||
| //
 | ||||
| //      var a string = "Hello"
 | ||||
| //      var b string = "Hello"
 | ||||
| //
 | ||||
| //      require.Equal(t, a, b, "The two words should be the same.")
 | ||||
| //
 | ||||
| //    }
 | ||||
| //
 | ||||
| // Assertions
 | ||||
| //
 | ||||
| // The `require` package have same global functions as in the `assert` package,
 | ||||
| // but instead of returning a boolean result they call `t.FailNow()`.
 | ||||
| //
 | ||||
| // Every assertion function also takes an optional string message as the final argument,
 | ||||
| // allowing custom error messages to be appended to the message the assertion method outputs.
 | ||||
| package require | ||||
							
								
								
									
										16
									
								
								vendor/github.com/stretchr/testify/require/forward_requirements.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										16
									
								
								vendor/github.com/stretchr/testify/require/forward_requirements.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							|  | @ -0,0 +1,16 @@ | |||
| package require | ||||
| 
 | ||||
| // Assertions provides assertion methods around the
 | ||||
| // TestingT interface.
 | ||||
| type Assertions struct { | ||||
| 	t TestingT | ||||
| } | ||||
| 
 | ||||
| // New makes a new Assertions object for the specified TestingT.
 | ||||
| func New(t TestingT) *Assertions { | ||||
| 	return &Assertions{ | ||||
| 		t: t, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| //go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=require -template=require_forward.go.tmpl -include-format-funcs"
 | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -0,0 +1,6 @@ | |||
| {{.Comment}} | ||||
| func {{.DocInfo.Name}}(t TestingT, {{.Params}}) { | ||||
| 	if h, ok := t.(tHelper); ok { h.Helper() } | ||||
| 	if assert.{{.DocInfo.Name}}(t, {{.ForwardedParams}}) { return } | ||||
| 	t.FailNow() | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -0,0 +1,5 @@ | |||
| {{.CommentWithoutT "a"}} | ||||
| func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) { | ||||
| 	if h, ok := a.t.(tHelper); ok { h.Helper() } | ||||
| 	{{.DocInfo.Name}}(a.t, {{.ForwardedParams}}) | ||||
| } | ||||
|  | @ -0,0 +1,29 @@ | |||
| package require | ||||
| 
 | ||||
| // TestingT is an interface wrapper around *testing.T
 | ||||
| type TestingT interface { | ||||
| 	Errorf(format string, args ...interface{}) | ||||
| 	FailNow() | ||||
| } | ||||
| 
 | ||||
| type tHelper interface { | ||||
| 	Helper() | ||||
| } | ||||
| 
 | ||||
| // ComparisonAssertionFunc is a common function prototype when comparing two values.  Can be useful
 | ||||
| // for table driven tests.
 | ||||
| type ComparisonAssertionFunc func(TestingT, interface{}, interface{}, ...interface{}) | ||||
| 
 | ||||
| // ValueAssertionFunc is a common function prototype when validating a single value.  Can be useful
 | ||||
| // for table driven tests.
 | ||||
| type ValueAssertionFunc func(TestingT, interface{}, ...interface{}) | ||||
| 
 | ||||
| // BoolAssertionFunc is a common function prototype when validating a bool value.  Can be useful
 | ||||
| // for table driven tests.
 | ||||
| type BoolAssertionFunc func(TestingT, bool, ...interface{}) | ||||
| 
 | ||||
| // ErrorAssertionFunc is a common function prototype when validating an error value.  Can be useful
 | ||||
| // for table driven tests.
 | ||||
| type ErrorAssertionFunc func(TestingT, error, ...interface{}) | ||||
| 
 | ||||
| //go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=require -template=require.go.tmpl -include-format-funcs"
 | ||||
|  | @ -411,6 +411,7 @@ github.com/sirupsen/logrus | |||
| # github.com/stretchr/testify v1.6.1 | ||||
| ## explicit | ||||
| github.com/stretchr/testify/assert | ||||
| github.com/stretchr/testify/require | ||||
| # github.com/uber/jaeger-client-go v2.25.0+incompatible | ||||
| ## explicit | ||||
| github.com/uber/jaeger-client-go | ||||
|  |  | |||
|  | @ -41,7 +41,7 @@ import ( | |||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/prometheus/common/promlog" | ||||
| 	"github.com/prometheus/common/route" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/config" | ||||
| 	"github.com/prometheus/prometheus/pkg/gate" | ||||
|  | @ -309,10 +309,10 @@ func TestEndpoints(t *testing.T) { | |||
| 			test_metric4{foo="boo", dup="1"} 1+0x100 | ||||
| 			test_metric4{foo="boo"} 1+0x100 | ||||
| 	`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer suite.Close() | ||||
| 
 | ||||
| 	assert.NoError(t, suite.Run()) | ||||
| 	require.NoError(t, suite.Run()) | ||||
| 
 | ||||
| 	now := time.Now() | ||||
| 
 | ||||
|  | @ -349,13 +349,13 @@ func TestEndpoints(t *testing.T) { | |||
| 		defer server.Close() | ||||
| 
 | ||||
| 		u, err := url.Parse(server.URL) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		al := promlog.AllowedLevel{} | ||||
| 		assert.NoError(t, al.Set("debug")) | ||||
| 		require.NoError(t, al.Set("debug")) | ||||
| 
 | ||||
| 		af := promlog.AllowedFormat{} | ||||
| 		assert.NoError(t, af.Set("logfmt")) | ||||
| 		require.NoError(t, af.Set("logfmt")) | ||||
| 
 | ||||
| 		promlogConfig := promlog.Config{ | ||||
| 			Level:  &al, | ||||
|  | @ -363,7 +363,7 @@ func TestEndpoints(t *testing.T) { | |||
| 		} | ||||
| 
 | ||||
| 		dbDir, err := ioutil.TempDir("", "tsdb-api-ready") | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		defer os.RemoveAll(dbDir) | ||||
| 
 | ||||
| 		remote := remote.NewStorage(promlog.New(&promlogConfig), prometheus.DefaultRegisterer, nil, dbDir, 1*time.Second) | ||||
|  | @ -377,7 +377,7 @@ func TestEndpoints(t *testing.T) { | |||
| 				}, | ||||
| 			}, | ||||
| 		}) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		var algr rulesRetrieverMock | ||||
| 		algr.testing = t | ||||
|  | @ -415,9 +415,9 @@ func TestLabelNames(t *testing.T) { | |||
| 			test_metric2{foo="boo"} 1+0x100 | ||||
| 			test_metric2{foo="boo", xyz="qwerty"} 1+0x100 | ||||
| 	`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 	defer suite.Close() | ||||
| 	assert.NoError(t, suite.Run()) | ||||
| 	require.NoError(t, suite.Run()) | ||||
| 
 | ||||
| 	api := &API{ | ||||
| 		Queryable: suite.Storage(), | ||||
|  | @ -433,7 +433,7 @@ func TestLabelNames(t *testing.T) { | |||
| 	for _, method := range []string{http.MethodGet, http.MethodPost} { | ||||
| 		ctx := context.Background() | ||||
| 		req, err := request(method) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		res := api.labelNames(req.WithContext(ctx)) | ||||
| 		assertAPIError(t, res.err, "") | ||||
| 		assertAPIResponse(t, res.data, []string{"__name__", "baz", "foo", "foo1", "foo2", "xyz"}) | ||||
|  | @ -1784,7 +1784,7 @@ func assertAPIError(t *testing.T, got *apiError, exp errorType) { | |||
| func assertAPIResponse(t *testing.T, got interface{}, exp interface{}) { | ||||
| 	t.Helper() | ||||
| 
 | ||||
| 	assert.Equal(t, exp, got) | ||||
| 	require.Equal(t, exp, got) | ||||
| } | ||||
| 
 | ||||
| func assertAPIResponseLength(t *testing.T, got interface{}, expLen int) { | ||||
|  | @ -1805,12 +1805,12 @@ func TestSampledReadEndpoint(t *testing.T) { | |||
| 		load 1m | ||||
| 			test_metric1{foo="bar",baz="qux"} 1 | ||||
| 	`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	defer suite.Close() | ||||
| 
 | ||||
| 	err = suite.Run() | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	api := &API{ | ||||
| 		Queryable:   suite.Storage(), | ||||
|  | @ -1833,21 +1833,21 @@ func TestSampledReadEndpoint(t *testing.T) { | |||
| 
 | ||||
| 	// Encode the request.
 | ||||
| 	matcher1, err := labels.NewMatcher(labels.MatchEqual, "__name__", "test_metric1") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	matcher2, err := labels.NewMatcher(labels.MatchEqual, "d", "e") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	query, err := remote.ToQuery(0, 1, []*labels.Matcher{matcher1, matcher2}, &storage.SelectHints{Step: 0, Func: "avg"}) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	req := &prompb.ReadRequest{Queries: []*prompb.Query{query}} | ||||
| 	data, err := proto.Marshal(req) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	compressed := snappy.Encode(nil, data) | ||||
| 	request, err := http.NewRequest("POST", "", bytes.NewBuffer(compressed)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	recorder := httptest.NewRecorder() | ||||
| 	api.remoteRead(recorder, request) | ||||
|  | @ -1856,25 +1856,25 @@ func TestSampledReadEndpoint(t *testing.T) { | |||
| 		t.Fatal(recorder.Code) | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, "application/x-protobuf", recorder.Result().Header.Get("Content-Type")) | ||||
| 	assert.Equal(t, "snappy", recorder.Result().Header.Get("Content-Encoding")) | ||||
| 	require.Equal(t, "application/x-protobuf", recorder.Result().Header.Get("Content-Type")) | ||||
| 	require.Equal(t, "snappy", recorder.Result().Header.Get("Content-Encoding")) | ||||
| 
 | ||||
| 	// Decode the response.
 | ||||
| 	compressed, err = ioutil.ReadAll(recorder.Result().Body) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	uncompressed, err := snappy.Decode(nil, compressed) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	var resp prompb.ReadResponse | ||||
| 	err = proto.Unmarshal(uncompressed, &resp) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	if len(resp.Results) != 1 { | ||||
| 		t.Fatalf("Expected 1 result, got %d", len(resp.Results)) | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, &prompb.QueryResult{ | ||||
| 	require.Equal(t, &prompb.QueryResult{ | ||||
| 		Timeseries: []*prompb.TimeSeries{ | ||||
| 			{ | ||||
| 				Labels: []prompb.Label{ | ||||
|  | @ -1900,11 +1900,11 @@ func TestStreamReadEndpoint(t *testing.T) { | |||
|             test_metric1{foo="bar2",baz="qux"} 0+100x120 | ||||
|             test_metric1{foo="bar3",baz="qux"} 0+100x240 | ||||
| 	`) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	defer suite.Close() | ||||
| 
 | ||||
| 	assert.NoError(t, suite.Run()) | ||||
| 	require.NoError(t, suite.Run()) | ||||
| 
 | ||||
| 	api := &API{ | ||||
| 		Queryable:   suite.Storage(), | ||||
|  | @ -1929,13 +1929,13 @@ func TestStreamReadEndpoint(t *testing.T) { | |||
| 
 | ||||
| 	// Encode the request.
 | ||||
| 	matcher1, err := labels.NewMatcher(labels.MatchEqual, "__name__", "test_metric1") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	matcher2, err := labels.NewMatcher(labels.MatchEqual, "d", "e") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	matcher3, err := labels.NewMatcher(labels.MatchEqual, "foo", "bar1") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	query1, err := remote.ToQuery(0, 14400001, []*labels.Matcher{matcher1, matcher2}, &storage.SelectHints{ | ||||
| 		Step:  1, | ||||
|  | @ -1943,7 +1943,7 @@ func TestStreamReadEndpoint(t *testing.T) { | |||
| 		Start: 0, | ||||
| 		End:   14400001, | ||||
| 	}) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	query2, err := remote.ToQuery(0, 14400001, []*labels.Matcher{matcher1, matcher3}, &storage.SelectHints{ | ||||
| 		Step:  1, | ||||
|  | @ -1951,18 +1951,18 @@ func TestStreamReadEndpoint(t *testing.T) { | |||
| 		Start: 0, | ||||
| 		End:   14400001, | ||||
| 	}) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	req := &prompb.ReadRequest{ | ||||
| 		Queries:               []*prompb.Query{query1, query2}, | ||||
| 		AcceptedResponseTypes: []prompb.ReadRequest_ResponseType{prompb.ReadRequest_STREAMED_XOR_CHUNKS}, | ||||
| 	} | ||||
| 	data, err := proto.Marshal(req) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	compressed := snappy.Encode(nil, data) | ||||
| 	request, err := http.NewRequest("POST", "", bytes.NewBuffer(compressed)) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	recorder := httptest.NewRecorder() | ||||
| 	api.remoteRead(recorder, request) | ||||
|  | @ -1971,8 +1971,8 @@ func TestStreamReadEndpoint(t *testing.T) { | |||
| 		t.Fatal(recorder.Code) | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, "application/x-streamed-protobuf; proto=prometheus.ChunkedReadResponse", recorder.Result().Header.Get("Content-Type")) | ||||
| 	assert.Equal(t, "", recorder.Result().Header.Get("Content-Encoding")) | ||||
| 	require.Equal(t, "application/x-streamed-protobuf; proto=prometheus.ChunkedReadResponse", recorder.Result().Header.Get("Content-Type")) | ||||
| 	require.Equal(t, "", recorder.Result().Header.Get("Content-Encoding")) | ||||
| 
 | ||||
| 	var results []*prompb.ChunkedReadResponse | ||||
| 	stream := remote.NewChunkedReader(recorder.Result().Body, remote.DefaultChunkedReadLimit, nil) | ||||
|  | @ -1982,7 +1982,7 @@ func TestStreamReadEndpoint(t *testing.T) { | |||
| 		if err == io.EOF { | ||||
| 			break | ||||
| 		} | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 		results = append(results, res) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1990,7 +1990,7 @@ func TestStreamReadEndpoint(t *testing.T) { | |||
| 		t.Fatalf("Expected 5 result, got %d", len(results)) | ||||
| 	} | ||||
| 
 | ||||
| 	assert.Equal(t, []*prompb.ChunkedReadResponse{ | ||||
| 	require.Equal(t, []*prompb.ChunkedReadResponse{ | ||||
| 		{ | ||||
| 			ChunkedSeries: []*prompb.ChunkedSeries{ | ||||
| 				{ | ||||
|  | @ -2294,7 +2294,7 @@ func TestAdminEndpoints(t *testing.T) { | |||
| 		tc := tc | ||||
| 		t.Run("", func(t *testing.T) { | ||||
| 			dir, _ := ioutil.TempDir("", "fakeDB") | ||||
| 			defer func() { assert.NoError(t, os.RemoveAll(dir)) }() | ||||
| 			defer func() { require.NoError(t, os.RemoveAll(dir)) }() | ||||
| 
 | ||||
| 			api := &API{ | ||||
| 				db:          tc.db, | ||||
|  | @ -2305,7 +2305,7 @@ func TestAdminEndpoints(t *testing.T) { | |||
| 
 | ||||
| 			endpoint := tc.endpoint(api) | ||||
| 			req, err := http.NewRequest(tc.method, fmt.Sprintf("?%s", tc.values.Encode()), nil) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			res := setUnavailStatusOnTSDBNotReady(endpoint(req)) | ||||
| 			assertAPIError(t, res.err, tc.errType) | ||||
|  | @ -2346,7 +2346,7 @@ func TestRespondSuccess(t *testing.T) { | |||
| 		Status: statusSuccess, | ||||
| 		Data:   "test", | ||||
| 	} | ||||
| 	assert.Equal(t, exp, &res) | ||||
| 	require.Equal(t, exp, &res) | ||||
| } | ||||
| 
 | ||||
| func TestRespondError(t *testing.T) { | ||||
|  | @ -2384,7 +2384,7 @@ func TestRespondError(t *testing.T) { | |||
| 		ErrorType: errorTimeout, | ||||
| 		Error:     "message", | ||||
| 	} | ||||
| 	assert.Equal(t, exp, &res) | ||||
| 	require.Equal(t, exp, &res) | ||||
| } | ||||
| 
 | ||||
| func TestParseTimeParam(t *testing.T) { | ||||
|  | @ -2394,7 +2394,7 @@ func TestParseTimeParam(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	ts, err := parseTime("1582468023986") | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	var tests = []struct { | ||||
| 		paramName    string | ||||
|  | @ -2436,15 +2436,15 @@ func TestParseTimeParam(t *testing.T) { | |||
| 
 | ||||
| 	for _, test := range tests { | ||||
| 		req, err := http.NewRequest("GET", "localhost:42/foo?"+test.paramName+"="+test.paramValue, nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		result := test.result | ||||
| 		asTime, err := parseTimeParam(req, test.paramName, test.defaultValue) | ||||
| 
 | ||||
| 		if err != nil { | ||||
| 			assert.EqualError(t, err, result.asError().Error()) | ||||
| 			require.EqualError(t, err, result.asError().Error()) | ||||
| 		} else { | ||||
| 			assert.True(t, asTime.Equal(result.asTime), "time as return value: %s not parsed correctly. Expected %s. Actual %s", test.paramValue, result.asTime, asTime) | ||||
| 			require.True(t, asTime.Equal(result.asTime), "time as return value: %s not parsed correctly. Expected %s. Actual %s", test.paramValue, result.asTime, asTime) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -2756,8 +2756,8 @@ func TestReturnAPIError(t *testing.T) { | |||
| 
 | ||||
| 	for _, c := range cases { | ||||
| 		actual := returnAPIError(c.err) | ||||
| 		assert.Error(t, actual) | ||||
| 		assert.Equal(t, c.expected, actual.typ) | ||||
| 		require.Error(t, actual) | ||||
| 		require.Equal(t, c.expected, actual.typ) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -25,7 +25,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/prometheus/common/model" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/config" | ||||
| 	"github.com/prometheus/prometheus/pkg/labels" | ||||
|  | @ -221,8 +221,8 @@ func TestFederation(t *testing.T) { | |||
| 			res := httptest.NewRecorder() | ||||
| 
 | ||||
| 			h.federation(res, req) | ||||
| 			assert.Equal(t, scenario.code, res.Code) | ||||
| 			assert.Equal(t, scenario.body, normalizeBody(res.Body)) | ||||
| 			require.Equal(t, scenario.code, res.Code) | ||||
| 			require.Equal(t, scenario.body, normalizeBody(res.Body)) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | @ -263,10 +263,10 @@ func TestFederation_NotReady(t *testing.T) { | |||
| 			h.federation(res, req) | ||||
| 			if scenario.code == http.StatusBadRequest { | ||||
| 				// Request are expected to be checked before DB readiness.
 | ||||
| 				assert.Equal(t, http.StatusBadRequest, res.Code) | ||||
| 				require.Equal(t, http.StatusBadRequest, res.Code) | ||||
| 				return | ||||
| 			} | ||||
| 			assert.Equal(t, http.StatusServiceUnavailable, res.Code) | ||||
| 			require.Equal(t, http.StatusServiceUnavailable, res.Code) | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
							
								
								
									
										126
									
								
								web/web_test.go
								
								
								
								
							
							
						
						
									
										126
									
								
								web/web_test.go
								
								
								
								
							|  | @ -32,7 +32,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| 	prom_testutil "github.com/prometheus/client_golang/prometheus/testutil" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| 
 | ||||
| 	"github.com/prometheus/prometheus/config" | ||||
| 	"github.com/prometheus/prometheus/notifier" | ||||
|  | @ -86,12 +86,12 @@ func TestGlobalURL(t *testing.T) { | |||
| 	for _, test := range tests { | ||||
| 		inURL, err := url.Parse(test.inURL) | ||||
| 
 | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		globalURL := tmplFuncs("", opts)["globalURL"].(func(u *url.URL) *url.URL) | ||||
| 		outURL := globalURL(inURL) | ||||
| 
 | ||||
| 		assert.Equal(t, test.outURL, outURL.String()) | ||||
| 		require.Equal(t, test.outURL, outURL.String()) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -107,11 +107,11 @@ func TestReadyAndHealthy(t *testing.T) { | |||
| 	t.Parallel() | ||||
| 
 | ||||
| 	dbDir, err := ioutil.TempDir("", "tsdb-ready") | ||||
| 	assert.NoError(t, err) | ||||
| 	defer func() { assert.NoError(t, os.RemoveAll(dbDir)) }() | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { require.NoError(t, os.RemoveAll(dbDir)) }() | ||||
| 
 | ||||
| 	db, err := tsdb.Open(dbDir, nil, nil, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	opts := &Options{ | ||||
| 		ListenAddress:  ":9090", | ||||
|  | @ -157,8 +157,8 @@ func TestReadyAndHealthy(t *testing.T) { | |||
| 	time.Sleep(5 * time.Second) | ||||
| 
 | ||||
| 	resp, err := http.Get("http://localhost:9090/-/healthy") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	for _, u := range []string{ | ||||
|  | @ -173,19 +173,19 @@ func TestReadyAndHealthy(t *testing.T) { | |||
| 		"http://localhost:9090/config", | ||||
| 	} { | ||||
| 		resp, err = http.Get(u) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 		cleanupTestResponse(t, resp) | ||||
| 	} | ||||
| 
 | ||||
| 	resp, err = http.Post("http://localhost:9090/api/v1/admin/tsdb/snapshot", "", strings.NewReader("")) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	resp, err = http.Post("http://localhost:9090/api/v1/admin/tsdb/delete_series", "", strings.NewReader("{}")) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	// Set to ready.
 | ||||
|  | @ -204,31 +204,31 @@ func TestReadyAndHealthy(t *testing.T) { | |||
| 		"http://localhost:9090/config", | ||||
| 	} { | ||||
| 		resp, err = http.Get(u) | ||||
| 		assert.NoError(t, err) | ||||
| 		assert.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 		require.NoError(t, err) | ||||
| 		require.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 		cleanupTestResponse(t, resp) | ||||
| 	} | ||||
| 
 | ||||
| 	resp, err = http.Post("http://localhost:9090/api/v1/admin/tsdb/snapshot", "", strings.NewReader("")) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	cleanupSnapshot(t, dbDir, resp) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	resp, err = http.Post("http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]=up", "", nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusNoContent, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusNoContent, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| } | ||||
| 
 | ||||
| func TestRoutePrefix(t *testing.T) { | ||||
| 	t.Parallel() | ||||
| 	dbDir, err := ioutil.TempDir("", "tsdb-ready") | ||||
| 	assert.NoError(t, err) | ||||
| 	defer func() { assert.NoError(t, os.RemoveAll(dbDir)) }() | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { require.NoError(t, os.RemoveAll(dbDir)) }() | ||||
| 
 | ||||
| 	db, err := tsdb.Open(dbDir, nil, nil, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	opts := &Options{ | ||||
| 		ListenAddress:  ":9091", | ||||
|  | @ -267,57 +267,57 @@ func TestRoutePrefix(t *testing.T) { | |||
| 	time.Sleep(5 * time.Second) | ||||
| 
 | ||||
| 	resp, err := http.Get("http://localhost:9091" + opts.RoutePrefix + "/-/healthy") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	resp, err = http.Get("http://localhost:9091" + opts.RoutePrefix + "/-/ready") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	resp, err = http.Get("http://localhost:9091" + opts.RoutePrefix + "/version") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	resp, err = http.Post("http://localhost:9091"+opts.RoutePrefix+"/api/v1/admin/tsdb/snapshot", "", strings.NewReader("")) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	resp, err = http.Post("http://localhost:9091"+opts.RoutePrefix+"/api/v1/admin/tsdb/delete_series", "", strings.NewReader("{}")) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	// Set to ready.
 | ||||
| 	webHandler.Ready() | ||||
| 
 | ||||
| 	resp, err = http.Get("http://localhost:9091" + opts.RoutePrefix + "/-/healthy") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	resp, err = http.Get("http://localhost:9091" + opts.RoutePrefix + "/-/ready") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	resp, err = http.Get("http://localhost:9091" + opts.RoutePrefix + "/version") | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	resp, err = http.Post("http://localhost:9091"+opts.RoutePrefix+"/api/v1/admin/tsdb/snapshot", "", strings.NewReader("")) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusOK, resp.StatusCode) | ||||
| 	cleanupSnapshot(t, dbDir, resp) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| 
 | ||||
| 	resp, err = http.Post("http://localhost:9091"+opts.RoutePrefix+"/api/v1/admin/tsdb/delete_series?match[]=up", "", nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, http.StatusNoContent, resp.StatusCode) | ||||
| 	require.NoError(t, err) | ||||
| 	require.Equal(t, http.StatusNoContent, resp.StatusCode) | ||||
| 	cleanupTestResponse(t, resp) | ||||
| } | ||||
| 
 | ||||
|  | @ -350,11 +350,11 @@ func TestDebugHandler(t *testing.T) { | |||
| 
 | ||||
| 		req, err := http.NewRequest("GET", tc.url, nil) | ||||
| 
 | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		handler.router.ServeHTTP(w, req) | ||||
| 
 | ||||
| 		assert.Equal(t, tc.code, w.Code) | ||||
| 		require.Equal(t, tc.code, w.Code) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -373,33 +373,33 @@ func TestHTTPMetrics(t *testing.T) { | |||
| 		w := httptest.NewRecorder() | ||||
| 
 | ||||
| 		req, err := http.NewRequest("GET", "/-/ready", nil) | ||||
| 		assert.NoError(t, err) | ||||
| 		require.NoError(t, err) | ||||
| 
 | ||||
| 		handler.router.ServeHTTP(w, req) | ||||
| 		return w.Code | ||||
| 	} | ||||
| 
 | ||||
| 	code := getReady() | ||||
| 	assert.Equal(t, http.StatusServiceUnavailable, code) | ||||
| 	require.Equal(t, http.StatusServiceUnavailable, code) | ||||
| 	counter := handler.metrics.requestCounter | ||||
| 	assert.Equal(t, 1, int(prom_testutil.ToFloat64(counter.WithLabelValues("/-/ready", strconv.Itoa(http.StatusServiceUnavailable))))) | ||||
| 	require.Equal(t, 1, int(prom_testutil.ToFloat64(counter.WithLabelValues("/-/ready", strconv.Itoa(http.StatusServiceUnavailable))))) | ||||
| 
 | ||||
| 	handler.Ready() | ||||
| 	for range [2]int{} { | ||||
| 		code = getReady() | ||||
| 		assert.Equal(t, http.StatusOK, code) | ||||
| 		require.Equal(t, http.StatusOK, code) | ||||
| 	} | ||||
| 	assert.Equal(t, 2, int(prom_testutil.ToFloat64(counter.WithLabelValues("/-/ready", strconv.Itoa(http.StatusOK))))) | ||||
| 	assert.Equal(t, 1, int(prom_testutil.ToFloat64(counter.WithLabelValues("/-/ready", strconv.Itoa(http.StatusServiceUnavailable))))) | ||||
| 	require.Equal(t, 2, int(prom_testutil.ToFloat64(counter.WithLabelValues("/-/ready", strconv.Itoa(http.StatusOK))))) | ||||
| 	require.Equal(t, 1, int(prom_testutil.ToFloat64(counter.WithLabelValues("/-/ready", strconv.Itoa(http.StatusServiceUnavailable))))) | ||||
| } | ||||
| 
 | ||||
| func TestShutdownWithStaleConnection(t *testing.T) { | ||||
| 	dbDir, err := ioutil.TempDir("", "tsdb-ready") | ||||
| 	assert.NoError(t, err) | ||||
| 	defer func() { assert.NoError(t, os.RemoveAll(dbDir)) }() | ||||
| 	require.NoError(t, err) | ||||
| 	defer func() { require.NoError(t, os.RemoveAll(dbDir)) }() | ||||
| 
 | ||||
| 	db, err := tsdb.Open(dbDir, nil, nil, nil) | ||||
| 	assert.NoError(t, err) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	timeout := 10 * time.Second | ||||
| 
 | ||||
|  | @ -450,8 +450,8 @@ func TestShutdownWithStaleConnection(t *testing.T) { | |||
| 	// Open a socket, and don't use it. This connection should then be closed
 | ||||
| 	// after the ReadTimeout.
 | ||||
| 	c, err := net.Dial("tcp", "localhost:9090") | ||||
| 	assert.NoError(t, err) | ||||
| 	t.Cleanup(func() { assert.NoError(t, c.Close()) }) | ||||
| 	require.NoError(t, err) | ||||
| 	t.Cleanup(func() { require.NoError(t, c.Close()) }) | ||||
| 
 | ||||
| 	// Stop the web handler.
 | ||||
| 	cancel() | ||||
|  | @ -465,8 +465,8 @@ func TestShutdownWithStaleConnection(t *testing.T) { | |||
| 
 | ||||
| func cleanupTestResponse(t *testing.T, resp *http.Response) { | ||||
| 	_, err := io.Copy(ioutil.Discard, resp.Body) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, resp.Body.Close()) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, resp.Body.Close()) | ||||
| } | ||||
| 
 | ||||
| func cleanupSnapshot(t *testing.T, dbDir string, resp *http.Response) { | ||||
|  | @ -476,9 +476,9 @@ func cleanupSnapshot(t *testing.T, dbDir string, resp *http.Response) { | |||
| 		} `json:"data"` | ||||
| 	}{} | ||||
| 	b, err := ioutil.ReadAll(resp.Body) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.NoError(t, json.Unmarshal(b, snapshot)) | ||||
| 	assert.NotZero(t, snapshot.Data.Name, "snapshot directory not returned") | ||||
| 	assert.NoError(t, os.Remove(filepath.Join(dbDir, "snapshots", snapshot.Data.Name))) | ||||
| 	assert.NoError(t, os.Remove(filepath.Join(dbDir, "snapshots"))) | ||||
| 	require.NoError(t, err) | ||||
| 	require.NoError(t, json.Unmarshal(b, snapshot)) | ||||
| 	require.NotZero(t, snapshot.Data.Name, "snapshot directory not returned") | ||||
| 	require.NoError(t, os.Remove(filepath.Join(dbDir, "snapshots", snapshot.Data.Name))) | ||||
| 	require.NoError(t, os.Remove(filepath.Join(dbDir, "snapshots"))) | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue