github.com/cnotch/ipchub@v1.1.0/network/socket/buffered/conn_test.go (about) 1 // Copyright (c) 2019,CAOHONGJU All rights reserved. 2 // Use of this source code is governed by a MIT-style 3 // license that can be found in the LICENSE file. 4 5 package buffered 6 7 import ( 8 "net" 9 "testing" 10 "time" 11 12 "github.com/stretchr/testify/assert" 13 "github.com/kelindar/rate" 14 ) 15 16 func TestConn(t *testing.T) { 17 conn := NewConn(new(fakeConn)) 18 defer conn.Close() 19 20 assert.Equal(t, 0, conn.Buffered()) 21 assert.Nil(t, conn.LocalAddr()) 22 assert.Nil(t, conn.RemoteAddr()) 23 assert.Nil(t, conn.SetDeadline(time.Now())) 24 assert.Nil(t, conn.SetReadDeadline(time.Now())) 25 assert.Nil(t, conn.SetWriteDeadline(time.Now())) 26 27 conn.limit = rate.New(1, time.Millisecond) 28 for i := 0; i < 100; i++ { 29 _, err := conn.Write([]byte{1, 2, 3}) 30 assert.NoError(t, err) 31 } 32 time.Sleep(10 * time.Millisecond) 33 _, err := conn.Write([]byte{1, 2, 3}) 34 assert.NoError(t, err) 35 conn.Write(make([]byte, 122*1024)) 36 assert.Equal(t, defaultBufferSize, conn.writer.Cap(), "buffer can't extend") 37 } 38 39 // ------------------------------------------------------------------------------------ 40 41 type fakeConn struct{} 42 43 func (m *fakeConn) Read(p []byte) (int, error) { 44 return 0, nil 45 } 46 47 func (m *fakeConn) Write(p []byte) (int, error) { 48 if len(p) > minBufferSize { 49 return minBufferSize, nil 50 } 51 return len(p), nil 52 } 53 54 func (m *fakeConn) Close() error { 55 return nil 56 } 57 58 func (m *fakeConn) LocalAddr() net.Addr { 59 return nil 60 } 61 62 func (m *fakeConn) RemoteAddr() net.Addr { 63 return nil 64 } 65 66 func (m *fakeConn) SetDeadline(t time.Time) error { 67 return nil 68 } 69 70 func (m *fakeConn) SetReadDeadline(t time.Time) error { 71 return nil 72 } 73 74 func (m *fakeConn) SetWriteDeadline(t time.Time) error { 75 return nil 76 }