Skip to content

Commit d1b8fc6

Browse files
authored
Stop using LocalMKQL and LocalSchemeTx msgbus requests in tests (#8515)
1 parent df9b0c1 commit d1b8fc6

File tree

7 files changed

+94
-97
lines changed

7 files changed

+94
-97
lines changed

ydb/core/client/client_ut.cpp

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include <ydb/library/services/services.pb.h>
33
#include <ydb/core/tablet/tablet_impl.h>
44
#include <ydb/core/testlib/test_client.h>
5+
#include <ydb/core/testlib/tx_helpers.h>
56
#include <ydb/core/tx/tx_proxy/proxy.h>
67
#include <ydb/core/util/console.h>
78
#include <ydb/core/client/minikql_compile/yql_expr_minikql.h>
@@ -337,11 +338,13 @@ Y_UNIT_TEST_SUITE(TClientTest) {
337338
TClient client(settings);
338339

339340
NKikimrMiniKQL::TResult res;
340-
UNIT_ASSERT(client.LocalQuery(TxAllocator, "("
341-
"(let row '('('dummyKey (Bool 'true))))"
342-
"(let select '('reservedIds))"
343-
"(return (AsList (SetResult 'reservedIds (SelectRow 'config row select))))"
344-
")", res));
341+
UNIT_ASSERT_VALUES_EQUAL(
342+
LocalQuery(*server.GetRuntime(), TxAllocator, "("
343+
"(let row '('('dummyKey (Bool 'true))))"
344+
"(let select '('reservedIds))"
345+
"(return (AsList (SetResult 'reservedIds (SelectRow 'config row select))))"
346+
")", res),
347+
NKikimrProto::OK);
345348

346349
{
347350
TValue value = TValue::Create(res.GetValue(), res.GetType());
@@ -1792,15 +1795,14 @@ Y_UNIT_TEST_SUITE(TClientTest) {
17921795

17931796
const auto settings = TServerSettings(port);
17941797
TServer server(settings);
1795-
TClient client(settings);
17961798

17971799
NTabletFlatScheme::TSchemeChanges scheme1;
17981800
NTabletFlatScheme::TSchemeChanges scheme2;
17991801
TString err;
1800-
bool success = client.LocalSchemeTx(Tests::Hive, "", true, scheme1, err);
1801-
UNIT_ASSERT(success);
1802-
success = client.LocalSchemeTx(Tests::Hive, "", false, scheme2, err);
1803-
UNIT_ASSERT(success);
1802+
auto status = LocalSchemeTx(*server.GetRuntime(), Tests::Hive, "", true, scheme1, err);
1803+
UNIT_ASSERT_VALUES_EQUAL(status, NKikimrProto::OK);
1804+
status = LocalSchemeTx(*server.GetRuntime(), Tests::Hive, "", false, scheme2, err);
1805+
UNIT_ASSERT_VALUES_EQUAL(status, NKikimrProto::OK);
18041806

18051807
UNIT_ASSERT_VALUES_EQUAL(ToString(scheme1), ToString(scheme2));
18061808
}
@@ -1815,10 +1817,10 @@ Y_UNIT_TEST_SUITE(TClientTest) {
18151817

18161818
NTabletFlatScheme::TSchemeChanges scheme;
18171819
TString err;
1818-
bool success = false;
1820+
NKikimrProto::EReplyStatus status;
18191821

1820-
success = client.LocalSchemeTx(Tests::Hive, "", true, scheme, err);
1821-
UNIT_ASSERT(success);
1822+
status = LocalSchemeTx(*server.GetRuntime(), Tests::Hive, "", true, scheme, err);
1823+
UNIT_ASSERT_VALUES_EQUAL(status, NKikimrProto::OK);
18221824
TString oldScheme = ToString(scheme);
18231825

18241826
TString change = R"___(
@@ -1836,17 +1838,18 @@ Y_UNIT_TEST_SUITE(TClientTest) {
18361838
)___";
18371839

18381840
// Dry run first
1839-
success = client.LocalSchemeTx(Tests::Hive, change, true, scheme, err);
1840-
UNIT_ASSERT(success);
1841+
status = LocalSchemeTx(*server.GetRuntime(), Tests::Hive, change, true, scheme, err);
1842+
UNIT_ASSERT_VALUES_EQUAL(status, NKikimrProto::OK);
18411843
TString dryRunScheme = ToString(scheme);
18421844
// Re-read
1843-
success = client.LocalSchemeTx(Tests::Hive, "", true, scheme, err);
1845+
status = LocalSchemeTx(*server.GetRuntime(), Tests::Hive, "", true, scheme, err);
1846+
UNIT_ASSERT_VALUES_EQUAL(status, NKikimrProto::OK);
18441847
TString newScheme = ToString(scheme);
18451848
UNIT_ASSERT_VALUES_EQUAL_C(newScheme, oldScheme, "Schema changed by dry-run");
18461849

18471850
// Update
1848-
success = client.LocalSchemeTx(Tests::Hive, change, false, scheme, err);
1849-
UNIT_ASSERT(success);
1851+
status = LocalSchemeTx(*server.GetRuntime(), Tests::Hive, change, false, scheme, err);
1852+
UNIT_ASSERT_VALUES_EQUAL(status, NKikimrProto::OK);
18501853
newScheme = ToString(scheme);
18511854
UNIT_ASSERT_VALUES_EQUAL_C(newScheme, dryRunScheme, "Dry-run result is not equal");
18521855

@@ -1868,10 +1871,10 @@ Y_UNIT_TEST_SUITE(TClientTest) {
18681871

18691872
NTabletFlatScheme::TSchemeChanges schemeInitial;
18701873
TString err;
1871-
bool success = false;
1874+
NKikimrProto::EReplyStatus status;
18721875

1873-
success = client.LocalSchemeTx(Tests::DummyTablet1, "", true, schemeInitial, err);
1874-
UNIT_ASSERT(success);
1876+
status = LocalSchemeTx(*server.GetRuntime(), Tests::DummyTablet1, "", true, schemeInitial, err);
1877+
UNIT_ASSERT_VALUES_EQUAL(status, NKikimrProto::OK);
18751878
const TString oldScheme = ToString(schemeInitial);
18761879

18771880
TString change = R"___(
@@ -1883,8 +1886,8 @@ Y_UNIT_TEST_SUITE(TClientTest) {
18831886

18841887
// Update
18851888
NTabletFlatScheme::TSchemeChanges schemeChanged;
1886-
success = client.LocalSchemeTx(Tests::DummyTablet1, change, false, schemeChanged, err);
1887-
UNIT_ASSERT(success);
1889+
status = LocalSchemeTx(*server.GetRuntime(), Tests::DummyTablet1, change, false, schemeChanged, err);
1890+
UNIT_ASSERT_VALUES_EQUAL(status, NKikimrProto::OK);
18881891
const TString newScheme = ToString(schemeChanged);
18891892

18901893
TString schemaDiff = DiffStrings(oldScheme, newScheme);

ydb/core/client/flat_ut.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <ydb/core/base/appdata.h>
44
#include <ydb/core/testlib/test_client.h>
5+
#include <ydb/core/testlib/tx_helpers.h>
56
#include <ydb/core/tx/tx_proxy/proxy.h>
67
#include <ydb/core/tx/datashard/datashard.h>
78
#include <ydb/core/tx/schemeshard/schemeshard.h>
@@ -1146,15 +1147,15 @@ Y_UNIT_TEST_SUITE(TFlatTest) {
11461147
ui64 schemeShardTabletId = Tests::ChangeStateStorage(Tests::SchemeRoot, Tests::TestDomain);
11471148

11481149
NKikimrMiniKQL::TResult result;
1149-
bool ok = annoyingClient.LocalQuery(schemeShardTabletId, Sprintf(R"(
1150+
auto status = LocalQuery(*cleverServer.GetRuntime(), schemeShardTabletId, Sprintf(R"(
11501151
(
11511152
(let key '('('Id (Uint64 '3)))) # SysParam_IsReadOnlyMode
11521153
(let value '('('Value (Utf8 '"%s"))))
11531154
(let ret (AsList (UpdateRow 'SysParams key value)))
11541155
(return ret)
11551156
))", (isReadOnly ? "1" : "0")), result);
11561157
// Cerr << result << "\n";
1157-
UNIT_ASSERT(ok);
1158+
UNIT_ASSERT_VALUES_EQUAL(status, NKikimrProto::OK);
11581159
annoyingClient.KillTablet(cleverServer, schemeShardTabletId);
11591160

11601161
// Wait for schemeshard to restart

ydb/core/client/flat_ut_client.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,9 @@ class TFlatMsgBusClient : public Tests::TClient {
7777
runtime->Send(new IEventHandle(MakeTabletResolverID(), sender, new TEvTabletResolver::TEvTabletProblem(tabletId, TActorId())));
7878
runtime->Send(new IEventHandle(MakeTabletResolverID(), sender, new TEvTabletResolver::TEvForward(tabletId, nullptr)));
7979

80-
TAutoPtr<IEventHandle> handle;
81-
auto forwardResult = runtime->GrabEdgeEventRethrow<TEvTabletResolver::TEvForwardResult>(handle);
82-
UNIT_ASSERT(forwardResult && forwardResult->Tablet);
83-
runtime->Send(new IEventHandle(forwardResult->Tablet, sender, new TEvents::TEvPoisonPill()));
80+
auto ev = runtime->GrabEdgeEventRethrow<TEvTabletResolver::TEvForwardResult>(sender);
81+
UNIT_ASSERT(ev && ev->Get()->Tablet);
82+
runtime->Send(new IEventHandle(ev->Get()->Tablet, sender, new TEvents::TEvPoisonPill()));
8483
runtime->Send(new IEventHandle(MakeTabletResolverID(), sender, new TEvTabletResolver::TEvTabletProblem(tabletId, TActorId())));
8584
}
8685

ydb/core/testlib/test_client.cpp

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2219,54 +2219,6 @@ namespace Tests {
22192219
UNIT_ASSERT((NMsgBusProxy::EResponseStatus)responseDelete.GetStatus());
22202220
}
22212221

2222-
bool TClient::LocalQuery(const ui64 tabletId, const TString &pgmText, NKikimrMiniKQL::TResult& result) {
2223-
TAutoPtr<NMsgBusProxy::TBusTabletLocalMKQL> request = new NMsgBusProxy::TBusTabletLocalMKQL();
2224-
request->Record.SetTabletID(ChangeStateStorage(tabletId, Domain));
2225-
request->Record.SetWithRetry(true);
2226-
auto *mkql = request->Record.MutableProgram();
2227-
mkql->MutableProgram()->SetText(pgmText);
2228-
2229-
TAutoPtr<NBus::TBusMessage> reply;
2230-
auto status = SyncCall(request, reply);
2231-
UNIT_ASSERT_VALUES_EQUAL(status, NBus::MESSAGE_OK);
2232-
2233-
const NKikimrClient::TResponse &response = dynamic_cast<NMsgBusProxy::TBusResponse *>(reply.Get())->Record;
2234-
UNIT_ASSERT_VALUES_EQUAL(response.GetStatus(), NMsgBusProxy::MSTATUS_OK);
2235-
2236-
if (response.HasExecutionEngineEvaluatedResponse())
2237-
result.CopyFrom(response.GetExecutionEngineEvaluatedResponse());
2238-
2239-
return response.GetExecutionEngineResponseStatus() == ui32(NMiniKQL::IEngineFlat::EStatus::Complete);
2240-
}
2241-
2242-
bool TClient::LocalSchemeTx(const ui64 tabletId, const NTabletFlatScheme::TSchemeChanges& changes, bool dryRun,
2243-
NTabletFlatScheme::TSchemeChanges& scheme, TString& err) {
2244-
TAutoPtr<NMsgBusProxy::TBusTabletLocalSchemeTx> request = new NMsgBusProxy::TBusTabletLocalSchemeTx();
2245-
request->Record.SetTabletID(ChangeStateStorage(tabletId, Domain));
2246-
request->Record.SetDryRun(dryRun);
2247-
auto *schemeChanges = request->Record.MutableSchemeChanges();
2248-
schemeChanges->CopyFrom(changes);
2249-
2250-
TAutoPtr<NBus::TBusMessage> reply;
2251-
auto status = SyncCall(request, reply);
2252-
UNIT_ASSERT_EQUAL(status, NBus::MESSAGE_OK);
2253-
2254-
const NKikimrClient::TResponse &response = dynamic_cast<NMsgBusProxy::TBusResponse *>(reply.Get())->Record;
2255-
UNIT_ASSERT_EQUAL(response.GetStatus(), NMsgBusProxy::MSTATUS_OK);
2256-
2257-
err = response.GetErrorReason();
2258-
scheme.CopyFrom(response.GetLocalDbScheme());
2259-
2260-
return err.empty();
2261-
}
2262-
2263-
bool TClient::LocalSchemeTx(const ui64 tabletId, const TString &schemeChangesStr, bool dryRun,
2264-
NTabletFlatScheme::TSchemeChanges& scheme, TString& err) {
2265-
NTabletFlatScheme::TSchemeChanges schemeChanges;
2266-
::google::protobuf::TextFormat::ParseFromString(schemeChangesStr, &schemeChanges);
2267-
return LocalSchemeTx(tabletId, schemeChanges, dryRun, scheme, err);
2268-
}
2269-
22702222
bool TClient::Compile(const TString &mkql, TString &compiled) {
22712223
TAutoPtr<NMsgBusProxy::TBusRequest> request = new NMsgBusProxy::TBusRequest();
22722224
auto* mkqlTx = request->Record.MutableTransaction()->MutableMiniKQLTransaction();

ydb/core/testlib/test_client.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -487,11 +487,6 @@ namespace Tests {
487487
ui32 FlatQueryRaw(const TString &query, TFlatQueryOptions& opts, NKikimrClient::TResponse& response, int retryCnt = 10);
488488

489489
bool Compile(const TString &mkql, TString &compiled);
490-
bool LocalQuery(ui64 tabletId, const TString &pgmText, NKikimrMiniKQL::TResult& result);
491-
bool LocalSchemeTx(const ui64 tabletId, const NTabletFlatScheme::TSchemeChanges& schemeChanges, bool dryRun,
492-
NTabletFlatScheme::TSchemeChanges& scheme, TString& err);
493-
bool LocalSchemeTx(const ui64 tabletId, const TString& schemeChanges, bool dryRun,
494-
NTabletFlatScheme::TSchemeChanges& scheme, TString& err);
495490
void SetSecurityToken(const TString& token) { SecurityToken = token; }
496491
void ModifyOwner(const TString& parent, const TString& name, const TString& owner);
497492
void ModifyACL(const TString& parent, const TString& name, const TString& acl);

ydb/core/testlib/tx_helpers.cpp

Lines changed: 48 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,64 @@
66

77
#include <ydb/core/base/tablet.h>
88
#include <ydb/core/testlib/tablet_helpers.h>
9+
#include <ydb/core/protos/tx_proxy.pb.h>
10+
#include <ydb/library/mkql_proto/protos/minikql.pb.h>
911

1012
namespace NKikimr {
1113

12-
NKikimrProto::EReplyStatus LocalSchemeTx(TTestActorRuntime& runtime, ui64 tabletId, const TString& schemeChangesStr, bool dryRun,
13-
NTabletFlatScheme::TSchemeChanges& scheme, TString& err) {
14+
NKikimrProto::EReplyStatus LocalQuery(TTestActorRuntime& runtime, ui64 tabletId,
15+
const TString& program, NKikimrMiniKQL::TResult& result)
16+
{
1417
TActorId sender = runtime.AllocateEdgeActor();
1518

16-
auto evTx = new TEvTablet::TEvLocalSchemeTx;
17-
evTx->Record.SetDryRun(dryRun);
18-
auto schemeChanges = evTx->Record.MutableSchemeChanges();
19-
bool parseResult = ::google::protobuf::TextFormat::ParseFromString(schemeChangesStr, schemeChanges);
20-
UNIT_ASSERT_C(parseResult, "protobuf parsing failed");
19+
auto* req = new TEvTablet::TEvLocalMKQL;
20+
auto* tx = req->Record.MutableProgram();
21+
tx->MutableProgram()->SetText(program);
22+
23+
ForwardToTablet(runtime, tabletId, sender, req);
24+
25+
auto ev = runtime.GrabEdgeEvent<TEvTablet::TEvLocalMKQLResponse>(sender);
26+
UNIT_ASSERT(ev);
27+
auto* msg = ev->Get();
28+
29+
result = msg->Record.GetExecutionEngineEvaluatedResponse();
30+
31+
// emulate enum behavior from proto3
32+
return static_cast<NKikimrProto::EReplyStatus>(msg->Record.GetStatus());
33+
}
2134

22-
ForwardToTablet(runtime, tabletId, sender, evTx);
35+
NKikimrProto::EReplyStatus LocalSchemeTx(TTestActorRuntime& runtime, ui64 tabletId,
36+
const NTabletFlatScheme::TSchemeChanges& schemeChanges, bool dryRun,
37+
NTabletFlatScheme::TSchemeChanges& scheme, TString& err)
38+
{
39+
TActorId sender = runtime.AllocateEdgeActor();
40+
41+
auto* req = new TEvTablet::TEvLocalSchemeTx;
42+
*req->Record.MutableSchemeChanges() = schemeChanges;
43+
req->Record.SetDryRun(dryRun);
2344

24-
TAutoPtr<IEventHandle> handle;
25-
auto event = runtime.GrabEdgeEvent<TEvTablet::TEvLocalSchemeTxResponse>(handle);
26-
UNIT_ASSERT(event);
45+
ForwardToTablet(runtime, tabletId, sender, req);
2746

28-
err = event->Record.GetErrorReason();
29-
scheme.CopyFrom(event->Record.GetFullScheme());
47+
auto ev = runtime.GrabEdgeEvent<TEvTablet::TEvLocalSchemeTxResponse>(sender);
48+
UNIT_ASSERT(ev);
49+
auto* msg = ev->Get();
50+
51+
err = msg->Record.GetErrorReason();
52+
scheme.CopyFrom(msg->Record.GetFullScheme());
3053

3154
// emulate enum behavior from proto3
32-
return static_cast<NKikimrProto::EReplyStatus>(event->Record.GetStatus());
55+
return static_cast<NKikimrProto::EReplyStatus>(msg->Record.GetStatus());
56+
}
57+
58+
NKikimrProto::EReplyStatus LocalSchemeTx(TTestActorRuntime& runtime, ui64 tabletId,
59+
const TString& schemeChangesStr, bool dryRun,
60+
NTabletFlatScheme::TSchemeChanges& scheme, TString& err)
61+
{
62+
NTabletFlatScheme::TSchemeChanges schemeChanges;
63+
bool parseResult = ::google::protobuf::TextFormat::ParseFromString(schemeChangesStr, &schemeChanges);
64+
UNIT_ASSERT_C(parseResult, "protobuf parsing failed");
65+
66+
return LocalSchemeTx(runtime, tabletId, schemeChanges, dryRun, scheme, err);
3367
}
3468

3569
ui64 GetExecutorCacheSize(TTestActorRuntime& runtime, ui64 tabletId) {

ydb/core/testlib/tx_helpers.h

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,22 @@
33
#include <ydb/core/protos/scheme_log.pb.h>
44
#include <ydb/core/testlib/actors/test_runtime.h>
55

6+
namespace NKikimrMiniKQL {
7+
class TResult;
8+
}
9+
610
namespace NKikimr {
711

8-
NKikimrProto::EReplyStatus LocalSchemeTx(TTestActorRuntime& runtime, ui64 tabletId, const TString& schemeChangesStr, bool dryRun, NTabletFlatScheme::TSchemeChanges& scheme, TString& err);
12+
NKikimrProto::EReplyStatus LocalQuery(TTestActorRuntime& runtime, ui64 tabletId,
13+
const TString& program, NKikimrMiniKQL::TResult& result);
14+
15+
NKikimrProto::EReplyStatus LocalSchemeTx(TTestActorRuntime& runtime, ui64 tabletId,
16+
const NTabletFlatScheme::TSchemeChanges& schemeChanges, bool dryRun,
17+
NTabletFlatScheme::TSchemeChanges& scheme, TString& err);
18+
19+
NKikimrProto::EReplyStatus LocalSchemeTx(TTestActorRuntime& runtime, ui64 tabletId,
20+
const TString& schemeChangesStr, bool dryRun,
21+
NTabletFlatScheme::TSchemeChanges& scheme, TString& err);
922

1023
ui64 GetExecutorCacheSize(TTestActorRuntime& runtime, ui64 tabletId);
1124

0 commit comments

Comments
 (0)