Ensure tests verify request params (#1047)
* Ensure tests verify request params Signed-off-by: Joseph Woodward <joseph.woodward@xeuse.com> * Fix error message Signed-off-by: Joseph Woodward <joseph.woodward@xeuse.com> * gofumpt-ed with extra. Signed-off-by: bwplotka <bwplotka@gmail.com> Co-authored-by: bwplotka <bwplotka@gmail.com>
This commit is contained in:
parent
807b1ee73c
commit
44ce5e1ee5
|
@ -64,7 +64,7 @@ func (c *apiTestClient) URL(ep string, args map[string]string) *url.URL {
|
||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *apiTestClient) Do(ctx context.Context, req *http.Request) (*http.Response, []byte, Warnings, error) {
|
func (c *apiTestClient) Do(_ context.Context, req *http.Request) (*http.Response, []byte, Warnings, error) {
|
||||||
test := c.curTest
|
test := c.curTest
|
||||||
|
|
||||||
if req.URL.Path != test.reqPath {
|
if req.URL.Path != test.reqPath {
|
||||||
|
@ -74,6 +74,25 @@ func (c *apiTestClient) Do(ctx context.Context, req *http.Request) (*http.Respon
|
||||||
c.Errorf("unexpected request method: want %s, got %s", test.reqMethod, req.Method)
|
c.Errorf("unexpected request method: want %s, got %s", test.reqMethod, req.Method)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var vals url.Values
|
||||||
|
switch test.reqMethod {
|
||||||
|
case http.MethodGet:
|
||||||
|
if req.URL.RawQuery != "" {
|
||||||
|
vals = req.URL.Query()
|
||||||
|
}
|
||||||
|
case http.MethodPost:
|
||||||
|
if req.Body != nil {
|
||||||
|
reqBody, _ := io.ReadAll(req.Body)
|
||||||
|
vals, _ = url.ParseQuery(string(reqBody))
|
||||||
|
} else if req.URL.RawQuery != "" {
|
||||||
|
vals = req.URL.Query()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(vals, test.reqParam) {
|
||||||
|
c.Fatalf("unexpected request parameters: want %s, got %s", vals, test.reqParam)
|
||||||
|
}
|
||||||
|
|
||||||
b, err := json.Marshal(test.inRes)
|
b, err := json.Marshal(test.inRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Fatal(err)
|
c.Fatal(err)
|
||||||
|
@ -156,15 +175,15 @@ func TestAPIs(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
doLabelNames := func(matches []string) func() (interface{}, Warnings, error) {
|
doLabelNames := func(matches []string, startTime, endTime time.Time) func() (interface{}, Warnings, error) {
|
||||||
return func() (interface{}, Warnings, error) {
|
return func() (interface{}, Warnings, error) {
|
||||||
return promAPI.LabelNames(context.Background(), matches, time.Now().Add(-100*time.Hour), time.Now())
|
return promAPI.LabelNames(context.Background(), matches, startTime, endTime)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
doLabelValues := func(matches []string, label string) func() (interface{}, Warnings, error) {
|
doLabelValues := func(matches []string, label string, startTime, endTime time.Time) func() (interface{}, Warnings, error) {
|
||||||
return func() (interface{}, Warnings, error) {
|
return func() (interface{}, Warnings, error) {
|
||||||
return promAPI.LabelValues(context.Background(), label, matches, time.Now().Add(-100*time.Hour), time.Now())
|
return promAPI.LabelValues(context.Background(), label, matches, startTime, endTime)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,7 +276,7 @@ func TestAPIs(t *testing.T) {
|
||||||
reqPath: "/api/v1/query",
|
reqPath: "/api/v1/query",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"query": []string{"2"},
|
"query": []string{"2"},
|
||||||
"time": []string{testTime.Format(time.RFC3339Nano)},
|
"time": []string{formatTime(testTime)},
|
||||||
"timeout": []string{(5 * time.Second).String()},
|
"timeout": []string{(5 * time.Second).String()},
|
||||||
},
|
},
|
||||||
res: &model.Scalar{
|
res: &model.Scalar{
|
||||||
|
@ -273,7 +292,7 @@ func TestAPIs(t *testing.T) {
|
||||||
reqPath: "/api/v1/query",
|
reqPath: "/api/v1/query",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"query": []string{"2"},
|
"query": []string{"2"},
|
||||||
"time": []string{testTime.Format(time.RFC3339Nano)},
|
"time": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
err: fmt.Errorf("some error"),
|
err: fmt.Errorf("some error"),
|
||||||
},
|
},
|
||||||
|
@ -291,7 +310,7 @@ func TestAPIs(t *testing.T) {
|
||||||
reqPath: "/api/v1/query",
|
reqPath: "/api/v1/query",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"query": []string{"2"},
|
"query": []string{"2"},
|
||||||
"time": []string{testTime.Format(time.RFC3339Nano)},
|
"time": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
err: errors.New("server_error: server error: 500"),
|
err: errors.New("server_error: server error: 500"),
|
||||||
},
|
},
|
||||||
|
@ -309,7 +328,7 @@ func TestAPIs(t *testing.T) {
|
||||||
reqPath: "/api/v1/query",
|
reqPath: "/api/v1/query",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"query": []string{"2"},
|
"query": []string{"2"},
|
||||||
"time": []string{testTime.Format(time.RFC3339Nano)},
|
"time": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
err: errors.New("client_error: client error: 404"),
|
err: errors.New("client_error: client error: 404"),
|
||||||
},
|
},
|
||||||
|
@ -329,7 +348,7 @@ func TestAPIs(t *testing.T) {
|
||||||
reqPath: "/api/v1/query",
|
reqPath: "/api/v1/query",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"query": []string{"2"},
|
"query": []string{"2"},
|
||||||
"time": []string{testTime.Format(time.RFC3339Nano)},
|
"time": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
res: &model.Scalar{
|
res: &model.Scalar{
|
||||||
Value: 2,
|
Value: 2,
|
||||||
|
@ -353,7 +372,7 @@ func TestAPIs(t *testing.T) {
|
||||||
reqPath: "/api/v1/query",
|
reqPath: "/api/v1/query",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"query": []string{"2"},
|
"query": []string{"2"},
|
||||||
"time": []string{testTime.Format(time.RFC3339Nano)},
|
"time": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
err: errors.New("client_error: client error: 404"),
|
err: errors.New("client_error: client error: 404"),
|
||||||
warnings: []string{"warning"},
|
warnings: []string{"warning"},
|
||||||
|
@ -363,7 +382,7 @@ func TestAPIs(t *testing.T) {
|
||||||
do: doQueryRange("2", Range{
|
do: doQueryRange("2", Range{
|
||||||
Start: testTime.Add(-time.Minute),
|
Start: testTime.Add(-time.Minute),
|
||||||
End: testTime,
|
End: testTime,
|
||||||
Step: time.Minute,
|
Step: 1 * time.Minute,
|
||||||
}, WithTimeout(5*time.Second)),
|
}, WithTimeout(5*time.Second)),
|
||||||
inErr: fmt.Errorf("some error"),
|
inErr: fmt.Errorf("some error"),
|
||||||
|
|
||||||
|
@ -371,96 +390,136 @@ func TestAPIs(t *testing.T) {
|
||||||
reqPath: "/api/v1/query_range",
|
reqPath: "/api/v1/query_range",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"query": []string{"2"},
|
"query": []string{"2"},
|
||||||
"start": []string{testTime.Add(-time.Minute).Format(time.RFC3339Nano)},
|
"start": []string{formatTime(testTime.Add(-time.Minute))},
|
||||||
"end": []string{testTime.Format(time.RFC3339Nano)},
|
"end": []string{formatTime(testTime)},
|
||||||
"step": []string{time.Minute.String()},
|
"step": []string{"60"},
|
||||||
"timeout": []string{(5 * time.Second).String()},
|
"timeout": []string{(5 * time.Second).String()},
|
||||||
},
|
},
|
||||||
err: fmt.Errorf("some error"),
|
err: fmt.Errorf("some error"),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
do: doLabelNames(nil),
|
do: doLabelNames(nil, testTime.Add(-100*time.Hour), testTime),
|
||||||
inRes: []string{"val1", "val2"},
|
inRes: []string{"val1", "val2"},
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/labels",
|
reqPath: "/api/v1/labels",
|
||||||
res: []string{"val1", "val2"},
|
reqParam: url.Values{
|
||||||
|
"start": []string{formatTime(testTime.Add(-100 * time.Hour))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
res: []string{"val1", "val2"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
do: doLabelNames(nil),
|
do: doLabelNames(nil, testTime.Add(-100*time.Hour), testTime),
|
||||||
inRes: []string{"val1", "val2"},
|
inRes: []string{"val1", "val2"},
|
||||||
inWarnings: []string{"a"},
|
inWarnings: []string{"a"},
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/labels",
|
reqPath: "/api/v1/labels",
|
||||||
res: []string{"val1", "val2"},
|
reqParam: url.Values{
|
||||||
warnings: []string{"a"},
|
"start": []string{formatTime(testTime.Add(-100 * time.Hour))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
res: []string{"val1", "val2"},
|
||||||
|
warnings: []string{"a"},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
do: doLabelNames(nil),
|
do: doLabelNames(nil, testTime.Add(-100*time.Hour), testTime),
|
||||||
inErr: fmt.Errorf("some error"),
|
inErr: fmt.Errorf("some error"),
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/labels",
|
reqPath: "/api/v1/labels",
|
||||||
err: fmt.Errorf("some error"),
|
reqParam: url.Values{
|
||||||
|
"start": []string{formatTime(testTime.Add(-100 * time.Hour))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
err: fmt.Errorf("some error"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
do: doLabelNames(nil),
|
do: doLabelNames(nil, testTime.Add(-100*time.Hour), testTime),
|
||||||
inErr: fmt.Errorf("some error"),
|
inErr: fmt.Errorf("some error"),
|
||||||
inWarnings: []string{"a"},
|
inWarnings: []string{"a"},
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/labels",
|
reqPath: "/api/v1/labels",
|
||||||
err: fmt.Errorf("some error"),
|
reqParam: url.Values{
|
||||||
warnings: []string{"a"},
|
"start": []string{formatTime(testTime.Add(-100 * time.Hour))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
err: fmt.Errorf("some error"),
|
||||||
|
warnings: []string{"a"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
do: doLabelNames([]string{"up"}),
|
do: doLabelNames([]string{"up"}, testTime.Add(-100*time.Hour), testTime),
|
||||||
inRes: []string{"val1", "val2"},
|
inRes: []string{"val1", "val2"},
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/labels",
|
reqPath: "/api/v1/labels",
|
||||||
reqParam: url.Values{"match[]": {"up"}},
|
reqParam: url.Values{
|
||||||
res: []string{"val1", "val2"},
|
"match[]": {"up"},
|
||||||
|
"start": []string{formatTime(testTime.Add(-100 * time.Hour))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
res: []string{"val1", "val2"},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
do: doLabelValues(nil, "mylabel"),
|
do: doLabelValues(nil, "mylabel", testTime.Add(-100*time.Hour), testTime),
|
||||||
inRes: []string{"val1", "val2"},
|
inRes: []string{"val1", "val2"},
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/label/mylabel/values",
|
reqPath: "/api/v1/label/mylabel/values",
|
||||||
res: model.LabelValues{"val1", "val2"},
|
reqParam: url.Values{
|
||||||
|
"start": []string{formatTime(testTime.Add(-100 * time.Hour))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
res: model.LabelValues{"val1", "val2"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
do: doLabelValues(nil, "mylabel"),
|
do: doLabelValues(nil, "mylabel", testTime.Add(-100*time.Hour), testTime),
|
||||||
inRes: []string{"val1", "val2"},
|
inRes: []string{"val1", "val2"},
|
||||||
inWarnings: []string{"a"},
|
inWarnings: []string{"a"},
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/label/mylabel/values",
|
reqPath: "/api/v1/label/mylabel/values",
|
||||||
res: model.LabelValues{"val1", "val2"},
|
reqParam: url.Values{
|
||||||
warnings: []string{"a"},
|
"start": []string{formatTime(testTime.Add(-100 * time.Hour))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
res: model.LabelValues{"val1", "val2"},
|
||||||
|
warnings: []string{"a"},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
do: doLabelValues(nil, "mylabel"),
|
do: doLabelValues(nil, "mylabel", testTime.Add(-100*time.Hour), testTime),
|
||||||
inErr: fmt.Errorf("some error"),
|
inErr: fmt.Errorf("some error"),
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/label/mylabel/values",
|
reqPath: "/api/v1/label/mylabel/values",
|
||||||
err: fmt.Errorf("some error"),
|
reqParam: url.Values{
|
||||||
|
"start": []string{formatTime(testTime.Add(-100 * time.Hour))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
err: fmt.Errorf("some error"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
do: doLabelValues(nil, "mylabel"),
|
do: doLabelValues(nil, "mylabel", testTime.Add(-100*time.Hour), testTime),
|
||||||
inErr: fmt.Errorf("some error"),
|
inErr: fmt.Errorf("some error"),
|
||||||
inWarnings: []string{"a"},
|
inWarnings: []string{"a"},
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/label/mylabel/values",
|
reqPath: "/api/v1/label/mylabel/values",
|
||||||
err: fmt.Errorf("some error"),
|
reqParam: url.Values{
|
||||||
warnings: []string{"a"},
|
"start": []string{formatTime(testTime.Add(-100 * time.Hour))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
err: fmt.Errorf("some error"),
|
||||||
|
warnings: []string{"a"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
do: doLabelValues([]string{"up"}, "mylabel"),
|
do: doLabelValues([]string{"up"}, "mylabel", testTime.Add(-100*time.Hour), testTime),
|
||||||
inRes: []string{"val1", "val2"},
|
inRes: []string{"val1", "val2"},
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/label/mylabel/values",
|
reqPath: "/api/v1/label/mylabel/values",
|
||||||
reqParam: url.Values{"match[]": {"up"}},
|
reqParam: url.Values{
|
||||||
res: model.LabelValues{"val1", "val2"},
|
"match[]": {"up"},
|
||||||
|
"start": []string{formatTime(testTime.Add(-100 * time.Hour))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
res: model.LabelValues{"val1", "val2"},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -475,9 +534,9 @@ func TestAPIs(t *testing.T) {
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/series",
|
reqPath: "/api/v1/series",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"match": []string{"up"},
|
"match[]": []string{"up"},
|
||||||
"start": []string{testTime.Add(-time.Minute).Format(time.RFC3339Nano)},
|
"start": []string{formatTime(testTime.Add(-time.Minute))},
|
||||||
"end": []string{testTime.Format(time.RFC3339Nano)},
|
"end": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
res: []model.LabelSet{
|
res: []model.LabelSet{
|
||||||
{
|
{
|
||||||
|
@ -501,9 +560,9 @@ func TestAPIs(t *testing.T) {
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/series",
|
reqPath: "/api/v1/series",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"match": []string{"up"},
|
"match[]": []string{"up"},
|
||||||
"start": []string{testTime.Add(-time.Minute).Format(time.RFC3339Nano)},
|
"start": []string{formatTime(testTime.Add(-time.Minute))},
|
||||||
"end": []string{testTime.Format(time.RFC3339Nano)},
|
"end": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
res: []model.LabelSet{
|
res: []model.LabelSet{
|
||||||
{
|
{
|
||||||
|
@ -521,9 +580,9 @@ func TestAPIs(t *testing.T) {
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/series",
|
reqPath: "/api/v1/series",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"match": []string{"up"},
|
"match[]": []string{"up"},
|
||||||
"start": []string{testTime.Add(-time.Minute).Format(time.RFC3339Nano)},
|
"start": []string{formatTime(testTime.Add(-time.Minute))},
|
||||||
"end": []string{testTime.Format(time.RFC3339Nano)},
|
"end": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
err: fmt.Errorf("some error"),
|
err: fmt.Errorf("some error"),
|
||||||
},
|
},
|
||||||
|
@ -535,9 +594,9 @@ func TestAPIs(t *testing.T) {
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/series",
|
reqPath: "/api/v1/series",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"match": []string{"up"},
|
"match[]": []string{"up"},
|
||||||
"start": []string{testTime.Add(-time.Minute).Format(time.RFC3339Nano)},
|
"start": []string{formatTime(testTime.Add(-time.Minute))},
|
||||||
"end": []string{testTime.Format(time.RFC3339Nano)},
|
"end": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
err: fmt.Errorf("some error"),
|
err: fmt.Errorf("some error"),
|
||||||
warnings: []string{"a"},
|
warnings: []string{"a"},
|
||||||
|
@ -563,7 +622,10 @@ func TestAPIs(t *testing.T) {
|
||||||
inErr: fmt.Errorf("some error"),
|
inErr: fmt.Errorf("some error"),
|
||||||
reqMethod: "POST",
|
reqMethod: "POST",
|
||||||
reqPath: "/api/v1/admin/tsdb/snapshot",
|
reqPath: "/api/v1/admin/tsdb/snapshot",
|
||||||
err: fmt.Errorf("some error"),
|
reqParam: url.Values{
|
||||||
|
"skip_head": []string{"true"},
|
||||||
|
},
|
||||||
|
err: fmt.Errorf("some error"),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -592,9 +654,9 @@ func TestAPIs(t *testing.T) {
|
||||||
reqMethod: "POST",
|
reqMethod: "POST",
|
||||||
reqPath: "/api/v1/admin/tsdb/delete_series",
|
reqPath: "/api/v1/admin/tsdb/delete_series",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"match": []string{"up"},
|
"match[]": []string{"up"},
|
||||||
"start": []string{testTime.Add(-time.Minute).Format(time.RFC3339Nano)},
|
"start": []string{formatTime(testTime.Add(-time.Minute))},
|
||||||
"end": []string{testTime.Format(time.RFC3339Nano)},
|
"end": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -604,9 +666,9 @@ func TestAPIs(t *testing.T) {
|
||||||
reqMethod: "POST",
|
reqMethod: "POST",
|
||||||
reqPath: "/api/v1/admin/tsdb/delete_series",
|
reqPath: "/api/v1/admin/tsdb/delete_series",
|
||||||
reqParam: url.Values{
|
reqParam: url.Values{
|
||||||
"match": []string{"up"},
|
"match[]": []string{"up"},
|
||||||
"start": []string{testTime.Add(-time.Minute).Format(time.RFC3339Nano)},
|
"start": []string{formatTime(testTime.Add(-time.Minute))},
|
||||||
"end": []string{testTime.Format(time.RFC3339Nano)},
|
"end": []string{formatTime(testTime)},
|
||||||
},
|
},
|
||||||
err: fmt.Errorf("some error"),
|
err: fmt.Errorf("some error"),
|
||||||
},
|
},
|
||||||
|
@ -1246,14 +1308,24 @@ func TestAPIs(t *testing.T) {
|
||||||
do: doQueryExemplars("tns_request_duration_seconds_bucket", testTime.Add(-1*time.Minute), testTime),
|
do: doQueryExemplars("tns_request_duration_seconds_bucket", testTime.Add(-1*time.Minute), testTime),
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/query_exemplars",
|
reqPath: "/api/v1/query_exemplars",
|
||||||
inErr: fmt.Errorf("some error"),
|
reqParam: url.Values{
|
||||||
err: fmt.Errorf("some error"),
|
"query": []string{"tns_request_duration_seconds_bucket"},
|
||||||
|
"start": []string{formatTime(testTime.Add(-1 * time.Minute))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
|
inErr: fmt.Errorf("some error"),
|
||||||
|
err: fmt.Errorf("some error"),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
do: doQueryExemplars("tns_request_duration_seconds_bucket", testTime.Add(-1*time.Minute), testTime),
|
do: doQueryExemplars("tns_request_duration_seconds_bucket", testTime.Add(-1*time.Minute), testTime),
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
reqPath: "/api/v1/query_exemplars",
|
reqPath: "/api/v1/query_exemplars",
|
||||||
|
reqParam: url.Values{
|
||||||
|
"query": []string{"tns_request_duration_seconds_bucket"},
|
||||||
|
"start": []string{formatTime(testTime.Add(-1 * time.Minute))},
|
||||||
|
"end": []string{formatTime(testTime)},
|
||||||
|
},
|
||||||
inRes: []interface{}{
|
inRes: []interface{}{
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
"seriesLabels": map[string]interface{}{
|
"seriesLabels": map[string]interface{}{
|
||||||
|
|
Loading…
Reference in New Issue