github.com/XiaoMi/Gaea@v1.2.5/mysql/conn_test.go (about)

     1  package mysql
     2  
     3  import (
     4  	"bufio"
     5  	"github.com/XiaoMi/Gaea/util/mocks/pipeTest"
     6  	"github.com/stretchr/testify/require"
     7  	"testing"
     8  )
     9  
    10  // TestMariadbConnWithoutDB 为用来测试数据库一开始连线的详细流程,以下测试不使用 MariaDB 的服务器,只是单纯的单元测试
    11  func TestMariadbConnWithoutDB(t *testing.T) {
    12  	// 函数测试开始
    13  	t.Run("MariaDB连接 的抽换缓存测试", func(t *testing.T) {
    14  		// 开始模拟
    15  		mockClient, mockServer := pipeTest.NewDcServerClient(t, pipeTest.TestReplyMsgFunc) // 产生 Gaea 和 MariaDB 模拟物件
    16  
    17  		// 针对这次测试进行临时修改
    18  		err := mockClient.OverwriteConnBufWrite(nil, writersPool.Get().(*bufio.Writer))
    19  		mockClient.GetBufWriter().Reset(mockClient.GetConnWrite())
    20  		require.Equal(t, err, nil)
    21  
    22  		// 产生一开始的讯息和预期讯息
    23  		msg0 := []uint8{0}  // 起始传送讯息
    24  		correct := uint8(0) // 预期之后的正确讯息
    25  
    26  		// 开始进行讯息操作
    27  
    28  		// 写入部份
    29  		mockClient.SendOrReceiveMsg(msg0) // 模拟客户端传送讯息
    30  		require.Equal(t, msg0[0], correct)
    31  
    32  		// 读取部份
    33  		msg1 := mockClient.ReplyMsg(mockServer) // 模拟服务端接收讯息
    34  		correct++
    35  		require.Equal(t, msg1[0], correct)
    36  	})
    37  }