/** * 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/ob_i_partition_group.h" #include "storage/ob_replay_status.h" #include "storage/ob_saved_storage_info.h" #include "storage/ob_pg_all_meta_checkpoint_writer.h" #include "storage/ob_i_partition_report.h" #include "gmock/gmock.h" #include "common/ob_range.h" #include "share/ob_partition_modify.h" #include "share/stat/ob_table_stat.h" #include "clog/ob_log_define.h" #ifndef OCEANBASE_STORAGE_MOCK_OB_PARTITION_H_ #define OCEANBASE_STORAGE_MOCK_OB_PARTITION_H_ namespace oceanbase { namespace storage { class MockObIPartitionGroup : public ObIPartitionGroup { public: MOCK_METHOD8(init, int(const common::ObPartitionKey& key, ObIPartitionComponentFactory* cp_fty, share::schema::ObMultiVersionSchemaService* schema_service, transaction::ObTransService* txs, replayengine::ObILogReplayEngine* rp_eg, ObPartitionService* ps, ObPartitionGroupIndex* pg_index, ObPGPartitionMap* pg_partition_map)); MOCK_METHOD0(destroy, void()); // get partition log service MOCK_CONST_METHOD0(get_log_service, const clog::ObIPartitionLogService*()); MOCK_METHOD0(get_log_service, clog::ObIPartitionLogService*()); MOCK_METHOD1(is_replica_need_gc, int(bool& is_offline)); MOCK_METHOD0(get_partition_service, ObPartitionService*()); MOCK_METHOD0(get_pg_index, ObPartitionGroupIndex*()); MOCK_METHOD0(get_pg_partition_map, ObPGPartitionMap*()); MOCK_METHOD0(get_trans_service, transaction::ObTransService*()); // get partition storage MOCK_CONST_METHOD0(get_partition_key, const common::ObPartitionKey&()); MOCK_METHOD2(table_scan, int(ObTableScanParam& param, common::ObNewRowIterator*& result)); MOCK_METHOD2(table_scan, int(ObTableScanParam& param, common::ObNewIterIterator*& result)); MOCK_METHOD4(join_mv_scan, int(ObTableScanParam& left_param, ObTableScanParam& right_param, ObIPartitionGroup& right_partition, common::ObNewRowIterator*& result)); MOCK_METHOD1(revert_scan_iter, int(common::ObNewRowIterator* iter)); MOCK_METHOD1(revert_scan_iter, int(common::ObNewIterIterator* iter)); MOCK_METHOD5(delete_rows, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const common::ObIArray& column_ids, common::ObNewRowIterator* row_iter, int64_t& affected_rows)); MOCK_METHOD4(delete_row, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const common::ObIArray& column_ids, const common::ObNewRow& row)); MOCK_METHOD5(put_rows, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const common::ObIArray& column_ids, common::ObNewRowIterator* row_iter, int64_t& affected_rows)); MOCK_METHOD5(insert_rows, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const common::ObIArray& column_ids, common::ObNewRowIterator* row_iter, int64_t& affected_rows)); MOCK_METHOD8(insert_row, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const common::ObIArray& column_ids, const common::ObIArray& duplicated_column_ids, const common::ObNewRow& row, const ObInsertFlag flag, int64_t& affected_rows, common::ObNewRowIterator*& duplicated_rows)); MOCK_METHOD4(insert_row, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const common::ObIArray& column_ids, const common::ObNewRow& row)); MOCK_METHOD6(fetch_conflict_rows, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const common::ObIArray& in_column_ids, const common::ObIArray& out_column_ids, common::ObNewRowIterator& check_row_iter, common::ObIArray& dup_row_iters)); MOCK_METHOD2(revert_insert_iter, int(const common::ObPartitionKey& pkey, common::ObNewRowIterator* iter)); MOCK_METHOD6(update_rows, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const common::ObIArray& column_ids, const common::ObIArray& updated_column_ids, common::ObNewRowIterator* row_iter, int64_t& affected_rows)); MOCK_METHOD6(update_row, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const common::ObIArray& column_ids, const common::ObIArray& updated_column_ids, const common::ObNewRow& old_row, const common::ObNewRow& new_row)); MOCK_METHOD6(lock_rows, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const int64_t abs_lock_timeout, common::ObNewRowIterator* row_iter, const ObLockFlag lock_flag, int64_t& affected_rows)); MOCK_METHOD5(lock_rows, int(const ObStoreCtx& ctx, const ObDMLBaseParam& dml_param, const int64_t abs_lock_timeout, const common::ObNewRow& row, ObLockFlag lock_flag)); MOCK_METHOD0(set_valid, int()); MOCK_CONST_METHOD0(is_valid, bool()); MOCK_METHOD2(get_migrating_store, int(const common::ObVersion& migrate_version, ObTablesHandle& handle)); // leader or follower MOCK_CONST_METHOD1(get_role, int(common::ObRole& role)); MOCK_CONST_METHOD1(get_role_unsafe, int(common::ObRole& role)); MOCK_CONST_METHOD1(get_leader_curr_member_list, int(common::ObMemberList& member_list)); MOCK_CONST_METHOD1(get_leader, int(common::ObAddr& addr)); MOCK_CONST_METHOD1(get_curr_member_list, int(common::ObMemberList& member_list)); MOCK_CONST_METHOD1(get_curr_member_list_for_report, int(common::ObMemberList& member_list)); MOCK_CONST_METHOD2(get_curr_member_list, int(const common::ObPartitionKey& pkey, common::ObMemberList& member_list)); MOCK_CONST_METHOD4(get_curr_leader_and_memberlist, int(common::ObAddr& leader, common::ObRole& role, common::ObMemberList& curr_member_list, common::ObChildReplicaList& children_list)); MOCK_CONST_METHOD1(get_dst_leader_candidate, int(common::ObMemberList& member_list)); MOCK_CONST_METHOD1(get_log_archive_status, int(clog::ObPGLogArchiveStatus& status)); MOCK_METHOD1(change_leader, int(const common::ObAddr& leader)); MOCK_METHOD0(leader_takeover, int()); MOCK_METHOD0(leader_revoke, int()); MOCK_METHOD0(leader_active, int()); MOCK_METHOD0(get_replay_status, ObReplayStatus*()); MOCK_METHOD0(adjust_freeze_status, int()); MOCK_METHOD1(retire_warmup_store, int(const bool is_disk_full)); MOCK_METHOD1(enable_write_log, int(const bool replay_old)); MOCK_METHOD2(get_pg_partition, int(const common::ObPartitionKey& pkey, ObPGPartitionGuard& guard)); // write ssstore objects @version tree to data file , used by write_check_point MOCK_CONST_METHOD3(serialize, int(char* buf, const int64_t buf_len, int64_t& pos)); MOCK_METHOD3(serialize, int(ObArenaAllocator& allocator, char*& new_buf, int64_t& serialize_len)); // read ssstore objects from data file to construct partition storage's version tree. MOCK_METHOD3(deserialize, int(const char* buf, const int64_t buf_len, int64_t& pos)); MOCK_METHOD3(deserialize_v1, int(const char* buf, const int64_t buf_len, int64_t& pos)); MOCK_CONST_METHOD0(get_serialize_size, int64_t()); MOCK_METHOD1(get_create_ts, int(int64_t& create_ts)); MOCK_CONST_METHOD0(get_cur_min_log_service_ts, int64_t()); MOCK_CONST_METHOD0(get_cur_min_trans_service_ts, int64_t()); MOCK_CONST_METHOD0(get_cur_min_replay_engine_ts, int64_t()); MOCK_METHOD1(set_migrating_flag, void(const bool flag)); MOCK_CONST_METHOD0(get_migrating_flag, bool()); MOCK_METHOD0(replay_status_revoke, void()); MOCK_METHOD0(report_clog_history_online, int()); MOCK_METHOD0(report_clog_history_offline, int()); MOCK_METHOD1(offline_itself, int(const bool)); MOCK_CONST_METHOD0(is_removed, bool()); MOCK_CONST_METHOD1(check_is_in_member_list, int(bool& is_in_member_list)); MOCK_METHOD4(add_partition_to_pg, int(const int64_t log_type, const obrpc::ObCreatePartitionArg& arg, ObPartitionService* ps, ObAddPartitionToPGLogCb*& out_cb)); MOCK_METHOD6(retry_raise_memstore_until_timeout, int(const ObFrozenStatus& frozen_status, const bool switch_state, const int64_t wait_freeze_interval, const int64_t expired_time, transaction::ObTransService* txs, ObFreezeLogCb* freeze_log_cb)); MOCK_METHOD5( raise_memstore, int(const ObFrozenStatus& frozen_status, const bool switch_state, const int64_t expired_time, transaction::ObTransService* txs, ObFreezeLogCb* freeze_log_cb)); MOCK_METHOD3(raise_memstore, int(const ObFrozenStatus& frozen_status, const ObSavedStorageInfo& info, transaction::ObTransService* txs)); MOCK_METHOD3(submit_freeze_log, int(const ObStorageLogType log_type, const ObSavedStorageInfo& info, ObFreezeLogCb* freeze_log_cb)); MOCK_METHOD4(decode_freeze_log, int(const char* log, const int64_t size, int64_t& pos, ObSavedStorageInfo& info)); MOCK_METHOD4(replay_partition_meta_log, int(const ObStorageLogType log_type, const int64_t log_id, const char* buf, const int64_t size)); MOCK_METHOD0(set_wait_split, int()); MOCK_METHOD1(save_split_state, int(const bool write_slog)); MOCK_METHOD1(restore_split_state, int(const int state)); MOCK_METHOD1(restore_split_info, int(const ObPartitionSplitInfo& split_info)); MOCK_METHOD3( replay_split_source_log, int(const ObPartitionSplitSourceLog& log, const uint64_t log_id, const int64_t log_ts)); MOCK_METHOD1(replay_split_dest_log, int(const ObPartitionSplitDestLog& log)); MOCK_METHOD2(sync_split_source_log_success, int(const int64_t log_id, const int64_t log_ts)); MOCK_METHOD0(sync_split_dest_log_success, int()); MOCK_METHOD3(prepare_splitting, int(const ObPartitionSplitInfo& split_info, const common::ObMemberList& mlist, const common::ObAddr& leader)); MOCK_METHOD3(split_source_partition, int(const int64_t schema_version, const share::ObSplitPartitionPair& info, enum share::ObSplitProgress& partition_progress)); MOCK_METHOD2( split_dest_partition, int(const ObPartitionSplitInfo& split_info, enum share::ObSplitProgress& progress)); MOCK_METHOD1(replay_split_state_slog, int(const ObSplitPartitionStateLogEntry& log_entry)); MOCK_METHOD1(replay_split_info_slog, int(const ObSplitPartitionInfoLogEntry& log_entry)); MOCK_METHOD3(set_dest_partition_split_progress, int(const int64_t schema_version, const common::ObPartitionKey& pkey, const int progress)); MOCK_METHOD2(get_all_table_ids, int(const ObPartitionKey& pkey, common::ObIArray& index_tables)); MOCK_METHOD3(get_reference_tables, int(const ObPartitionKey& pkey, const int64_t index_id, ObTablesHandle& handle)); MOCK_METHOD1(get_reference_memtables, int(ObTablesHandle& handle)); MOCK_METHOD3(set_reference_tables, int(const ObPartitionKey& pkey, const int64_t index_id, ObTablesHandle& handle)); MOCK_METHOD1(set_split_version, int(const int64_t split_version)); MOCK_METHOD0(set_source_tables_refered, int()); MOCK_METHOD5(get_split_table_ids, int(const common::ObVersion& merge_version, bool is_minor_split, bool& need_split, bool& need_minor_split, common::ObIArray& index_tables)); MOCK_METHOD1(check_can_migrate, int(bool& can_migrate)); MOCK_CONST_METHOD0(is_splitting, bool()); MOCK_CONST_METHOD0(is_split_source_partition, bool()); MOCK_CONST_METHOD0(is_in_dest_split, bool()); MOCK_CONST_METHOD0(is_dest_logical_split_finish, bool()); MOCK_CONST_METHOD0(check_split_state, int()); MOCK_METHOD2(get_split_progress, int(const int64_t schema_version, int& progress)); MOCK_METHOD2(set_split_progress, int(const common::ObAddr& replica, const int progress)); MOCK_METHOD1(check_physical_split, int(bool& finished)); MOCK_METHOD0(block_partition_split_by_mc, int()); MOCK_METHOD0(unblock_partition_split_by_mc, int()); MOCK_METHOD1(need_replay_redo, bool(const int64_t log_id)); MOCK_CONST_METHOD0(get_freeze_snapshot_ts, int64_t()); MOCK_METHOD1(get_frozen_version, int(common::ObVersion& frozen_version)); MOCK_CONST_METHOD1(get_merged_version, int(common::ObVersion& merged_version)); MOCK_CONST_METHOD1(get_active_version, int(common::ObVersion& active_version)); MOCK_METHOD1(set_frozen_version, int(const common::ObVersion& frozen_version)); MOCK_METHOD1(effect_new_active_memstore, int(common::ObVersion& version)); MOCK_METHOD0(revert_new_active_memstore, int()); MOCK_CONST_METHOD0(get_partition_state, ObPartitionState()); MOCK_METHOD1(switch_partition_state, int(const ObPartitionState state)); MOCK_METHOD1(try_switch_partition_state, int(const ObPartitionState state)); MOCK_METHOD1(get_safe_publish_version, int(int64_t& publish_version)); MOCK_METHOD1(get_ssstore_max_version, int(oceanbase::common::ObVersion&)); MOCK_METHOD1(get_base_ssstore_max_version, int(oceanbase::common::ObVersion&)); MOCK_METHOD1(do_warm_up_request, int(const oceanbase::storage::ObIWarmUpRequest*)); MOCK_METHOD2(check_can_do_merge, int(bool& can_merge, bool& need_merge)); MOCK_METHOD0(get_cur_min_log_service_ts, int64_t()); MOCK_METHOD0(get_cur_min_trans_service_ts, int64_t()); MOCK_METHOD0(get_cur_min_replay_engine_ts, int64_t()); MOCK_METHOD3( check_can_do_minor_merge, int(ObIPartitionStorage* storage, const int64_t frozen_version, bool& can_merge)); MOCK_METHOD1(raise_minor_memstore, int(const ObFrozenStatus& frozen_status)); MOCK_METHOD2(set_replica_type, int(const common::ObReplicaType& replica_type, const bool write_redo_log)); MOCK_CONST_METHOD0(get_replica_type, common::ObReplicaType()); MOCK_CONST_METHOD0(get_replica_property, common::ObReplicaProperty()); MOCK_CONST_METHOD0(is_replica_using_remote_memstore, bool()); MOCK_CONST_METHOD0(is_share_major_in_zone, bool()); MOCK_METHOD3(append_local_sort_data, int(const common::ObPartitionKey& pkey, const share::ObBuildIndexAppendLocalDataParam& param, common::ObNewRowIterator& iter)); MOCK_METHOD3(append_sstable, int(const common::ObPartitionKey& pkey, const share::ObBuildIndexAppendSSTableParam& param, common::ObNewRowIterator& iter)); MOCK_METHOD3(get_latest_schema_version, int(share::schema::ObMultiVersionSchemaService* schema_service, const common::ObPartitionKey& pkey, int64_t& latest_schema_version)); MOCK_METHOD3(freeze, int(const bool emergency, const bool force, int64_t& freeze_snapshot)); MOCK_METHOD1(mark_dirty_trans, int(bool& cleared)); MOCK_METHOD4(get_curr_storage_info_for_migrate, int(const bool use_slave_safe_read_ts, const common::ObReplicaType replica_type, const int64_t src_cluster_id, ObSavedStorageInfoV2& info)); MOCK_CONST_METHOD1(check_is_from_restore, int(bool& is_from_restore)); MOCK_CONST_METHOD1(get_all_saved_info, int(ObSavedStorageInfoV2& info)); MOCK_CONST_METHOD1(get_saved_clog_info, int(common::ObBaseStorageInfo& clog_info)); MOCK_CONST_METHOD1(get_saved_data_info, int(ObDataStorageInfo& data_info)); MOCK_CONST_METHOD2(get_saved_last_log_info, int(uint64_t& log_id, int64_t& submit_timestamp)); MOCK_METHOD0(get_split_info, ObPartitionSplitInfo&()); MOCK_METHOD1(check_cur_partition_split, int(bool& is_split_partition)); MOCK_METHOD1(get_trans_split_info, int(transaction::ObTransSplitInfo& split_info)); MOCK_METHOD2( check_single_replica_major_sstable_exist, int(const common::ObPartitionKey& pkey, const uint64_t index_table_id)); MOCK_CONST_METHOD1(get_max_decided_trans_version, int(int64_t& max_decided_trans_version)); MOCK_METHOD3( create_memtable, int(const bool in_slog_trans, const bool is_replay, const bool ignore_memstore_percent)); MOCK_METHOD2(get_table_stat, int(const common::ObPartitionKey& pkey, common::ObTableStat& stat)); MOCK_METHOD1(get_checkpoint, int(int64_t& checkpoint)); MOCK_METHOD1(update_last_checkpoint, int(const int64_t checkpoint)); MOCK_METHOD1(set_replay_checkpoint, int(const int64_t checkpoint)); // MOCK_METHOD1(get_replay_checkpoint, int(int64_t &checkpoint)); int get_replay_checkpoint(int64_t& checkpoint) { checkpoint = 100; return common::OB_SUCCESS; } MOCK_METHOD1(allow_gc, int(bool& allow_gc)); MOCK_METHOD3(gc_check_valid_member, int(const bool is_valid, const int64_t gc_seq, bool& need_gc)); MOCK_METHOD1(check_pg_partition_offline, bool(const ObPartitionKey& pkey)); MOCK_CONST_METHOD4(check_offline_log_archived, int(const ObPartitionKey& pkey, const int64_t incarnation, const int64_t archive_round, bool& has_archived)); MOCK_CONST_METHOD1(get_leader_epoch, int(int64_t& leader_epoch)); MOCK_METHOD0(clear_pg_non_reused_stores, int()); MOCK_METHOD0(clear_sstables_after_relay_point, int()); MOCK_METHOD1(get_replica_status, int(share::ObReplicaStatus& status)); MOCK_METHOD1(set_storage_info, int(const ObSavedStorageInfoV2& info)); MOCK_METHOD1(fill_replica, int(share::ObPartitionReplica& replica)); MOCK_METHOD3(fill_pg_partition_replica, int(const ObPartitionKey& pkey, share::ObReplicaStatus& replica_status, ObReportStatus& report_status)); MOCK_METHOD0(get_gc_schema_drop_ts, int64_t()); MOCK_CONST_METHOD1(get_merge_priority_info, int(memtable::ObMergePriorityInfo& info)); MOCK_METHOD0(set_need_rebuild, void()); MOCK_CONST_METHOD0(is_need_rebuild, bool()); void set_need_standby_restore() { return; } bool is_need_standby_restore() const { return false; } void reset_migrate_retry_flag() { return; } void set_need_gc() { return; } bool is_need_gc() const { return false; } uint64_t get_offline_log_id() const { return 0; } int set_offline_log_id(const uint64_t log_id) { UNUSED(log_id); return common::OB_SUCCESS; } MOCK_METHOD0(get_min_replayed_log_id, uint64_t()); MOCK_METHOD2(get_min_replayed_log_with_keepalive, int(uint64_t& min_replay_log_id, int64_t& min_replay_log_ts)); MOCK_CONST_METHOD1(get_table_store_cnt, int(int64_t& table_cnt)); MOCK_METHOD4( check_dirty_txn, int(const int64_t min_log_ts, const int64_t max_log_ts, int64_t& freeze_ts, bool& is_dirty)); MOCK_METHOD1(create_partition_group, int(const ObCreatePGParam& param)); MOCK_METHOD8(create_pg_partition, int(const common::ObPartitionKey& pkey, const int64_t multi_version_start, const uint64_t data_table_id, const obrpc::ObCreatePartitionArg& arg, const bool in_slog_trans, const bool is_replay, const uint64_t log_id, ObTablesHandle& sstables_handle)); MOCK_METHOD8(create_pg_partition, int(const common::ObPartitionKey& pkey, const int64_t multi_version_start, const uint64_t data_table_id, const ObCreatePartitionParam& arg, const bool in_slog_trans, const bool is_replay, const uint64_t log_id, ObTablesHandle& sstables_handle)); MOCK_METHOD2(replay_pg_partition, int(const common::ObPartitionKey& pkey, const uint64_t log_id)); MOCK_METHOD0(get_pg_storage, ObPGStorage&()); bool is_pg() const { return false; } MOCK_METHOD2(get_all_pg_partition_keys, int(ObPartitionArray& pkeys, const bool include_trans_table)); MOCK_METHOD5( submit_add_partition_to_pg_log, int(const obrpc::ObCreatePartitionArg& arg, ObPartitionService* ps, uint64_t& log_id, int64_t& log_ts, ObAddPartitionToPGLogCb*& out_cb)); MOCK_METHOD1(submit_remove_partition_from_pg_log, int(const ObPartitionKey& pkey)); MOCK_METHOD4(remove_partition_from_pg, int(const bool for_replay, const ObPartitionKey& pkey, const bool write_slog_trans, const uint64_t log_id)); MOCK_METHOD7(submit_partition_schema_change_log, int(const common::ObPartitionKey& pkey, const int64_t schema_version, const uint64_t index_id, ObPartitionService* ps, uint64_t& log_id, int64_t& log_ts, ObSchemaChangeClogCb*& out_cb)); MOCK_METHOD5(add_sstable_for_merge, int(const ObPartitionKey& pkey, storage::ObSSTable* sstable, const int64_t max_kept_major_version_number, ObIPartitionReport& report, ObSSTable* complement_minor_sstable)); MOCK_METHOD1(check_replica_ready_for_bounded_staleness_read, int(const int64_t snapshot_version)); MOCK_METHOD1(feedback_scan_access_stat, int(const ObTableScanParam& param)); MOCK_METHOD0(pause, int()); MOCK_METHOD0(stop, int()); MOCK_METHOD0(offline, int()); MOCK_METHOD3(create_sstables, int(const common::ObIArray& create_sstable_params, ObTablesHandle& tables_handle, const bool in_slog_trans)); MOCK_METHOD3(create_sstable, int(const storage::ObPGCreateSSTableParam& param, ObTableHandle& table_handle, const bool in_slog_trans)); MOCK_METHOD2(get_checkpoint_info, int(common::ObArenaAllocator& allocator, ObPGCheckpointInfo& pg_checkpoint_info)); MOCK_METHOD2(acquire_sstable, int(const ObITable::TableKey& table_key, ObTableHandle& table_handle)); MOCK_METHOD1(set_storage_file, int(ObStorageFileHandle& file)); MOCK_METHOD1(set_meta_block_list, int(const common::ObIArray& meta_block_list)); MOCK_METHOD3(schema_drop, int(const bool, const uint64_t, const bool)); MOCK_METHOD1(check_source_partition_status, int(bool& can_offline)); MOCK_CONST_METHOD0(need_replay_redo, bool()); MOCK_METHOD0(try_clear_split_info, int()); MOCK_METHOD1(check_complete, int(bool& is_complete)); MOCK_METHOD5( try_update_clog_member_list, int(const uint64_t ms_log_id, const int64_t mc_timestamp, const int64_t replica_num, const ObMemberList& mlist, const common::ObProposalID& ms_proposal_id)); MOCK_METHOD1(physical_flashback, int(const int64_t flashback_scn)); MOCK_METHOD1(check_can_physical_flashback, int(const int64_t flashback_scn)); MOCK_METHOD2(register_txs_change_leader, int(const common::ObAddr& server, ObTsWindows& changing_leader_windows)); MOCK_METHOD4(try_update_clog_member_list, int(const uint64_t ms_log_id, const int64_t mc_timestamp, const int64_t replica_num, const ObMemberList& mlist)); MOCK_METHOD3( check_physical_flashback_succ, int(const obrpc::ObCheckPhysicalFlashbackArg& arg, const int64_t max_version, obrpc::ObPhysicalFlashbackResultArg& result)); MOCK_METHOD1(save_split_info, int(const ObPartitionSplitInfo& split_info)); MOCK_METHOD1(save_split_state, int(const int64_t split_state)); MOCK_METHOD3( shutdown, int(const int64_t snapshot_version, const uint64_t replay_log_id, const int64_t schema_version)); MOCK_METHOD0(get_partition_loop_worker, ObPartitionLoopWorker*()); MOCK_METHOD2(push_reference_tables, int(const common::ObIArray& dest_array, const int64_t split_version)); MOCK_CONST_METHOD1(get_meta_block_list, int(common::ObIArray& meta_block_list)); MOCK_METHOD1(get_all_tables, int(ObTablesHandle& tables_handle)); MOCK_METHOD2(recycle_unused_sstables, int(const int64_t max_recycle_cnt, int64_t& recycled_cnt)); MOCK_METHOD1(recycle_sstable, int(const ObITable::TableKey &table_key)); MOCK_METHOD1(check_can_free, int(bool& can_free)); MOCK_METHOD0(clear, void()); MOCK_METHOD1(get_merge_log_ts, int(int64_t& merge_log_ts)); MOCK_METHOD2(check_ready_for_split, int(const ObPartitionArray& src_pkeys, bool& is_ready)); MOCK_METHOD1(clear_trans_after_restore_log, int(const uint64_t last_restore_log_id)); MOCK_METHOD0(reset_for_replay, int()); MOCK_METHOD2(inc_pending_batch_commit_count, int(memtable::ObMemtableCtx& mt_ctx, const int64_t log_ts)); MOCK_METHOD2(inc_pending_elr_count, int(memtable::ObMemtableCtx& mt_ctx, const int64_t log_ts)); }; } // namespace storage } // namespace oceanbase #endif // OCEANBASE_STORAGE_MOCK_OB_PARTITION_H_