Patch some commits to open source branch
This commit is contained in:
407
unittest/clog/clog_mock_utils.h
Normal file
407
unittest/clog/clog_mock_utils.h
Normal file
@ -0,0 +1,407 @@
|
||||
// Copyright 2014 Alibaba Inc. All Rights Reserved.
|
||||
// Author:
|
||||
// zhangshuai.zs@alibaba-inc.com
|
||||
//
|
||||
// This file is for...
|
||||
//
|
||||
#ifndef OCEANBASE_UNITTEST_MOCK_LOG_UTILS_H_
|
||||
#define OCEANBASE_UNITTEST_MOCK_LOG_UTILS_H_
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "lib/allocator/ob_malloc.h"
|
||||
#include <locale.h>
|
||||
#include "clog/ob_log_state_mgr.h"
|
||||
#include "clog/ob_i_net_log_buffer.h"
|
||||
#include "clog/ob_i_disk_log_buffer.h"
|
||||
#include "clog/ob_i_net_log_buffer_mgr.h"
|
||||
#include "clog/ob_log_engine.h"
|
||||
#include "storage/ob_i_partition_mgr.h"
|
||||
#include "../storage/mockcontainer/mock_ob_partition.h"
|
||||
#include "../storage/mockcontainer/mock_ob_election_mgr.h"
|
||||
#include "clog/ob_log_callback_engine.h"
|
||||
#include "../storage/mockcontainer/mock_ob_partition_mgr.h"
|
||||
#include "election/ob_election_rpc.h"
|
||||
|
||||
namespace oceanbase
|
||||
{
|
||||
namespace clog
|
||||
{
|
||||
using namespace oceanbase::election;
|
||||
|
||||
class MockSubmitLogCb : public ObISubmitLogCb
|
||||
{
|
||||
public:
|
||||
MockSubmitLogCb() {}
|
||||
~MockSubmitLogCb() {}
|
||||
//virtual int on_success(const common::ObPartitionKey &parition_key, const uint64_t log_id, const int64_t version) = 0;
|
||||
virtual int on_success(const common::ObPartitionKey &partition_key, const uint64_t log_id,
|
||||
const int64_t trans_version)
|
||||
{
|
||||
UNUSED(partition_key);
|
||||
UNUSED(log_id);
|
||||
UNUSED(trans_version);
|
||||
return OB_SUCCESS;
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
class MockLogEngine: public ObILogEngine
|
||||
{
|
||||
public:
|
||||
MockLogEngine() {}
|
||||
virtual ~MockLogEngine() {}
|
||||
virtual ObIRawLogIterator *alloc_raw_log_iterator(const uint64_t file_id, const int64_t timeout)
|
||||
{
|
||||
UNUSED(file_id);
|
||||
UNUSED(timeout);
|
||||
MockRawLogIterator *ptr = static_cast<MockRawLogIterator *>(common::ob_malloc(sizeof(
|
||||
MockRawLogIterator), common::ObModIds::OB_UPS_LOG));
|
||||
ptr->init();
|
||||
return ptr;
|
||||
}
|
||||
virtual void revert_raw_log_iterator(ObIRawLogIterator *iter)
|
||||
{
|
||||
common::ob_free(iter);
|
||||
}
|
||||
virtual int read_log_by_location(const clog::ObReadParam ¶m, ObLogEntry &entry)
|
||||
{
|
||||
UNUSED(param);
|
||||
UNUSED(entry);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int read_log_by_id(const clog::ObReadParam ¶m, ObLogEntry &entry)
|
||||
{
|
||||
UNUSED(param);
|
||||
UNUSED(entry);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int submit_flush_task(FlushTask *task)
|
||||
{
|
||||
ObLogCursor log_cursor;
|
||||
task->after_consume(common::OB_SUCCESS, &log_cursor);
|
||||
return common::OB_SUCCESS;
|
||||
};
|
||||
virtual int post_log(const common::ObAddr &server,
|
||||
const common::ObPartitionKey &key,
|
||||
const char *buf,
|
||||
int64_t len,
|
||||
common::ObProposalID propose_id)
|
||||
{
|
||||
UNUSED(server);
|
||||
UNUSED(key);
|
||||
UNUSED(buf);
|
||||
UNUSED(len);
|
||||
UNUSED(propose_id);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int submit_net_task(const common::ObMemberList &mem_list,
|
||||
const common::ObPartitionKey &key,
|
||||
ObILogNetTask *task)
|
||||
{
|
||||
UNUSED(mem_list);
|
||||
UNUSED(key);
|
||||
UNUSED(task);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int submit_log_ack(const common::ObAddr &server,
|
||||
const common::ObPartitionKey &key,
|
||||
const uint64_t log_id,
|
||||
const common::ObProposalID propose_id,
|
||||
ObLogType type)
|
||||
{
|
||||
UNUSED(server);
|
||||
UNUSED(key);
|
||||
UNUSED(log_id);
|
||||
UNUSED(propose_id);
|
||||
UNUSED(type);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int fetch_log_from_all_follower(const common::ObMemberList &mem_list,
|
||||
const common::ObPartitionKey &key,
|
||||
const uint64_t start_id,
|
||||
const common::ObProposalID propose_id)
|
||||
{
|
||||
UNUSED(mem_list);
|
||||
UNUSED(key);
|
||||
UNUSED(start_id);
|
||||
UNUSED(propose_id);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int fetch_log_from_leader(const common::ObAddr &server,
|
||||
const common::ObPartitionKey &key,
|
||||
const uint64_t start_id,
|
||||
const uint64_t end_id,
|
||||
const common::ObProposalID propose_id)
|
||||
{
|
||||
UNUSED(server);
|
||||
UNUSED(key);
|
||||
UNUSED(start_id);
|
||||
UNUSED(end_id);
|
||||
UNUSED(propose_id);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int submit_prepare_rqst(const common::ObMemberList &mem_list,
|
||||
const common::ObPartitionKey &key,
|
||||
const common::ObProposalID propose_id)
|
||||
{
|
||||
UNUSED(mem_list);
|
||||
UNUSED(key);
|
||||
UNUSED(propose_id);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int broadcast_mc_log_to_members(const common::ObPartitionKey &partition_key,
|
||||
const common::ObMemberList &sendout_member_list,
|
||||
const char *buff,
|
||||
const int64_t buff_len)
|
||||
{
|
||||
UNUSED(partition_key);
|
||||
UNUSED(sendout_member_list);
|
||||
UNUSED(buff);
|
||||
UNUSED(buff_len);
|
||||
int ret = common::OB_SUCCESS;
|
||||
return ret;
|
||||
}
|
||||
virtual int fetch_latest_mc_log(const common::ObPartitionKey &partition_key,
|
||||
const common::ObAddr &leader)
|
||||
{
|
||||
UNUSED(partition_key);
|
||||
UNUSED(leader);
|
||||
int ret = common::OB_SUCCESS;
|
||||
return ret;
|
||||
}
|
||||
virtual int ack_mc_log_to_leader(const common::ObPartitionKey &partition_key,
|
||||
const common::ObAddr &leader,
|
||||
const common::ObAddr &server,
|
||||
const int64_t mc_timestamp,
|
||||
const common::ObProposalID proposal_id)
|
||||
{
|
||||
UNUSED(partition_key);
|
||||
UNUSED(leader);
|
||||
UNUSED(server);
|
||||
UNUSED(mc_timestamp);
|
||||
UNUSED(proposal_id);
|
||||
int ret = common::OB_SUCCESS;
|
||||
return ret;
|
||||
}
|
||||
virtual int prepare_response(const common::ObAddr &server,
|
||||
const common::ObPartitionKey &partition_key,
|
||||
const uint64_t max_log_id,
|
||||
const common::ObProposalID propose_id)
|
||||
{
|
||||
UNUSED(server);
|
||||
UNUSED(partition_key);
|
||||
UNUSED(max_log_id);
|
||||
UNUSED(propose_id);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int get_current_cursor(uint64_t &file_id, int64_t &offset)
|
||||
{
|
||||
UNUSED(file_id);
|
||||
UNUSED(offset);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int get_search_min_fid(const oceanbase::clog::ObReadParam &a, uint64_t &b)
|
||||
{
|
||||
UNUSED(a);
|
||||
UNUSED(b);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int submit_fetch_log_resp(const oceanbase::common::ObMemberList &a,
|
||||
const oceanbase::common::ObPartitionKey &b, oceanbase::clog::ObILogNetTask *c)
|
||||
{
|
||||
UNUSED(a);
|
||||
UNUSED(b);
|
||||
UNUSED(c);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int get_cur_min_fid(uint64_t &file_id)
|
||||
{
|
||||
UNUSED(file_id);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual ObILogPartitionMetaReader *alloc_partition_meta_reader()
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
virtual void revert_partition_meta_reader(ObILogPartitionMetaReader *reader)
|
||||
{
|
||||
UNUSED(reader);
|
||||
return;
|
||||
}
|
||||
};
|
||||
*/
|
||||
|
||||
class MockElectionMgr : public election::MockObIElectionMgr
|
||||
{
|
||||
public:
|
||||
MockElectionMgr() : leader_() {}
|
||||
virtual int start_all()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
int stop_all()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
virtual int handle_election_msg(const ObElectionMsgBuffer &msgbuf,
|
||||
obrpc::ObElectionRpcResult &result)
|
||||
{
|
||||
UNUSED(msgbuf);
|
||||
UNUSED(result);
|
||||
return 0;
|
||||
}
|
||||
int init(const common::ObAddr &self, obrpc::ObElectionRpcProxy *client_manager)
|
||||
{
|
||||
UNUSED(self);
|
||||
UNUSED(client_manager);
|
||||
return 0;
|
||||
}
|
||||
int add_partition(const common::ObPartitionKey &partition, int64_t replica_num,
|
||||
election::ObIElectionCallback *election_cb)
|
||||
{
|
||||
UNUSED(partition);
|
||||
UNUSED(replica_num);
|
||||
UNUSED(election_cb);
|
||||
return 0;
|
||||
}
|
||||
int remove_partition(const common::ObPartitionKey &partition)
|
||||
{
|
||||
UNUSED(partition);
|
||||
return 0;
|
||||
}
|
||||
int change_leader_async(const common::ObPartitionKey &partition, const common::ObAddr &leader)
|
||||
{
|
||||
UNUSED(partition);
|
||||
UNUSED(leader);
|
||||
change_leader_ = true;
|
||||
return 0;
|
||||
}
|
||||
int start(const common::ObPartitionKey &partition)
|
||||
{
|
||||
UNUSED(partition);
|
||||
return 0;
|
||||
}
|
||||
int stop(const common::ObPartitionKey &partition)
|
||||
{
|
||||
UNUSED(partition);
|
||||
return 0;
|
||||
}
|
||||
virtual int set_candidate(const common::ObPartitionKey &partition,
|
||||
const common::ObMemberList &prev_mlist,
|
||||
const common::ObMemberList &curr_mlist)
|
||||
{
|
||||
UNUSED(partition);
|
||||
UNUSED(prev_mlist);
|
||||
UNUSED(curr_mlist);
|
||||
return 0;
|
||||
}
|
||||
int get_prev_candidate(const common::ObPartitionKey &partition, common::ObMemberList &mlist) const
|
||||
{
|
||||
UNUSED(partition);
|
||||
UNUSED(mlist);
|
||||
return 0;
|
||||
}
|
||||
int get_curr_candidate(const common::ObPartitionKey &partition, common::ObMemberList &mlist) const
|
||||
{
|
||||
UNUSED(partition);
|
||||
UNUSED(mlist);
|
||||
return 0;
|
||||
}
|
||||
int get_leader(const common::ObPartitionKey &partition, common::ObAddr &leader) const
|
||||
{
|
||||
UNUSED(partition);
|
||||
leader = leader_;
|
||||
return 0;
|
||||
}
|
||||
public:
|
||||
bool change_leader_;
|
||||
ObAddr leader_;
|
||||
};
|
||||
|
||||
class MockLogCallbackEngine: public ObILogCallbackEngine
|
||||
{
|
||||
public:
|
||||
virtual int init(common::S2MQueueThread *worker_thread_pool,
|
||||
common::S2MQueueThread *sp_thread_pool)
|
||||
{
|
||||
UNUSED(worker_thread_pool);
|
||||
UNUSED(sp_thread_pool);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual void destroy()
|
||||
{
|
||||
return;
|
||||
}
|
||||
virtual int submit_flush_cb_task(const common::ObPartitionKey &partition_key,
|
||||
const ObLogFlushCbArg &flush_cb_arg)
|
||||
{
|
||||
UNUSED(partition_key);
|
||||
UNUSED(flush_cb_arg);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int submit_member_change_success_cb_task(const common::ObPartitionKey &partition_key,
|
||||
const int64_t mc_timestamp,
|
||||
const common::ObMemberList &prev_member_list,
|
||||
const common::ObMemberList &curr_member_list)
|
||||
{
|
||||
UNUSED(partition_key);
|
||||
UNUSED(mc_timestamp);
|
||||
UNUSED(prev_member_list);
|
||||
UNUSED(curr_member_list);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int submit_leader_takeover_cb_task(const common::ObPartitionKey &partition_key)
|
||||
{
|
||||
UNUSED(partition_key);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int submit_leader_revoke_cb_task(const common::ObPartitionKey &partition_key)
|
||||
{
|
||||
UNUSED(partition_key);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
};
|
||||
|
||||
class MockObPSCb : public ObIPSCb
|
||||
{
|
||||
public:
|
||||
virtual int64_t get_min_using_file_id() const {return 0;}
|
||||
virtual int on_leader_revoke(const common::ObPartitionKey &partition_key)
|
||||
{UNUSED(partition_key); return 0;}
|
||||
virtual int on_leader_takeover(const common::ObPartitionKey &partition_key)
|
||||
{UNUSED(partition_key); return 0;}
|
||||
virtual int on_leader_active(const common::ObPartitionKey &partition_key)
|
||||
{UNUSED(partition_key); return 0;}
|
||||
virtual int on_member_change_success(
|
||||
const common::ObPartitionKey &partition_key,
|
||||
const int64_t mc_timestamp,
|
||||
const common::ObMemberList &prev_member_list,
|
||||
const common::ObMemberList &curr_member_list)
|
||||
{
|
||||
UNUSED(partition_key);
|
||||
UNUSED(mc_timestamp);
|
||||
UNUSED(prev_member_list);
|
||||
UNUSED(curr_member_list);
|
||||
return 0;
|
||||
}
|
||||
virtual int handle_log_missing(const common::ObPartitionKey &pkey,
|
||||
const common::ObAddr &server)
|
||||
{
|
||||
UNUSED(pkey);
|
||||
UNUSED(server);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
virtual int get_server_locality_array(
|
||||
common::ObIArray<share::ObServerLocality> &server_locality_array,
|
||||
bool &has_readonly_zone) const
|
||||
{
|
||||
UNUSED(server_locality_array);
|
||||
UNUSED(has_readonly_zone);
|
||||
return common::OB_SUCCESS;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace clog
|
||||
} // namespace oceanbase
|
||||
|
||||
#endif // OCEANBASE_UNITTEST_MOCK_LOG_UTILS_H_
|
Reference in New Issue
Block a user