Skip to content

Commit 17ab0e2

Browse files
committed
remove returning error of Write* functions for ghttp.Server; add UT cases for gclient.Client.DoRequestObj
1 parent f4f73f2 commit 17ab0e2

7 files changed

+176
-104
lines changed

net/gclient/gclient_z_example_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@ import (
1111
"crypto/tls"
1212
"encoding/hex"
1313
"fmt"
14+
"net/http"
15+
"time"
16+
1417
"github.com/gogf/gf/v2/debug/gdebug"
1518
"github.com/gogf/gf/v2/net/gclient"
1619
"github.com/gogf/gf/v2/net/gtcp"
1720
"github.com/gogf/gf/v2/os/gctx"
1821
"github.com/gogf/gf/v2/os/gfile"
19-
"net/http"
20-
"time"
2122

2223
"github.com/gogf/gf/v2/frame/g"
2324
"github.com/gogf/gf/v2/net/ghttp"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
2+
//
3+
// This Source Code Form is subject to the terms of the MIT License.
4+
// If a copy of the MIT was not distributed with this file,
5+
// You can obtain one at https://github.com/gogf/gf.
6+
7+
package gclient_test
8+
9+
import (
10+
"context"
11+
"fmt"
12+
"net/http"
13+
"testing"
14+
"time"
15+
16+
"github.com/gogf/gf/v2/frame/g"
17+
"github.com/gogf/gf/v2/internal/tracing"
18+
"github.com/gogf/gf/v2/net/ghttp"
19+
"github.com/gogf/gf/v2/net/gtcp"
20+
"github.com/gogf/gf/v2/test/gtest"
21+
"go.opentelemetry.io/otel"
22+
sdkTrace "go.opentelemetry.io/otel/sdk/trace"
23+
"go.opentelemetry.io/otel/trace"
24+
)
25+
26+
type CustomProvider struct {
27+
*sdkTrace.TracerProvider
28+
}
29+
30+
func NewCustomProvider() *CustomProvider {
31+
return &CustomProvider{
32+
TracerProvider: sdkTrace.NewTracerProvider(
33+
sdkTrace.WithIDGenerator(NewCustomIDGenerator()),
34+
),
35+
}
36+
}
37+
38+
type CustomIDGenerator struct{}
39+
40+
func NewCustomIDGenerator() *CustomIDGenerator {
41+
return &CustomIDGenerator{}
42+
}
43+
44+
func (id *CustomIDGenerator) NewIDs(ctx context.Context) (traceID trace.TraceID, spanID trace.SpanID) {
45+
return tracing.NewIDs()
46+
}
47+
48+
func (id *CustomIDGenerator) NewSpanID(ctx context.Context, traceID trace.TraceID) (spanID trace.SpanID) {
49+
return tracing.NewSpanID()
50+
}
51+
52+
func TestClient_CustomProvider(t *testing.T) {
53+
provider := otel.GetTracerProvider()
54+
defer otel.SetTracerProvider(provider)
55+
56+
otel.SetTracerProvider(NewCustomProvider())
57+
58+
p, _ := gtcp.GetFreePort()
59+
s := g.Server(p)
60+
s.BindHandler("/hello", func(r *ghttp.Request) {
61+
r.Response.WriteHeader(200)
62+
r.Response.WriteJson(g.Map{"field": "test_for_response_body"})
63+
})
64+
s.SetPort(p)
65+
s.SetDumpRouterMap(false)
66+
s.Start()
67+
defer s.Shutdown()
68+
69+
time.Sleep(100 * time.Millisecond)
70+
gtest.C(t, func(t *gtest.T) {
71+
c := g.Client()
72+
url := fmt.Sprintf("127.0.0.1:%d/hello", p)
73+
resp, err := c.DoRequest(ctx, http.MethodGet, url)
74+
t.AssertNil(err)
75+
t.AssertNE(resp, nil)
76+
t.Assert(resp.ReadAllString(), "{\"field\":\"test_for_response_body\"}")
77+
})
78+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
2+
//
3+
// This Source Code Form is subject to the terms of the MIT License.
4+
// If a copy of the MIT was not distributed with this file,
5+
// You can obtain one at https://github.com/gogf/gf.
6+
7+
package gclient_test
8+
9+
import (
10+
"fmt"
11+
"testing"
12+
"time"
13+
14+
"github.com/gogf/gf/v2/frame/g"
15+
"github.com/gogf/gf/v2/net/ghttp"
16+
"github.com/gogf/gf/v2/net/gtcp"
17+
"github.com/gogf/gf/v2/test/gtest"
18+
)
19+
20+
func Test_Client_DoRequestObj(t *testing.T) {
21+
type UserCreateReq struct {
22+
g.Meta `path:"/user" method:"post"`
23+
Id int
24+
Name string
25+
}
26+
type UserCreateRes struct {
27+
Id int
28+
}
29+
type UserQueryReq struct {
30+
g.Meta `path:"/user" method:"get"`
31+
}
32+
type UserQueryRes struct {
33+
Id int
34+
Name string
35+
}
36+
p, _ := gtcp.GetFreePort()
37+
s := g.Server(p)
38+
s.Group("/user", func(group *ghttp.RouterGroup) {
39+
group.GET("/", func(r *ghttp.Request) {
40+
r.Response.WriteJson(g.Map{"id": 1, "name": "john"})
41+
})
42+
group.POST("/", func(r *ghttp.Request) {
43+
r.Response.WriteJson(g.Map{"id": r.Get("Id")})
44+
})
45+
})
46+
s.SetPort(p)
47+
s.SetDumpRouterMap(false)
48+
s.Start()
49+
defer s.Shutdown()
50+
51+
time.Sleep(100 * time.Millisecond)
52+
gtest.C(t, func(t *gtest.T) {
53+
url := fmt.Sprintf("http://127.0.0.1:%d", p)
54+
client := g.Client().SetPrefix(url).ContentJson()
55+
var (
56+
createRes *UserCreateRes
57+
createReq = UserCreateReq{
58+
Id: 1,
59+
Name: "john",
60+
}
61+
)
62+
err := client.DoRequestObj(ctx, createReq, &createRes)
63+
t.AssertNil(err)
64+
t.Assert(createRes.Id, 1)
65+
})
66+
gtest.C(t, func(t *gtest.T) {
67+
url := fmt.Sprintf("http://127.0.0.1:%d", p)
68+
client := g.Client().SetPrefix(url).ContentJson()
69+
var (
70+
queryRes *UserQueryRes
71+
queryReq = UserQueryReq{}
72+
)
73+
err := client.DoRequestObj(ctx, queryReq, &queryRes)
74+
t.AssertNil(err)
75+
t.Assert(queryRes.Id, 1)
76+
t.Assert(queryRes.Name, "john")
77+
})
78+
}

net/gclient/gclient_z_unit_test.go

+2-60
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,13 @@ import (
1111
"context"
1212
"crypto/tls"
1313
"fmt"
14-
"github.com/gogf/gf/v2/debug/gdebug"
15-
"github.com/gogf/gf/v2/internal/tracing"
16-
"go.opentelemetry.io/otel"
17-
sdkTrace "go.opentelemetry.io/otel/sdk/trace"
18-
"go.opentelemetry.io/otel/trace"
1914
"io/ioutil"
2015
"net/http"
2116
"testing"
2217
"time"
2318

19+
"github.com/gogf/gf/v2/debug/gdebug"
20+
2421
"github.com/gogf/gf/v2/errors/gerror"
2522
"github.com/gogf/gf/v2/frame/g"
2623
"github.com/gogf/gf/v2/net/gclient"
@@ -643,58 +640,3 @@ func TestClient_RequestVar(t *testing.T) {
643640
t.AssertNE(users, nil)
644641
})
645642
}
646-
647-
type CustomProvider struct {
648-
*sdkTrace.TracerProvider
649-
}
650-
651-
func NewCustomProvider() *CustomProvider {
652-
return &CustomProvider{
653-
TracerProvider: sdkTrace.NewTracerProvider(
654-
sdkTrace.WithIDGenerator(NewCustomIDGenerator()),
655-
),
656-
}
657-
}
658-
659-
type CustomIDGenerator struct{}
660-
661-
func NewCustomIDGenerator() *CustomIDGenerator {
662-
return &CustomIDGenerator{}
663-
}
664-
665-
func (id *CustomIDGenerator) NewIDs(ctx context.Context) (traceID trace.TraceID, spanID trace.SpanID) {
666-
return tracing.NewIDs()
667-
}
668-
669-
func (id *CustomIDGenerator) NewSpanID(ctx context.Context, traceID trace.TraceID) (spanID trace.SpanID) {
670-
return tracing.NewSpanID()
671-
}
672-
673-
func TestClient_CustomProvider(t *testing.T) {
674-
provider := otel.GetTracerProvider()
675-
defer otel.SetTracerProvider(provider)
676-
677-
otel.SetTracerProvider(NewCustomProvider())
678-
679-
p, _ := gtcp.GetFreePort()
680-
s := g.Server(p)
681-
s.BindHandler("/hello", func(r *ghttp.Request) {
682-
r.Response.WriteHeader(200)
683-
r.Response.WriteJson(g.Map{"field": "test_for_response_body"})
684-
})
685-
s.SetPort(p)
686-
s.SetDumpRouterMap(false)
687-
s.Start()
688-
defer s.Shutdown()
689-
690-
time.Sleep(100 * time.Millisecond)
691-
gtest.C(t, func(t *gtest.T) {
692-
c := g.Client()
693-
url := fmt.Sprintf("127.0.0.1:%d/hello", p)
694-
resp, err := c.DoRequest(ctx, http.MethodGet, url)
695-
t.AssertNil(err)
696-
t.AssertNE(resp, nil)
697-
t.Assert(resp.ReadAllString(), "{\"field\":\"test_for_response_body\"}")
698-
})
699-
700-
}

net/ghttp/ghttp_middleware_handler_response.go

+1-6
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
"github.com/gogf/gf/v2/errors/gcode"
1313
"github.com/gogf/gf/v2/errors/gerror"
14-
"github.com/gogf/gf/v2/internal/intlog"
1514
)
1615

1716
// DefaultHandlerResponse is the default implementation of HandlerResponse.
@@ -32,7 +31,6 @@ func MiddlewareHandlerResponse(r *Request) {
3231

3332
var (
3433
msg string
35-
ctx = r.Context()
3634
err = r.GetError()
3735
res = r.GetHandlerResponse()
3836
code = gerror.Code(err)
@@ -55,12 +53,9 @@ func MiddlewareHandlerResponse(r *Request) {
5553
} else {
5654
code = gcode.CodeOK
5755
}
58-
internalErr := r.Response.WriteJson(DefaultHandlerResponse{
56+
r.Response.WriteJson(DefaultHandlerResponse{
5957
Code: code.Code(),
6058
Message: msg,
6159
Data: res,
6260
})
63-
if internalErr != nil {
64-
intlog.Errorf(ctx, `%+v`, internalErr)
65-
}
6661
}

0 commit comments

Comments
 (0)