128 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) 2021 OceanBase
 | |
|  * OceanBase CE is licensed under Mulan PubL v2.
 | |
|  * You can use this software according to the terms and conditions of the Mulan PubL v2.
 | |
|  * You may obtain a copy of Mulan PubL v2 at:
 | |
|  *          http://license.coscl.org.cn/MulanPubL-2.0
 | |
|  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 | |
|  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 | |
|  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 | |
|  * See the Mulan PubL v2 for more details.
 | |
|  */
 | |
| 
 | |
| #include "storage/transaction/ob_trans_stat.h"
 | |
| #include "storage/transaction/ob_trans_define.h"
 | |
| #include "common/ob_clock_generator.h"
 | |
| #include <gtest/gtest.h>
 | |
| #include "share/ob_errno.h"
 | |
| #include "lib/oblog/ob_log.h"
 | |
| #include "common/ob_partition_key.h"
 | |
| 
 | |
| namespace oceanbase {
 | |
| using namespace common;
 | |
| using namespace transaction;
 | |
| namespace unittest {
 | |
| class TestObTransStat : public ::testing::Test {
 | |
| public:
 | |
|   virtual void SetUp()
 | |
|   {}
 | |
|   virtual void TearDown()
 | |
|   {}
 | |
| 
 | |
| public:
 | |
|   static const char* LOCAL_IP;
 | |
|   static const int32_t PORT = 8080;
 | |
|   static const ObAddr::VER IP_TYPE = ObAddr::IPV4;
 | |
| 
 | |
|   static const int64_t VALID_TABLE_ID = 1;
 | |
|   static const int32_t VALID_PARTITION_ID = 1;
 | |
|   static const int32_t VALID_PARTITION_COUNT = 100;
 | |
| };
 | |
| const char* TestObTransStat::LOCAL_IP = "127.0.0.1";
 | |
| 
 | |
| TEST_F(TestObTransStat, init_reset)
 | |
| {
 | |
|   TRANS_LOG(INFO, "called", "func", test_info_->name());
 | |
| 
 | |
|   ObAddr observer(TestObTransStat::IP_TYPE, TestObTransStat::LOCAL_IP, TestObTransStat::PORT);
 | |
|   ObTransID trans_id(observer);
 | |
|   const int64_t tenant_id = 1000;
 | |
|   const bool is_exiting = false;
 | |
|   const bool is_readonly = false;
 | |
|   const bool has_decided = false;
 | |
|   const bool is_dirty = false;
 | |
|   ObPartitionKey coordinator(
 | |
|       TestObTransStat::VALID_TABLE_ID, TestObTransStat::VALID_PARTITION_ID, TestObTransStat::VALID_PARTITION_COUNT);
 | |
|   ObPartitionArray participants;
 | |
|   EXPECT_EQ(OB_SUCCESS, participants.push_back(coordinator));
 | |
| 
 | |
|   // create an object of ObStartTransParm
 | |
|   ObStartTransParam parms;
 | |
|   parms.set_access_mode(ObTransAccessMode::READ_ONLY);
 | |
|   parms.set_type(ObTransType::TRANS_USER);
 | |
|   parms.set_isolation(ObTransIsolation::READ_COMMITED);
 | |
| 
 | |
|   const int64_t expired_time = 1000;
 | |
|   const int64_t ctx_create_time = ObClockGenerator::getClock();
 | |
|   const int64_t sql_no = 2;
 | |
|   const int64_t refer = 2;
 | |
|   const int64_t state = Ob2PCState::PREPARE;
 | |
|   const uint32_t session_id = 1000;
 | |
|   const uint64_t proxy_session_id = 1000;
 | |
|   const int trans_type = 1;
 | |
|   const int64_t part_trans_action = 1;
 | |
|   const int64_t lock_for_read_retry_count = 0;
 | |
|   const ObElrTransInfoArray trans_arr;
 | |
|   const int64_t flushed_log_size = 0;
 | |
|   const int64_t pending_log_size = 0;
 | |
| 
 | |
|   ObTransStat trans_stat;
 | |
|   EXPECT_EQ(OB_SUCCESS,
 | |
|       trans_stat.init(observer,
 | |
|           trans_id,
 | |
|           tenant_id,
 | |
|           is_exiting,
 | |
|           is_readonly,
 | |
|           has_decided,
 | |
|           is_dirty,
 | |
|           coordinator,
 | |
|           participants,
 | |
|           parms,
 | |
|           ctx_create_time,
 | |
|           expired_time,
 | |
|           refer,
 | |
|           sql_no,
 | |
|           state,
 | |
|           session_id,
 | |
|           proxy_session_id,
 | |
|           trans_type,
 | |
|           part_trans_action,
 | |
|           lock_for_read_retry_count,
 | |
|           0,
 | |
|           trans_arr,
 | |
|           trans_arr,
 | |
|           0,
 | |
|           1,
 | |
|           pending_log_size,
 | |
|           flushed_log_size));
 | |
| 
 | |
|   trans_stat.reset();
 | |
| }
 | |
| 
 | |
| }  // namespace unittest
 | |
| }  // namespace oceanbase
 | |
| 
 | |
| using namespace oceanbase;
 | |
| using namespace oceanbase::common;
 | |
| 
 | |
| int main(int argc, char** argv)
 | |
| {
 | |
|   int ret = 1;
 | |
|   ObLogger& logger = ObLogger::get_logger();
 | |
|   logger.set_file_name("test_ob_trans_stat.log", true);
 | |
|   logger.set_log_level(OB_LOG_LEVEL_INFO);
 | |
|   testing::InitGoogleTest(&argc, argv);
 | |
|   ret = RUN_ALL_TESTS();
 | |
|   return ret;
 | |
| }
 | 
