summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorosidorkin <[email protected]>2025-06-17 01:03:56 +0300
committerosidorkin <[email protected]>2025-06-17 01:52:58 +0300
commitbf74ddbe253520bb319de416e11f72852a220d13 (patch)
treef786b62f740a6499ddfe64287e23d0665a173d63
parent40f36772b5a21d68533d95ac9bd09c69d950a186 (diff)
YT-23172: Add replication cards update batcher
commit_hash:f67934a4ec5af90d14a71de8c14fbc4709b7bf8e
-rw-r--r--yt/yt/client/chaos_client/replication_card.cpp9
-rw-r--r--yt/yt/client/chaos_client/replication_card.h1
-rw-r--r--yt/yt/client/unittests/replication_card_ut.cpp95
3 files changed, 101 insertions, 4 deletions
diff --git a/yt/yt/client/chaos_client/replication_card.cpp b/yt/yt/client/chaos_client/replication_card.cpp
index fbea014df25..c3a9495c39f 100644
--- a/yt/yt/client/chaos_client/replication_card.cpp
+++ b/yt/yt/client/chaos_client/replication_card.cpp
@@ -119,6 +119,15 @@ bool TReplicationCardFetchOptions::Contains(const TReplicationCardFetchOptions&
return (selfMask | NDetail::ToBitMask(other)) == selfMask;
}
+TReplicationCardFetchOptions& TReplicationCardFetchOptions::operator |= (const TReplicationCardFetchOptions& other)
+{
+ IncludeCoordinators |= other.IncludeCoordinators;
+ IncludeProgress |= other.IncludeProgress;
+ IncludeHistory |= other.IncludeHistory;
+ IncludeReplicatedTableOptions |= other.IncludeReplicatedTableOptions;
+ return *this;
+}
+
////////////////////////////////////////////////////////////////////////////////
void FormatValue(
diff --git a/yt/yt/client/chaos_client/replication_card.h b/yt/yt/client/chaos_client/replication_card.h
index 19c36bbb6e8..3dad3aaf546 100644
--- a/yt/yt/client/chaos_client/replication_card.h
+++ b/yt/yt/client/chaos_client/replication_card.h
@@ -91,6 +91,7 @@ struct TReplicationCardFetchOptions
operator size_t() const;
bool operator == (const TReplicationCardFetchOptions& other) const = default;
+ TReplicationCardFetchOptions& operator |= (const TReplicationCardFetchOptions& other);
bool Contains(const TReplicationCardFetchOptions& other) const;
};
diff --git a/yt/yt/client/unittests/replication_card_ut.cpp b/yt/yt/client/unittests/replication_card_ut.cpp
index a3114ae7d80..deb50b042f5 100644
--- a/yt/yt/client/unittests/replication_card_ut.cpp
+++ b/yt/yt/client/unittests/replication_card_ut.cpp
@@ -12,7 +12,7 @@ using namespace NYson;
////////////////////////////////////////////////////////////////////////////////
-class TReplicationCardFetchOptionsTest
+class TReplicationCardFetchOptionsContainsTest
: public ::testing::Test
, public ::testing::WithParamInterface<std::tuple<
TReplicationCardFetchOptions,
@@ -20,7 +20,7 @@ class TReplicationCardFetchOptionsTest
bool>>
{ };
-TEST_P(TReplicationCardFetchOptionsTest, Contains)
+TEST_P(TReplicationCardFetchOptionsContainsTest, Contains)
{
const auto& params = GetParam();
auto self = std::get<0>(params);
@@ -36,8 +36,8 @@ TEST_P(TReplicationCardFetchOptionsTest, Contains)
}
INSTANTIATE_TEST_SUITE_P(
- TReplicationCardFetchOptionsTest,
- TReplicationCardFetchOptionsTest,
+ TReplicationCardFetchOptionsContainsTest,
+ TReplicationCardFetchOptionsContainsTest,
::testing::Values(
std::tuple(
TReplicationCardFetchOptions {
@@ -97,6 +97,93 @@ INSTANTIATE_TEST_SUITE_P(
false)
));
+
+class TReplicationCardFetchOptionsOrTest
+ : public ::testing::Test
+ , public ::testing::WithParamInterface<std::tuple<
+ TReplicationCardFetchOptions,
+ TReplicationCardFetchOptions,
+ TReplicationCardFetchOptions>>
+{ };
+
+TEST_P(TReplicationCardFetchOptionsOrTest, Or)
+{
+ const auto& params = GetParam();
+ auto self = std::get<0>(params);
+ auto& other = std::get<1>(params);
+ auto expected = std::get<2>(params);
+
+
+ EXPECT_EQ(self |= other, expected)
+ << "progress: " << std::get<0>(params) << std::endl
+ << "update: " << std::get<1>(params) << std::endl
+ << "expected: " << std::get<2>(params) << std::endl
+ << "actual: " << self.Contains(other) << std::endl;
+}
+
+INSTANTIATE_TEST_SUITE_P(
+ TReplicationCardFetchOptionsOrTest,
+ TReplicationCardFetchOptionsOrTest,
+ ::testing::Values(
+ std::tuple(
+ TReplicationCardFetchOptions {
+ .IncludeCoordinators = true,
+ .IncludeProgress = true,
+ .IncludeHistory = true,
+ .IncludeReplicatedTableOptions = true,
+ },
+ TReplicationCardFetchOptions {
+ .IncludeCoordinators = false,
+ .IncludeProgress = false,
+ .IncludeHistory = false,
+ .IncludeReplicatedTableOptions = false,
+ },
+ TReplicationCardFetchOptions {
+ .IncludeCoordinators = true,
+ .IncludeProgress = true,
+ .IncludeHistory = true,
+ .IncludeReplicatedTableOptions = true,
+ }),
+ std::tuple(
+ TReplicationCardFetchOptions {
+ .IncludeCoordinators = true,
+ .IncludeProgress = true,
+ .IncludeHistory = true,
+ .IncludeReplicatedTableOptions = true,
+ },
+ TReplicationCardFetchOptions {
+ .IncludeCoordinators = true,
+ .IncludeProgress = true,
+ .IncludeHistory = true,
+ .IncludeReplicatedTableOptions = true,
+ },
+ TReplicationCardFetchOptions {
+ .IncludeCoordinators = true,
+ .IncludeProgress = true,
+ .IncludeHistory = true,
+ .IncludeReplicatedTableOptions = true,
+ }),
+ std::tuple(
+ TReplicationCardFetchOptions {
+ .IncludeCoordinators = false,
+ .IncludeProgress = true,
+ .IncludeHistory = true,
+ .IncludeReplicatedTableOptions = false,
+ },
+ TReplicationCardFetchOptions {
+ .IncludeCoordinators = false,
+ .IncludeProgress = false,
+ .IncludeHistory = true,
+ .IncludeReplicatedTableOptions = true,
+ },
+ TReplicationCardFetchOptions {
+ .IncludeCoordinators = false,
+ .IncludeProgress = true,
+ .IncludeHistory = true,
+ .IncludeReplicatedTableOptions = true,
+ }
+)));
+
////////////////////////////////////////////////////////////////////////////////
class TReplicationCardIsReplicaReallySyncTest