From a613ad4dc90071184eb1481f511f76381c49bad8 Mon Sep 17 00:00:00 2001 From: yedf2 <120050102@qq.com> Date: Wed, 4 May 2022 20:50:44 +0800 Subject: [PATCH 1/2] update dtmcli for dtm-cases/cache --- dtmcli/logger/log.go | 2 ++ dtmcli/types.go | 26 +++++++++++++++++--------- dtmutil/utils.go | 6 +++--- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/dtmcli/logger/log.go b/dtmcli/logger/log.go index dde58c1..c53530c 100644 --- a/dtmcli/logger/log.go +++ b/dtmcli/logger/log.go @@ -6,6 +6,7 @@ import ( "log" "net/url" "os" + "runtime/debug" "strings" "github.com/natefinch/lumberjack" @@ -124,6 +125,7 @@ func FatalfIf(cond bool, fmt string, args ...interface{}) { if !cond { return } + debug.PrintStack() log.Fatalf(fmt, args...) } diff --git a/dtmcli/types.go b/dtmcli/types.go index 8e45478..8b6bb68 100644 --- a/dtmcli/types.go +++ b/dtmcli/types.go @@ -82,16 +82,24 @@ func SetPassthroughHeaders(headers []string) { dtmimp.PassthroughHeaders = headers } -// Result2HttpCode return the http code for the result +// Result2HttpJson return the http code and json result // if result is error, the return proper code, else return StatusOK -func Result2HttpCode(result interface{}) int { +func Result2HttpJson(result interface{}) (code int, res interface{}) { err, _ := result.(error) - if errors.Is(err, ErrFailure) { - return http.StatusConflict - } else if errors.Is(err, ErrOngoing) { - return http.StatusTooEarly - } else if err != nil { - return http.StatusInternalServerError + if err == nil { + code = http.StatusOK + res = result + } else { + res = map[string]string{ + "error": err.Error(), + } + if errors.Is(err, ErrFailure) { + code = http.StatusConflict + } else if errors.Is(err, ErrOngoing) { + code = http.StatusTooEarly + } else if err != nil { + code = http.StatusInternalServerError + } } - return http.StatusOK + return } diff --git a/dtmutil/utils.go b/dtmutil/utils.go index 82830e9..d8c6e0d 100644 --- a/dtmutil/utils.go +++ b/dtmutil/utils.go @@ -52,15 +52,15 @@ func WrapHandler(fn func(*gin.Context) interface{}) gin.HandlerFunc { return func(c *gin.Context) { began := time.Now() ret := fn(c) - status := dtmcli.Result2HttpCode(ret) + status, res := dtmcli.Result2HttpJson(ret) - b, _ := json.Marshal(ret) + b, _ := json.Marshal(res) if status == http.StatusOK || status == http.StatusTooEarly { logger.Infof("%2dms %d %s %s %s", time.Since(began).Milliseconds(), status, c.Request.Method, c.Request.RequestURI, string(b)) } else { logger.Errorf("%2dms %d %s %s %s", time.Since(began).Milliseconds(), status, c.Request.Method, c.Request.RequestURI, string(b)) } - c.JSON(status, ret) + c.JSON(status, res) } } From 610b50f9c8ca92288cf90360a9cecf80fe2a2087 Mon Sep 17 00:00:00 2001 From: yedf2 <120050102@qq.com> Date: Wed, 4 May 2022 21:07:00 +0800 Subject: [PATCH 2/2] fix lint: Json => JSON --- dtmcli/types.go | 4 ++-- dtmutil/utils.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dtmcli/types.go b/dtmcli/types.go index 8b6bb68..1cf4b2e 100644 --- a/dtmcli/types.go +++ b/dtmcli/types.go @@ -82,9 +82,9 @@ func SetPassthroughHeaders(headers []string) { dtmimp.PassthroughHeaders = headers } -// Result2HttpJson return the http code and json result +// Result2HttpJSON return the http code and json result // if result is error, the return proper code, else return StatusOK -func Result2HttpJson(result interface{}) (code int, res interface{}) { +func Result2HttpJSON(result interface{}) (code int, res interface{}) { err, _ := result.(error) if err == nil { code = http.StatusOK diff --git a/dtmutil/utils.go b/dtmutil/utils.go index d8c6e0d..06b39a7 100644 --- a/dtmutil/utils.go +++ b/dtmutil/utils.go @@ -52,7 +52,7 @@ func WrapHandler(fn func(*gin.Context) interface{}) gin.HandlerFunc { return func(c *gin.Context) { began := time.Now() ret := fn(c) - status, res := dtmcli.Result2HttpJson(ret) + status, res := dtmcli.Result2HttpJSON(ret) b, _ := json.Marshal(res) if status == http.StatusOK || status == http.StatusTooEarly {