Skip to content

Commit 46d758c

Browse files
committed
add mocks
1 parent d94caa4 commit 46d758c

13 files changed

+354
-86
lines changed

dial.go

+5-5
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,17 +501,17 @@ 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}
514+
resp, _ := req.CreateResponse(header, &buf)
515515
if err != nil {
516516
return resp, fmt.Errorf("decode response header error: %w", err)
517517
}

example_test.go

+41
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

+8-10
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

+1-1
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

+12-12
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 &PrepareResponse{BaseResponse: baseResp}, nil
203+
baseResp := baseResponse{header: header}
204+
return &PrepareResponse{baseResponse: baseResp}, nil
205205
}
206206
if buf, ok := body.(*smallBuf); ok {
207-
baseResp := BaseResponse{header: header, buf: *buf}
208-
return &PrepareResponse{BaseResponse: baseResp}, nil
207+
baseResp := baseResponse{header: header, buf: *buf}
208+
return &PrepareResponse{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 &PrepareResponse{BaseResponse: baseResp}, nil
217+
return &PrepareResponse{baseResponse: baseResp}, nil
218218
}

request.go

+18-18
Original file line numberDiff line numberDiff line change
@@ -851,16 +851,16 @@ func (req *baseRequest) Ctx() context.Context {
851851
// CreateResponse creates a response for the baseRequest.
852852
func (req *baseRequest) CreateResponse(header Header, body io.Reader) (Response, error) {
853853
if body == nil {
854-
return &BaseResponse{header: header}, nil
854+
return &baseResponse{header: header}, nil
855855
}
856856
if buf, ok := body.(*smallBuf); ok {
857-
return &BaseResponse{header: header, buf: *buf}, nil
857+
return &baseResponse{header: header, buf: *buf}, nil
858858
}
859859
data, err := io.ReadAll(body)
860860
if err != nil {
861861
return nil, err
862862
}
863-
resp := BaseResponse{
863+
resp := baseResponse{
864864
header: header, buf: smallBuf{b: data},
865865
}
866866
return &resp, nil
@@ -959,16 +959,16 @@ func (req authRequest) Body(res SchemaResolver, enc *msgpack.Encoder) error {
959959
// CreateResponse creates a response for the authRequest.
960960
func (req authRequest) CreateResponse(header Header, body io.Reader) (Response, error) {
961961
if body == nil {
962-
return &BaseResponse{header: header}, nil
962+
return &baseResponse{header: header}, nil
963963
}
964964
if buf, ok := body.(*smallBuf); ok {
965-
return &BaseResponse{header: header, buf: *buf}, nil
965+
return &baseResponse{header: header, buf: *buf}, nil
966966
}
967967
data, err := io.ReadAll(body)
968968
if err != nil {
969969
return nil, err
970970
}
971-
resp := BaseResponse{
971+
resp := baseResponse{
972972
header: header, buf: smallBuf{b: data},
973973
}
974974
return &resp, nil
@@ -1119,21 +1119,21 @@ func (req *SelectRequest) Context(ctx context.Context) *SelectRequest {
11191119
// CreateResponse creates a response for the SelectRequest.
11201120
func (req *SelectRequest) CreateResponse(header Header, body io.Reader) (Response, error) {
11211121
if body == nil {
1122-
baseResp := BaseResponse{header: header}
1123-
return &SelectResponse{BaseResponse: baseResp}, nil
1122+
baseResp := baseResponse{header: header}
1123+
return &SelectResponse{baseResponse: baseResp}, nil
11241124
}
11251125
if buf, ok := body.(*smallBuf); ok {
1126-
baseResp := BaseResponse{header: header, buf: *buf}
1127-
return &SelectResponse{BaseResponse: baseResp}, nil
1126+
baseResp := baseResponse{header: header, buf: *buf}
1127+
return &SelectResponse{baseResponse: baseResp}, nil
11281128
}
11291129
data, err := io.ReadAll(body)
11301130
if err != nil {
11311131
return nil, err
11321132
}
1133-
baseResp := BaseResponse{
1133+
baseResp := baseResponse{
11341134
header: header, buf: smallBuf{b: data},
11351135
}
1136-
return &SelectResponse{BaseResponse: baseResp}, nil
1136+
return &SelectResponse{baseResponse: baseResp}, nil
11371137
}
11381138

11391139
// InsertRequest helps you to create an insert request object for execution
@@ -1538,21 +1538,21 @@ func (req *ExecuteRequest) Context(ctx context.Context) *ExecuteRequest {
15381538
// CreateResponse creates a response for the ExecuteRequest.
15391539
func (req *ExecuteRequest) CreateResponse(header Header, body io.Reader) (Response, error) {
15401540
if body == nil {
1541-
baseResp := BaseResponse{header: header}
1542-
return &ExecuteResponse{BaseResponse: baseResp}, nil
1541+
baseResp := baseResponse{header: header}
1542+
return &ExecuteResponse{baseResponse: baseResp}, nil
15431543
}
15441544
if buf, ok := body.(*smallBuf); ok {
1545-
baseResp := BaseResponse{header: header, buf: *buf}
1546-
return &ExecuteResponse{BaseResponse: baseResp}, nil
1545+
baseResp := baseResponse{header: header, buf: *buf}
1546+
return &ExecuteResponse{baseResponse: baseResp}, nil
15471547
}
15481548
data, err := io.ReadAll(body)
15491549
if err != nil {
15501550
return nil, err
15511551
}
1552-
baseResp := BaseResponse{
1552+
baseResp := baseResponse{
15531553
header: header, buf: smallBuf{b: data},
15541554
}
1555-
return &ExecuteResponse{BaseResponse: baseResp}, nil
1555+
return &ExecuteResponse{baseResponse: baseResp}, nil
15561556
}
15571557

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

0 commit comments

Comments
 (0)