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  }