@@ -42,39 +42,45 @@ const auto kCountIdxRowsStmt = Format("SELECT COUNT(1) FROM $0 WHERE $1 IN (0,1,
4242
4343YB_STRONGLY_TYPED_BOOL (RangePartitioned);
4444
45- class XClusterUpgradeTest : public UpgradeTestBase {
45+ class XClusterUpgradeTestBase : public UpgradeTestBase {
4646 public:
47- XClusterUpgradeTest () : UpgradeTestBase(kBuild_2_25_0_0 ) {}
47+ explicit XClusterUpgradeTestBase (const std::string& from_version)
48+ : UpgradeTestBase(from_version) {}
4849
49- void TearDown () override {
50- SwitchToConsumerCluster ();
51- TearDownCluster ();
50+ void SetUp () override {
51+ TEST_SETUP_SUPER (UpgradeTestBase);
5252
53- SwitchToProducerCluster ();
54- UpgradeTestBase::TearDown ();
55- }
56-
57- Status StartClustersInOldVersion (RangePartitioned ranged_partitioned = RangePartitioned::kFalse ) {
5853 ExternalMiniClusterOptions opts;
5954 opts.num_masters = 3 ;
6055 opts.num_tablet_servers = 3 ;
6156
6257 opts.cluster_id = " producer_cluster" ;
6358 opts.cluster_short_name = " P" ;
64- RETURN_NOT_OK (StartClusterInOldVersion (opts));
59+ ASSERT_OK (StartClusterInOldVersion (opts));
6560 producer_cluster_ = cluster_.get ();
6661 producer_client_ = client_.get ();
6762
63+ #if !defined(NDEBUG)
64+ if (IsYsqlMajorVersionUpgrade ()) {
65+ GTEST_SKIP () << " xCluster major YSQL Upgrade testing not supported in debug mode" ;
66+ }
67+ #endif
68+
6869 SwitchToConsumerCluster ();
6970 opts.cluster_id = " consumer_cluster" ;
7071 opts.cluster_short_name = " C" ;
71- RETURN_NOT_OK (StartClusterInOldVersion (opts));
72+ ASSERT_OK (StartClusterInOldVersion (opts));
7273 consumer_cluster_ = cluster_.get ();
7374 consumer_client_ = client_.get ();
7475 SwitchToProducerCluster ();
76+ }
7577
76- RETURN_NOT_OK (CreateTablesAndSetupXCluster (ranged_partitioned));
77- return Status::OK ();
78+ void TearDown () override {
79+ SwitchToConsumerCluster ();
80+ TearDownCluster ();
81+
82+ SwitchToProducerCluster ();
83+ UpgradeTestBase::TearDown ();
7884 }
7985
8086 Status RunOnBothClusters (const std::function<Status(ExternalMiniCluster*)>& run_on_cluster) {
@@ -245,7 +251,7 @@ class XClusterUpgradeTest : public UpgradeTestBase {
245251 }
246252
247253 void SimpleReplicationTest (RangePartitioned ranged_partitioned) {
248- ASSERT_OK (StartClustersInOldVersion ( ));
254+ ASSERT_OK (CreateTablesAndSetupXCluster (ranged_partitioned ));
249255
250256 TestThreadHolder thread_holder;
251257 std::atomic<int64_t > rows_inserted = 0 ;
@@ -307,13 +313,24 @@ class XClusterUpgradeTest : public UpgradeTestBase {
307313 client::YBClient *producer_client_, *consumer_client_;
308314};
309315
310- TEST_F (XClusterUpgradeTest, UpgradeHashPartitionedTable) {
316+ class XClusterUpgradeTest : public XClusterUpgradeTestBase ,
317+ public ::testing::WithParamInterface<std::string> {
318+ public:
319+ XClusterUpgradeTest () : XClusterUpgradeTestBase(GetParam()) {}
320+ };
321+
322+ INSTANTIATE_TEST_SUITE_P (
323+ UpgradeFrom_2024_2_4_0, XClusterUpgradeTest, ::testing::Values(kBuild_2024_2_4_0 ));
324+ INSTANTIATE_TEST_SUITE_P (
325+ UpgradeFrom_2_25_0_0, XClusterUpgradeTest, ::testing::Values(kBuild_2_25_0_0 ));
326+
327+ TEST_P (XClusterUpgradeTest, UpgradeHashPartitionedTable) {
311328 ASSERT_NO_FATAL_FAILURE (SimpleReplicationTest (RangePartitioned::kFalse ));
312329}
313330
314331// #27380 added support for range partitioned tables in xCluster replication.
315332// Enable this test once the from build with the fix is available.
316- TEST_F (XClusterUpgradeTest, YB_DISABLE_TEST(UpgradeRangePartitionedTable)) {
333+ TEST_P (XClusterUpgradeTest, YB_DISABLE_TEST(UpgradeRangePartitionedTable)) {
317334 ASSERT_NO_FATAL_FAILURE (SimpleReplicationTest (RangePartitioned::kTrue ));
318335}
319336
0 commit comments