diff --git a/pkg/backends/alb/response_merge_test.go b/pkg/backends/alb/response_merge_test.go index 629de7b82..2f27ae28a 100644 --- a/pkg/backends/alb/response_merge_test.go +++ b/pkg/backends/alb/response_merge_test.go @@ -24,11 +24,14 @@ import ( "github.com/trickstercache/trickster/v2/pkg/backends/alb/pool" "github.com/trickstercache/trickster/v2/pkg/backends/healthcheck" + "github.com/trickstercache/trickster/v2/pkg/observability/logging" "github.com/trickstercache/trickster/v2/pkg/proxy/request" "github.com/trickstercache/trickster/v2/pkg/proxy/response/merge" tu "github.com/trickstercache/trickster/v2/pkg/testutil" ) +var testLogger = logging.NoopLogger() + func testMergeFunc(w http.ResponseWriter, r *http.Request, rgs merge.ResponseGates) { } @@ -36,7 +39,7 @@ func testMergeFunc(w http.ResponseWriter, r *http.Request, rgs merge.ResponseGat func TestHandleResponseMerge(t *testing.T) { r, _ := http.NewRequest("GET", "http://trickstercache.org/", nil) - rsc := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc.ResponseMergeFunc = testMergeFunc rsc.IsMergeMember = true r = request.SetResources(r, rsc) diff --git a/pkg/backends/healthcheck/healthcheck_test.go b/pkg/backends/healthcheck/healthcheck_test.go index 4fa19d239..73b58a6c8 100644 --- a/pkg/backends/healthcheck/healthcheck_test.go +++ b/pkg/backends/healthcheck/healthcheck_test.go @@ -22,8 +22,11 @@ import ( "testing" ho "github.com/trickstercache/trickster/v2/pkg/backends/healthcheck/options" + "github.com/trickstercache/trickster/v2/pkg/observability/logging" ) +var testLogger = logging.NoopLogger() + func TestNew(t *testing.T) { hc := New() @@ -58,23 +61,23 @@ func TestRegister(t *testing.T) { hc := New().(*healthChecker) o := ho.New() o.IntervalMS = 500 - _, err := hc.Register("test", "test", o, http.DefaultClient, nil) + _, err := hc.Register("test", "test", o, http.DefaultClient, testLogger) if err != nil { t.Error(err) } target := hc.targets["test"] target.Start() target.Stop() - _, err = hc.Register("test", "test", o, http.DefaultClient, nil) + _, err = hc.Register("test", "test", o, http.DefaultClient, testLogger) if err != nil { t.Error(err) } o.Body = "test-body" - _, err = hc.Register("test", "test", o, http.DefaultClient, nil) + _, err = hc.Register("test", "test", o, http.DefaultClient, testLogger) if err != nil { t.Error(err) } - _, err = hc.Register("test", "test", nil, http.DefaultClient, nil) + _, err = hc.Register("test", "test", nil, http.DefaultClient, testLogger) if err != ho.ErrNoOptionsProvided { t.Errorf("expected %v got %v", ho.ErrNoOptionsProvided, err) } @@ -84,7 +87,7 @@ func TestUnregister(t *testing.T) { hc := New().(*healthChecker) o := ho.New() o.IntervalMS = 500 - _, err := hc.Register("test", "test", o, http.DefaultClient, nil) + _, err := hc.Register("test", "test", o, http.DefaultClient, testLogger) if err != nil { t.Error(err) } @@ -99,7 +102,7 @@ func TestStatus(t *testing.T) { hc := New().(*healthChecker) o := ho.New() o.IntervalMS = 500 - _, err := hc.Register("test", "test", o, http.DefaultClient, nil) + _, err := hc.Register("test", "test", o, http.DefaultClient, testLogger) if err != nil { t.Error(err) } @@ -125,7 +128,7 @@ func TestStatuses(t *testing.T) { hc := New().(*healthChecker) o := ho.New() o.IntervalMS = 500 - _, err := hc.Register("test", "test", o, http.DefaultClient, nil) + _, err := hc.Register("test", "test", o, http.DefaultClient, testLogger) if err != nil { t.Error(err) } @@ -144,7 +147,7 @@ func TestHealthCheckerProbe(t *testing.T) { ts := newTestServer(200, "OK", map[string]string{}) r, _ := http.NewRequest("GET", ts.URL+"/", nil) - _, err := hc.Register("test", "test", o, http.DefaultClient, nil) + _, err := hc.Register("test", "test", o, http.DefaultClient, testLogger) if err != nil { t.Error(err) } diff --git a/pkg/backends/healthcheck/target_test.go b/pkg/backends/healthcheck/target_test.go index 12e9cadba..dc62900e0 100644 --- a/pkg/backends/healthcheck/target_test.go +++ b/pkg/backends/healthcheck/target_test.go @@ -224,6 +224,7 @@ func TestProbe(t *testing.T) { baseRequest: r, httpClient: ts.Client(), ec: []int{200}, + logger: testLogger, } target.probe() if target.successConsecutiveCnt.Load() != 1 { diff --git a/pkg/backends/prometheus/model/alerts_test.go b/pkg/backends/prometheus/model/alerts_test.go index dcfde3878..719482565 100644 --- a/pkg/backends/prometheus/model/alerts_test.go +++ b/pkg/backends/prometheus/model/alerts_test.go @@ -24,10 +24,14 @@ import ( "strconv" "testing" + "github.com/trickstercache/trickster/v2/pkg/observability/logging" "github.com/trickstercache/trickster/v2/pkg/proxy/request" "github.com/trickstercache/trickster/v2/pkg/proxy/response/merge" ) +var testLogger = logging.NoopLogger() +var testResources = request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) + func TestCalculateHash(t *testing.T) { a := &WFAlert{ @@ -81,6 +85,11 @@ func TestMerge(t *testing.T) { } +func newTestReq() *http.Request { + r, _ := http.NewRequest(http.MethodGet, "/", nil) + return r +} + func TestMergeAndWriteAlerts(t *testing.T) { var nilRG *merge.ResponseGate @@ -91,22 +100,22 @@ func TestMergeAndWriteAlerts(t *testing.T) { expCode int }{ { - nil, + newTestReq(), nil, http.StatusBadGateway, }, { - nil, + newTestReq(), merge.ResponseGates{nilRG}, http.StatusBadGateway, }, { - nil, + newTestReq(), testResponseGates1(), http.StatusOK, }, { - nil, + newTestReq(), testResponseGates2(), http.StatusBadRequest, }, @@ -115,7 +124,7 @@ func TestMergeAndWriteAlerts(t *testing.T) { for i, test := range tests { t.Run(strconv.Itoa(i), func(t *testing.T) { w := httptest.NewRecorder() - MergeAndWriteAlerts(w, test.r, test.rgs) + MergeAndWriteAlerts(w, request.SetResources(test.r, testResources), test.rgs) if w.Code != test.expCode { t.Errorf("expected %d got %d", test.expCode, w.Code) } @@ -130,7 +139,7 @@ func testResponseGates1() merge.ResponseGates { {"state":"test","labels":{},"annotations":{},"value":"x","activeAt":"y"} ]}}`) closer1 := io.NopCloser(bytes.NewReader(b1)) - rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc1.Response = &http.Response{ Body: closer1, StatusCode: 200, @@ -144,7 +153,7 @@ func testResponseGates1() merge.ResponseGates { b2bad := []byte(`{"stat`) closer2 := io.NopCloser(bytes.NewReader(b2bad)) - rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc2.Response = &http.Response{ Body: closer2, StatusCode: 200, @@ -158,7 +167,7 @@ func testResponseGates1() merge.ResponseGates { b3 := []byte(`{"status":"success","data":{"alerts":[]}}`) closer3 := io.NopCloser(bytes.NewReader(b3)) - rsc3 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc3 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc3.Response = &http.Response{ Body: closer3, StatusCode: 200, @@ -178,7 +187,7 @@ func testResponseGates2() merge.ResponseGates { b1 := []byte(`{"status":"error","data":{"alerts":[]}}`) closer1 := io.NopCloser(bytes.NewReader(b1)) - rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc1.Response = &http.Response{ Body: closer1, StatusCode: 400, @@ -192,7 +201,7 @@ func testResponseGates2() merge.ResponseGates { b2 := []byte(`{"status":"error","data":{"alerts":[]}}`) closer2 := io.NopCloser(bytes.NewReader(b1)) - rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc2.Response = &http.Response{ Body: closer2, StatusCode: 400, diff --git a/pkg/backends/prometheus/model/labels_test.go b/pkg/backends/prometheus/model/labels_test.go index 943092d13..9a762f9f1 100644 --- a/pkg/backends/prometheus/model/labels_test.go +++ b/pkg/backends/prometheus/model/labels_test.go @@ -121,7 +121,7 @@ func testResponseGates3() merge.ResponseGates { b1 := []byte(`{"status":"success","data":["test", "trickster"]}`) closer1 := io.NopCloser(bytes.NewReader(b1)) - rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc1.Response = &http.Response{ Body: closer1, StatusCode: 200, @@ -135,7 +135,7 @@ func testResponseGates3() merge.ResponseGates { b2bad := []byte(`{"stat`) closer2 := io.NopCloser(bytes.NewReader(b2bad)) - rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc2.Response = &http.Response{ Body: closer2, StatusCode: 200, @@ -149,7 +149,7 @@ func testResponseGates3() merge.ResponseGates { b3 := []byte(`{"status":"success","data":["test2", "trickster2"]}`) closer3 := io.NopCloser(bytes.NewReader(b3)) - rsc3 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc3 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc3.Response = &http.Response{ Body: closer3, StatusCode: 200, @@ -169,7 +169,7 @@ func testResponseGates4() merge.ResponseGates { b1 := []byte(`{"status":"error"`) closer1 := io.NopCloser(bytes.NewReader(b1)) - rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc1.Response = &http.Response{ Body: closer1, StatusCode: 400, @@ -183,7 +183,7 @@ func testResponseGates4() merge.ResponseGates { b2 := []byte(`{"status":"error","data":["should", "not", "append"]`) closer2 := io.NopCloser(bytes.NewReader(b1)) - rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc2.Response = &http.Response{ Body: closer2, StatusCode: 400, diff --git a/pkg/backends/prometheus/model/series_test.go b/pkg/backends/prometheus/model/series_test.go index d7dfe5485..2d0b10525 100644 --- a/pkg/backends/prometheus/model/series_test.go +++ b/pkg/backends/prometheus/model/series_test.go @@ -177,7 +177,7 @@ func testResponseGates5() merge.ResponseGates { b1 := []byte(`{"status":"success","data":[{"__name__":"test1","instance":"i1","job":"trickster"}]}`) closer1 := io.NopCloser(bytes.NewReader(b1)) - rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc1.Response = &http.Response{ Body: closer1, StatusCode: 200, @@ -191,7 +191,7 @@ func testResponseGates5() merge.ResponseGates { b2bad := []byte(`{"stat`) closer2 := io.NopCloser(bytes.NewReader(b2bad)) - rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc2.Response = &http.Response{ Body: closer2, StatusCode: 200, @@ -205,7 +205,7 @@ func testResponseGates5() merge.ResponseGates { b3 := []byte(`{"status":"success","data":[{"__name__":"test1","instance":"i2","job":"trickster"}]}`) closer3 := io.NopCloser(bytes.NewReader(b3)) - rsc3 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc3 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc3.Response = &http.Response{ Body: closer3, StatusCode: 200, @@ -225,7 +225,7 @@ func testResponseGates6() merge.ResponseGates { b1 := []byte(`{"status":"error"`) closer1 := io.NopCloser(bytes.NewReader(b1)) - rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc1.Response = &http.Response{ Body: closer1, StatusCode: 400, @@ -239,7 +239,7 @@ func testResponseGates6() merge.ResponseGates { b2 := []byte(`{"status":"error","data":[{"__name__":"should","instance":"not","job":"append"}]}`) closer2 := io.NopCloser(bytes.NewReader(b1)) - rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc2.Response = &http.Response{ Body: closer2, StatusCode: 400, diff --git a/pkg/backends/prometheus/model/vector.go b/pkg/backends/prometheus/model/vector.go index d56c1bbac..6a794e35b 100644 --- a/pkg/backends/prometheus/model/vector.go +++ b/pkg/backends/prometheus/model/vector.go @@ -74,7 +74,7 @@ func MergeAndWriteVector(w http.ResponseWriter, r *http.Request, rgs merge.Respo ds, ok := t2.(*dataset.DataSet) if !ok { rg.Resources.Logger.Error("vector unmarshaling error", - logging.Pairs{"provider": "prometheus", "detail": err.Error()}) + logging.Pairs{"provider": "prometheus"}) continue } ts = ds diff --git a/pkg/backends/prometheus/model/vector_test.go b/pkg/backends/prometheus/model/vector_test.go index ce2e7f9a5..828796842 100644 --- a/pkg/backends/prometheus/model/vector_test.go +++ b/pkg/backends/prometheus/model/vector_test.go @@ -63,7 +63,7 @@ func testResponseGates7() merge.ResponseGates { b1 := []byte(testVector) closer1 := io.NopCloser(bytes.NewReader(b1)) - rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc1.Response = &http.Response{ Body: closer1, StatusCode: 200, @@ -78,7 +78,7 @@ func testResponseGates7() merge.ResponseGates { b2bad := []byte(`{"stat`) closer2 := io.NopCloser(bytes.NewReader(b2bad)) - rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc2.Response = &http.Response{ Body: closer2, StatusCode: 200, @@ -92,7 +92,7 @@ func testResponseGates7() merge.ResponseGates { b3 := []byte(testVector2) closer3 := io.NopCloser(bytes.NewReader(b3)) - rsc3 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc3 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc3.Response = &http.Response{ Body: closer3, StatusCode: 200, @@ -114,7 +114,7 @@ func testResponseGates8() merge.ResponseGates { b1 := []byte(`{"status":"error","data":{}`) closer1 := io.NopCloser(bytes.NewReader(b1)) - rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc1 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc1.Response = &http.Response{ Body: closer1, StatusCode: 400, @@ -128,7 +128,7 @@ func testResponseGates8() merge.ResponseGates { b2 := []byte(`{"status":"error","data":{}`) closer2 := io.NopCloser(bytes.NewReader(b1)) - rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, nil) + rsc2 := request.NewResources(nil, nil, nil, nil, nil, nil, testLogger) rsc2.Response = &http.Response{ Body: closer2, StatusCode: 400, diff --git a/pkg/backends/prometheus/prometheus_test.go b/pkg/backends/prometheus/prometheus_test.go index 775a5be9e..fd16dbad8 100644 --- a/pkg/backends/prometheus/prometheus_test.go +++ b/pkg/backends/prometheus/prometheus_test.go @@ -27,7 +27,6 @@ import ( "github.com/trickstercache/trickster/v2/pkg/backends" bo "github.com/trickstercache/trickster/v2/pkg/backends/options" - "github.com/trickstercache/trickster/v2/pkg/backends/prometheus/model" po "github.com/trickstercache/trickster/v2/pkg/backends/prometheus/options" cr "github.com/trickstercache/trickster/v2/pkg/cache/registration" "github.com/trickstercache/trickster/v2/pkg/config" @@ -37,8 +36,6 @@ import ( "github.com/trickstercache/trickster/v2/pkg/timeseries" ) -var testModeler = model.NewModeler() - func TestPrometheusClientInterfacing(t *testing.T) { // this test ensures the client will properly conform to the @@ -143,7 +140,7 @@ func TestParseTimeRangeQuery(t *testing.T) { req := &http.Request{URL: u} o := bo.New() o.Prometheus = &po.Options{Labels: map[string]string{"test": "trickster"}} - rsc := request.NewResources(o, nil, nil, nil, nil, nil, nil) + rsc := request.NewResources(o, nil, nil, nil, nil, nil, testLogger) req = request.SetResources(req, rsc) client := &Client{} @@ -378,7 +375,7 @@ func TestParseVectorQuery(t *testing.T) { o := bo.New() o.Prometheus = &po.Options{Labels: map[string]string{"test": "trickster"}} - rsc := request.NewResources(o, nil, nil, nil, nil, nil, nil) + rsc := request.NewResources(o, nil, nil, nil, nil, nil, testLogger) req = request.SetResources(req, rsc) rounder := time.Second * 15 diff --git a/pkg/backends/prometheus/transformations_test.go b/pkg/backends/prometheus/transformations_test.go index 943428778..292776bdf 100644 --- a/pkg/backends/prometheus/transformations_test.go +++ b/pkg/backends/prometheus/transformations_test.go @@ -21,11 +21,14 @@ import ( "net/http/httptest" "testing" + "github.com/trickstercache/trickster/v2/pkg/observability/logging" "github.com/trickstercache/trickster/v2/pkg/proxy/request" "github.com/trickstercache/trickster/v2/pkg/proxy/response/merge" "github.com/trickstercache/trickster/v2/pkg/timeseries/dataset" ) +var testLogger = logging.NoopLogger() + func TestProcessTransformations(t *testing.T) { // passing test case is no panics c := &Client{injectLabels: map[string]string{"test": "trickster"}} @@ -50,7 +53,7 @@ func TestProcessVectorTransformations(t *testing.T) { r, _ := http.NewRequest(http.MethodGet, "http://example.com/", nil) resp := &http.Response{StatusCode: 200} - rsc := &request.Resources{} + rsc := &request.Resources{Logger: testLogger} rg := merge.NewResponseGate(w, r, rsc) rg.Response = resp rg.Write([]byte("trickster")) diff --git a/pkg/backends/prometheus/url_test.go b/pkg/backends/prometheus/url_test.go index 6e9d935f5..e4a575888 100644 --- a/pkg/backends/prometheus/url_test.go +++ b/pkg/backends/prometheus/url_test.go @@ -73,8 +73,7 @@ func TestSetExtent(t *testing.T) { pc.SetExtent(r, nil, e) if int(r.ContentLength) != len(expected) { b, _ := io.ReadAll(r.Body) - fmt.Println(string(b)) - t.Errorf("expected %d got %d", len(expected), r.ContentLength) + t.Errorf("expected %d got %d / %d", len(expected), r.ContentLength, len(b)) } } diff --git a/pkg/observability/logging/logging.go b/pkg/observability/logging/logging.go index 569da27d1..db0aa9ab0 100644 --- a/pkg/observability/logging/logging.go +++ b/pkg/observability/logging/logging.go @@ -94,6 +94,8 @@ func NoopLogger() Logger { l := &logger{ logFunc: func(level.Level, string, Pairs) {}, onceRanEntries: make(map[string]any), + levelID: level.InfoID, + level: level.Info, } return l } diff --git a/pkg/proxy/engines/cache.go b/pkg/proxy/engines/cache.go index 81d7c1108..7c2370b19 100644 --- a/pkg/proxy/engines/cache.go +++ b/pkg/proxy/engines/cache.go @@ -49,7 +49,7 @@ type queryResult struct { err error } -func queryConcurrent(ctx context.Context, c cache.Cache, key string, cr chan<- *queryResult, done func()) *queryResult { +func queryConcurrent(_ context.Context, c cache.Cache, key string, cr chan<- *queryResult, done func()) *queryResult { if done != nil { defer done() } @@ -322,7 +322,7 @@ func stripConditionalHeaders(h http.Header) { h.Del(headers.NameIfModifiedSince) } -func writeConcurrent(ctx context.Context, c cache.Cache, key string, d *HTTPDocument, +func writeConcurrent(_ context.Context, c cache.Cache, key string, d *HTTPDocument, compress bool, ttl time.Duration, cr chan<- error, done func()) { if done != nil { @@ -443,7 +443,7 @@ func WriteCache(ctx context.Context, c cache.Cache, key string, d *HTTPDocument, close(cr) // Handle results for res := range cr { - if res != nil && err != nil { + if res != nil { err = res break } @@ -485,7 +485,7 @@ func WriteCache(ctx context.Context, c cache.Cache, key string, d *HTTPDocument, close(cr) // Handle results for res := range cr { - if res != nil && err != nil { + if res != nil { err = res break } diff --git a/pkg/proxy/engines/client_test.go b/pkg/proxy/engines/client_test.go index 537eb9e96..5d0b219ea 100644 --- a/pkg/proxy/engines/client_test.go +++ b/pkg/proxy/engines/client_test.go @@ -23,7 +23,6 @@ import ( "math" "net/http" "net/url" - "sort" "strconv" "strings" "time" @@ -37,7 +36,6 @@ import ( po "github.com/trickstercache/trickster/v2/pkg/proxy/paths/options" tst "github.com/trickstercache/trickster/v2/pkg/testutil/timeseries/model" "github.com/trickstercache/trickster/v2/pkg/timeseries" - "github.com/trickstercache/trickster/v2/pkg/timeseries/dataset" tt "github.com/trickstercache/trickster/v2/pkg/util/timeconv" ) @@ -357,83 +355,6 @@ func (c *TestClient) FastForwardRequest(r *http.Request) (*http.Request, error) return nr, nil } -// // VectorEnvelope represents a Vector response object from the Prometheus HTTP API -// type VectorEnvelope struct { -// Status string `json:"status"` -// Data VectorData `json:"data"` -// } - -// // VectorData represents the Data body of a Vector response object from the Prometheus HTTP API -// type VectorData struct { -// ResultType string `json:"resultType"` -// Result model.Vector `json:"result"` -// } - -// // MatrixEnvelope represents a Matrix response object from the Prometheus HTTP API -// type MatrixEnvelope struct { -// Status string `json:"status"` -// Data MatrixData `json:"data"` -// ExtentList timeseries.ExtentList `json:"extents,omitempty"` -// StepDuration time.Duration `json:"step,omitempty"` - -// timestamps map[time.Time]bool // tracks unique timestamps in the matrix data -// tslist times.Times -// isSorted bool // tracks if the matrix data is currently sorted -// isCounted bool // tracks if timestamps slice is up-to-date - -// timeRangeQuery *timeseries.TimeRangeQuery -// } - -// // MatrixData represents the Data body of a Matrix response object from the Prometheus HTTP API -// type MatrixData struct { -// ResultType string `json:"resultType"` -// Result model.Matrix `json:"result"` -// } - -func (c *TestClient) marshalTimeseriesWriter(ts timeseries.Timeseries, w io.Writer) error { - // Marshal the Envelope back to a json object for Cache Storage - if c.RangeCacheKey == "failkey" { - return fmt.Errorf("generic failure for testing purposes (key: %s)", c.RangeCacheKey) - } - - ds, ok := ts.(*dataset.DataSet) - if !ok { - return timeseries.ErrUnknownFormat - } - // With Prometheus we presume only one Result per Dataset - if len(ds.Results) != 1 { - return timeseries.ErrUnknownFormat - } - - w.Write([]byte(`{"status":"success","data":{"resultType":"matrix","result":[`)) // todo: always "success" ? - - seriesSep := "" - for _, s := range ds.Results[0].SeriesList { - w.Write([]byte(seriesSep + `{"metric":{`)) - sep := "" - for _, k := range s.Header.Tags.Keys() { - w.Write([]byte(fmt.Sprintf(`%s"%s":"%s"`, sep, k, s.Header.Tags[k]))) - sep = "," - } - w.Write([]byte(`},"values":[`)) - sep = "" - sort.Sort(s.Points) - for _, p := range s.Points { - w.Write([]byte(fmt.Sprintf(`%s[%s,"%s"]`, - sep, - strconv.FormatFloat(float64(p.Epoch)/1000000000, 'f', -1, 64), - p.Values[0]), - )) - sep = "," - } - w.Write([]byte("]}")) - seriesSep = "," - } - w.Write([]byte("]}}")) - return nil - -} - func (c *TestClient) testModeler() *timeseries.Modeler { m := tst.Modeler() mw := m.WireMarshalWriter diff --git a/pkg/proxy/engines/deltaproxycache_test.go b/pkg/proxy/engines/deltaproxycache_test.go index 5b1cab26b..f5d6cba93 100644 --- a/pkg/proxy/engines/deltaproxycache_test.go +++ b/pkg/proxy/engines/deltaproxycache_test.go @@ -26,10 +26,11 @@ import ( mockprom "github.com/trickstercache/mockster/pkg/mocks/prometheus" "github.com/trickstercache/trickster/v2/pkg/backends" + "github.com/trickstercache/trickster/v2/pkg/observability/logging" "github.com/trickstercache/trickster/v2/pkg/proxy/headers" "github.com/trickstercache/trickster/v2/pkg/proxy/request" - "github.com/trickstercache/trickster/v2/pkg/timeseries" tu "github.com/trickstercache/trickster/v2/pkg/testutil" + "github.com/trickstercache/trickster/v2/pkg/timeseries" ) // test queries @@ -54,6 +55,7 @@ func setupTestHarnessDPC() (*httptest.Server, *httptest.ResponseRecorder, *http. rsc := request.GetResources(r) rsc.BackendClient = client rsc.Tracer = tu.NewTestTracer() + rsc.Logger = logging.NoopLogger() pc := rsc.PathConfig if pc == nil { @@ -229,7 +231,7 @@ func TestDeltaProxyCacheRequestRemoveStale(t *testing.T) { } -// Will understand why this test is failing, and if it's due to an application or test defect, +// TODO: Will understand why this test is failing, and if it's due to an application or test defect, // Will commit to test issue fix in v1.2.0 or app defect fix in the next release of v1.1.x // func TestDeltaProxyCacheRequestRemoveStaleLRU(t *testing.T) { diff --git a/pkg/proxy/engines/httpproxy.go b/pkg/proxy/engines/httpproxy.go index ed138866e..77eee4166 100644 --- a/pkg/proxy/engines/httpproxy.go +++ b/pkg/proxy/engines/httpproxy.go @@ -124,11 +124,11 @@ func DoProxy(w io.Writer, r *http.Request, closeResponse bool) *http.Response { } elapsed = time.Since(start) - recordResults(r, "HTTPProxy", cacheStatusCode, resp.StatusCode, - r.URL.Path, "", elapsed.Seconds(), nil, resp.Header) if resp != nil && rsc != nil && (rsc.IsMergeMember || rsc.TSTransformer != nil) { rsc.Response = resp + recordResults(r, "HTTPProxy", cacheStatusCode, resp.StatusCode, + r.URL.Path, "", elapsed.Seconds(), nil, resp.Header) } return resp diff --git a/pkg/proxy/engines/httpproxy_test.go b/pkg/proxy/engines/httpproxy_test.go index 46af80f0d..bee63034f 100644 --- a/pkg/proxy/engines/httpproxy_test.go +++ b/pkg/proxy/engines/httpproxy_test.go @@ -34,7 +34,7 @@ import ( tu "github.com/trickstercache/trickster/v2/pkg/testutil" ) -var testLogger = logging.ConsoleLogger("error") +var testLogger = logging.ConsoleLogger("warn") func TestDoProxy(t *testing.T) { @@ -153,7 +153,8 @@ func TestClockOffsetWarning(t *testing.T) { w := httptest.NewRecorder() r := httptest.NewRequest("GET", s.URL, nil) r = r.WithContext(tc.WithResources(r.Context(), - request.NewResources(o, pc, nil, nil, nil, tu.NewTestTracer(), testLogger))) + request.NewResources(o, pc, nil, nil, nil, tu.NewTestTracer(), + testLogger))) if testLogger.HasWarnedOnce("clockoffset.default") { t.Errorf("expected %t got %t", false, true) diff --git a/pkg/proxy/engines/key.go b/pkg/proxy/engines/key.go index dbac3fb07..ee2d59807 100644 --- a/pkg/proxy/engines/key.go +++ b/pkg/proxy/engines/key.go @@ -115,6 +115,7 @@ func (pr *proxyRequest) DeriveCacheKey(extra string) string { } } } + // TODO: this value of r does not appear to be used r = request.SetBody(r, b) } diff --git a/pkg/proxy/engines/revalidation_status.go b/pkg/proxy/engines/revalidation_status.go index d0454c2ce..a866583ee 100644 --- a/pkg/proxy/engines/revalidation_status.go +++ b/pkg/proxy/engines/revalidation_status.go @@ -38,14 +38,6 @@ const ( RevalStatusFailed ) -var revalidationStatusNames = map[string]RevalidationStatus{ - "none": RevalStatusNone, - "revalidating": RevalStatusInProgress, - "revalidated": RevalStatusOK, - "failed": RevalStatusFailed, - "local": RevalStatusLocal, -} - var revalidationStatusValues = map[RevalidationStatus]string{ RevalStatusNone: "none", RevalStatusInProgress: "revalidating",