@@ -21,6 +21,93 @@ using namespace NDataShardReadTableTest;
21
21
22
22
Y_UNIT_TEST_SUITE (TDataShardTrace) {
23
23
24
+ void ExecSQL (Tests::TServer::TPtr server,
25
+ TActorId sender,
26
+ const TString &sql,
27
+ Ydb::StatusIds::StatusCode code,
28
+ NWilson::TTraceId traceId = {})
29
+ {
30
+ google::protobuf::Arena arena;
31
+ auto &runtime = *server->GetRuntime ();
32
+ TAutoPtr<IEventHandle> handle;
33
+
34
+ THolder<NKqp::TEvKqp::TEvQueryRequest> request;
35
+ if (traceId) {
36
+ struct RequestCtx : NGRpcService::IRequestCtxMtSafe {
37
+ RequestCtx (NWilson::TTraceId &&traceId) : TraceId(std::move(traceId)) {}
38
+
39
+ NWilson::TTraceId GetWilsonTraceId () const override {
40
+ return TraceId.Clone ();
41
+ }
42
+
43
+ TMaybe<TString> GetTraceId () const override {
44
+ return Nothing ();
45
+ }
46
+
47
+ const TMaybe<TString> GetDatabaseName () const override {
48
+ return " " ;
49
+ }
50
+
51
+ const TIntrusiveConstPtr<NACLib::TUserToken>& GetInternalToken () const override {
52
+ return Ptr ;
53
+ }
54
+
55
+ const TString& GetSerializedToken () const override {
56
+ return Token;
57
+ }
58
+
59
+ bool IsClientLost () const override {
60
+ return false ;
61
+ };
62
+
63
+ virtual const google::protobuf::Message* GetRequest () const override {
64
+ return nullptr ;
65
+ };
66
+
67
+ const TMaybe<TString> GetRequestType () const override {
68
+ return " _document_api_request" ;
69
+ };
70
+
71
+ void SetFinishAction (std::function<void ()>&& cb) override {
72
+ Y_UNUSED (cb);
73
+ };
74
+
75
+ google::protobuf::Arena* GetArena () override {
76
+ return nullptr ;
77
+ };
78
+
79
+ TIntrusiveConstPtr<NACLib::TUserToken> Ptr ;
80
+ TString Token;
81
+ NWilson::TTraceId TraceId;
82
+ };
83
+
84
+ auto *txControl = google::protobuf::Arena::CreateMessage<Ydb::Table::TransactionControl>(&arena);
85
+ txControl->mutable_begin_tx ()->mutable_serializable_read_write ();
86
+ txControl->set_commit_tx (true );
87
+
88
+ auto ptr = std::make_shared<RequestCtx>(std::move (traceId));
89
+ request = MakeHolder<NKqp::TEvKqp::TEvQueryRequest>(
90
+ NKikimrKqp::QUERY_ACTION_EXECUTE,
91
+ NKikimrKqp::QUERY_TYPE_SQL_DML,
92
+ TActorId (),
93
+ ptr,
94
+ TString (), // sessionId
95
+ TString (sql),
96
+ TString (), // queryId
97
+ txControl, // tx_control
98
+ nullptr , // ydbParameters
99
+ Ydb::Table::QueryStatsCollection::STATS_COLLECTION_UNSPECIFIED, // collectStats
100
+ nullptr , // query_cache_policy
101
+ nullptr // operationParams
102
+ );
103
+ } else {
104
+ request = MakeSQLRequest (sql, true );
105
+ }
106
+ runtime.Send (new IEventHandle (NKqp::MakeKqpProxyID (runtime.GetNodeId ()), sender, request.Release (), 0 , 0 , nullptr ));
107
+ auto ev = runtime.GrabEdgeEventRethrow <NKqp::TEvKqp::TEvQueryResponse>(sender);
108
+ UNIT_ASSERT_VALUES_EQUAL (ev->Get ()->Record .GetRef ().GetYdbStatus (), code);
109
+ }
110
+
24
111
class FakeWilsonUploader : public TActorBootstrapped <FakeWilsonUploader> {
25
112
public:
26
113
class Span {
@@ -232,7 +319,6 @@ Y_UNIT_TEST_SUITE(TDataShardTrace) {
232
319
server,
233
320
sender,
234
321
" UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 100), (3, 300), (5, 500), (7, 700), (9, 900);" ,
235
- true ,
236
322
Ydb::StatusIds::SUCCESS,
237
323
std::move (traceId)
238
324
);
@@ -292,15 +378,13 @@ Y_UNIT_TEST_SUITE(TDataShardTrace) {
292
378
server,
293
379
sender,
294
380
" UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 100), (3, 300), (5, 500), (7, 700), (9, 900);" ,
295
- true ,
296
381
Ydb::StatusIds::SUCCESS
297
382
);
298
383
299
384
ExecSQL (
300
385
server,
301
386
sender,
302
387
" UPSERT INTO `/Root/table-1` (key, value) VALUES (2, 100), (4, 300), (6, 500), (8, 700), (10, 900);" ,
303
- true ,
304
388
Ydb::StatusIds::SUCCESS
305
389
);
306
390
@@ -326,7 +410,6 @@ Y_UNIT_TEST_SUITE(TDataShardTrace) {
326
410
server,
327
411
sender,
328
412
" SELECT * FROM `/Root/table-1` WHERE key = 1 OR key = 3 OR key = 5 OR key = 7 OR key = 9;" ,
329
- true ,
330
413
Ydb::StatusIds::SUCCESS,
331
414
std::move (traceId)
332
415
);
@@ -342,23 +425,23 @@ Y_UNIT_TEST_SUITE(TDataShardTrace) {
342
425
auto lookupActorSpan = trace.Root .BFSFindOne (" LookupActor" );
343
426
UNIT_ASSERT (lookupActorSpan);
344
427
345
- auto dsReads = lookupActorSpan->get ().FindAll (" DataShard .Read" ); // Lookup actor sends EvRead to each shard.
428
+ auto dsReads = lookupActorSpan->get ().FindAll (" Datashard .Read" ); // Lookup actor sends EvRead to each shard.
346
429
UNIT_ASSERT_EQUAL (dsReads.size (), 2 );
347
430
348
431
canon = " (Session.query.QUERY_ACTION_EXECUTE -> [(CompileService -> [(CompileActor)]) "
349
432
" , (DataExecuter -> [(WaitForTableResolve) , (WaitForSnapshot) , (ComputeActor) "
350
- " , (ComputeActor -> [(LookupActor -> [(WaitForShardsResolve) , (DataShard .Read "
433
+ " , (ComputeActor -> [(LookupActor -> [(WaitForShardsResolve) , (Datashard .Read "
351
434
" -> [(Tablet.Transaction -> [(Tablet.Transaction.Execute -> [(Datashard.Unit) "
352
435
" , (Datashard.Unit) , (Datashard.Unit)]) , (Tablet.Transaction.Wait) , (Tablet.Transaction.Enqueued) "
353
436
" , (Tablet.Transaction.Execute -> [(Datashard.Unit)]) , (Tablet.Transaction.Wait) , (Tablet.Transaction.Enqueued) "
354
437
" , (Tablet.Transaction.Execute -> [(Datashard.Unit) , (Datashard.Unit)]) , (Tablet.WriteLog "
355
- " -> [(Tablet.WriteLog.LogEntry)])]) , (ReadIterator.ReadOperation) ]) , (DataShard .Read "
438
+ " -> [(Tablet.WriteLog.LogEntry)])])]) , (Datashard .Read "
356
439
" -> [(Tablet.Transaction -> [(Tablet.Transaction.Execute -> [(Datashard.Unit) , (Datashard.Unit) "
357
440
" , (Datashard.Unit)]) , (Tablet.Transaction.Wait) , (Tablet.Transaction.Enqueued) "
358
441
" , (Tablet.Transaction.Execute -> [(Datashard.Unit)]) , (Tablet.Transaction.Wait) "
359
442
" , (Tablet.Transaction.Enqueued) , (Tablet.Transaction.Execute -> [(Datashard.Unit) "
360
- " , (Datashard.Unit)]) , (Tablet.WriteLog -> [(Tablet.WriteLog.LogEntry)])]) "
361
- " , (ReadIterator.ReadOperation) ])])]) , (ComputeActor) , (RunTasks)])])" ;
443
+ " , (Datashard.Unit)]) , (Tablet.WriteLog -> [(Tablet.WriteLog.LogEntry)])])"
444
+ " ])])]) , (ComputeActor) , (RunTasks)])])" ;
362
445
} else {
363
446
auto deSpan = trace.Root .BFSFindOne (" DataExecuter" );
364
447
UNIT_ASSERT (deSpan);
@@ -419,15 +502,13 @@ Y_UNIT_TEST_SUITE(TDataShardTrace) {
419
502
server,
420
503
sender,
421
504
" UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 100), (3, 300), (5, 500), (7, 700), (9, 900);" ,
422
- true ,
423
505
Ydb::StatusIds::SUCCESS
424
506
);
425
507
426
508
ExecSQL (
427
509
server,
428
510
sender,
429
511
" UPSERT INTO `/Root/table-1` (key, value) VALUES (2, 100), (4, 300), (6, 500), (8, 700), (10, 900);" ,
430
- true ,
431
512
Ydb::StatusIds::SUCCESS
432
513
);
433
514
@@ -437,7 +518,6 @@ Y_UNIT_TEST_SUITE(TDataShardTrace) {
437
518
server,
438
519
sender,
439
520
" SELECT * FROM `/Root/table-1`;" ,
440
- true ,
441
521
Ydb::StatusIds::SUCCESS,
442
522
std::move (traceId)
443
523
);
@@ -451,17 +531,17 @@ Y_UNIT_TEST_SUITE(TDataShardTrace) {
451
531
auto readActorSpan = trace.Root .BFSFindOne (" ReadActor" );
452
532
UNIT_ASSERT (readActorSpan);
453
533
454
- auto dsReads = readActorSpan->get ().FindAll (" DataShard .Read" ); // Read actor sends EvRead to each shard.
534
+ auto dsReads = readActorSpan->get ().FindAll (" Datashard .Read" ); // Read actor sends EvRead to each shard.
455
535
UNIT_ASSERT_EQUAL (dsReads.size (), 2 );
456
536
457
537
std::string canon = " (Session.query.QUERY_ACTION_EXECUTE -> [(CompileService -> [(CompileActor)]) , "
458
538
" (DataExecuter -> [(WaitForTableResolve) , (WaitForShardsResolve) , (WaitForSnapshot) , (ComputeActor) , "
459
539
" (RunTasks) , (KqpNode.SendTasks) , (ComputeActor -> [(ReadActor -> [(WaitForShardsResolve) , "
460
- " (DataShard .Read -> [(Tablet.Transaction -> [(Tablet.Transaction.Execute -> [(Datashard.Unit) , "
461
- " (Datashard.Unit) , (Datashard.Unit) , (Datashard.Unit)]) , (Tablet.WriteLog -> [(Tablet.WriteLog.LogEntry)])]) , "
462
- " (ReadIterator.ReadOperation) ]) , (DataShard .Read -> [(Tablet.Transaction -> [(Tablet.Transaction.Execute -> "
540
+ " (Datashard .Read -> [(Tablet.Transaction -> [(Tablet.Transaction.Execute -> [(Datashard.Unit) , "
541
+ " (Datashard.Unit) , (Datashard.Unit) , (Datashard.Unit)]) , (Tablet.WriteLog -> [(Tablet.WriteLog.LogEntry)])])"
542
+ " ]) , (Datashard .Read -> [(Tablet.Transaction -> [(Tablet.Transaction.Execute -> "
463
543
" [(Datashard.Unit) , (Datashard.Unit) , (Datashard.Unit) , (Datashard.Unit)]) , (Tablet.WriteLog -> "
464
- " [(Tablet.WriteLog.LogEntry)])]) , (ReadIterator.ReadOperation) ])])])])])" ;
544
+ " [(Tablet.WriteLog.LogEntry)])])])])])])])" ;
465
545
UNIT_ASSERT_VALUES_EQUAL (canon, trace.ToString ());
466
546
}
467
547
0 commit comments