[scn] fix implement of convert_for_tx

This commit is contained in:
obdev
2022-12-01 02:42:50 +00:00
committed by ob-robot
parent cda6fed9b5
commit 57241dad38
4 changed files with 45 additions and 5 deletions

View File

@ -30,6 +30,5 @@ ob_unittest(test_log_config_mgr)
ob_unittest(test_clear_up_tmp_files)
ob_unittest(test_log_dir_match)
ob_unittest(test_server_log_block_mgr)
log_unittest(test_scn)
log_unittest(test_role_change_handler)
log_unittest(test_log_mode_mgr)

View File

@ -55,6 +55,7 @@ ob_unittest(test_ob_future)
ob_unittest(test_qsync_lock lock/test_qsync_lock.cpp)
ob_unittest(test_ob_occam_time_guard)
ob_unittest(test_cluster_version)
ob_unittest(test_scn)
add_subdirectory(allocator)
add_subdirectory(auto_increment)

View File

@ -110,6 +110,46 @@ TEST(TestSCN, test_scn)
EXPECT_EQ(4611686018427387903, scn_max.get_val_for_inner_table_field());
EXPECT_EQ(1, scn_base.get_val_for_inner_table_field());
//test get_val_for_tx() and get_val_for_tx()
//
scn1.reset();
scn2.reset();
EXPECT_EQ(OB_INVALID_ARGUMENT, scn1.convert_for_tx(-1));
EXPECT_EQ(OB_INVALID_ARGUMENT, scn1.convert_for_tx(INT64_MAX-1));
EXPECT_EQ(OB_INVALID_ARGUMENT, scn1.convert_for_tx(4611686018427387904));
EXPECT_EQ(OB_SUCCESS, scn1.convert_for_tx(4611686018427387903));
EXPECT_TRUE(scn1.is_max());
EXPECT_EQ(INT64_MAX, scn1.get_val_for_tx());
scn1.reset();
EXPECT_EQ(OB_SUCCESS, scn1.convert_for_tx(INT64_MAX));
EXPECT_TRUE(scn1.is_max());
EXPECT_EQ(INT64_MAX, scn1.get_val_for_tx());
EXPECT_EQ(OB_SUCCESS, scn1.convert_for_tx(0));
EXPECT_TRUE(scn1.is_min());
EXPECT_EQ(0, scn1.get_val_for_tx());
EXPECT_EQ(OB_SUCCESS, scn1.convert_for_tx(1));
EXPECT_TRUE(scn1 == SCN::base_scn());
EXPECT_EQ(1, scn1.get_val_for_tx());
EXPECT_TRUE(scn1.is_valid());
scn1.reset();
EXPECT_EQ(OB_INVALID_ARGUMENT, scn1.convert_for_inner_table_field(-1));
EXPECT_FALSE(scn1.is_valid());
scn1.reset();
EXPECT_EQ(OB_INVALID_ARGUMENT, scn1.convert_for_inner_table_field(4611686018427387904));
EXPECT_FALSE(scn1.is_valid());
EXPECT_EQ(OB_SUCCESS, scn1.convert_for_inner_table_field(4611686018427387903));
EXPECT_TRUE(scn1.is_valid());
EXPECT_EQ(4611686018427387903, scn1.get_val_for_inner_table_field());
EXPECT_EQ(OB_SUCCESS, scn1.convert_for_inner_table_field(100000));
EXPECT_TRUE(scn1.is_valid());
EXPECT_EQ(OB_SUCCESS, scn2.convert_for_inner_table_field(90000));
EXPECT_TRUE(scn2.is_valid());
// Test operator <
EXPECT_FALSE(scn1 == scn2);
EXPECT_TRUE(scn1 == scn3);