43 lines
1.3 KiB
Go
43 lines
1.3 KiB
Go
package loki
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestLabelsValuesAndQueryRange(t *testing.T) {
|
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
switch r.URL.Path {
|
|
case "/loki/api/v1/labels":
|
|
_, _ = w.Write([]byte(`{"status":"success","data":["service","container"]}`))
|
|
case "/loki/api/v1/label/service/values":
|
|
_, _ = w.Write([]byte(`{"status":"success","data":["api"]}`))
|
|
case "/loki/api/v1/query_range":
|
|
if !strings.Contains(r.URL.Query().Get("query"), "api") {
|
|
t.Fatalf("query not passed through: %s", r.URL.RawQuery)
|
|
}
|
|
_, _ = w.Write([]byte(`{"status":"success","data":{"result":[{"stream":{"service":"api"},"values":[["1700000000000000000","error token=secret"]]}]}}`))
|
|
default:
|
|
http.NotFound(w, r)
|
|
}
|
|
}))
|
|
defer ts.Close()
|
|
|
|
client := New(ts.URL, "", "", "")
|
|
labels, err := client.Labels(t.Context())
|
|
if err != nil || len(labels) != 2 {
|
|
t.Fatalf("labels=%v err=%v", labels, err)
|
|
}
|
|
values, err := client.LabelValues(t.Context(), "service")
|
|
if err != nil || values[0] != "api" {
|
|
t.Fatalf("values=%v err=%v", values, err)
|
|
}
|
|
result, err := client.QueryRange(t.Context(), `{service="api"}`, time.Minute, 10)
|
|
if err != nil || result.Count != 1 {
|
|
t.Fatalf("result=%#v err=%v", result, err)
|
|
}
|
|
}
|