web/api: fix min/max timestamps to valid range

This commit is contained in:
Fabian Reinartz 2017-01-16 14:09:59 +01:00
parent c691895a0f
commit 157e698958
3 changed files with 17 additions and 4 deletions

View file

@ -18,6 +18,7 @@ import (
"testing" "testing"
"github.com/prometheus/common/model" "github.com/prometheus/common/model"
"github.com/stretchr/testify/require"
"golang.org/x/net/context" "golang.org/x/net/context"
"github.com/prometheus/prometheus/pkg/labels" "github.com/prometheus/prometheus/pkg/labels"
@ -209,8 +210,13 @@ func TestTemplateExpansion(t *testing.T) {
t.Fatalf("get appender: %s", err) t.Fatalf("get appender: %s", err)
} }
app.Add(labels.FromStrings(labels.MetricName, "metric", "instance", "a"), 0, 11) aref, err := app.SetSeries(labels.FromStrings(labels.MetricName, "metric", "instance", "a"))
app.Add(labels.FromStrings(labels.MetricName, "metric", "instance", "b"), 0, 21) require.NoError(t, err)
bref, err := app.SetSeries(labels.FromStrings(labels.MetricName, "metric", "instance", "b"))
require.NoError(t, err)
app.Add(aref, 0, 11)
app.Add(bref, 0, 21)
if err := app.Commit(); err != nil { if err := app.Commit(); err != nil {
t.Fatalf("commit samples: %s", err) t.Fatalf("commit samples: %s", err)

View file

@ -258,6 +258,11 @@ func (api *API) labelValues(r *http.Request) (interface{}, *apiError) {
return vals, nil return vals, nil
} }
var (
minTime = time.Unix(math.MinInt64/1000+62135596801, 0)
maxTime = time.Unix(math.MaxInt64/1000-62135596801, 999999999)
)
func (api *API) series(r *http.Request) (interface{}, *apiError) { func (api *API) series(r *http.Request) (interface{}, *apiError) {
r.ParseForm() r.ParseForm()
if len(r.Form["match[]"]) == 0 { if len(r.Form["match[]"]) == 0 {
@ -272,7 +277,7 @@ func (api *API) series(r *http.Request) (interface{}, *apiError) {
return nil, &apiError{errorBadData, err} return nil, &apiError{errorBadData, err}
} }
} else { } else {
start = time.Unix(math.MinInt64, 0) start = minTime
} }
var end time.Time var end time.Time
@ -283,8 +288,9 @@ func (api *API) series(r *http.Request) (interface{}, *apiError) {
return nil, &apiError{errorBadData, err} return nil, &apiError{errorBadData, err}
} }
} else { } else {
end = time.Unix(math.MaxInt64, 0) end = maxTime
} }
fmt.Println("q range", timestamp.FromTime(start), timestamp.FromTime(end), r.FormValue("start"), r.FormValue("end"))
var matcherSets [][]*labels.Matcher var matcherSets [][]*labels.Matcher
for _, s := range r.Form["match[]"] { for _, s := range r.Form["match[]"] {

View file

@ -429,6 +429,7 @@ func TestEndpoints(t *testing.T) {
api.context = func(r *http.Request) context.Context { api.context = func(r *http.Request) context.Context {
return ctx return ctx
} }
t.Logf("run query %q", test.query.Encode())
req, err := http.NewRequest("ANY", fmt.Sprintf("http://example.com?%s", test.query.Encode()), nil) req, err := http.NewRequest("ANY", fmt.Sprintf("http://example.com?%s", test.query.Encode()), nil)
if err != nil { if err != nil {