Fix transfer mittest cases

This commit is contained in:
godyangfight
2023-09-09 12:24:34 +00:00
committed by ob-robot
parent bbad1b2bb3
commit f70f1dcb29
9 changed files with 119 additions and 58 deletions

View File

@ -97,12 +97,12 @@ ob_unittest_observer(test_mds_recover test_mds_recover.cpp)
ob_unittest_observer(test_keep_alive_min_start_scn test_keep_alive_min_start_scn.cpp) ob_unittest_observer(test_keep_alive_min_start_scn test_keep_alive_min_start_scn.cpp)
ob_unittest_observer(test_ls_replica test_ls_replica.cpp) ob_unittest_observer(test_ls_replica test_ls_replica.cpp)
# TODO(muwei.ym): open later # TODO(muwei.ym): open later
#ob_ha_unittest_observer(test_transfer_handler storage_ha/test_transfer_handler.cpp) ob_ha_unittest_observer(test_transfer_handler storage_ha/test_transfer_handler.cpp)
#ob_ha_unittest_observer(test_transfer_and_restart_basic storage_ha/test_transfer_and_restart_basic.cpp) ob_ha_unittest_observer(test_transfer_and_restart_basic storage_ha/test_transfer_and_restart_basic.cpp)
#ob_ha_unittest_observer(test_transfer_start_stage_restart_without_mds_flush storage_ha/test_transfer_start_stage_restart_without_mds_flush.cpp) ob_ha_unittest_observer(test_transfer_start_stage_restart_without_mds_flush storage_ha/test_transfer_start_stage_restart_without_mds_flush.cpp)
#ob_ha_unittest_observer(test_transfer_doing_stage_restart_without_mds_flush storage_ha/test_transfer_doing_stage_restart_without_mds_flush.cpp) ob_ha_unittest_observer(test_transfer_doing_stage_restart_without_mds_flush storage_ha/test_transfer_doing_stage_restart_without_mds_flush.cpp)
#ob_ha_unittest_observer(test_transfer_complete_restart_without_mds_flush storage_ha/test_transfer_complete_restart_without_mds_flush.cpp) ob_ha_unittest_observer(test_transfer_complete_restart_without_mds_flush storage_ha/test_transfer_complete_restart_without_mds_flush.cpp)
#ob_ha_unittest_observer(test_transfer_doing_stage_restart_with_mds_flush storage_ha/test_transfer_doing_stage_restart_with_mds_flush.cpp) ob_ha_unittest_observer(test_transfer_doing_stage_restart_with_mds_flush storage_ha/test_transfer_doing_stage_restart_with_mds_flush.cpp)
#ob_ha_unittest_observer(test_transfer_complete_restart_with_mds_flush storage_ha/test_transfer_complete_restart_with_mds_flush.cpp) ob_ha_unittest_observer(test_transfer_complete_restart_with_mds_flush storage_ha/test_transfer_complete_restart_with_mds_flush.cpp)
#ob_ha_unittest_observer(test_transfer_with_empty_shell storage_ha/test_transfer_with_empty_shell.cpp) ob_ha_unittest_observer(test_transfer_with_empty_shell storage_ha/test_transfer_with_empty_shell.cpp)
errsim_ha_unittest_observer(errsim_test_transfer_handler errsim/storage_ha/errsim_test_transfer_handler.cpp) errsim_ha_unittest_observer(errsim_test_transfer_handler errsim/storage_ha/errsim_test_transfer_handler.cpp)

View File

