Skip to content

Commit dd0f522

Browse files
authored
Client query cache ut for Prepare + Execute (#2086)
1 parent a049fd4 commit dd0f522

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

ydb/services/ydb/ydb_stats_ut.cpp

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,56 @@ static NYdb::TStatus SimpleSelect(TSession session, const TString& query) {
222222
}
223223

224224
Y_UNIT_TEST_SUITE(ClientStatsCollector) {
225+
Y_UNIT_TEST(PrepareQuery) {
226+
NYdb::TKikimrWithGrpcAndRootSchema server;
227+
auto endpoint = TStringBuilder() << "localhost:" << server.GetPort();
228+
NYdb::TDriver driver(NYdb::TDriverConfig().SetEndpoint(endpoint));
229+
TCountersExtractor extractor;
230+
driver.AddExtension<TCountersExtractExtension>(TCountersExtractExtension::TParams().SetExtractor(&extractor));
231+
auto clSettings = NYdb::NTable::TClientSettings().UseQueryCache(true);
232+
NYdb::NTable::TTableClient client(driver, clSettings);
233+
234+
auto createSessionResult = client.GetSession(TCreateSessionSettings().ClientTimeout(OPERATION_TIMEOUT)).GetValueSync();
235+
UNIT_ASSERT(createSessionResult.IsSuccess());
236+
237+
auto session = createSessionResult.GetSession();
238+
239+
{
240+
auto prepareResult = session.PrepareDataQuery("SELECT 1").GetValueSync();
241+
UNIT_ASSERT_VALUES_EQUAL(prepareResult.IsQueryFromCache(), false);
242+
243+
TStatCounters counters = extractor.Extract();
244+
UNIT_ASSERT_VALUES_EQUAL(counters.CacheMiss, 1);
245+
246+
UNIT_ASSERT(prepareResult.IsSuccess());
247+
248+
{
249+
auto executeResult = prepareResult.GetQuery().Execute(
250+
TTxControl::BeginTx(TTxSettings::SerializableRW())).GetValueSync();
251+
252+
UNIT_ASSERT(executeResult.IsSuccess());
253+
UNIT_ASSERT_VALUES_EQUAL(executeResult.IsQueryFromCache(), false); // <- explicit prepared query
254+
counters = extractor.Extract();
255+
UNIT_ASSERT_VALUES_EQUAL(counters.CacheMiss, 1);
256+
}
257+
258+
auto executeResult = session.ExecuteDataQuery("SELECT 1",
259+
TTxControl::BeginTx(TTxSettings::SerializableRW()).CommitTx()).GetValueSync();
260+
261+
UNIT_ASSERT(executeResult.IsSuccess());
262+
UNIT_ASSERT_VALUES_EQUAL(executeResult.IsQueryFromCache(), true);
263+
counters = extractor.Extract();
264+
UNIT_ASSERT_VALUES_EQUAL(counters.CacheMiss, 1);
265+
}
266+
267+
{
268+
auto prepareResult = session.PrepareDataQuery("SELECT 1").GetValueSync();
269+
UNIT_ASSERT_VALUES_EQUAL(prepareResult.IsQueryFromCache(), true);
270+
auto counters = extractor.Extract();
271+
UNIT_ASSERT_VALUES_EQUAL(counters.CacheMiss, 1);
272+
}
273+
}
274+
225275
Y_UNIT_TEST(CounterCacheMiss) {
226276
NYdb::TKikimrWithGrpcAndRootSchema server;
227277
auto endpoint = TStringBuilder() << "localhost:" << server.GetPort();

0 commit comments

Comments
 (0)