diff --git a/core/breaker/breakers.go b/core/breaker/breakers.go index 26760142..6e320521 100644 --- a/core/breaker/breakers.go +++ b/core/breaker/breakers.go @@ -60,17 +60,15 @@ func do(name string, execute func(b Breaker) error) error { lock.RUnlock() if ok { return execute(b) - } else { - lock.Lock() - b, ok = breakers[name] - if ok { - lock.Unlock() - return execute(b) - } else { - b = NewBreaker(WithName(name)) - breakers[name] = b - lock.Unlock() - return execute(b) - } } + + lock.Lock() + b, ok = breakers[name] + if !ok { + b = NewBreaker(WithName(name)) + breakers[name] = b + } + lock.Unlock() + + return execute(b) } diff --git a/core/collection/cache_test.go b/core/collection/cache_test.go index b296e378..24366aa6 100644 --- a/core/collection/cache_test.go +++ b/core/collection/cache_test.go @@ -72,9 +72,9 @@ func TestCacheWithLruEvicts(t *testing.T) { cache.Set("third", "third element") cache.Set("fourth", "fourth element") - value, ok := cache.Get("first") + _, ok := cache.Get("first") assert.False(t, ok) - value, ok = cache.Get("second") + value, ok := cache.Get("second") assert.True(t, ok) assert.Equal(t, "second element", value) value, ok = cache.Get("third") @@ -94,9 +94,9 @@ func TestCacheWithLruEvicted(t *testing.T) { cache.Set("third", "third element") cache.Set("fourth", "fourth element") - value, ok := cache.Get("first") + _, ok := cache.Get("first") assert.False(t, ok) - value, ok = cache.Get("second") + value, ok := cache.Get("second") assert.True(t, ok) assert.Equal(t, "second element", value) cache.Set("fifth", "fifth element") diff --git a/core/filex/file_test.go b/core/filex/file_test.go index a5e508cb..cb0b7f83 100644 --- a/core/filex/file_test.go +++ b/core/filex/file_test.go @@ -15,34 +15,34 @@ const ( text = `first line Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. ` + longLine textWithLastNewline = `first line Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. Cum sociis natoque penatibus et magnis dis parturient. Phasellus laoreet lorem vel dolor tempus vehicula. Vivamus sagittis lacus vel augue laoreet rutrum faucibus. Integer legentibus erat a ante historiarum dapibus. Quisque ut dolor gravida, placerat libero vel, euismod. Quam temere in vitiis, legem sancimus haerentia. Qui ipsorum lingua Celtae, nostra Galli appellantur. Quis aute iure reprehenderit in voluptate velit esse. Fabio vel iudice vincam, sunt in culpa qui officia. Cras mattis iudicium purus sit amet fermentum. -Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculus sed magna. +Quo usque tandem abutere, Catilina, patientia nostra? Gallia est omnis divisa in partes tres, quarum. Quam diu etiam furor iste tuus nos eludet? Quid securi etiam tamquam eu fugiat nulla pariatur. Curabitur blandit tempus ardua ridiculous sed magna. Magna pars studiorum, prodita quaerimus. Cum ceteris in veneratione tui montes, nascetur mus. Morbi odio eros, volutpat ut pharetra vitae, lobortis sed nibh. Plura mihi bona sunt, inclinet, amari petere vellent. Idque Caesaris facere voluntate liceret: sese habere. Tu quoque, Brute, fili mi, nihil timor populi, nihil! Tityre, tu patulae recubans sub tegmine fagi dolor. Inmensae subtilitatis, obscuris et malesuada fames. Quae vero auctorem tractata ab fiducia dicuntur. ` + longLine + "\n" diff --git a/core/stores/kv/store_test.go b/core/stores/kv/store_test.go index da58ae3f..a3b3b27d 100644 --- a/core/stores/kv/store_test.go +++ b/core/stores/kv/store_test.go @@ -212,10 +212,12 @@ func TestRedis_Persist(t *testing.T) { assert.Nil(t, err) assert.False(t, ok) err = client.Expire("key", 5) + assert.Nil(t, err) ok, err = client.Persist("key") assert.Nil(t, err) assert.True(t, ok) err = client.Expireat("key", time.Now().Unix()+5) + assert.Nil(t, err) ok, err = client.Persist("key") assert.Nil(t, err) assert.True(t, ok) diff --git a/core/stores/redis/redis_test.go b/core/stores/redis/redis_test.go index e1a3a5aa..f284c717 100644 --- a/core/stores/redis/redis_test.go +++ b/core/stores/redis/redis_test.go @@ -249,10 +249,12 @@ func TestRedis_Persist(t *testing.T) { assert.Nil(t, err) assert.False(t, ok) err = client.Expire("key", 5) + assert.Nil(t, err) ok, err = client.Persist("key") assert.Nil(t, err) assert.True(t, ok) err = client.Expireat("key", time.Now().Unix()+5) + assert.Nil(t, err) ok, err = client.Persist("key") assert.Nil(t, err) assert.True(t, ok) @@ -447,7 +449,7 @@ func TestRedis_SortedSet(t *testing.T) { rank, err := client.Zrank("key", "value2") assert.Nil(t, err) assert.Equal(t, int64(1), rank) - rank, err = client.Zrank("key", "value4") + _, err = client.Zrank("key", "value4") assert.Equal(t, Nil, err) num, err := client.Zrem("key", "value2", "value3") assert.Nil(t, err) @@ -558,6 +560,7 @@ func TestRedis_Pipelined(t *testing.T) { assert.Nil(t, err) assert.Equal(t, "1", value) score, err := client.Zscore("zadd", "zadd") + assert.Nil(t, err) assert.Equal(t, int64(12), score) }) } diff --git a/core/stringx/replacer.go b/core/stringx/replacer.go index 181933e4..e615753b 100644 --- a/core/stringx/replacer.go +++ b/core/stringx/replacer.go @@ -63,11 +63,6 @@ func (r *replacer) Replace(text string) string { i = j - 1 builder.WriteString(r.mapping[string(chars[start:end])]) } else { - if j < size { - end = j + 1 - } else { - end = size - } builder.WriteRune(chars[i]) } start = -1 diff --git a/example/http/breaker/client/client.go b/example/http/breaker/client/client.go index 131f14f9..3b9c60bb 100644 --- a/example/http/breaker/client/client.go +++ b/example/http/breaker/client/client.go @@ -15,7 +15,7 @@ import ( ) var ( - freq = flag.Int("freq", 100, "frequence") + freq = flag.Int("freq", 100, "frequency") duration = flag.String("duration", "10s", "duration") ) @@ -84,8 +84,8 @@ func (m *metric) reset() counting { return result } -func runRequests(url string, frequence int, metrics *metric, done <-chan lang.PlaceholderType) { - ticker := time.NewTicker(time.Second / time.Duration(frequence)) +func runRequests(url string, frequency int, metrics *metric, done <-chan lang.PlaceholderType) { + ticker := time.NewTicker(time.Second / time.Duration(frequency)) defer ticker.Stop() for { diff --git a/rest/handler/contentsecurityhandler_test.go b/rest/handler/contentsecurityhandler_test.go index 4bd0ea73..62903bd3 100644 --- a/rest/handler/contentsecurityhandler_test.go +++ b/rest/handler/contentsecurityhandler_test.go @@ -217,6 +217,7 @@ func TestContentSecurityHandler(t *testing.T) { signature: test.signature, } req, err := buildRequest(setting) + assert.Nil(t, err) resp := httptest.NewRecorder() handler.ServeHTTP(resp, req) assert.Equal(t, test.statusCode, resp.Code) @@ -249,6 +250,7 @@ func TestContentSecurityHandler_UnsignedCallback(t *testing.T) { signature: "badone", } req, err := buildRequest(setting) + assert.Nil(t, err) resp := httptest.NewRecorder() handler.ServeHTTP(resp, req) assert.Equal(t, http.StatusOK, resp.Code) @@ -285,6 +287,7 @@ func TestContentSecurityHandler_UnsignedCallback_WrongTime(t *testing.T) { fingerprint: fingerprint, } req, err := buildRequest(setting) + assert.Nil(t, err) resp := httptest.NewRecorder() handler.ServeHTTP(resp, req) assert.Equal(t, http.StatusOK, resp.Code) diff --git a/tools/goctl/api/gogen/gen.go b/tools/goctl/api/gogen/gen.go index 80209f28..c20b4930 100644 --- a/tools/goctl/api/gogen/gen.go +++ b/tools/goctl/api/gogen/gen.go @@ -148,7 +148,6 @@ func createGoModFileIfNeed(dir string) { } tempPath = filepath.Dir(tempPath) if util.FileExists(filepath.Join(tempPath, goModeIdentifier)) { - tempPath = filepath.Dir(tempPath) hasGoMod = true break } diff --git a/tools/goctl/api/gogen/genhandlers.go b/tools/goctl/api/gogen/genhandlers.go index 1015a502..e4879759 100644 --- a/tools/goctl/api/gogen/genhandlers.go +++ b/tools/goctl/api/gogen/genhandlers.go @@ -72,7 +72,7 @@ func genHandler(dir string, group spec.Group, route spec.Route) error { req = "" } var logicResponse string - var writeResponse = "nil, nil" + var writeResponse string var respWriter = `httpx.WriteJson(w, http.StatusOK, resp)` if len(route.ResponseType.Name) > 0 { logicResponse = "resp, err :=" diff --git a/tools/goctl/api/ktgen/funcs.go b/tools/goctl/api/ktgen/funcs.go index d24642c1..17dee136 100644 --- a/tools/goctl/api/ktgen/funcs.go +++ b/tools/goctl/api/ktgen/funcs.go @@ -34,7 +34,7 @@ func routeToFuncName(method, path string) string { path = strings.ReplaceAll(path, "-", "_") path = strings.ReplaceAll(path, ":", "With_") - return strings.ToLower(method)+strcase.ToCamel(path) + return strings.ToLower(method) + strcase.ToCamel(path) } func parseType(t string) string { diff --git a/tools/goctl/api/tsgen/util.go b/tools/goctl/api/tsgen/util.go index 5174d4bc..94b4cd0e 100644 --- a/tools/goctl/api/tsgen/util.go +++ b/tools/goctl/api/tsgen/util.go @@ -13,6 +13,10 @@ import ( func writeProperty(writer io.Writer, member spec.Member, indent int, prefixForType func(string) string) error { writeIndent(writer, indent) ty, err := goTypeToTs(member.Type, prefixForType) + if err != nil { + return err + } + optionalTag := "" if member.IsOptional() || member.IsOmitempty() { optionalTag = "?" @@ -21,13 +25,14 @@ func writeProperty(writer io.Writer, member spec.Member, indent int, prefixForTy if err != nil { return err } + comment := member.GetComment() if len(comment) > 0 { comment = strings.TrimPrefix(comment, "//") comment = " // " + strings.TrimSpace(comment) } if len(member.Docs) > 0 { - _, err = fmt.Fprintf(writer, "%s\n", strings.Join(member.Docs, "")) + fmt.Fprintf(writer, "%s\n", strings.Join(member.Docs, "")) writeIndent(writer, 1) } _, err = fmt.Fprintf(writer, "%s%s: %s%s\n", name, optionalTag, ty, comment) diff --git a/tools/goctl/api/util/util.go b/tools/goctl/api/util/util.go index afc77a55..1223d521 100644 --- a/tools/goctl/api/util/util.go +++ b/tools/goctl/api/util/util.go @@ -28,6 +28,9 @@ func MaybeCreateFile(dir, subdir, file string) (fp *os.File, created bool, err e func ClearAndOpenFile(fpath string) (*os.File, error) { f, err := os.OpenFile(fpath, os.O_WRONLY|os.O_TRUNC, 0600) + if err != nil { + return nil, err + } _, err = f.WriteString("") if err != nil { diff --git a/tools/goctl/goctl.go b/tools/goctl/goctl.go index 49cb90b5..3e3fba75 100644 --- a/tools/goctl/goctl.go +++ b/tools/goctl/goctl.go @@ -4,7 +4,6 @@ import ( "fmt" "os" - "github.com/tal-tech/go-zero/tools/goctl/api/ktgen" "github.com/tal-tech/go-zero/core/logx" "github.com/tal-tech/go-zero/tools/goctl/api/apigen" "github.com/tal-tech/go-zero/tools/goctl/api/dartgen" @@ -12,6 +11,7 @@ import ( "github.com/tal-tech/go-zero/tools/goctl/api/format" "github.com/tal-tech/go-zero/tools/goctl/api/gogen" "github.com/tal-tech/go-zero/tools/goctl/api/javagen" + "github.com/tal-tech/go-zero/tools/goctl/api/ktgen" "github.com/tal-tech/go-zero/tools/goctl/api/tsgen" "github.com/tal-tech/go-zero/tools/goctl/api/validate" "github.com/tal-tech/go-zero/tools/goctl/configgen"