Fix transfer mittest cases
This commit is contained in:
@ -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)
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user