From e5fa341f39956159f664bcc4eff17882726477b1 Mon Sep 17 00:00:00 2001 From: John Date: Wed, 19 Jun 2019 23:56:14 +0800 Subject: [PATCH] improve codes --- g/crypto/gcrc32/gcrc32_test.go | 5 ++- g/crypto/gmd5/gmd5_test.go | 14 +++---- g/crypto/gsha1/gsha1_test.go | 6 +-- g/encoding/gcompress/gcompress_test.go | 27 ++++++++----- g/net/gudp/gudp_conn.go | 52 +++++++++++++------------- g/net/gudp/gudp_func.go | 10 ----- g/os/gcfg/gcfg_z_unit_test.go | 4 +- 7 files changed, 61 insertions(+), 57 deletions(-) diff --git a/g/crypto/gcrc32/gcrc32_test.go b/g/crypto/gcrc32/gcrc32_test.go index 7a67d1c41..753e1c034 100644 --- a/g/crypto/gcrc32/gcrc32_test.go +++ b/g/crypto/gcrc32/gcrc32_test.go @@ -9,9 +9,10 @@ package gcrc32_test import ( - "github.com/gogf/gf/g/crypto/gmd5" "testing" + "github.com/gogf/gf/g/crypto/gmd5" + "github.com/gogf/gf/g/crypto/gcrc32" "github.com/gogf/gf/g/test/gtest" ) @@ -36,7 +37,7 @@ func TestEncrypt(t *testing.T) { gtest.AssertEQ(int(encrypt1), result) gtest.AssertEQ(int(encrypt2), result) - strmd5 := gmd5.Encrypt(s) + strmd5, _ := gmd5.Encrypt(s) test1 := gcrc32.Encrypt(strmd5) test2 := gcrc32.Encrypt([]byte(strmd5)) gtest.AssertEQ(test2, test1) diff --git a/g/crypto/gmd5/gmd5_test.go b/g/crypto/gmd5/gmd5_test.go index 9f8b9f94b..7cbfcf696 100644 --- a/g/crypto/gmd5/gmd5_test.go +++ b/g/crypto/gmd5/gmd5_test.go @@ -30,11 +30,11 @@ type user struct { func TestEncrypt(t *testing.T) { gtest.Case(t, func() { - encryptString := gmd5.Encrypt(s) + encryptString, _ := gmd5.Encrypt(s) gtest.Assert(encryptString, result) result := "1427562bb29f88a1161590b76398ab72" - encrypt := gmd5.Encrypt(123456) + encrypt, _ := gmd5.Encrypt(123456) gtest.AssertEQ(encrypt, result) }) @@ -45,14 +45,14 @@ func TestEncrypt(t *testing.T) { age: 23, } result := "70917ebce8bd2f78c736cda63870fb39" - encrypt := gmd5.Encrypt(user) + encrypt, _ := gmd5.Encrypt(user) gtest.AssertEQ(encrypt, result) }) } func TestEncryptString(t *testing.T) { gtest.Case(t, func() { - encryptString := gmd5.EncryptString(s) + encryptString, _ := gmd5.EncryptString(s) gtest.Assert(encryptString, result) }) } @@ -66,11 +66,11 @@ func TestEncryptFile(t *testing.T) { defer os.Remove(path) defer file.Close() gtest.Assert(err, nil) - file.Write([]byte("Hello Go Frame")) - encryptFile := gmd5.EncryptFile(path) + _, _ = file.Write([]byte("Hello Go Frame")) + encryptFile, _ := gmd5.EncryptFile(path) gtest.AssertEQ(encryptFile, result) // when the file is not exist,encrypt will return empty string - errEncrypt := gmd5.EncryptFile(errorPath) + errEncrypt, _ := gmd5.EncryptFile(errorPath) gtest.AssertEQ(errEncrypt, "") }) diff --git a/g/crypto/gsha1/gsha1_test.go b/g/crypto/gsha1/gsha1_test.go index 773473c11..b3c1dad76 100644 --- a/g/crypto/gsha1/gsha1_test.go +++ b/g/crypto/gsha1/gsha1_test.go @@ -57,11 +57,11 @@ func TestEncryptFile(t *testing.T) { defer os.Remove(path) defer file.Close() gtest.Assert(err, nil) - file.Write([]byte("Hello Go Frame")) - encryptFile := gsha1.EncryptFile(path) + _, _ = file.Write([]byte("Hello Go Frame")) + encryptFile, _ := gsha1.EncryptFile(path) gtest.AssertEQ(encryptFile, result) // when the file is not exist,encrypt will return empty string - errEncrypt := gsha1.EncryptFile(errPath) + errEncrypt, _ := gsha1.EncryptFile(errPath) gtest.AssertEQ(errEncrypt, "") }) } diff --git a/g/encoding/gcompress/gcompress_test.go b/g/encoding/gcompress/gcompress_test.go index ac34a2027..31f161649 100644 --- a/g/encoding/gcompress/gcompress_test.go +++ b/g/encoding/gcompress/gcompress_test.go @@ -7,23 +7,29 @@ package gcompress_test import ( + "testing" + "github.com/gogf/gf/g/encoding/gcompress" "github.com/gogf/gf/g/test/gtest" - "testing" ) func TestZlib(t *testing.T) { gtest.Case(t, func() { src := "hello, world\n" dst := []byte{120, 156, 202, 72, 205, 201, 201, 215, 81, 40, 207, 47, 202, 73, 225, 2, 4, 0, 0, 255, 255, 33, 231, 4, 147} - gtest.Assert(gcompress.Zlib([]byte(src)), dst) + data, _ := gcompress.Zlib([]byte(src)) + gtest.Assert(data, dst) - gtest.Assert(gcompress.UnZlib(dst), []byte(src)) + data, _ = gcompress.UnZlib(dst) + gtest.Assert(data, []byte(src)) - gtest.Assert(gcompress.Zlib(nil), nil) - gtest.Assert(gcompress.UnZlib(nil), nil) + data, _ = gcompress.Zlib(nil) + gtest.Assert(data, nil) + data, _ = gcompress.UnZlib(nil) + gtest.Assert(data, nil) - gtest.Assert(gcompress.UnZlib(dst[1:]), nil) + data, _ = gcompress.UnZlib(dst[1:]) + gtest.Assert(data, nil) }) } @@ -43,9 +49,12 @@ func TestGzip(t *testing.T) { } arr := []byte(src) - gtest.Assert(gcompress.Gzip(arr), gzip) + data, _ := gcompress.Gzip(arr) + gtest.Assert(data, gzip) - gtest.Assert(gcompress.UnGzip(gzip), arr) + data, _ = gcompress.UnGzip(gzip) + gtest.Assert(data, arr) - gtest.Assert(gcompress.UnGzip(gzip[1:]), nil) + data, _ = gcompress.UnGzip(gzip[1:]) + gtest.Assert(data, nil) } diff --git a/g/net/gudp/gudp_conn.go b/g/net/gudp/gudp_conn.go index 50b30b5d9..1d59791f9 100644 --- a/g/net/gudp/gudp_conn.go +++ b/g/net/gudp/gudp_conn.go @@ -7,6 +7,7 @@ package gudp import ( + "errors" "io" "net" "time" @@ -14,9 +15,8 @@ import ( // 封装的UDP链接对象 type Conn struct { - conn *net.UDPConn // 底层链接对象 + *net.UDPConn // 底层链接对象 raddr *net.UDPAddr // 远程地址 - buffer []byte // 读取缓冲区(用于数据读取时的缓冲区处理) recvDeadline time.Time // 读取超时时间 sendDeadline time.Time // 写入超时时间 recvBufferWait time.Duration // 读取全部缓冲区数据时,读取完毕后的写入等待间隔 @@ -45,7 +45,7 @@ func NewConn(raddr string, laddr ...string) (*Conn, error) { // 将*net.UDPConn对象转换为*Conn对象 func NewConnByNetConn(udp *net.UDPConn) *Conn { return &Conn{ - conn: udp, + UDPConn: udp, recvDeadline: time.Time{}, sendDeadline: time.Time{}, recvBufferWait: gRECV_ALL_WAIT_TIMEOUT, @@ -56,9 +56,9 @@ func NewConnByNetConn(udp *net.UDPConn) *Conn { func (c *Conn) Send(data []byte, retry ...Retry) (err error) { for { if c.raddr != nil { - _, err = c.conn.WriteToUDP(data, c.raddr) + _, err = c.WriteToUDP(data, c.raddr) } else { - _, err = c.conn.Write(data) + _, err = c.Write(data) } if err != nil { // 链接已关闭 @@ -104,11 +104,11 @@ func (c *Conn) Recv(length int, retry ...Retry) ([]byte, error) { for { if length < 0 && index > 0 { bufferWait = true - if err = c.conn.SetReadDeadline(time.Now().Add(c.recvBufferWait)); err != nil { + if err = c.SetReadDeadline(time.Now().Add(c.recvBufferWait)); err != nil { return nil, err } } - size, raddr, err = c.conn.ReadFromUDP(buffer[index:]) + size, raddr, err = c.ReadFromUDP(buffer[index:]) if err == nil { c.raddr = raddr } @@ -138,7 +138,7 @@ func (c *Conn) Recv(length int, retry ...Retry) ([]byte, error) { } // 判断数据是否全部读取完毕(由于超时机制的存在,获取的数据完整性不可靠) if bufferWait && isTimeout(err) { - if err = c.conn.SetReadDeadline(c.recvDeadline); err != nil { + if err = c.SetReadDeadline(c.recvDeadline); err != nil { return nil, err } err = nil @@ -176,21 +176,31 @@ func (c *Conn) SendRecv(data []byte, receive int, retry ...Retry) ([]byte, error } // 带超时时间的数据获取 -func (c *Conn) RecvWithTimeout(length int, timeout time.Duration, retry ...Retry) ([]byte, error) { +func (c *Conn) RecvWithTimeout(length int, timeout time.Duration, retry ...Retry) (data []byte, err error) { if err := c.SetRecvDeadline(time.Now().Add(timeout)); err != nil { return nil, err } - defer c.SetRecvDeadline(time.Time{}) - return c.Recv(length, retry...) + defer func() { + if e := c.SetRecvDeadline(time.Time{}); e != nil { + err = errors.New(err.Error() + "; " + e.Error()) + } + }() + data, err = c.Recv(length, retry...) + return } // 带超时时间的数据发送 -func (c *Conn) SendWithTimeout(data []byte, timeout time.Duration, retry ...Retry) error { +func (c *Conn) SendWithTimeout(data []byte, timeout time.Duration, retry ...Retry) (err error) { if err := c.SetSendDeadline(time.Now().Add(timeout)); err != nil { return err } - defer c.SetSendDeadline(time.Time{}) - return c.Send(data, retry...) + defer func() { + if e := c.SetSendDeadline(time.Time{}); e != nil { + err = errors.New(err.Error() + "; " + e.Error()) + } + }() + err = c.Send(data, retry...) + return } // 发送数据并等待接收返回数据(带返回超时等待时间) @@ -203,7 +213,7 @@ func (c *Conn) SendRecvWithTimeout(data []byte, receive int, timeout time.Durati } func (c *Conn) SetDeadline(t time.Time) error { - err := c.conn.SetDeadline(t) + err := c.UDPConn.SetDeadline(t) if err == nil { c.recvDeadline = t c.sendDeadline = t @@ -212,7 +222,7 @@ func (c *Conn) SetDeadline(t time.Time) error { } func (c *Conn) SetRecvDeadline(t time.Time) error { - err := c.conn.SetReadDeadline(t) + err := c.SetReadDeadline(t) if err == nil { c.recvDeadline = t } @@ -220,7 +230,7 @@ func (c *Conn) SetRecvDeadline(t time.Time) error { } func (c *Conn) SetSendDeadline(t time.Time) error { - err := c.conn.SetWriteDeadline(t) + err := c.SetWriteDeadline(t) if err == nil { c.sendDeadline = t } @@ -233,17 +243,9 @@ func (c *Conn) SetRecvBufferWait(d time.Duration) { c.recvBufferWait = d } -func (c *Conn) LocalAddr() net.Addr { - return c.conn.LocalAddr() -} - // 不能使用c.conn.RemoteAddr(),其返回为nil, // 这里使用c.raddr获取远程连接地址。 func (c *Conn) RemoteAddr() net.Addr { //return c.conn.RemoteAddr() return c.raddr } - -func (c *Conn) Close() error { - return c.conn.Close() -} diff --git a/g/net/gudp/gudp_func.go b/g/net/gudp/gudp_func.go index 702dee05b..cf82f5567 100644 --- a/g/net/gudp/gudp_func.go +++ b/g/net/gudp/gudp_func.go @@ -10,16 +10,6 @@ import ( "net" ) -// Deprecated. -// 常见的二进制数据校验方式,生成校验结果 -func Checksum(buffer []byte) uint32 { - var checksum uint32 - for _, b := range buffer { - checksum += uint32(b) - } - return checksum -} - // 创建标准库UDP链接操作对象 func NewNetConn(raddr string, laddr ...string) (*net.UDPConn, error) { var err error diff --git a/g/os/gcfg/gcfg_z_unit_test.go b/g/os/gcfg/gcfg_z_unit_test.go index e930db2dc..858a1e4f7 100644 --- a/g/os/gcfg/gcfg_z_unit_test.go +++ b/g/os/gcfg/gcfg_z_unit_test.go @@ -237,7 +237,9 @@ func Test_Instance(t *testing.T) { path := gcfg.DEFAULT_CONFIG_FILE err := gfile.PutContents(path, config) gtest.Assert(err, nil) - defer gtest.Assert(gfile.Remove(path), nil) + defer func() { + gtest.Assert(gfile.Remove(path), nil) + }() c := gcfg.Instance() gtest.Assert(c.Get("v1"), 1)