improve ghttp.GracefulServer; add more unit test case for ghttp.Server.Middleware

This commit is contained in:
John
2019-11-26 14:56:05 +08:00
parent 9b1cc6e9c7
commit 22e3705d3e
2 changed files with 32 additions and 17 deletions

View File

@ -11,14 +11,12 @@ import (
"crypto/tls"
"errors"
"fmt"
"github.com/gogf/gf/os/glog"
"github.com/gogf/gf/os/gproc"
"log"
"net"
"net/http"
"os"
"time"
"github.com/gogf/gf/os/glog"
"github.com/gogf/gf/os/gproc"
)
// 优雅的Web Server对象封装
@ -154,22 +152,12 @@ func (s *gracefulServer) getNetListener(itemFunc string) (net.Listener, error) {
return nil, err
}
} else {
// 如果监听失败1秒后重试最多重试3次
for i := 0; i < 3; i++ {
ln, err = net.Listen("tcp", itemFunc)
if err != nil {
err = fmt.Errorf("%d: net.Listen error: %v", gproc.Pid(), err)
time.Sleep(time.Second)
} else {
err = nil
break
}
}
ln, err = net.Listen("tcp", itemFunc)
if err != nil {
return nil, err
err = fmt.Errorf("%d: net.Listen error: %v", gproc.Pid(), err)
}
}
return ln, nil
return ln, err
}
// 执行请求优雅关闭

View File

@ -61,6 +61,33 @@ func Test_BindMiddleware_Basic1(t *testing.T) {
}
func Test_BindMiddleware_Basic2(t *testing.T) {
p := ports.PopRand()
s := g.Server(p)
s.BindHandler("/test/test", func(r *ghttp.Request) {
r.Response.Write("test")
})
s.BindMiddleware("/*", func(r *ghttp.Request) {
r.Response.Write("1")
r.Middleware.Next()
r.Response.Write("2")
})
s.SetPort(p)
s.SetDumpRouteMap(false)
s.Start()
defer s.Shutdown()
time.Sleep(100 * time.Millisecond)
gtest.Case(t, func() {
client := ghttp.NewClient()
client.SetPrefix(fmt.Sprintf("http://127.0.0.1:%d", p))
gtest.Assert(client.GetContent("/"), "12")
gtest.Assert(client.GetContent("/test"), "12")
gtest.Assert(client.GetContent("/test/test"), "1test2")
})
}
func Test_BindMiddleware_Basic3(t *testing.T) {
p := ports.PopRand()
s := g.Server(p)
s.BindHandler("/test/test", func(r *ghttp.Request) {