Skip to content

Commit 211f7c0

Browse files
committed
Implement better logging and error handling and update the tests
Signed-off-by: Doğukan Teber <[email protected]>
1 parent 33b9038 commit 211f7c0

File tree

3 files changed

+29
-17
lines changed

3 files changed

+29
-17
lines changed

gateway/gateway_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ func TestStartGateway(t *testing.T) {
266266
{
267267
name: "invalid distributor proxy",
268268
config: &Config{},
269-
expectedErr: errors.New("invalid URL scheme:"),
269+
expectedErr: errors.New("invalid URL scheme"),
270270
},
271271
{
272272
name: "invalid frontend proxy",
@@ -276,7 +276,7 @@ func TestStartGateway(t *testing.T) {
276276
Paths: []string{},
277277
},
278278
},
279-
expectedErr: errors.New("invalid URL scheme:"),
279+
expectedErr: errors.New("invalid URL scheme"),
280280
},
281281
{
282282
name: "invalid alertmanager proxy",
@@ -290,7 +290,7 @@ func TestStartGateway(t *testing.T) {
290290
Paths: []string{},
291291
},
292292
},
293-
expectedErr: errors.New("invalid URL scheme:"),
293+
expectedErr: errors.New("invalid URL scheme"),
294294
},
295295
{
296296
name: "invalid ruler proxy",
@@ -308,7 +308,7 @@ func TestStartGateway(t *testing.T) {
308308
Paths: []string{},
309309
},
310310
},
311-
expectedErr: errors.New("invalid URL scheme:"),
311+
expectedErr: errors.New("invalid URL scheme"),
312312
},
313313
}
314314

gateway/proxy.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@ import (
88
"net/http"
99
"net/http/httputil"
1010
"net/url"
11-
"os"
1211
"time"
1312

1413
"github.com/cortexproject/auth-gateway/utils"
15-
"github.com/sirupsen/logrus"
1614
)
1715

1816
const (
@@ -65,7 +63,11 @@ func NewProxy(targetURL string, upstream Upstream, component string) (*Proxy, er
6563
}
6664

6765
reverseProxy := httputil.NewSingleHostReverseProxy(url)
68-
reverseProxy.Transport = customTransport(component, upstream)
66+
transport, err := customTransport(component, upstream)
67+
if err != nil {
68+
return nil, err
69+
}
70+
reverseProxy.Transport = transport
6971
originalDirector := reverseProxy.Director
7072
reverseProxy.Director = customDirector(url, originalDirector)
7173
reverseProxy.ErrorLog = log.New(utils.LogrusErrorWriter{}, "", 0)
@@ -88,7 +90,7 @@ func customDirector(targetURL *url.URL, originalDirector func(*http.Request)) fu
8890
}
8991
}
9092

91-
func customTransport(component string, upstream Upstream) http.RoundTripper {
93+
func customTransport(component string, upstream Upstream) (http.RoundTripper, error) {
9294
dialerTimeout := upstream.HTTPClientDialerTimeout * time.Second
9395
if dialerTimeout == 0 {
9496
dialerTimeout = defaultTimeoutValues[component].HTTPClientDialerTimeout
@@ -108,14 +110,13 @@ func customTransport(component string, upstream Upstream) http.RoundTripper {
108110

109111
url, err := url.Parse(upstream.URL)
110112
if err != nil {
111-
logrus.Errorf("unexpected error when parsing the upstream url: %v", err)
112-
os.Exit(1)
113+
return nil, fmt.Errorf("unexpected error when parsing the upstream url: %v", err)
113114
}
114115

115116
resolver := DefaultDNSResolver{}
116117
lb, err := newRoundRobinLoadBalancer(url.Hostname(), resolver.LookupIP)
117118
if err != nil {
118-
logrus.Errorf("unexpected error when creating the load balancer: %v", err)
119+
return nil, fmt.Errorf("unexpected error when creating the load balancer: %v", err)
119120
}
120121
t := &CustomTransport{
121122
Transport: *http.DefaultTransport.(*http.Transport).Clone(),
@@ -130,7 +131,7 @@ func customTransport(component string, upstream Upstream) http.RoundTripper {
130131
t.TLSHandshakeTimeout = TLSHandshakeTimeout
131132
t.ResponseHeaderTimeout = responseHeaderTimeout
132133

133-
return t
134+
return t, nil
134135
}
135136

136137
func (p *Proxy) Handler(w http.ResponseWriter, r *http.Request) {

gateway/proxy_test.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,37 @@ func TestNewProxy(t *testing.T) {
1111
testCases := []struct {
1212
name string
1313
targetURL string
14+
upstream Upstream
1415
expectErr bool
1516
expectHost string
1617
}{
1718
{
18-
name: "invalid URL",
19-
targetURL: "invalid url",
19+
name: "invalid URL",
20+
targetURL: "invalid url",
21+
upstream: Upstream{
22+
URL: "",
23+
Paths: []string{},
24+
},
2025
expectErr: true,
2126
expectHost: "",
2227
},
2328
{
24-
name: "valid URL",
25-
targetURL: "http://localhost:8080",
29+
name: "valid URL",
30+
upstream: Upstream{
31+
URL: "http://localhost:8080",
32+
Paths: []string{
33+
"/api/v1",
34+
"/api/v1/push",
35+
},
36+
},
2637
expectErr: false,
2738
expectHost: "localhost:8080",
2839
},
2940
}
3041

3142
for _, tc := range testCases {
3243
t.Run(tc.name, func(t *testing.T) {
33-
p, err := NewProxy(tc.targetURL, Upstream{}, "")
44+
p, err := NewProxy(tc.upstream.URL, tc.upstream, DISTRIBUTOR)
3445
if (err != nil) != tc.expectErr {
3546
t.Errorf("unexpected error: %v", err)
3647
return

0 commit comments

Comments
 (0)