Skip to content

Commit 6e0e597

Browse files
committed
add mocks
1 parent 0f4f733 commit 6e0e597

13 files changed

+359
-87
lines changed

dial.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ func identify(w writeFlusher, r io.Reader) (ProtocolInfo, error) {
398398
return info, err
399399
}
400400

401-
resp, err := readResponse(r)
401+
resp, err := readResponse(r, req)
402402
if err != nil {
403403
return info, err
404404
}
@@ -477,7 +477,7 @@ func authenticate(c Conn, auth Auth, user string, pass string, salt string) erro
477477
if err = writeRequest(c, req); err != nil {
478478
return err
479479
}
480-
if _, err = readResponse(c); err != nil {
480+
if _, err = readResponse(c, req); err != nil {
481481
return err
482482
}
483483
return nil
@@ -501,19 +501,22 @@ func writeRequest(w writeFlusher, req Request) error {
501501
}
502502

503503
// readResponse reads a response from the reader.
504-
func readResponse(r io.Reader) (Response, error) {
504+
func readResponse(r io.Reader, req Request) (Response, error) {
505505
var lenbuf [packetLengthBytes]byte
506506

507507
respBytes, err := read(r, lenbuf[:])
508508
if err != nil {
509-
return &BaseResponse{}, fmt.Errorf("read error: %w", err)
509+
return nil, fmt.Errorf("read error: %w", err)
510510
}
511511

512512
buf := smallBuf{b: respBytes}
513513
header, err := decodeHeader(msgpack.NewDecoder(&smallBuf{}), &buf)
514-
resp := &BaseResponse{header: header, buf: buf}
515514
if err != nil {
516-
return resp, fmt.Errorf("decode response header error: %w", err)
515+
return nil, fmt.Errorf("decode response header error: %w", err)
516+
}
517+
resp, err := req.CreateResponse(header, &buf)
518+
if err != nil {
519+
return nil, fmt.Errorf("creating response error: %w", err)
517520
}
518521
return resp, nil
519522
}

example_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package tarantool_test
22

33
import (
4+
"bytes"
45
"context"
56
"fmt"
67
"net"
@@ -1378,3 +1379,43 @@ func ExampleFdDialer() {
13781379
// Output:
13791380
// <nil>
13801381
}
1382+
1383+
func ExampleMockConnection() {
1384+
conn := test_helpers.NewMockConnection()
1385+
1386+
req := test_helpers.NewMockRequest()
1387+
resp, err := test_helpers.NewMockResponse(tarantool.Header{
1388+
RequestId: 0,
1389+
Code: 0,
1390+
}, bytes.NewReader([]byte{'v', '2'}))
1391+
// nil
1392+
fmt.Println(err)
1393+
1394+
conn.SetResponse(resp)
1395+
1396+
fut := conn.Do(req)
1397+
futResp, futErr := fut.GetResponse()
1398+
// nil
1399+
fmt.Println(futErr)
1400+
1401+
futRespConv, ok := futResp.(*test_helpers.MockResponse)
1402+
if !ok {
1403+
fmt.Println("Failed to convert")
1404+
}
1405+
if futRespConv != resp {
1406+
fmt.Println("Responses are not equal")
1407+
}
1408+
1409+
conn.SetResponse(resp)
1410+
1411+
err = fmt.Errorf("some error")
1412+
conn.SetError(err)
1413+
1414+
fut = conn.Do(req)
1415+
futResp, futErr = fut.GetResponse()
1416+
if futErr != err {
1417+
fmt.Println("Errors are not equal")
1418+
}
1419+
// nil
1420+
fmt.Println(futResp)
1421+
}

future_test.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"github.com/stretchr/testify/assert"
1010
. "github.com/tarantool/go-tarantool/v2"
11+
"github.com/tarantool/go-tarantool/v2/test_helpers"
1112
)
1213

1314
func assertResponseIteratorValue(t testing.TB, it ResponseIterator, resp Response) {
@@ -88,12 +89,11 @@ func TestFutureGetIteratorResponseOnTimeout(t *testing.T) {
8889
pushHeader := Header{}
8990
respHeader := Header{}
9091
push := &PushResponse{}
91-
resp := &BaseResponse{}
92+
resp := &test_helpers.MockResponse{}
9293
fut := NewFuture()
9394
fut.AppendPush(pushHeader, nil)
9495

9596
push.Decode()
96-
resp.Decode()
9797

9898
var done sync.WaitGroup
9999
var wait sync.WaitGroup
@@ -126,20 +126,18 @@ func TestFutureGetIteratorResponseOnTimeout(t *testing.T) {
126126

127127
wait.Wait()
128128

129-
fut.SetRequest(&InsertRequest{})
129+
fut.SetRequest(test_helpers.NewMockRequest())
130130
fut.SetResponse(respHeader, nil)
131131
done.Wait()
132132
}
133133

134134
func TestFutureGetIteratorFirstResponse(t *testing.T) {
135-
resp := &BaseResponse{}
135+
resp := &test_helpers.MockResponse{}
136136
fut := NewFuture()
137-
fut.SetRequest(&InsertRequest{})
137+
fut.SetRequest(test_helpers.NewMockRequest())
138138
fut.SetResponse(Header{}, nil)
139139
fut.SetResponse(Header{}, nil)
140140

141-
resp.Decode()
142-
143141
if it := fut.GetIterator(); it.Next() {
144142
assertResponseIteratorValue(t, it, resp)
145143
if it.Next() == true {
@@ -173,11 +171,11 @@ func TestFutureGetIteratorResponse(t *testing.T) {
173171
responses := []Response{
174172
&PushResponse{},
175173
&PushResponse{},
176-
&BaseResponse{},
174+
&test_helpers.MockResponse{},
177175
}
178176
header := Header{}
179177
fut := NewFuture()
180-
fut.SetRequest(&InsertRequest{})
178+
fut.SetRequest(test_helpers.NewMockRequest())
181179
for i, resp := range responses {
182180
resp.Decode()
183181
if i == len(responses)-1 {
@@ -248,7 +246,7 @@ func TestFutureSetStateRaceCondition(t *testing.T) {
248246

249247
for i := 0; i < 1000; i++ {
250248
fut := NewFuture()
251-
fut.SetRequest(&InsertRequest{})
249+
fut.SetRequest(test_helpers.NewMockRequest())
252250
for j := 0; j < 9; j++ {
253251
go func(opt int) {
254252
if opt%3 == 0 {

pool/connection_pool_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2549,7 +2549,7 @@ func TestDoWithStrangerConn(t *testing.T) {
25492549

25502550
defer connPool.Close()
25512551

2552-
req := test_helpers.NewStrangerRequest()
2552+
req := test_helpers.NewMockRequest()
25532553

25542554
_, err = connPool.Do(req, pool.ANY).Get()
25552555
if err == nil {

prepared.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -99,21 +99,21 @@ func (req *PrepareRequest) Context(ctx context.Context) *PrepareRequest {
9999
// CreateResponse creates a response for the PrepareRequest.
100100
func (req *PrepareRequest) CreateResponse(header Header, body io.Reader) (Response, error) {
101101
if body == nil {
102-
baseResp := BaseResponse{header: header}
103-
return &PrepareResponse{BaseResponse: baseResp}, nil
102+
baseResp := baseResponse{header: header}
103+
return &PrepareResponse{baseResponse: baseResp}, nil
104104
}
105105
if buf, ok := body.(*smallBuf); ok {
106-
baseResp := BaseResponse{header: header, buf: *buf}
107-
return &PrepareResponse{BaseResponse: baseResp}, nil
106+
baseResp := baseResponse{header: header, buf: *buf}
107+
return &PrepareResponse{baseResponse: baseResp}, nil
108108
}
109109
data, err := io.ReadAll(body)
110110
if err != nil {
111111
return nil, err
112112
}
113-
baseResp := BaseResponse{
113+
baseResp := baseResponse{
114114
header: header, buf: smallBuf{b: data},
115115
}
116-
return &PrepareResponse{BaseResponse: baseResp}, nil
116+
return &PrepareResponse{baseResponse: baseResp}, nil
117117
}
118118

119119
// UnprepareRequest helps you to create an unprepare request object for
@@ -200,19 +200,19 @@ func (req *ExecutePreparedRequest) Context(ctx context.Context) *ExecutePrepared
200200
// CreateResponse creates a response for the ExecutePreparedRequest.
201201
func (req *ExecutePreparedRequest) CreateResponse(header Header, body io.Reader) (Response, error) {
202202
if body == nil {
203-
baseResp := BaseResponse{header: header}
204-
return &ExecuteResponse{BaseResponse: baseResp}, nil
203+
baseResp := baseResponse{header: header}
204+
return &ExecuteResponse{baseResponse: baseResp}, nil
205205
}
206206
if buf, ok := body.(*smallBuf); ok {
207-
baseResp := BaseResponse{header: header, buf: *buf}
208-
return &ExecuteResponse{BaseResponse: baseResp}, nil
207+
baseResp := baseResponse{header: header, buf: *buf}
208+
return &ExecuteResponse{baseResponse: baseResp}, nil
209209
}
210210
data, err := io.ReadAll(body)
211211
if err != nil {
212212
return nil, err
213213
}
214-
baseResp := BaseResponse{
214+
baseResp := baseResponse{
215215
header: header, buf: smallBuf{b: data},
216216
}
217-
return &ExecuteResponse{BaseResponse: baseResp}, nil
217+
return &ExecuteResponse{baseResponse: baseResp}, nil
218218
}

request.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -853,16 +853,16 @@ func (req *baseRequest) Ctx() context.Context {
853853
// CreateResponse creates a response for the baseRequest.
854854
func (req *baseRequest) CreateResponse(header Header, body io.Reader) (Response, error) {
855855
if body == nil {
856-
return &BaseResponse{header: header}, nil
856+
return &baseResponse{header: header}, nil
857857
}
858858
if buf, ok := body.(*smallBuf); ok {
859-
return &BaseResponse{header: header, buf: *buf}, nil
859+
return &baseResponse{header: header, buf: *buf}, nil
860860
}
861861
data, err := io.ReadAll(body)
862862
if err != nil {
863863
return nil, err
864864
}
865-
resp := BaseResponse{
865+
resp := baseResponse{
866866
header: header, buf: smallBuf{b: data},
867867
}
868868
return &resp, nil
@@ -961,16 +961,16 @@ func (req authRequest) Body(res SchemaResolver, enc *msgpack.Encoder) error {
961961
// CreateResponse creates a response for the authRequest.
962962
func (req authRequest) CreateResponse(header Header, body io.Reader) (Response, error) {
963963
if body == nil {
964-
return &BaseResponse{header: header}, nil
964+
return &baseResponse{header: header}, nil
965965
}
966966
if buf, ok := body.(*smallBuf); ok {
967-
return &BaseResponse{header: header, buf: *buf}, nil
967+
return &baseResponse{header: header, buf: *buf}, nil
968968
}
969969
data, err := io.ReadAll(body)
970970
if err != nil {
971971
return nil, err
972972
}
973-
resp := BaseResponse{
973+
resp := baseResponse{
974974
header: header, buf: smallBuf{b: data},
975975
}
976976
return &resp, nil
@@ -1121,21 +1121,21 @@ func (req *SelectRequest) Context(ctx context.Context) *SelectRequest {
11211121
// CreateResponse creates a response for the SelectRequest.
11221122
func (req *SelectRequest) CreateResponse(header Header, body io.Reader) (Response, error) {
11231123
if body == nil {
1124-
baseResp := BaseResponse{header: header}
1125-
return &SelectResponse{BaseResponse: baseResp}, nil
1124+
baseResp := baseResponse{header: header}
1125+
return &SelectResponse{baseResponse: baseResp}, nil
11261126
}
11271127
if buf, ok := body.(*smallBuf); ok {
1128-
baseResp := BaseResponse{header: header, buf: *buf}
1129-
return &SelectResponse{BaseResponse: baseResp}, nil
1128+
baseResp := baseResponse{header: header, buf: *buf}
1129+
return &SelectResponse{baseResponse: baseResp}, nil
11301130
}
11311131
data, err := io.ReadAll(body)
11321132
if err != nil {
11331133
return nil, err
11341134
}
1135-
baseResp := BaseResponse{
1135+
baseResp := baseResponse{
11361136
header: header, buf: smallBuf{b: data},
11371137
}
1138-
return &SelectResponse{BaseResponse: baseResp}, nil
1138+
return &SelectResponse{baseResponse: baseResp}, nil
11391139
}
11401140

11411141
// InsertRequest helps you to create an insert request object for execution
@@ -1540,21 +1540,21 @@ func (req *ExecuteRequest) Context(ctx context.Context) *ExecuteRequest {
15401540
// CreateResponse creates a response for the ExecuteRequest.
15411541
func (req *ExecuteRequest) CreateResponse(header Header, body io.Reader) (Response, error) {
15421542
if body == nil {
1543-
baseResp := BaseResponse{header: header}
1544-
return &ExecuteResponse{BaseResponse: baseResp}, nil
1543+
baseResp := baseResponse{header: header}
1544+
return &ExecuteResponse{baseResponse: baseResp}, nil
15451545
}
15461546
if buf, ok := body.(*smallBuf); ok {
1547-
baseResp := BaseResponse{header: header, buf: *buf}
1548-
return &ExecuteResponse{BaseResponse: baseResp}, nil
1547+
baseResp := baseResponse{header: header, buf: *buf}
1548+
return &ExecuteResponse{baseResponse: baseResp}, nil
15491549
}
15501550
data, err := io.ReadAll(body)
15511551
if err != nil {
15521552
return nil, err
15531553
}
1554-
baseResp := BaseResponse{
1554+
baseResp := baseResponse{
15551555
header: header, buf: smallBuf{b: data},
15561556
}
1557-
return &ExecuteResponse{BaseResponse: baseResp}, nil
1557+
return &ExecuteResponse{baseResponse: baseResp}, nil
15581558
}
15591559

15601560
// WatchOnceRequest synchronously fetches the value currently associated with a

0 commit comments

Comments
 (0)