@ -29,7 +29,7 @@
#include "storage/tablet/ob_tablet.h" #include "storage/tablet/ob_tablet.h"
#include "storage/tx_storage/ob_ls_service.h" #include "storage/tx_storage/ob_ls_service.h"
using namespace unittest; using namespace oceanbase::unittest;
namespace oceanbase namespace oceanbase
{ {
@ -250,13 +250,13 @@ TEST_F(TestTransferRestart, observer_restart_basic)
} // namespace oceanbase } // namespace oceanbase
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
unittest::init_log_and_gtest(argc, argv); oceanbase::unittest::init_log_and_gtest(argc, argv);
OB_LOGGER.set_log_level("INFO"); OB_LOGGER.set_log_level("INFO");
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
int ret = 0; int ret = 0;
int time_sec = 0; int time_sec = 0;
ObSimpleServerRestartHelper restart_helper(argc, argv, TEST_FILE_NAME, BORN_CASE_NAME, ObSimpleServerRestartHelper restart_helper(argc, argv, oceanbase::storage::TEST_FILE_NAME, oceanbase::storage::BORN_CASE_NAME,
RESTART_CASE_NAME); oceanbase::storage::RESTART_CASE_NAME);
restart_helper.set_sleep_sec(time_sec); restart_helper.set_sleep_sec(time_sec);
restart_helper.run(); restart_helper.run();
return ret; return ret;

View File

@ -29,7 +29,7 @@
#include "storage/tablet/ob_tablet.h" #include "storage/tablet/ob_tablet.h"
#include "storage/tx_storage/ob_ls_service.h" #include "storage/tx_storage/ob_ls_service.h"
using namespace unittest; using namespace oceanbase::unittest;
namespace oceanbase namespace oceanbase
{ {
@ -210,9 +210,14 @@ TEST_F(TestTransferHandler, prepare_valid_data)
sql.reset(); sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'")); ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'"));
ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy2, sql, g_batch_part_list)); ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy2, sql, g_batch_part_list));
//create other ls by cluster table
sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("create table part_table_with_dup(c1 int) duplicate_scope = 'CLUSTER' partition by hash(c1) partitions 4"));
ASSERT_EQ(OB_SUCCESS, sql_proxy2.write(sql.ptr(), affected_rows));
} }
TEST_F(TestTransferHandler, test_transfer_1001_to_1_with_transfer_finish_without_mds_flush) TEST_F(TestTransferHandler, test_transfer_1001_to_1002_with_transfer_finish_without_mds_flush)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy(); ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy();
@ -233,12 +238,12 @@ TEST_F(TestTransferHandler, test_transfer_1001_to_1_with_transfer_finish_without
ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*); ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*);
ASSERT_TRUE(OB_NOT_NULL(tenant_transfer)); ASSERT_TRUE(OB_NOT_NULL(tenant_transfer));
//title: 1001 ls transfer to 1 ls //title: 1001 ls transfer to 1002 ls
// generate transfer task // generate transfer task
ObTransferTaskID task_id; ObTransferTaskID task_id;
ObMySQLTransaction trans; ObMySQLTransaction trans;
ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id)); ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id));
ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1001), ObLSID(1), ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1001), ObLSID(1002),
g_part_list, ObBalanceTaskID(123), task_id)); g_part_list, ObBalanceTaskID(123), task_id));
if (trans.is_started()) { if (trans.is_started()) {
int tmp_ret = OB_SUCCESS; int tmp_ret = OB_SUCCESS;
@ -272,13 +277,13 @@ TEST_F(TestTransferRestart, observer_restart_when_transfer_finish_without_flush)
} // namespace oceanbase } // namespace oceanbase
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
unittest::init_log_and_gtest(argc, argv); oceanbase::unittest::init_log_and_gtest(argc, argv);
OB_LOGGER.set_log_level("INFO"); OB_LOGGER.set_log_level("INFO");
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
int ret = 0; int ret = 0;
int time_sec = 0; int time_sec = 0;
ObSimpleServerRestartHelper restart_helper(argc, argv, TEST_FILE_NAME, BORN_CASE_NAME, ObSimpleServerRestartHelper restart_helper(argc, argv, oceanbase::storage::TEST_FILE_NAME, oceanbase::storage::BORN_CASE_NAME,
RESTART_CASE_NAME); oceanbase::storage::RESTART_CASE_NAME);
restart_helper.set_sleep_sec(time_sec); restart_helper.set_sleep_sec(time_sec);
restart_helper.run(); restart_helper.run();
return ret; return ret;

View File

@ -29,7 +29,7 @@
#include "storage/tablet/ob_tablet.h" #include "storage/tablet/ob_tablet.h"
#include "storage/tx_storage/ob_ls_service.h" #include "storage/tx_storage/ob_ls_service.h"
using namespace unittest; using namespace oceanbase::unittest;
namespace oceanbase namespace oceanbase
{ {
@ -210,9 +210,14 @@ TEST_F(TestTransferHandler, prepare_valid_data)
sql.reset(); sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'")); ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'"));
ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy2, sql, g_batch_part_list)); ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy2, sql, g_batch_part_list));
//create other ls by cluster table
sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("create table part_table_with_dup(c1 int) duplicate_scope = 'CLUSTER' partition by hash(c1) partitions 4"));
ASSERT_EQ(OB_SUCCESS, sql_proxy2.write(sql.ptr(), affected_rows));
} }
TEST_F(TestTransferHandler, test_transfer_1001_to_1_with_transfer_finish_without_mds_flush) TEST_F(TestTransferHandler, test_transfer_1001_to_1002_with_transfer_finish_without_mds_flush)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy(); ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy();
@ -233,12 +238,12 @@ TEST_F(TestTransferHandler, test_transfer_1001_to_1_with_transfer_finish_without
ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*); ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*);
ASSERT_TRUE(OB_NOT_NULL(tenant_transfer)); ASSERT_TRUE(OB_NOT_NULL(tenant_transfer));
//title: 1001 ls transfer to 1 ls //title: 1001 ls transfer to 1002 ls
// generate transfer task // generate transfer task
ObTransferTaskID task_id; ObTransferTaskID task_id;
ObMySQLTransaction trans; ObMySQLTransaction trans;
ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id)); ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id));
ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1001), ObLSID(1), ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1001), ObLSID(1002),
g_part_list, ObBalanceTaskID(123), task_id)); g_part_list, ObBalanceTaskID(123), task_id));
if (trans.is_started()) { if (trans.is_started()) {
int tmp_ret = OB_SUCCESS; int tmp_ret = OB_SUCCESS;
@ -271,13 +276,13 @@ TEST_F(TestTransferRestart, observer_restart_when_transfer_finish_without_flush)
} // namespace oceanbase } // namespace oceanbase
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
unittest::init_log_and_gtest(argc, argv); oceanbase::unittest::init_log_and_gtest(argc, argv);
OB_LOGGER.set_log_level("INFO"); OB_LOGGER.set_log_level("INFO");
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
int ret = 0; int ret = 0;
int time_sec = 0; int time_sec = 0;
ObSimpleServerRestartHelper restart_helper(argc, argv, TEST_FILE_NAME, BORN_CASE_NAME, ObSimpleServerRestartHelper restart_helper(argc, argv, oceanbase::storage::TEST_FILE_NAME, oceanbase::storage::BORN_CASE_NAME,
RESTART_CASE_NAME); oceanbase::storage::RESTART_CASE_NAME);
restart_helper.set_sleep_sec(time_sec); restart_helper.set_sleep_sec(time_sec);
restart_helper.run(); restart_helper.run();
return ret; return ret;

View File

@ -29,7 +29,7 @@
#include "storage/tablet/ob_tablet.h" #include "storage/tablet/ob_tablet.h"
#include "storage/tx_storage/ob_ls_service.h" #include "storage/tx_storage/ob_ls_service.h"
using namespace unittest; using namespace oceanbase::unittest;
namespace oceanbase namespace oceanbase
{ {
@ -277,13 +277,13 @@ TEST_F(TestTransferRestart, observer_restart_when_transfer_start_without_flush)
} // namespace oceanbase } // namespace oceanbase
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
unittest::init_log_and_gtest(argc, argv); oceanbase::unittest::init_log_and_gtest(argc, argv);
OB_LOGGER.set_log_level("INFO"); OB_LOGGER.set_log_level("INFO");
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
int ret = 0; int ret = 0;
int time_sec = 0; int time_sec = 0;
ObSimpleServerRestartHelper restart_helper(argc, argv, TEST_FILE_NAME, BORN_CASE_NAME, ObSimpleServerRestartHelper restart_helper(argc, argv, oceanbase::storage::TEST_FILE_NAME, oceanbase::storage::BORN_CASE_NAME,
RESTART_CASE_NAME); oceanbase::storage::RESTART_CASE_NAME);
restart_helper.set_sleep_sec(time_sec); restart_helper.set_sleep_sec(time_sec);
restart_helper.run(); restart_helper.run();
return ret; return ret;

View File

@ -29,7 +29,7 @@
#include "storage/tablet/ob_tablet.h" #include "storage/tablet/ob_tablet.h"
#include "storage/tx_storage/ob_ls_service.h" #include "storage/tx_storage/ob_ls_service.h"
using namespace unittest; using namespace oceanbase::unittest;
namespace oceanbase namespace oceanbase
{ {
@ -209,9 +209,29 @@ TEST_F(TestTransferHandler, prepare_valid_data)
sql.reset(); sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'")); ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'"));
ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy2, sql, g_batch_part_list)); ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy2, sql, g_batch_part_list));
//create other ls by cluster table
sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("create table part_table_with_dup(c1 int) duplicate_scope = 'CLUSTER' partition by hash(c1) partitions 4"));
ASSERT_EQ(OB_SUCCESS, sql_proxy2.write(sql.ptr(), affected_rows));
sql.reset();
ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("alter system set _enable_balance_kill_transaction = true tenant = 'tt1';"));
ASSERT_EQ(OB_SUCCESS, inner_sql_proxy.write(OB_SYS_TENANT_ID, sql.ptr(), affected_rows));
usleep(100000); // wait for debug_sync_timeout to take effect
sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("alter system set _balance_wait_killing_transaction_end_threshold = '10s' tenant = 'tt1';"));
ASSERT_EQ(OB_SUCCESS, inner_sql_proxy.write(OB_SYS_TENANT_ID, sql.ptr(), affected_rows));
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("alter system set _enable_balance_kill_transaction = true tenant = 'tt1';"));
ASSERT_EQ(OB_SUCCESS, inner_sql_proxy.write(OB_SYS_TENANT_ID, sql.ptr(), affected_rows));
usleep(100000); // wait for debug_sync_timeout to take effect
sql.reset();
} }
TEST_F(TestTransferHandler, test_transfer_1_to_1001_with_transfer_doing_without_mds_flush) TEST_F(TestTransferHandler, test_transfer_1001_to_1002_with_transfer_doing_without_mds_flush)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy(); ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy();
@ -238,12 +258,12 @@ TEST_F(TestTransferHandler, test_transfer_1_to_1001_with_transfer_doing_without_
ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*); ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*);
ASSERT_TRUE(OB_NOT_NULL(tenant_transfer)); ASSERT_TRUE(OB_NOT_NULL(tenant_transfer));
//title: 1001 ls transfer to 1 ls //title: 1001 ls transfer to 1002 ls
// generate transfer task // generate transfer task
ObTransferTaskID task_id; ObTransferTaskID task_id;
ObMySQLTransaction trans; ObMySQLTransaction trans;
ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id)); ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id));
ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1001), ObLSID(1), ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1001), ObLSID(1002),
g_part_list, ObBalanceTaskID(123), task_id)); g_part_list, ObBalanceTaskID(123), task_id));
if (trans.is_started()) { if (trans.is_started()) {
int tmp_ret = OB_SUCCESS; int tmp_ret = OB_SUCCESS;
@ -277,13 +297,13 @@ TEST_F(TestTransferRestart, observer_restart_when_transfer_doing_without_flush)
} // namespace oceanbase } // namespace oceanbase
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
unittest::init_log_and_gtest(argc, argv); oceanbase::unittest::init_log_and_gtest(argc, argv);
OB_LOGGER.set_log_level("INFO"); OB_LOGGER.set_log_level("INFO");
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
int ret = 0; int ret = 0;
int time_sec = 0; int time_sec = 0;
ObSimpleServerRestartHelper restart_helper(argc, argv, TEST_FILE_NAME, BORN_CASE_NAME, ObSimpleServerRestartHelper restart_helper(argc, argv, oceanbase::storage::TEST_FILE_NAME, oceanbase::storage::BORN_CASE_NAME,
RESTART_CASE_NAME); oceanbase::storage::RESTART_CASE_NAME);
restart_helper.set_sleep_sec(time_sec); restart_helper.set_sleep_sec(time_sec);
restart_helper.run(); restart_helper.run();
return ret; return ret;

View File

@ -27,7 +27,7 @@
#include "storage/tablet/ob_tablet.h" #include "storage/tablet/ob_tablet.h"
#include "storage/tx_storage/ob_ls_service.h" #include "storage/tx_storage/ob_ls_service.h"
using namespace unittest; using namespace oceanbase::unittest;
namespace oceanbase namespace oceanbase
{ {
@ -208,7 +208,8 @@ int TestTransferHandler::wait_transfer_out_deleted_tablet_gc(
while (OB_SUCC(ret) && index < task.tablet_list_.count()) { while (OB_SUCC(ret) && index < task.tablet_list_.count()) {
ObTabletHandle tablet_handle; ObTabletHandle tablet_handle;
const ObTransferTabletInfo &transfer_info = task.tablet_list_.at(index); const ObTransferTabletInfo &transfer_info = task.tablet_list_.at(index);
if (OB_FAIL(ls->get_tablet(transfer_info.tablet_id_, tablet_handle, ObMDSGetTabletMode::READ_WITHOUT_CHECK))) { if (OB_FAIL(ls->get_tablet(transfer_info.tablet_id_, tablet_handle,
ObTabletCommon::DEFAULT_GET_TABLET_DURATION_US, ObMDSGetTabletMode::READ_WITHOUT_CHECK))) {
if (OB_TABLET_NOT_EXIST == ret) { if (OB_TABLET_NOT_EXIST == ret) {
ret = OB_SUCCESS; ret = OB_SUCCESS;
index++; index++;
@ -263,9 +264,32 @@ TEST_F(TestTransferHandler, prepare_valid_data)
sql.reset(); sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'")); ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'"));
ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy, sql, g_batch_part_list)); ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy, sql, g_batch_part_list));
//create other ls by cluster table
sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("create table part_table_with_dup(c1 int) duplicate_scope = 'CLUSTER' partition by hash(c1) partitions 4"));
ASSERT_EQ(OB_SUCCESS, sql_proxy.write(sql.ptr(), affected_rows));
sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'"));
ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy, sql, g_batch_part_list));
ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("alter system set _enable_balance_kill_transaction = true tenant = 'tt1';"));
ASSERT_EQ(OB_SUCCESS, inner_sql_proxy.write(OB_SYS_TENANT_ID, sql.ptr(), affected_rows));
usleep(100000); // wait for debug_sync_timeout to take effect
sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("alter system set _balance_wait_killing_transaction_end_threshold = '10s' tenant = 'tt1';"));
ASSERT_EQ(OB_SUCCESS, inner_sql_proxy.write(OB_SYS_TENANT_ID, sql.ptr(), affected_rows));
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("alter system set _enable_balance_kill_transaction = true tenant = 'tt1';"));
ASSERT_EQ(OB_SUCCESS, inner_sql_proxy.write(OB_SYS_TENANT_ID, sql.ptr(), affected_rows));
usleep(100000); // wait for debug_sync_timeout to take effect
sql.reset();
} }
TEST_F(TestTransferHandler, test_transfer_1001_to_1) TEST_F(TestTransferHandler, test_transfer_1001_to_1002)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy(); ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy();
@ -286,12 +310,12 @@ TEST_F(TestTransferHandler, test_transfer_1001_to_1)
ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*); ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*);
ASSERT_TRUE(OB_NOT_NULL(tenant_transfer)); ASSERT_TRUE(OB_NOT_NULL(tenant_transfer));
//title: 1001 ls transfer to 1 ls //title: 1001 ls transfer to 1002 ls
// generate transfer task // generate transfer task
ObTransferTaskID task_id; ObTransferTaskID task_id;
ObMySQLTransaction trans; ObMySQLTransaction trans;
ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id)); ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id));
ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1001), ObLSID(1), ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1001), ObLSID(1002),
g_part_list, ObBalanceTaskID(123), task_id)); g_part_list, ObBalanceTaskID(123), task_id));
if (trans.is_started()) { if (trans.is_started()) {
int tmp_ret = OB_SUCCESS; int tmp_ret = OB_SUCCESS;
@ -311,7 +335,7 @@ TEST_F(TestTransferHandler, test_transfer_1001_to_1)
ASSERT_EQ(OB_SUCCESS, wait_transfer_out_deleted_tablet_gc(task)); ASSERT_EQ(OB_SUCCESS, wait_transfer_out_deleted_tablet_gc(task));
} }
TEST_F(TestTransferHandler, test_transfer_1_to_1001) TEST_F(TestTransferHandler, test_transfer_1002_to_1001)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy(); ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy();
@ -325,12 +349,12 @@ TEST_F(TestTransferHandler, test_transfer_1_to_1001)
ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*); ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*);
ASSERT_TRUE(OB_NOT_NULL(tenant_transfer)); ASSERT_TRUE(OB_NOT_NULL(tenant_transfer));
//title: 1001 ls transfer to 1 ls //title: 1002 ls transfer to 1001 ls
// generate transfer task // generate transfer task
ObTransferTaskID task_id; ObTransferTaskID task_id;
ObMySQLTransaction trans; ObMySQLTransaction trans;
ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id)); ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id));
ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1), ObLSID(1001), ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1002), ObLSID(1001),
g_part_list, ObBalanceTaskID(123), task_id)); g_part_list, ObBalanceTaskID(123), task_id));
if (trans.is_started()) { if (trans.is_started()) {
int tmp_ret = OB_SUCCESS; int tmp_ret = OB_SUCCESS;
@ -353,7 +377,7 @@ TEST_F(TestTransferHandler, test_transfer_1_to_1001)
} // namespace oceanbase } // namespace oceanbase
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
unittest::init_log_and_gtest(argc, argv); oceanbase::unittest::init_log_and_gtest(argc, argv);
OB_LOGGER.set_log_level("INFO"); OB_LOGGER.set_log_level("INFO");
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS(); return RUN_ALL_TESTS();

View File

@ -29,7 +29,7 @@
#include "storage/tablet/ob_tablet.h" #include "storage/tablet/ob_tablet.h"
#include "storage/tx_storage/ob_ls_service.h" #include "storage/tx_storage/ob_ls_service.h"
using namespace unittest; using namespace oceanbase::unittest;
namespace oceanbase namespace oceanbase
{ {
@ -209,6 +209,7 @@ TEST_F(TestTransferHandler, prepare_valid_data)
sql.reset(); sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'")); ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'"));
ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy2, sql, g_batch_part_list)); ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy2, sql, g_batch_part_list));
} }
TEST_F(TestTransferHandler, test_transfer_1001_to_1_with_transfer_start_without_mds_flush) TEST_F(TestTransferHandler, test_transfer_1001_to_1_with_transfer_start_without_mds_flush)
@ -276,13 +277,13 @@ TEST_F(TestTransferRestart, observer_restart_when_transfer_start_without_flush)
} // namespace oceanbase } // namespace oceanbase
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
unittest::init_log_and_gtest(argc, argv); oceanbase::unittest::init_log_and_gtest(argc, argv);
OB_LOGGER.set_log_level("INFO"); OB_LOGGER.set_log_level("INFO");
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
int ret = 0; int ret = 0;
int time_sec = 0; int time_sec = 0;
ObSimpleServerRestartHelper restart_helper(argc, argv, TEST_FILE_NAME, BORN_CASE_NAME, ObSimpleServerRestartHelper restart_helper(argc, argv, oceanbase::storage::TEST_FILE_NAME, oceanbase::storage::BORN_CASE_NAME,
RESTART_CASE_NAME); oceanbase::storage::RESTART_CASE_NAME);
restart_helper.set_sleep_sec(time_sec); restart_helper.set_sleep_sec(time_sec);
restart_helper.run(); restart_helper.run();
return ret; return ret;

