@@ -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
);
@@ -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
);
0 commit comments