Skip to content

Commit 2389215

Browse files
add test for deep-dependencies
Signed-off-by: adityachopra29 <[email protected]>
1 parent bde7d9f commit 2389215

File tree

4 files changed

+132
-1
lines changed

4 files changed

+132
-1
lines changed
+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// Copyright (c) 2021 The Jaeger Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package analytics
5+
6+
import (
7+
"encoding/json"
8+
"io"
9+
"net/http"
10+
"testing"
11+
12+
"github.com/gorilla/mux"
13+
"github.com/stretchr/testify/require"
14+
15+
_ "github.com/jaegertracing/jaeger/pkg/gogocodec" // force gogo codec registration
16+
)
17+
18+
// Utility functions used from http_gateway_test.go.
19+
type testGateway struct {
20+
url string
21+
router *mux.Router
22+
// used to set a tenancy header when executing requests
23+
setupRequest func(*http.Request)
24+
}
25+
26+
func (gw *testGateway) execRequest(t *testing.T, url string) ([]byte, int) {
27+
req, err := http.NewRequest(http.MethodGet, gw.url+url, nil)
28+
require.NoError(t, err)
29+
req.Header.Set("Content-Type", "application/json")
30+
gw.setupRequest(req)
31+
response, err := http.DefaultClient.Do(req)
32+
require.NoError(t, err)
33+
body, err := io.ReadAll(response.Body)
34+
require.NoError(t, err)
35+
require.NoError(t, response.Body.Close())
36+
return body, response.StatusCode
37+
}
38+
39+
func runGatewayTests(
40+
t *testing.T,
41+
basePath string,
42+
setupRequest func(*http.Request),
43+
) {
44+
gw := setupHTTPGateway(t, basePath)
45+
gw.setupRequest = setupRequest
46+
t.Run("getDeepDependencies", gw.runGatewayGetDeepDependencies)
47+
}
48+
49+
func (gw *testGateway) runGatewayGetDeepDependencies(t *testing.T) {
50+
expectedPath := []TDdgPayloadEntry{
51+
{Service: "sample-serviceA", Operation: "sample-opA"},
52+
{Service: "sample-serviceB", Operation: "sample-opB"},
53+
}
54+
expectedAttributes := []Attribute{
55+
{Key: "exemplar_trace_id", Value: "abc123"},
56+
}
57+
58+
body, statusCode := gw.execRequest(t, "/api/deep-dependencies")
59+
60+
require.Equal(t, http.StatusOK, statusCode)
61+
62+
var response TDdgPayload
63+
err := json.Unmarshal(body, &response)
64+
require.NoError(t, err)
65+
66+
require.Len(t, response.Dependencies, 1)
67+
require.Equal(t, expectedPath, response.Dependencies[0].Path)
68+
require.Equal(t, expectedAttributes, response.Dependencies[0].Attributes)
69+
}

cmd/query/app/analytics/http_gateway.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (h *HTTPGateway) getDeepDependencies(w http.ResponseWriter, r *http.Request
6565

6666
w.Header().Set("Content-Type", "application/json")
6767
if err := json.NewEncoder(w).Encode(dependencies); err != nil {
68-
http.Error(w, "Failed to encode response", http.StatusInternalServerError)
68+
h.Logger.Error("Failed to encode response", zap.Error(err))
6969
}
7070
}
7171

cmd/query/app/analytics/http_gateway_test.go

+48
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,51 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
package analytics
5+
6+
import (
7+
"net/http"
8+
"net/http/httptest"
9+
"testing"
10+
11+
"github.com/gorilla/mux"
12+
"go.uber.org/zap"
13+
)
14+
15+
// setup the http gateway
16+
func setupHTTPGatewayNoServer(
17+
_ *testing.T,
18+
basePath string,
19+
) *testGateway {
20+
gw := &testGateway{}
21+
22+
hgw := &HTTPGateway{
23+
Logger: zap.NewNop(),
24+
}
25+
26+
gw.router = &mux.Router{}
27+
if basePath != "" && basePath != "/" {
28+
gw.router = gw.router.PathPrefix(basePath).Subrouter()
29+
}
30+
hgw.RegisterRoutes(gw.router)
31+
return gw
32+
}
33+
34+
func setupHTTPGateway(
35+
t *testing.T,
36+
basePath string,
37+
) *testGateway {
38+
gw := setupHTTPGatewayNoServer(t, basePath)
39+
40+
httpServer := httptest.NewServer(gw.router)
41+
t.Cleanup(func() { httpServer.Close() })
42+
43+
gw.url = httpServer.URL
44+
if basePath != "/" {
45+
gw.url += basePath
46+
}
47+
return gw
48+
}
49+
50+
func TestHTTPGateway(t *testing.T) {
51+
runGatewayTests(t, "/", func(_ *http.Request) {})
52+
}
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright (c) 2023 The Jaeger Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package analytics
5+
6+
import (
7+
"testing"
8+
9+
"github.com/jaegertracing/jaeger/pkg/testutils"
10+
)
11+
12+
func TestMain(m *testing.M) {
13+
testutils.VerifyGoLeaks(m)
14+
}

0 commit comments

Comments
 (0)