@@ -2,6 +2,7 @@ package tarantool_test
2
2
3
3
import (
4
4
"bytes"
5
+ "context"
5
6
"errors"
6
7
"testing"
7
8
"time"
@@ -30,6 +31,11 @@ const validTimeout = 500 * time.Millisecond
30
31
31
32
var validStmt * Prepared = & Prepared {StatementID : 1 , Conn : & Connection {}}
32
33
34
+ var validProtocolInfo ProtocolInfo = ProtocolInfo {
35
+ Version : ProtocolVersion (3 ),
36
+ Features : []ProtocolFeature {StreamsFeature },
37
+ }
38
+
33
39
type ValidSchemeResolver struct {
34
40
}
35
41
@@ -184,6 +190,7 @@ func TestRequestsCodes(t *testing.T) {
184
190
{req : NewBeginRequest (), code : BeginRequestCode },
185
191
{req : NewCommitRequest (), code : CommitRequestCode },
186
192
{req : NewRollbackRequest (), code : RollbackRequestCode },
193
+ {req : NewIdRequest (validProtocolInfo ), code : IdRequestCode },
187
194
{req : NewBroadcastRequest (validKey ), code : CallRequestCode },
188
195
}
189
196
@@ -216,6 +223,7 @@ func TestRequestsAsync(t *testing.T) {
216
223
{req : NewBeginRequest (), async : false },
217
224
{req : NewCommitRequest (), async : false },
218
225
{req : NewRollbackRequest (), async : false },
226
+ {req : NewIdRequest (validProtocolInfo ), async : false },
219
227
{req : NewBroadcastRequest (validKey ), async : false },
220
228
}
221
229
@@ -226,6 +234,73 @@ func TestRequestsAsync(t *testing.T) {
226
234
}
227
235
}
228
236
237
+ func TestRequestsCtx_default (t * testing.T ) {
238
+ tests := []struct {
239
+ req Request
240
+ expected context.Context
241
+ }{
242
+ {req : NewSelectRequest (validSpace ), expected : nil },
243
+ {req : NewUpdateRequest (validSpace ), expected : nil },
244
+ {req : NewUpsertRequest (validSpace ), expected : nil },
245
+ {req : NewInsertRequest (validSpace ), expected : nil },
246
+ {req : NewReplaceRequest (validSpace ), expected : nil },
247
+ {req : NewDeleteRequest (validSpace ), expected : nil },
248
+ {req : NewCall16Request (validExpr ), expected : nil },
249
+ {req : NewCall17Request (validExpr ), expected : nil },
250
+ {req : NewEvalRequest (validExpr ), expected : nil },
251
+ {req : NewExecuteRequest (validExpr ), expected : nil },
252
+ {req : NewPingRequest (), expected : nil },
253
+ {req : NewPrepareRequest (validExpr ), expected : nil },
254
+ {req : NewUnprepareRequest (validStmt ), expected : nil },
255
+ {req : NewExecutePreparedRequest (validStmt ), expected : nil },
256
+ {req : NewBeginRequest (), expected : nil },
257
+ {req : NewCommitRequest (), expected : nil },
258
+ {req : NewRollbackRequest (), expected : nil },
259
+ {req : NewIdRequest (validProtocolInfo ), expected : nil },
260
+ {req : NewBroadcastRequest (validKey ), expected : nil },
261
+ }
262
+
263
+ for _ , test := range tests {
264
+ if ctx := test .req .Ctx (); ctx != test .expected {
265
+ t .Errorf ("An invalid ctx %t, expected %t" , ctx , test .expected )
266
+ }
267
+ }
268
+ }
269
+
270
+ func TestRequestsCtx_setter (t * testing.T ) {
271
+ ctx := context .Background ()
272
+ tests := []struct {
273
+ req Request
274
+ expected context.Context
275
+ }{
276
+ {req : NewSelectRequest (validSpace ).Context (ctx ), expected : ctx },
277
+ {req : NewUpdateRequest (validSpace ).Context (ctx ), expected : ctx },
278
+ {req : NewUpsertRequest (validSpace ).Context (ctx ), expected : ctx },
279
+ {req : NewInsertRequest (validSpace ).Context (ctx ), expected : ctx },
280
+ {req : NewReplaceRequest (validSpace ).Context (ctx ), expected : ctx },
281
+ {req : NewDeleteRequest (validSpace ).Context (ctx ), expected : ctx },
282
+ {req : NewCall16Request (validExpr ).Context (ctx ), expected : ctx },
283
+ {req : NewCall17Request (validExpr ).Context (ctx ), expected : ctx },
284
+ {req : NewEvalRequest (validExpr ).Context (ctx ), expected : ctx },
285
+ {req : NewExecuteRequest (validExpr ).Context (ctx ), expected : ctx },
286
+ {req : NewPingRequest ().Context (ctx ), expected : ctx },
287
+ {req : NewPrepareRequest (validExpr ).Context (ctx ), expected : ctx },
288
+ {req : NewUnprepareRequest (validStmt ).Context (ctx ), expected : ctx },
289
+ {req : NewExecutePreparedRequest (validStmt ).Context (ctx ), expected : ctx },
290
+ {req : NewBeginRequest ().Context (ctx ), expected : ctx },
291
+ {req : NewCommitRequest ().Context (ctx ), expected : ctx },
292
+ {req : NewRollbackRequest ().Context (ctx ), expected : ctx },
293
+ {req : NewIdRequest (validProtocolInfo ).Context (ctx ), expected : ctx },
294
+ {req : NewBroadcastRequest (validKey ).Context (ctx ), expected : ctx },
295
+ }
296
+
297
+ for _ , test := range tests {
298
+ if ctx := test .req .Ctx (); ctx != test .expected {
299
+ t .Errorf ("An invalid ctx %t, expected %t" , ctx , test .expected )
300
+ }
301
+ }
302
+ }
303
+
229
304
func TestPingRequestDefaultValues (t * testing.T ) {
230
305
var refBuf bytes.Buffer
231
306
0 commit comments