Skip to content

Commit

Permalink
Tests done, reset upstream tls/status to rsp field
Browse files Browse the repository at this point in the history
  • Loading branch information
Buphido committed Aug 26, 2021
1 parent e3fadd8 commit 0144d5c
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 20 deletions.
5 changes: 2 additions & 3 deletions logging/upstream_log.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,11 +118,10 @@ func (u *UpstreamLog) RoundTrip(req *http.Request) (*http.Response, error) {
fields["status"] = 0
if beresp != nil {
fields["status"] = beresp.StatusCode
requestFields["status"] = beresp.StatusCode
requestFields["tls"] = req.TLS != nil

responseFields := Fields{
"headers": filterHeader(u.config.ResponseHeaders, beresp.Header),
"tls": beresp.TLS != nil && beresp.TLS.HandshakeComplete,
"status": beresp.StatusCode,
}
fields["response"] = responseFields
}
Expand Down
44 changes: 27 additions & 17 deletions logging/upstream_log_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package logging_test

import (
"context"
"crypto/tls"
"net/http"
"net/http/httptest"
"reflect"
Expand All @@ -28,17 +29,12 @@ func (t *testRoundTripper) RoundTrip(req *http.Request) (*http.Response, error)
func TestUpstreamLog_RoundTrip(t *testing.T) {
helper := test.New(t)
logger, hook := test.NewLogger()
myRT := &testRoundTripper{
response: &http.Response{
StatusCode: http.StatusOK,
//TLS: &tls.ConnectionState{HandshakeComplete: true},
},
}

type testcase struct {
description string
url string
expFields logrus.Fields
enableTLS bool
}

testcases := []testcase{
Expand All @@ -56,19 +52,24 @@ func TestUpstreamLog_RoundTrip(t *testing.T) {
url: "https://example.com",
expFields: logrus.Fields{
"request": logrus.Fields{
"tls": true,
"proto": "https",
},
"response": logrus.Fields{
"tls": true,
},
},
enableTLS: true,
},
{
description: "proto http",
url: "http://example.com",
expFields: logrus.Fields{
"request": logrus.Fields{
"tls": false,
"proto": "http",
},
"response": logrus.Fields{
"tls": false,
},
},
},
{
Expand All @@ -77,6 +78,8 @@ func TestUpstreamLog_RoundTrip(t *testing.T) {
expFields: logrus.Fields{
"request": logrus.Fields{
"method": http.MethodGet,
},
"response": logrus.Fields{
"status": 200,
},
"method": http.MethodGet,
Expand Down Expand Up @@ -122,14 +125,16 @@ func TestUpstreamLog_RoundTrip(t *testing.T) {
url: "http://localhost:8080/test",
expFields: logrus.Fields{
"request": logrus.Fields{
"tls": false,
"host": "localhost",
"origin": "localhost:8080",
"path": "/test",
"method": http.MethodGet,
"status": 200,
"proto": "http",
},
"response": logrus.Fields{
"tls": false,
"status": 200,
},
"method": http.MethodGet,
"port": "8080",
"uid": nil,
Expand All @@ -143,18 +148,23 @@ func TestUpstreamLog_RoundTrip(t *testing.T) {

hook.Reset()

var tlsOption *tls.ConnectionState
if tc.enableTLS {
tlsOption = &tls.ConnectionState{HandshakeComplete: true}
}
myRT := &testRoundTripper{
response: &http.Response{
StatusCode: http.StatusOK,
TLS: tlsOption,
},
}

upstreamLog := logging.NewUpstreamLog(logger.WithContext(context.TODO()), myRT, true)

req := httptest.NewRequest(http.MethodGet, tc.url, nil)
res, err := upstreamLog.RoundTrip(req)
_, err := upstreamLog.RoundTrip(req)
helper.Must(err)

//println(res.StatusCode)
res = res

/*for _, e := range hook.AllEntries() {
println(e.String())
}*/
entry := hook.LastEntry()
for key, expFields := range tc.expFields {
value, exist := entry.Data[key]
Expand Down

0 comments on commit 0144d5c

Please sign in to comment.