diff options
| author | osidorkin <[email protected]> | 2025-06-17 01:03:56 +0300 |
|---|---|---|
| committer | osidorkin <[email protected]> | 2025-06-17 01:52:58 +0300 |
| commit | bf74ddbe253520bb319de416e11f72852a220d13 (patch) | |
| tree | f786b62f740a6499ddfe64287e23d0665a173d63 | |
| parent | 40f36772b5a21d68533d95ac9bd09c69d950a186 (diff) | |
YT-23172: Add replication cards update batcher
commit_hash:f67934a4ec5af90d14a71de8c14fbc4709b7bf8e
| -rw-r--r-- | yt/yt/client/chaos_client/replication_card.cpp | 9 | ||||
| -rw-r--r-- | yt/yt/client/chaos_client/replication_card.h | 1 | ||||
| -rw-r--r-- | yt/yt/client/unittests/replication_card_ut.cpp | 95 |
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 |
