Skip to content

Commit 3c19645

Browse files
authored
Improve read table test coverage: ut to read one row from table by StreamReadTable call (#12118)
1 parent 991917c commit 3c19645

File tree

1 file changed

+41
-14
lines changed

1 file changed

+41
-14
lines changed

ydb/services/ydb/ydb_table_ut.cpp

+41-14
Original file line numberDiff line numberDiff line change
@@ -1787,7 +1787,13 @@ R"___(<main>: Error: Transaction not found: , code: 2015
17871787
UseSnapshot,
17881788
};
17891789

1790-
void TestReadTableMultiShard(EReadTableMultiShardMode mode, bool wholeTable) {
1790+
enum class EReadTableRangeMode {
1791+
OneRow,
1792+
TwoRows,
1793+
WholeTable
1794+
};
1795+
1796+
void TestReadTableMultiShard(EReadTableMultiShardMode mode, EReadTableRangeMode rangeMode) {
17911797
TKikimrWithGrpcAndRootSchema server;
17921798
ui16 grpc = server.GetPort();
17931799

@@ -1833,15 +1839,23 @@ R"___(<main>: Error: Transaction not found: , code: 2015
18331839
.EndTuple();
18341840

18351841
TValueBuilder valueTo;
1836-
valueTo.BeginTuple()
1837-
.AddElement()
1838-
.OptionalUint32(1000000000u)
1839-
.AddElement()
1840-
.OptionalUint64(2000000000u)
1841-
.EndTuple();
1842+
1843+
if (rangeMode == EReadTableRangeMode::OneRow) {
1844+
valueTo.BeginTuple()
1845+
.AddElement()
1846+
.OptionalUint32(1u)
1847+
.EndTuple();
1848+
} else {
1849+
valueTo.BeginTuple()
1850+
.AddElement()
1851+
.OptionalUint32(1000000000u)
1852+
.AddElement()
1853+
.OptionalUint64(2000000000u)
1854+
.EndTuple();
1855+
}
18421856

18431857
TReadTableSettings readTableSettings =
1844-
wholeTable ? TReadTableSettings().Ordered() :
1858+
rangeMode == EReadTableRangeMode::WholeTable ? TReadTableSettings().Ordered() :
18451859
TReadTableSettings()
18461860
.Ordered()
18471861
.From(TKeyBound::Inclusive(valueFrom.Build()))
@@ -1865,7 +1879,7 @@ R"___(<main>: Error: Transaction not found: , code: 2015
18651879
TVector<TRows> expected;
18661880
expected.push_back({1u, 1u, "One"});
18671881
expected.push_back({1000000000u, 2u, "Two"});
1868-
if (wholeTable) {
1882+
if (rangeMode == EReadTableRangeMode::WholeTable) {
18691883
expected.push_back({4294967295u, 4u, "Last"});
18701884
}
18711885
int row = 0;
@@ -1895,26 +1909,39 @@ R"___(<main>: Error: Transaction not found: , code: 2015
18951909
UNIT_ASSERT_VALUES_EQUAL(val, exp.Value);
18961910
}
18971911
}
1898-
UNIT_ASSERT_VALUES_EQUAL(row, wholeTable ? 3 : 2);
1912+
switch (rangeMode) {
1913+
case EReadTableRangeMode::OneRow:
1914+
UNIT_ASSERT_VALUES_EQUAL(row, 1);
1915+
break;
1916+
case EReadTableRangeMode::TwoRows:
1917+
UNIT_ASSERT_VALUES_EQUAL(row, 2);
1918+
break;
1919+
case EReadTableRangeMode::WholeTable:
1920+
UNIT_ASSERT_VALUES_EQUAL(row, 3);
1921+
}
18991922

19001923
// Attempt to call ReadNext on finished iterator causes ContractViolation
19011924
UNIT_ASSERT_EXCEPTION(it.ReadNext().GetValueSync().EOS(), NYdb::TContractViolation);
19021925
}
19031926

19041927
Y_UNIT_TEST(TestReadTableMultiShard) {
1905-
TestReadTableMultiShard(EReadTableMultiShardMode::Normal, false);
1928+
TestReadTableMultiShard(EReadTableMultiShardMode::Normal, EReadTableRangeMode::TwoRows);
19061929
}
19071930

19081931
Y_UNIT_TEST(TestReadTableMultiShardUseSnapshot) {
1909-
TestReadTableMultiShard(EReadTableMultiShardMode::UseSnapshot, false);
1932+
TestReadTableMultiShard(EReadTableMultiShardMode::UseSnapshot, EReadTableRangeMode::TwoRows);
19101933
}
19111934

19121935
Y_UNIT_TEST(TestReadTableMultiShardWholeTable) {
1913-
TestReadTableMultiShard(EReadTableMultiShardMode::Normal, true);
1936+
TestReadTableMultiShard(EReadTableMultiShardMode::Normal, EReadTableRangeMode::WholeTable);
19141937
}
19151938

19161939
Y_UNIT_TEST(TestReadTableMultiShardWholeTableUseSnapshot) {
1917-
TestReadTableMultiShard(EReadTableMultiShardMode::UseSnapshot, true);
1940+
TestReadTableMultiShard(EReadTableMultiShardMode::UseSnapshot, EReadTableRangeMode::WholeTable);
1941+
}
1942+
1943+
Y_UNIT_TEST(TestReadTableMultiShardOneRow) {
1944+
TestReadTableMultiShard(EReadTableMultiShardMode::Normal, EReadTableRangeMode::OneRow);
19181945
}
19191946

19201947
void TestReadTableMultiShardWithDescribe(bool rowLimit) {

0 commit comments

Comments
 (0)