View File

@ -27,7 +27,7 @@
#include "storage/tablet/ob_tablet.h" #include "storage/tablet/ob_tablet.h"
#include "storage/tx_storage/ob_ls_service.h" #include "storage/tx_storage/ob_ls_service.h"
using namespace unittest; using namespace oceanbase::unittest;
namespace oceanbase namespace oceanbase
{ {
@ -209,7 +209,8 @@ int TestTransferHandler::wait_transfer_out_deleted_tablet_become_empty_shell(
ObTabletHandle tablet_handle; ObTabletHandle tablet_handle;
ObTablet *tablet = nullptr; ObTablet *tablet = nullptr;
const ObTransferTabletInfo &transfer_info = task.tablet_list_.at(index); const ObTransferTabletInfo &transfer_info = task.tablet_list_.at(index);
if (OB_FAIL(ls->get_tablet(transfer_info.tablet_id_, tablet_handle, ObTabletCommon::NO_CHECK_GET_TABLET_TIMEOUT_US))) { if (OB_FAIL(ls->get_tablet(transfer_info.tablet_id_, tablet_handle, ObTabletCommon::DEFAULT_GET_TABLET_DURATION_US,
ObMDSGetTabletMode::READ_WITHOUT_CHECK))) {
LOG_WARN("failed to get tablet", K(ret), K(transfer_info)); LOG_WARN("failed to get tablet", K(ret), K(transfer_info));
} else if (OB_ISNULL(tablet = tablet_handle.get_obj())) { } else if (OB_ISNULL(tablet = tablet_handle.get_obj())) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
@ -262,9 +263,14 @@ TEST_F(TestTransferHandler, prepare_valid_data)
sql.reset(); sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'")); ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("select object_id from oceanbase.DBA_OBJECTS where OBJECT_NAME='ttt2'"));
ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy, sql, g_batch_part_list)); ASSERT_EQ(OB_SUCCESS, read_sql(sql_proxy, sql, g_batch_part_list));
//create other ls by cluster table
sql.reset();
ASSERT_EQ(OB_SUCCESS, sql.assign_fmt("create table part_table_with_dup(c1 int) duplicate_scope = 'CLUSTER' partition by hash(c1) partitions 4"));
ASSERT_EQ(OB_SUCCESS, sql_proxy.write(sql.ptr(), affected_rows));
} }
TEST_F(TestTransferHandler, test_transfer_1001_to_1) TEST_F(TestTransferHandler, test_transfer_1001_to_1002)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy(); ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy();
@ -285,12 +291,12 @@ TEST_F(TestTransferHandler, test_transfer_1001_to_1)
ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*); ObTenantTransferService *tenant_transfer = MTL(ObTenantTransferService*);
ASSERT_TRUE(OB_NOT_NULL(tenant_transfer)); ASSERT_TRUE(OB_NOT_NULL(tenant_transfer));
//title: 1001 ls transfer to 1 ls //title: 1001 ls transfer to 1002 ls
// generate transfer task // generate transfer task
ObTransferTaskID task_id; ObTransferTaskID task_id;
ObMySQLTransaction trans; ObMySQLTransaction trans;
ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id)); ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id));
ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1001), ObLSID(1), ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1001), ObLSID(1002),
g_part_list, ObBalanceTaskID(123), task_id)); g_part_list, ObBalanceTaskID(123), task_id));
if (trans.is_started()) { if (trans.is_started()) {
int tmp_ret = OB_SUCCESS; int tmp_ret = OB_SUCCESS;
@ -310,7 +316,7 @@ TEST_F(TestTransferHandler, test_transfer_1001_to_1)
ASSERT_EQ(OB_SUCCESS, wait_transfer_out_deleted_tablet_become_empty_shell(task)); ASSERT_EQ(OB_SUCCESS, wait_transfer_out_deleted_tablet_become_empty_shell(task));
} }
TEST_F(TestTransferHandler, test_transfer_1_to_1001) TEST_F(TestTransferHandler, test_transfer_1002_to_1001)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy(); ObMySQLProxy &inner_sql_proxy = get_curr_observer().get_mysql_proxy();
@ -329,7 +335,7 @@ TEST_F(TestTransferHandler, test_transfer_1_to_1001)
ObTransferTaskID task_id; ObTransferTaskID task_id;
ObMySQLTransaction trans; ObMySQLTransaction trans;
ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id)); ASSERT_EQ(OB_SUCCESS, trans.start(&inner_sql_proxy, g_tenant_id));
ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1), ObLSID(1001), ASSERT_EQ(OB_SUCCESS, tenant_transfer->generate_transfer_task(trans, ObLSID(1002), ObLSID(1001),
g_part_list, ObBalanceTaskID(123), task_id)); g_part_list, ObBalanceTaskID(123), task_id));
if (trans.is_started()) { if (trans.is_started()) {
int tmp_ret = OB_SUCCESS; int tmp_ret = OB_SUCCESS;
@ -350,7 +356,7 @@ TEST_F(TestTransferHandler, test_transfer_1_to_1001)
} // namespace oceanbase } // namespace oceanbase
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
unittest::init_log_and_gtest(argc, argv); oceanbase::unittest::init_log_and_gtest(argc, argv);
OB_LOGGER.set_log_level("INFO"); OB_LOGGER.set_log_level("INFO");
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS(); return RUN_ALL_TESTS();