804 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			804 lines
		
	
	
		
			22 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.
 | |
|  */
 | |
| 
 | |
| #ifndef OCEANBASE_UNITTEST_MOCK_PARTITION_SERVICE_H_
 | |
| #define OCEANBASE_UNITTEST_MOCK_PARTITION_SERVICE_H_
 | |
| 
 | |
| //#include "storage/ob_i_partition.h"
 | |
| //#include "storage/ob_partition_service.h"
 | |
| #include "storage/ob_replay_status.h"
 | |
| #include "storage/ob_safe_ref.h"
 | |
| #include "clog/ob_log_define.h"
 | |
| #include "../mockcontainer/mock_ob_partition_service.h"
 | |
| #include "../mockcontainer/mock_ob_partition.h"
 | |
| 
 | |
| namespace oceanbase {
 | |
| using namespace common;
 | |
| using namespace storage;
 | |
| namespace storage {
 | |
| class ObIPartitionComponentFactory;
 | |
| class ObBaseStorage;
 | |
| }  // namespace storage
 | |
| namespace unittest {
 | |
| class MockPartition : public storage::MockObIPartitionGroup {
 | |
| public:
 | |
|   MockPartition() : tenant_id_(1001)
 | |
|   {
 | |
|     partition_key_.init(1, 1, 1);
 | |
|   }
 | |
|   virtual ~MockPartition()
 | |
|   {}
 | |
| 
 | |
| public:
 | |
|   void reset()
 | |
|   {
 | |
|     replay_status_.reset();
 | |
|   }
 | |
|   virtual bool is_valid() const
 | |
|   {
 | |
|     return true;
 | |
|   }
 | |
|   int set_replay_engine(replayengine::ObLogReplayEngine* rp_eg)
 | |
|   {
 | |
|     replay_status_.enable(partition_key_);
 | |
|     storage::SafeRef2 ref;
 | |
|     return replay_status_.init(tenant_id_, rp_eg, ref);
 | |
|   }
 | |
|   virtual storage::ObReplayStatus* get_replay_status()
 | |
|   {
 | |
|     return &replay_status_;
 | |
|   }
 | |
|   virtual const common::ObPartitionKey& get_partition_key() const
 | |
|   {
 | |
|     return partition_key_;
 | |
|   }
 | |
|   virtual int init(const common::ObPartitionKey& key, ObIPartitionComponentFactory* cp_fty,
 | |
|       share::schema::ObMultiVersionSchemaService* schema_service, ObBaseStorage* base_storage,
 | |
|       clog::ObIPartitionLogService* pls, transaction::ObTransService* txs)
 | |
|   {
 | |
|     UNUSED(key);
 | |
|     UNUSED(cp_fty);
 | |
|     UNUSED(base_storage);
 | |
|     UNUSED(pls);
 | |
|     UNUSED(schema_service);
 | |
|     UNUSED(txs);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual void destroy()
 | |
|   {
 | |
|     return;
 | |
|   }
 | |
|   virtual int replay_base_storage_log(
 | |
|       const int64_t log_seq_num, const int64_t subcmd, const char* buf, const int64_t len, int64_t& pos)
 | |
|   {
 | |
|     UNUSED(log_seq_num);
 | |
|     UNUSED(subcmd);
 | |
|     UNUSED(buf);
 | |
|     UNUSED(len);
 | |
|     UNUSED(pos);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   // get partition log service
 | |
|   virtual const clog::ObIPartitionLogService* get_log_service() const
 | |
|   {
 | |
|     return NULL;
 | |
|   }
 | |
|   virtual clog::ObIPartitionLogService* get_log_service()
 | |
|   {
 | |
|     return NULL;
 | |
|   }
 | |
|   virtual int get_table_store_cnt(int64_t& table_cnt) const
 | |
|   {
 | |
|     table_cnt = 0;
 | |
|     return OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_log_archive_status(clog::ObPGLogArchiveStatus& status)
 | |
|   {
 | |
|     UNUSED(status);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   // get partition storage
 | |
|   virtual ObIPartitionStorage* get_storage()
 | |
|   {
 | |
|     return NULL;
 | |
|   }
 | |
| 
 | |
|   virtual int table_scan(const ObStoreCtx& ctx, ObTableScanParam& param, common::ObNewRowIterator*& result)
 | |
|   {
 | |
|     UNUSED(ctx);
 | |
|     UNUSED(param);
 | |
|     UNUSED(result);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int revert_scan_iter(common::ObNewRowIterator* iter)
 | |
|   {
 | |
|     UNUSED(iter);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int delete_rows(const ObStoreCtx& ctx, const int64_t timeout, const common::ObIArray<uint64_t>& column_ids,
 | |
|       common::ObNewRowIterator* row_iter, int64_t& affected_rows)
 | |
|   {
 | |
|     UNUSED(ctx);
 | |
|     UNUSED(timeout);
 | |
|     UNUSED(column_ids);
 | |
|     UNUSED(row_iter);
 | |
|     UNUSED(affected_rows);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int insert_rows(const ObStoreCtx& ctx, const int64_t timeout, const common::ObIArray<uint64_t>& column_ids,
 | |
|       common::ObNewRowIterator* row_iter, int64_t& affected_rows)
 | |
|   {
 | |
|     UNUSED(ctx);
 | |
|     UNUSED(timeout);
 | |
|     UNUSED(column_ids);
 | |
|     UNUSED(row_iter);
 | |
|     UNUSED(affected_rows);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int update_rows(const ObStoreCtx& ctx, const int64_t timeout, const common::ObIArray<uint64_t>& column_ids,
 | |
|       const common::ObIArray<uint64_t>& updated_column_ids, common::ObNewRowIterator* row_iter, int64_t& affected_rows)
 | |
|   {
 | |
|     UNUSED(ctx);
 | |
|     UNUSED(timeout);
 | |
|     UNUSED(column_ids);
 | |
|     UNUSED(updated_column_ids);
 | |
|     UNUSED(row_iter);
 | |
|     UNUSED(affected_rows);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int lock_rows(const ObStoreCtx& ctx, const int64_t timeout, common::ObNewRowIterator* row_iter,
 | |
|       const ObLockFlag lock_flag, int64_t& affected_rows)
 | |
|   {
 | |
|     UNUSED(ctx);
 | |
|     UNUSED(timeout);
 | |
|     UNUSED(row_iter);
 | |
|     UNUSED(lock_flag);
 | |
|     UNUSED(affected_rows);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int lock_rows(
 | |
|       const ObStoreCtx& ctx, const int64_t timeout, const common::ObNewRow& row, const ObLockFlag lock_flag)
 | |
|   {
 | |
|     UNUSED(ctx);
 | |
|     UNUSED(timeout);
 | |
|     UNUSED(row);
 | |
|     UNUSED(lock_flag);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual void set_valid(bool valid)
 | |
|   {
 | |
|     UNUSED(valid);
 | |
|     return;
 | |
|   }
 | |
|   virtual int rdlock()
 | |
|   {
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int wrlock()
 | |
|   {
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int try_rdlock()
 | |
|   {
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int try_wrlock()
 | |
|   {
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int unlock()
 | |
|   {
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
| 
 | |
|   virtual int save_base_storage_info(const common::ObBaseStorageInfo& info)
 | |
|   {
 | |
|     UNUSED(info);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int save_frozen_storage_info(const common::ObBaseStorageInfo& info)
 | |
|   {
 | |
|     UNUSED(info);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_base_storage_info(common::ObBaseStorageInfo& info)
 | |
|   {
 | |
|     UNUSED(info);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_frozen_storage_info(common::ObBaseStorageInfo& info)
 | |
|   {
 | |
|     UNUSED(info);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
| 
 | |
|   virtual common::ObRole get_role() const
 | |
|   {
 | |
|     return common::LEADER;
 | |
|   }
 | |
| 
 | |
|   // write ssstore objects @version tree to data file , used by write_check_point
 | |
|   virtual int serialize(char* buf, const int64_t buf_len, int64_t& pos) const
 | |
|   {
 | |
|     UNUSED(buf);
 | |
|     UNUSED(buf_len);
 | |
|     UNUSED(pos);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   // read ssstore objects from data file to construct partition storage's version tree.
 | |
|   virtual int deserialize(const char* buf, const int64_t buf_len, int64_t& pos)
 | |
|   {
 | |
|     UNUSED(buf);
 | |
|     UNUSED(buf_len);
 | |
|     UNUSED(pos);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_serialize_size()
 | |
|   {
 | |
|     return 0;
 | |
|   }
 | |
|   virtual int init(const common::ObPartitionKey& key, ObIPartitionComponentFactory* cp_fty,
 | |
|       share::schema::ObMultiVersionSchemaService* schema_service, ObBaseStorage* base_storage,
 | |
|       clog::ObIPartitionLogService* pls)
 | |
|   {
 | |
|     UNUSED(key);
 | |
|     UNUSED(cp_fty);
 | |
|     UNUSED(schema_service);
 | |
|     UNUSED(base_storage);
 | |
|     UNUSED(pls);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_saved_storage_info(ObSavedStorageInfo& info)
 | |
|   {
 | |
|     UNUSED(info);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_role(oceanbase::common::ObRole& role) const
 | |
|   {
 | |
|     UNUSED(role);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_leader_curr_member_list(oceanbase::common::ObMemberList& list) const
 | |
|   {
 | |
|     UNUSED(list);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_leader(oceanbase::common::ObAddr& leader) const
 | |
|   {
 | |
|     UNUSED(leader);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int set_frozen_version(int64_t a, int64_t b)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int set_freeze_status(int64_t a, int64_t b, int64_t c)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int64_t get_frozen_version() const
 | |
|   {
 | |
|     return 0;
 | |
|   }
 | |
|   virtual int64_t get_frozen_timestamp() const
 | |
|   {
 | |
|     return 0;
 | |
|   }
 | |
|   virtual int64_t get_freeze_status() const
 | |
|   {
 | |
|     return 0;
 | |
|   }
 | |
|   virtual int get_merge_priority_info(oceanbase::memtable::ObMergePriorityInfo& a) const
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
| 
 | |
| private:
 | |
|   uint64_t tenant_id_;
 | |
|   ObReplayStatus replay_status_;
 | |
|   common::ObPartitionKey partition_key_;
 | |
| };
 | |
| 
 | |
| class MockPartitionService : public storage::MockObIPartitionService {
 | |
| public:
 | |
|   MockPartitionService()
 | |
|   {}
 | |
|   virtual ~MockPartitionService()
 | |
|   {}
 | |
| 
 | |
| public:
 | |
|   void reset()
 | |
|   {
 | |
|     mock_partition_.reset();
 | |
|   }
 | |
| 
 | |
|   virtual int get_partition(const common::ObPartitionKey& partition_key, storage::ObIPartitionGroup*& partition)
 | |
|   {
 | |
|     int ret = common::OB_SUCCESS;
 | |
|     if (partition_key == mock_partition_.get_partition_key()) {
 | |
|       partition = &mock_partition_;
 | |
|     } else {
 | |
|       ret = common::OB_ENTRY_NOT_EXIST;
 | |
|     }
 | |
|     return ret;
 | |
|   }
 | |
| 
 | |
|   virtual int get_partition(const common::ObPartitionKey& pkey, ObIPartitionGroupGuard& guard) const
 | |
|   {
 | |
|     int ret = common::OB_SUCCESS;
 | |
|     storage::ObIPartitionGroup* partition = NULL;
 | |
|     if (pkey == mock_partition_.get_partition_key()) {
 | |
|       partition = const_cast<MockPartition*>(&mock_partition_);
 | |
|       guard.set_partition_group(this->get_pg_mgr(), *partition);
 | |
|     } else {
 | |
|       ret = common::OB_ENTRY_NOT_EXIST;
 | |
|     }
 | |
|     return ret;
 | |
|   }
 | |
| 
 | |
|   virtual void revert_replay_status(ObReplayStatus* replay_status) const
 | |
|   {
 | |
|     UNUSED(replay_status);
 | |
|   }
 | |
|   virtual int init(const blocksstable::ObStorageEnv& env, const common::ObAddr& self_addr,
 | |
|       ObIPartitionComponentFactory* cp_fty, share::schema::ObMultiVersionSchemaService* schema_service,
 | |
|       share::ObIPartitionLocationCache* location_cache, oceanbase::share::ObRsMgr* rs_mgr, ObIPartitionReport* rs_cb,
 | |
|       rpc::frame::ObReqTransport* req_transport)
 | |
|   {
 | |
|     UNUSED(env);
 | |
|     UNUSED(self_addr);
 | |
|     UNUSED(cp_fty);
 | |
|     UNUSED(schema_service);
 | |
|     UNUSED(location_cache);
 | |
|     UNUSED(rs_mgr);
 | |
|     UNUSED(rs_cb);
 | |
|     UNUSED(req_transport);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   int init_partition(replayengine::ObLogReplayEngine* rp_eg)
 | |
|   {
 | |
|     return mock_partition_.set_replay_engine(rp_eg);
 | |
|   }
 | |
|   virtual bool is_empty() const
 | |
|   {
 | |
|     return true;
 | |
|   }
 | |
|   virtual transaction::ObTransService* get_trans_service()
 | |
|   {
 | |
|     return NULL;
 | |
|   }
 | |
|   virtual clog::ObICLogMgr* get_clog_mgr()
 | |
|   {
 | |
|     return NULL;
 | |
|   }
 | |
|   virtual int start()
 | |
|   {
 | |
|     // share::ObThreadPool::start();
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int destroy()
 | |
|   {
 | |
|     // share::ObThreadPool::stop();
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   //
 | |
|   virtual int load_partition(const char* buf, const int64_t buf_len, int64_t& pos)
 | |
|   {
 | |
|     UNUSED(buf);
 | |
|     UNUSED(buf_len);
 | |
|     UNUSED(pos);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int replay_base_storage_log(
 | |
|       const int64_t log_seq_num, const int64_t subcmd, const char* buf, const int64_t len, int64_t& pos)
 | |
|   {
 | |
|     UNUSED(log_seq_num);
 | |
|     UNUSED(subcmd);
 | |
|     UNUSED(buf);
 | |
|     UNUSED(len);
 | |
|     UNUSED(pos);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual bool is_take_over_done(const common::ObPartitionKey& pkey) const
 | |
|   {
 | |
|     UNUSED(pkey);
 | |
|     return true;
 | |
|   }
 | |
|   virtual int create_partition(const common::ObPartitionKey& key, const common::ObVersion data_version,
 | |
|       const int64_t replica_num, const common::ObMemberList& mem_list)
 | |
|   {
 | |
|     UNUSED(key);
 | |
|     UNUSED(data_version);
 | |
|     UNUSED(replica_num);
 | |
|     UNUSED(mem_list);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int migrate_partition(const common::ObPartitionKey& key, const common::ObAddr& src, const common::ObAddr& dst,
 | |
|       const bool keep_src, const int64_t offline_ts)
 | |
|   {
 | |
|     UNUSED(key);
 | |
|     UNUSED(src);
 | |
|     UNUSED(dst);
 | |
|     UNUSED(keep_src);
 | |
|     UNUSED(offline_ts);
 | |
|     return OB_SUCCESS;
 | |
|   }
 | |
|   virtual int online_partition()
 | |
|   {
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int offline_partition(const common::ObPartitionKey& leader_key, const common::ObAddr& server)
 | |
|   {
 | |
|     UNUSED(leader_key);
 | |
|     UNUSED(server);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int remove_partition(const common::ObPartitionKey& key)
 | |
|   {
 | |
|     UNUSED(key);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int remove_orphans()
 | |
|   {
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int freeze()
 | |
|   {
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int on_leader_revoke(const common::ObPartitionKey& partition_key)
 | |
|   {
 | |
|     UNUSED(partition_key);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int on_leader_takeover(const common::ObPartitionKey& partition_key)
 | |
|   {
 | |
|     UNUSED(partition_key);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int on_member_change_success(const oceanbase::common::ObPartitionKey& a, int64_t b,
 | |
|       const oceanbase::common::ObMemberList& c, const oceanbase::common::ObMemberList& d)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     UNUSED(d);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int64_t get_min_using_file_id() const
 | |
|   {
 | |
|     return 0;
 | |
|   }
 | |
| 
 | |
|   // ==========================================================================
 | |
|   // replay engin interfaces
 | |
|   virtual int start_replay(const common::ObPartitionKey& partition_key)
 | |
|   {
 | |
|     UNUSED(partition_key);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int submit_replay_task(
 | |
|       const common::ObPartitionKey& partition_key, const char* log_buf, const int64_t buf_len)
 | |
|   {
 | |
|     UNUSED(partition_key);
 | |
|     UNUSED(log_buf);
 | |
|     UNUSED(buf_len);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int finish_replay(const common::ObPartitionKey& partition_key)
 | |
|   {
 | |
|     UNUSED(partition_key);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
| 
 | |
|   // ==========================================================================
 | |
|   virtual int table_scan(ObTableScanParam& param, common::ObNewRowIterator*& result)
 | |
|   {
 | |
|     UNUSED(param);
 | |
|     UNUSED(result);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int revert_scan_iter(common::ObNewRowIterator* iter)
 | |
|   {
 | |
|     UNUSED(iter);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int delete_rows(const transaction::ObTransDesc& trans_desc, const int64_t timeout, const uint64_t table_id,
 | |
|       const int32_t partition_idx, const common::ObIArray<uint64_t>& column_ids, common::ObNewRowIterator* row_iter,
 | |
|       int64_t& affected_rows)
 | |
|   {
 | |
|     UNUSED(trans_desc);
 | |
|     UNUSED(timeout);
 | |
|     UNUSED(table_id);
 | |
|     UNUSED(partition_idx);
 | |
|     UNUSED(column_ids);
 | |
|     UNUSED(row_iter);
 | |
|     UNUSED(affected_rows);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int insert_rows(const transaction::ObTransDesc& trans_desc, const int64_t timeout, const uint64_t table_id,
 | |
|       const int32_t partition_idx, const common::ObIArray<uint64_t>& column_ids, common::ObNewRowIterator* row_iter,
 | |
|       int64_t& affected_rows)
 | |
|   {
 | |
|     UNUSED(trans_desc);
 | |
|     UNUSED(timeout);
 | |
|     UNUSED(table_id);
 | |
|     UNUSED(partition_idx);
 | |
|     UNUSED(column_ids);
 | |
|     UNUSED(row_iter);
 | |
|     UNUSED(affected_rows);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int update_rows(const transaction::ObTransDesc& trans_desc, const int64_t timeout, const uint64_t table_id,
 | |
|       const int32_t partition_idx, const common::ObIArray<uint64_t>& column_ids,
 | |
|       const common::ObIArray<uint64_t>& updated_column_ids, common::ObNewRowIterator* row_iter, int64_t& affected_rows)
 | |
|   {
 | |
|     UNUSED(trans_desc);
 | |
|     UNUSED(timeout);
 | |
|     UNUSED(table_id);
 | |
|     UNUSED(partition_idx);
 | |
|     UNUSED(column_ids);
 | |
|     UNUSED(updated_column_ids);
 | |
|     UNUSED(row_iter);
 | |
|     UNUSED(affected_rows);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
| 
 | |
|   // ==========================================================================
 | |
|   // partition manager interfaces
 | |
|   virtual int get_all_partitions(common::ObIArray<ObIPartitionGroup*>& partition_list)
 | |
|   {
 | |
|     UNUSED(partition_list);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
| 
 | |
|   // ==========================================================================
 | |
|   // replay interfaces
 | |
|   virtual int replay(
 | |
|       const common::ObPartitionKey& partition_key, const ObStoreCtx& ctx, const char* data, const int64_t data_len)
 | |
|   {
 | |
|     UNUSED(partition_key);
 | |
|     UNUSED(ctx);
 | |
|     UNUSED(data);
 | |
|     UNUSED(data_len);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int lock(const common::ObPartitionKey& partition_key, const ObStoreCtx& ctx)
 | |
|   {
 | |
|     UNUSED(partition_key);
 | |
|     UNUSED(ctx);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int init(const blocksstable::ObStorageEnv& env, ObIPartitionComponentFactory* cp_fty,
 | |
|       share::schema::ObMultiVersionSchemaService* schema_service)
 | |
|   {
 | |
|     UNUSED(env);
 | |
|     UNUSED(cp_fty);
 | |
|     UNUSED(schema_service);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_role(const oceanbase::common::ObPartitionKey& key, oceanbase::common::ObRole& role) const
 | |
|   {
 | |
|     UNUSED(key);
 | |
|     UNUSED(role);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_leader_curr_member_list(
 | |
|       const oceanbase::common::ObPartitionKey& key, oceanbase::common::ObMemberList& list) const
 | |
|   {
 | |
|     UNUSED(key);
 | |
|     UNUSED(list);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int delete_rows(const oceanbase::transaction::ObTransDesc& a, int64_t b,
 | |
|       const oceanbase::common::ObPartitionKey& c, const oceanbase::common::ObIArray<long unsigned int>& d,
 | |
|       oceanbase::common::ObNewRowIterator* e, int64_t& f)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     UNUSED(d);
 | |
|     UNUSED(e);
 | |
|     UNUSED(f);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int insert_rows(const oceanbase::transaction::ObTransDesc& a, int64_t b,
 | |
|       const oceanbase::common::ObPartitionKey& c, const oceanbase::common::ObIArray<long unsigned int>& d,
 | |
|       oceanbase::common::ObNewRowIterator* e, int64_t& f)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     UNUSED(d);
 | |
|     UNUSED(e);
 | |
|     UNUSED(f);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int update_rows(const oceanbase::transaction::ObTransDesc& a, int64_t b,
 | |
|       const oceanbase::common::ObPartitionKey& c, const oceanbase::common::ObIArray<long unsigned int>& d,
 | |
|       const oceanbase::common::ObIArray<long unsigned int>& e, oceanbase::common::ObNewRowIterator* f, int64_t& g)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     UNUSED(d);
 | |
|     UNUSED(e);
 | |
|     UNUSED(f);
 | |
|     UNUSED(g);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int lock_rows(const oceanbase::transaction::ObTransDesc& a, int64_t b,
 | |
|       const oceanbase::common::ObPartitionKey& c, oceanbase::common::ObNewRowIterator* d,
 | |
|       oceanbase::storage::ObLockFlag e, int64_t& f)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     UNUSED(d);
 | |
|     UNUSED(e);
 | |
|     UNUSED(f);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int lock_rows(const oceanbase::transaction::ObTransDesc& a, int64_t b,
 | |
|       const oceanbase::common::ObPartitionKey& c, const oceanbase::common::ObNewRow& d,
 | |
|       oceanbase::storage::ObLockFlag e)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     UNUSED(d);
 | |
|     UNUSED(e);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int replay_redo_log(const oceanbase::common::ObPartitionKey& a, const oceanbase::storage::ObStoreCtx& b,
 | |
|       const int64_t ts, const char* c, int64_t d)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(ts);
 | |
|     UNUSED(c);
 | |
|     UNUSED(d);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int prepare_freeze(const oceanbase::obrpc::ObPartitionList& a, int64_t b, int64_t c)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int commit_freeze(const oceanbase::obrpc::ObPartitionList& a, int64_t b, int64_t c)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int abort_freeze(const oceanbase::obrpc::ObPartitionList& a, int64_t b, int64_t c)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int set_freeze_status(const oceanbase::common::ObPartitionKey& a, int64_t b, int64_t c)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_freeze_status(const oceanbase::common::ObPartitionKey& a, int64_t& b, int64_t& c)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_freeze_status(const oceanbase::common::ObPartitionKey& a, int64_t& b, int64_t& c, int64_t& d)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
|     UNUSED(d);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
| 
 | |
|   void run1()
 | |
|   {
 | |
|     while (true) {
 | |
|       REPLAY_LOG(INFO, "partition service run");
 | |
|       usleep(10000);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   virtual int replay(const oceanbase::common::ObPartitionKey& a, const char* b, int64_t c)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     UNUSED(c);
 | |
| 
 | |
|     int64_t log_type_val = -1;
 | |
|     ObStorageLogType log_type;
 | |
|     int64_t pos = 0;
 | |
|     serialization::decode_i64(b, 1024, pos, &log_type_val);
 | |
|     log_type = static_cast<ObStorageLogType>(log_type_val);
 | |
|     REPLAY_LOG(INFO, "partition service replaying", K(log_type));
 | |
|     switch (log_type) {
 | |
|       case OB_LOG_MAJOR_FREEZE: {
 | |
|         // FIXME set frozen_version later
 | |
|         break;
 | |
|       }
 | |
|       default:
 | |
|         OB_ASSERT(false);
 | |
|     }
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int leader_freeze_success(const oceanbase::common::ObPartitionKey& a, int64_t b)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int leader_freeze_fail(const oceanbase::common::ObPartitionKey& a, int64_t b)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int follower_freeze_success(const oceanbase::common::ObPartitionKey& a, int64_t b)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int follower_freeze_fail(const oceanbase::common::ObPartitionKey& a, int64_t b)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int submit_freeze_log_success(int64_t a, const oceanbase::common::ObPartitionKey& b)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
|   virtual int get_active_memtable_version(const oceanbase::common::ObPartitionKey& a, int64_t& b)
 | |
|   {
 | |
|     UNUSED(a);
 | |
|     UNUSED(b);
 | |
|     return common::OB_SUCCESS;
 | |
|   }
 | |
| 
 | |
|   virtual int get_status(const common::ObPartitionKey& partition, int64_t& status)
 | |
|   {
 | |
|     UNUSED(partition);
 | |
|     UNUSED(status);
 | |
|     return OB_SUCCESS;
 | |
|   }
 | |
| 
 | |
| private:
 | |
|   MockPartition mock_partition_;
 | |
| };
 | |
| 
 | |
| }  // namespace unittest
 | |
| }  // namespace oceanbase
 | |
| 
 | |
| #endif  // OCEANBASE_UNITTEST_MOCK_PARTITION_SERVICE_H_
 | 
